From: "David Roman" <davidroman96@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/proj/guru:master commit in: app-containers/waydroid/files/, app-containers/waydroid/
Date: Sat, 11 Jan 2025 12:50:07 +0000 (UTC) [thread overview]
Message-ID: <1736588131.09e83652920c6db7d912f6cbbd3636ceb2e0e458.davidroman@gentoo> (raw)
commit: 09e83652920c6db7d912f6cbbd3636ceb2e0e458
Author: Denis Reva <denis7774 <AT> gmail <DOT> com>
AuthorDate: Sat Jan 11 09:25:20 2025 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sat Jan 11 09:35:31 2025 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=09e83652
app-containers/waydroid: add -r1, which fixes bugs
Also fixed a bug (via patch from upstream) with intel haswell vulkan api
Closes: https://bugs.gentoo.org/947280
Signed-off-by: Denis Reva <denis7774 <AT> gmail.com>
.../waydroid/files/waydroid-1.4.3-r1.patch | 174 +++++++++++++++++++++
app-containers/waydroid/waydroid-1.4.3-r1.ebuild | 117 ++++++++++++++
2 files changed, 291 insertions(+)
diff --git a/app-containers/waydroid/files/waydroid-1.4.3-r1.patch b/app-containers/waydroid/files/waydroid-1.4.3-r1.patch
new file mode 100644
index 000000000..1bfa0b99c
--- /dev/null
+++ b/app-containers/waydroid/files/waydroid-1.4.3-r1.patch
@@ -0,0 +1,174 @@
+From c9ea5abff749e660c9aca0fcd224875464c3dacd Mon Sep 17 00:00:00 2001
+From: Alessandro Astone <ales.astone@gmail.com>
+Date: Sat, 10 Aug 2024 16:10:14 +0200
+Subject: [PATCH 1/3] debian: Use new polkitd package
+
+Prefer the new polkitd name but keep supporting policykit-1 for
+older distros
+
+Fixes: #1484
+---
+ debian/control | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/debian/control b/debian/control
+index 2b63f56b..8f0dfa42 100644
+--- a/debian/control
++++ b/debian/control
+@@ -20,7 +20,7 @@ Depends: ${misc:Depends},
+ gir1.2-gtk-3.0,
+ python3-dbus,
+ dbus,
+- policykit-1,
++ polkitd | policykit-1,
+ iptables
+ Description: Android™ application support
+ waydroid allows running a separate Android™ environment
+
+From 5000c9703de873e4f477ebcdd3556ad163252115 Mon Sep 17 00:00:00 2001
+From: Alessandro Astone <ales.astone@gmail.com>
+Date: Wed, 4 Sep 2024 23:27:58 +0200
+Subject: [PATCH 2/3] initializer: Refactor setup to better handle preinstalled
+ images
+
+Bail out early when using preinstalled images.
+There's no reason to attempt fetching the OTA channels if we're
+going to use preinstalled images.
+
+Fixes: #1550
+---
+ tools/actions/initializer.py | 52 ++++++++++++++++++++----------------
+ 1 file changed, 29 insertions(+), 23 deletions(-)
+
+diff --git a/tools/actions/initializer.py b/tools/actions/initializer.py
+index 8f6c2c3b..87250971 100644
+--- a/tools/actions/initializer.py
++++ b/tools/actions/initializer.py
+@@ -35,20 +35,37 @@ def setup_config(args):
+ args.arch = helpers.arch.host()
+ cfg["waydroid"]["arch"] = args.arch
+
++ args.vendor_type = get_vendor_type(args)
++ cfg["waydroid"]["vendor_type"] = args.vendor_type
++
++ helpers.drivers.setupBinderNodes(args)
++ cfg["waydroid"]["binder"] = args.BINDER_DRIVER
++ cfg["waydroid"]["vndbinder"] = args.VNDBINDER_DRIVER
++ cfg["waydroid"]["hwbinder"] = args.HWBINDER_DRIVER
++
++ has_preinstalled_images = False
+ preinstalled_images_paths = tools.config.defaults["preinstalled_images_paths"]
+- if not args.images_path:
+- for preinstalled_images in preinstalled_images_paths:
+- if os.path.isdir(preinstalled_images):
+- if os.path.isfile(preinstalled_images + "/system.img") and os.path.isfile(preinstalled_images + "/vendor.img"):
+- args.images_path = preinstalled_images
+- break
+- else:
+- logging.warning("Found directory {} but missing system or vendor image, ignoring...".format(preinstalled_images))
++ for preinstalled_images in preinstalled_images_paths:
++ if os.path.isdir(preinstalled_images):
++ if os.path.isfile(preinstalled_images + "/system.img") and os.path.isfile(preinstalled_images + "/vendor.img"):
++ has_preinstalled_images = True
++ args.images_path = preinstalled_images
++ break
++ else:
++ logging.warning("Found directory {} but missing system or vendor image, ignoring...".format(preinstalled_images))
+
+ if not args.images_path:
+ args.images_path = tools.config.defaults["images_path"]
+ cfg["waydroid"]["images_path"] = args.images_path
+
++ if has_preinstalled_images:
++ cfg["waydroid"]["system_ota"] = args.system_ota = "None"
++ cfg["waydroid"]["vendor_ota"] = args.vendor_ota = "None"
++ cfg["waydroid"]["system_datetime"] = tools.config.defaults["system_datetime"]
++ cfg["waydroid"]["vendor_datetime"] = tools.config.defaults["vendor_datetime"]
++ tools.config.save(args, cfg)
++ return True
++
+ channels_cfg = tools.config.load_channels()
+ if not args.system_channel:
+ args.system_channel = channels_cfg["channels"]["system_channel"]
+@@ -67,11 +84,8 @@ def setup_config(args):
+ "/waydroid_" + args.arch + "/" + args.system_type + ".json"
+ system_request = helpers.http.retrieve(args.system_ota)
+ if system_request[0] != 200:
+- if args.images_path not in preinstalled_images_paths:
+- raise ValueError(
+- "Failed to get system OTA channel: {}, error: {}".format(args.system_ota, system_request[0]))
+- else:
+- args.system_ota = "None"
++ raise ValueError(
++ "Failed to get system OTA channel: {}, error: {}".format(args.system_ota, system_request[0]))
+
+ device_codename = helpers.props.host_get(args, "ro.product.device")
+ args.vendor_type = None
+@@ -85,12 +99,8 @@ def setup_config(args):
+ break
+
+ if not args.vendor_type:
+- if args.images_path not in preinstalled_images_paths:
+- raise ValueError(
+- "Failed to get vendor OTA channel: {}".format(vendor_ota))
+- else:
+- args.vendor_ota = "None"
+- args.vendor_type = get_vendor_type(args)
++ raise ValueError(
++ "Failed to get vendor OTA channel: {}".format(vendor_ota))
+
+ if args.system_ota != cfg["waydroid"].get("system_ota"):
+ cfg["waydroid"]["system_datetime"] = tools.config.defaults["system_datetime"]
+@@ -100,10 +110,6 @@ def setup_config(args):
+ cfg["waydroid"]["vendor_type"] = args.vendor_type
+ cfg["waydroid"]["system_ota"] = args.system_ota
+ cfg["waydroid"]["vendor_ota"] = args.vendor_ota
+- helpers.drivers.setupBinderNodes(args)
+- cfg["waydroid"]["binder"] = args.BINDER_DRIVER
+- cfg["waydroid"]["vndbinder"] = args.VNDBINDER_DRIVER
+- cfg["waydroid"]["hwbinder"] = args.HWBINDER_DRIVER
+ tools.config.save(args, cfg)
+ return True
+
+
+From 023c4e31e06e2a31110a346516a841e68063d473 Mon Sep 17 00:00:00 2001
+From: Alessandro Astone <ales.astone@gmail.com>
+Date: Sat, 14 Dec 2024 16:40:05 +0100
+Subject: [PATCH 3/3] gpu: Use intel_hasvk on intel graphics gen 8 or lower
+
+Closes: #1604
+---
+ tools/helpers/gpu.py | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/tools/helpers/gpu.py b/tools/helpers/gpu.py
+index 55343d42..2a38cfe8 100644
+--- a/tools/helpers/gpu.py
++++ b/tools/helpers/gpu.py
+@@ -4,6 +4,9 @@
+
+ unsupported = ["nvidia"]
+
++def getMinor(args, dev):
++ return tools.helpers.props.file_get(args, "/sys/class/drm/{}/uevent".format(dev), "MINOR")
++
+ def getKernelDriver(args, dev):
+ return tools.helpers.props.file_get(args, "/sys/class/drm/{}/device/uevent".format(dev), "DRIVER")
+
+@@ -32,6 +35,16 @@ def getVulkanDriver(args, dev):
+ "nouveau": "nouveau",
+ }
+ kernel_driver = getKernelDriver(args, dev)
++
++ if kernel_driver == "i915":
++ try:
++ gen = tools.helpers.run.user(args,["awk", "/^graphics version:|^gen:/ {print $NF}",
++ "/sys/kernel/debug/dri/{}/i915_capabilities".format(getMinor(args, dev))], output_return=True)
++ if int(gen) < 9:
++ return "intel_hasvk"
++ except:
++ pass
++
+ if kernel_driver in mapping:
+ return mapping[kernel_driver]
+ return ""
diff --git a/app-containers/waydroid/waydroid-1.4.3-r1.ebuild b/app-containers/waydroid/waydroid-1.4.3-r1.ebuild
new file mode 100644
index 000000000..106dfd17c
--- /dev/null
+++ b/app-containers/waydroid/waydroid-1.4.3-r1.ebuild
@@ -0,0 +1,117 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit linux-info xdg python-single-r1
+
+DESCRIPTION="Container-based approach to boot a full Android system on Linux systems"
+HOMEPAGE="https://waydro.id"
+SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+IUSE="apparmor +clipboard systemd"
+
+PATCHES=(
+ "${FILESDIR}/waydroid-1.4.3-r1.patch"
+ )
+
+DEPEND="|| ( virtual/linux-sources virtual/dist-kernel )"
+RDEPEND="
+ systemd? ( sys-apps/systemd )
+ app-containers/lxc[systemd?,apparmor?,seccomp]
+ $(python_gen_cond_dep '
+ clipboard? ( >=dev-python/pyclip-0.7.0[wayland,${PYTHON_USEDEP}] )
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ >=dev-python/gbinder-1.1.1[${PYTHON_USEDEP}]
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ ')
+ net-firewall/nftables
+ net-dns/dnsmasq
+ >=dev-libs/libglibutil-1.0.79
+ >=dev-libs/gbinder-1.1.41
+ ${PYTHON_DEPS}
+"
+
+CONFIG_CHECK="
+ ~ANDROID_BINDER_IPC
+ ~ANDROID_BINDERFS
+ ~MEMFD_CREATE
+ ~NETFILTER_XT_TARGET_MASQUERADE
+ ~NETFILTER_XT_NAT
+ ~PSI
+ ~!PSI_DEFAULT_DISABLED
+ ~NF_TABLES
+ ~NF_TABLES_INET
+ ~NF_TABLES_NETDEV
+ ~NFT_NUMGEN
+ ~NFT_NAT
+ ~NFT_TUNNEL
+ ~NFT_QUOTA
+ ~NFT_SOCKET
+ ~NF_FLOW_TABLE
+ ~NFT_BRIDGE_META
+ ~NFT_BRIDGE_REJECT
+"
+ERROR_ANDROID_BINDERFS="CONFIG_ANDROID_BINDERFS: need for creating Android-specific binder IPC channels"
+ERROR_ANDROID_BINDER_IPC="CONFIG_ANDROID_BINDER_IPC: need for creating Android-specific binder IPC channels"
+ERROR_MEMFD_CREATE="CONFIG_MEMFD_CREATE: it completely replaced deprecated ISHMEM drivers,
+ therefore it's vital for android-specific memory management"
+ERROR_NETFILTER_XT_NAT="CONFIG_NETFILTER_XT_NAT: see bug #937106"
+ERROR_NETFILTER_XT_TARGET_MASQUERADE="CONFIG_NETFILTER_XT_TARGET_MASQUERADE: see bug #937106"
+ERROR_PSI="CONFIG_PSI: see bug #947280"
+ERROR_NF_TABLES="CONFIG_NF_TABLES: Make sure you have NFTABLES up and running in your kernel"
+ERROR_NFT_NAT="CONFIG_NFT_NAT: see bug #947280"
+ERROR_NFT_BRIDGE_META="CONFIG_NFT_BRIDGE_META: see bug #947280"
+
+pkg_setup() {
+ linux-info_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ if ! use apparmor; then
+ # https://github.com/waydroid/waydroid/issues/652
+ sed -e '/^lxc\.apparmor\.profile =/d' \
+ -i data/configs/config_3 || die
+ fi
+ default
+}
+
+src_install() {
+ python_fix_shebang waydroid.py
+ emake install DESTDIR="${D}" USE_NFTABLES=1 USE_SYSTEMD=$(usex systemd 1 0)
+ if ! use systemd; then
+ elog "Installing waydroid OpenRC daemon"
+ doinitd "${FILESDIR}"/waydroid
+ fi
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ elog "After package installation run either 'emerge --config app-containers/waydroid'"
+ elog "or 'waydroid init' from root shell to install android container runtime"
+ elog "To run waydroid, 1. Start container: 'rc-service waydroid start'"
+ elog "2. start wayland channel (from user shell) 'waydroid session start'"
+ elog "Contact https://docs.waydro.id/usage/install-on-desktops for how-to guides"
+ elog "(does not cover Gentoo-specific things sadly)"
+ elog
+
+ ewarn "Make sure you have NFTABLES up and running in your kernel. See"
+ ewarn "https://wiki.gentoo.org/wiki/Nftables for how-to details"
+ ewarn
+
+ if use apparmor; then
+ ewarn "Check the known issues for apparmor:"
+ ewarn "https://docs.waydro.id/debugging/known-issues"
+ fi
+}
+
+pkg_config() {
+ "${EROOT}"/usr/bin/waydroid init
+}
next reply other threads:[~2025-01-11 12:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-11 12:50 David Roman [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-06-25 8:50 [gentoo-commits] repo/proj/guru:master commit in: app-containers/waydroid/files/, app-containers/waydroid/ David Roman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1736588131.09e83652920c6db7d912f6cbbd3636ceb2e0e458.davidroman@gentoo \
--to=davidroman96@gmail.com \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox