Merge updates from master

This commit is contained in:
Repository mirror & CI
2025-01-11 13:03:40 +00:00
5 changed files with 338 additions and 1 deletions

View File

@@ -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 ""

View File

@@ -0,0 +1,113 @@
# Copyright 2022-2025 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
}

View File

@@ -32,7 +32,7 @@ RDEPEND="
=dev-python/tzlocal-5.2*[${PYTHON_USEDEP}]
~dev-python/sqlalchemy-2.0.36[${PYTHON_USEDEP}]
~dev-python/platformdirs-4.3.6[${PYTHON_USEDEP}]
~dev-python/click-8.1.7[${PYTHON_USEDEP}]
<dev-python/click-9.0.0[${PYTHON_USEDEP}]
"
DEPEND="${RDEPEND}"

View File

@@ -18,3 +18,4 @@ DIST limine-8.3.2.tar.gz 562262 BLAKE2B f519c2ecc2167b8fa28f4eff47e6c4e45103a42a
DIST limine-8.4.0.tar.gz 602897 BLAKE2B 924631c9cd6f6c6400bf2f355c3cb044c19c8574bf37758be9b8f773043071ae8a79d58acf3d4d46a8bf1bc53ce445e02b18d25889e3868539f34c2df91d7fc7 SHA512 e8679acf49e71458becf47183280b7ecc367d9523d927bec1dce0840e7f9c95d038de57c09d7e1315d17582fdf50ad939d658a7d2bfa3cc228f1efd63110b077
DIST limine-8.5.0.tar.gz 597435 BLAKE2B e39a41c6182bbb992bf14399990b733ca851e14a26dc167ea233dfa1822928958479ec014a9c654e29644c375bdb83c02a4c500931073b1ba951bceb64938a13 SHA512 1cf27e464deb01e69b31007a67558606fb69570e80d7f9261aa78d4fef5e558ad78edf3ec526a8ab064ac18bc9746111a862bcad5355cf30911102a8faa85100
DIST limine-8.6.0.tar.gz 598538 BLAKE2B a24a416f4d26f2716839e8e1b3852fab0bcbbf8e195f415450cff688d2c853486cfa1d484bb8f440cc494725342b4da02ef5354404469faead173869c99fc0c8 SHA512 a10c066697d26d212f1d77dc0bd666a8c545630002e15564a8628891a759c28d088e61183eb09e58ca079e0aa1a993a63653d02e43d0243649fa5f2f5869ef48
DIST limine-8.7.0.tar.gz 603144 BLAKE2B fdfbae9ccb238c3dd84f6a7fb8cf80b03f6f9e47fd9556452c30c2658fa6209886df07c8065cd5140036887e4aaf63d9b1ded8853c9ba70c80df8079fa04291d SHA512 f494d644199fda13974d0938626a0753e42dec606c5357d71cd26a8d6c72f6d34ba245c68ef3c9206c304e179da3c28d9061c79d059cd87a18fb1f45c76a09d3

View File

@@ -0,0 +1,49 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {16..19} )
inherit llvm-r1
DESCRIPTION="Limine is a modern, advanced, and portable BIOS/UEFI multiprotocol bootloader"
HOMEPAGE="https://limine-bootloader.org/"
SRC_URI="https://github.com/limine-bootloader/limine/releases/download/v${PV}/limine-${PV}.tar.gz"
LICENSE="BSD-2"
SLOT="0"
KEYWORDS="~amd64"
IUSE="+bios +bios-pxe +bios-cd +cd-efi +uefi32 +uefi64 +uefiaa64 +uefirv64 +uefiloong64"
MY_LLVM_TARGETS="AArch64 ARM X86 RISCV LoongArch"
MY_LLVM_FLAGS="llvm_targets_${MY_LLVM_TARGETS// /(-),llvm_targets_}(-)"
BDEPEND="
app-alternatives/gzip
dev-lang/nasm
sys-apps/findutils
$(llvm_gen_dep "
llvm-core/llvm:\${LLVM_SLOT}[${MY_LLVM_FLAGS}]
llvm-core/clang:\${LLVM_SLOT}[${MY_LLVM_FLAGS}]
llvm-core/lld:\${LLVM_SLOT}
")
cd-efi? ( sys-fs/mtools )
"
src_configure() {
local myconf=(
"$(use_enable bios)"
"$(use_enable bios-cd)"
"$(use_enable bios-pxe)"
"$(use_enable uefi32 uefi-ia32)"
"$(use_enable uefi64 uefi-x86-64)"
"$(use_enable uefiaa64 uefi-aarch64)"
"$(use_enable uefirv64 uefi-riscv64)"
"$(use_enable uefiloong64 uefi-loongarch64)"
"$(use_enable cd-efi uefi-cd)"
)
TOOLCHAIN_FOR_TARGET=llvm \
econf "${myconf[@]}"
}