You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
treewide: Ubuntu Touch enablement for graphics & Docker
cmd: Begin implementation of libhybris graphics driver support
snap-confine: Additional AppArmor rules for proper libhybris functionality in snap-confine
interfaces: Add libhybris AppArmor paths & udev rules to opengl
Tested working on the Pixel 3a (Android 9, Qualcomm).
snap-confine: Set up hybris environment variables if appropriate
Hybris needs the linker and EGL platform paths properly set up
to allow running graphical applications using Android drivers.
interfaces/opengl: Tag binder & hwbinder appropriately
Required to grant access to the respective devices in /dev.
cmd/snap-confine: Address review comments
- Use PATH_MAX
- Commonalize shared functions between NVIDIA & libhybris
- Unify and use SC_HYBRIS_PROPERTY_FILE appropriately
cmd/snap-confine: Only use one temp buffer for hybris sprintfs
interfaces/opengl: Allow AppArmor path for querying Qualcomm driver/gpu model
Newer Qualcomm devices (like the Fairphone 4) seem to have their userspace GL
libraries query the kernel-mode driver for the respective GPU model.
cmd/snap-confine: Unconditionally allow cgroup access to binder devices
binder and hwbinder are devices residing in their own filesystem.
In order to allow access to them they need to be unconditionally
allowed in the cgroup for libhybris drivers to work accordingly.
Note that binderfs is checked before binder in order to distinguish
between an Android 11+ and lower kernels since newer ones place
a compatibility symlink at the old and familiar path.
interfaces/builtin: Additionally allow loading Android's i18n APEX
As required by some devices, this allows loading i18n APEX into the process
in order to allow certain bionic libraries to work properly.
Additionally explain the use and necessity for libtls-padding inclusion.
interfaces/opengl: Reduce libhybris property context area access to read-only
The property area is set up by Halium, confined snaps might merely read it.
interfaces/opengl: Ensure hostfs path for libtls-padding.so on hybris
The confined snap can only load libs from directories prefixed with
/var/lib/snapd/hostfs, so ensure libtls-padding that resides there
is mappable into the process.
snap-confine: interfaces: Address review comments
- Cleanup and remove TLS-padding permit from AppArmor rules
- Only allow binder access on Halium/libhybris systems
- Die in case the Halium environment cannot be mounted into the target
- Restructure binder device mount operation to iterate through a list of
allowed device paths
release: Add OnTouch as a variant of OnClassic
Ubuntu Touch is powered by a similar mechanism to Core for mounting writable paths,
though uses a classic filesystem layout and has other expected behavior from Core.
To enable Touch having more extensive Snap support just add another bool to determine
whether the running system is a Touch image based on a new VARIANT_ID called "touch".
This in turn will provide the basis for further Touch enablement like extrausers support.
overlord/snapstate: Enable extrausers support on Ubuntu Touch
Since Touch also has the group and user databases read-only, with the extrausers databases
being the exception, just enforce behavior to match that of Core where it works similarly.
cmd: hybris-support: Mount hybris rootfs in all cases
Mountpoints are created after the check is fulfillable.
cmd: Always allow libhybris support for release.OnTouch
The points cross here, needs OnTouch in a way to distinguish
needs for libhybris-based devices, and enable them appropriately.
cmd: snap-exec: libhybris detection based on SC_EXTRA_LIB setup
Set the environment variables required to handle libhybris in a
confined environment, with libhybris bionic linker and EGL_PLATFORM
implementations available through environment variables.
Defaults to wayland for libhybris' libEGL. libgbm support should stay
untouched with these variables setting up the linker paths).
Tested on Halium-enabled Pixel 3a using Halium (Ubuntu Touch 20.04).
Tested Snaps:
- Tide IDE (classic Snap running with libhybris on the host)
- Gnome Mahjongg (with GDK_DEBUG=gl-disable)
- QML Creator (with Wayland QPA)
- Yamagi Quake 2 (with SDL & GLES Renderer)
interfaces: docker_support: Make it work on Ubuntu Touch
For reasons currently unknown Ubuntu Touch port kernels do not work with the
set of rules generated by default.
Due to not following the requirement of "devmode snaps running other snaps",
just check whether it is running OnTouch and avoid filling out the template.
interfaces/builtin: Include missing release package in opengl
interfaces/builtin: Only set up Android udev tags OnTouch
These are giving a lot of permissions to binder and friends, which may
not be appropriate for other targets running snapd. So just conditionally
enable it when release.OnTouch is set.
release: Allow mocking OnTouch environment
For future use.
release: Fix up MockOnTouch comment
daemon, overlord: Enable release.OnTouch in more places
Sets up Ubuntu Touch to handle users in a way similar to Core & Core Desktop.
cmd/snap-confine: Remove pass-through of host libraries into Snap environment on hybris
Also call mount function again, and clean up.
cmd/snap-confine: mount-support-hybris: Update Copyright year
interfaces: Fix missing change_profiles required for Docker
These were missing due to us skipping the AAREExclusionPattern processing.
Add regular change_profile directives when running on Ubuntu Touch.
0 commit comments