public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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
+}


             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