From bd146eccfa806e3fc0f1822e4e3aaa9d12542f19 Mon Sep 17 00:00:00 2001 From: Alfred Wingate Date: Thu, 25 Nov 2021 13:58:40 +0200 Subject: [PATCH] app-emulation/anbox: revamp live ebuild, add 20211020 Changes include: - remove excessive asterisk's around variables - assume specific use flags are enabled if not available on boost and mesa - update systemd dependency removal patch - change ebuild version scheme from 0_preYYYYMMDD to just YYYYMMDD - improve anbox init script - general improvements to readability Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Alfred Wingate --- app-emulation/anbox/Manifest | 2 +- ...nbox-9999.ebuild => anbox-20211020.ebuild} | 57 ++++++++++++------- ...e20201129.ebuild => anbox-99999999.ebuild} | 57 +++++++++++++------ .../files/anbox-container-manager-r1.initd | 46 +++++++++++++++ .../anbox/files/anbox-container-manager.confd | 4 ++ .../files/remove_systemd_dependency-r1.patch | 38 +++++++++++++ 6 files changed, 166 insertions(+), 38 deletions(-) rename app-emulation/anbox/{anbox-9999.ebuild => anbox-20211020.ebuild} (65%) rename app-emulation/anbox/{anbox-0_pre20201129.ebuild => anbox-99999999.ebuild} (64%) create mode 100644 app-emulation/anbox/files/anbox-container-manager-r1.initd create mode 100644 app-emulation/anbox/files/anbox-container-manager.confd create mode 100644 app-emulation/anbox/files/remove_systemd_dependency-r1.patch diff --git a/app-emulation/anbox/Manifest b/app-emulation/anbox/Manifest index d2cc55e..9f202fa 100644 --- a/app-emulation/anbox/Manifest +++ b/app-emulation/anbox/Manifest @@ -1,3 +1,3 @@ -DIST anbox-0_pre20201129.tar.gz 1024707 BLAKE2B 38153bdc3c011b726bbffefeb9ca439398988945a6f19265d2c6ebd424308a37fa321ab0685660cc67bedf7edbc8793c7cb0c179a5b31dd7aa640cc5286442eb SHA512 c4878745b62719c6cbecde047386858bd2ec7a5dbd37462967cab60fd118f31b89c157b4a00412b51bf130c7b46a83a3c3ab5162ee13baa0e789f773649e8745 DIST anbox-0_pre20210320.tar.gz 1024515 BLAKE2B 7e25e15ee598dafc5fd3918e59bdd7808ca32f0a7546316529b145fe8cf985cf77ecf3a95a735b2885676aa759ba4bd4801322e69cbf32590119ea62ecf7cf73 SHA512 89d31043047c1e25b2789638dddd5ea49d9fd754e0baa573c073c3c454e3a6e6f1e3bea6e4a632d6c3942d3a206741bc62f7db6e435c8be34856915dc4b27464 +DIST anbox-20211020.tar.gz 1025857 BLAKE2B e5c7d9d17751ecd5d52ef6db1f48c0a3a3b0398dd3e0cfce974e5743bcd58c1dc4e72a6eac719fc4a56f297917da56340bf45cda247c31f45c0001420e0188c1 SHA512 9092a212b6662b84becf86c96a001090187763003a3c16d4fd4d7b4d31cc6bb92be240cbba1593b89e39637cb43da19f8f91567a578c7626709addb96be16809 DIST cpu_features-b9593c8b395318bb2bc42683a94f962564cc4664.tar.gz 55211 BLAKE2B b49714863cbebfde09e6ab99f31d9aaace367d84df9ecb12989fffc1326c9c60cfa14d917e490332c2a0b2a3fe267b6327b719652afba9bfa1654fc2564408b8 SHA512 8c12b50741e2979a32b69c788934bee0d00811b7662006c8b493e98d5efeada67ed59460be40c234b2d3bafd85671cb1a1d7c1a6ee535a7fc1cc6ac56a754576 diff --git a/app-emulation/anbox/anbox-9999.ebuild b/app-emulation/anbox/anbox-20211020.ebuild similarity index 65% rename from app-emulation/anbox/anbox-9999.ebuild rename to app-emulation/anbox/anbox-20211020.ebuild index 0323f33..9f77e3f 100644 --- a/app-emulation/anbox/anbox-9999.ebuild +++ b/app-emulation/anbox/anbox-20211020.ebuild @@ -1,26 +1,25 @@ # Copyright 2020-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 inherit linux-info systemd cmake DESCRIPTION="Container-based approach to boot a full Android system" HOMEPAGE="https://anbox.io/" -if [[ "${PV}" == "9999" ]]; then +if [[ "${PV}" == "99999999" ]]; then inherit git-r3 EGIT_REPO_URI="https://github.com/anbox/anbox.git" EGIT_SUBMODULES=( 'external/cpu_features' ) - EGIT_COMMIT_DATE="${PV}" else - COMMIT="9de4e87cdd05135e1c71e6eadb68bf82719cebdf" # 20.03.2021 + COMMIT="84f0268012cbe322ad858d76613f4182074510ac" # 20.10.2021 EXTCOMMIT="b9593c8b395318bb2bc42683a94f962564cc4664" SRC_URI=" - https://github.com/anbox/anbox/archive/"${COMMIT}".tar.gz -> "${P}".tar.gz - https://github.com/google/cpu_features/archive/"${EXTCOMMIT}".tar.gz -> cpu_features-"${EXTCOMMIT}".tar.gz + https://github.com/anbox/anbox/archive/${COMMIT}.tar.gz -> ${P}.tar.gz + https://github.com/google/cpu_features/archive/${EXTCOMMIT}.tar.gz -> cpu_features-${EXTCOMMIT}.tar.gz " - S=""${WORKDIR}"/"${PN}"-"${COMMIT}"" + S="${WORKDIR}/${PN}-${COMMIT}" KEYWORDS="~amd64" fi @@ -33,17 +32,20 @@ DEPEND=" dev-cpp/properties-cpp dev-cpp/sdbus-cpp dev-cpp/gtest - dev-libs/boost[threads] + dev-libs/boost[threads(+)] dev-libs/expat dev-libs/protobuf media-libs/libsdl2 media-libs/glm - media-libs/mesa[egl,gles2] + media-libs/mesa[egl(+),gles2] media-libs/sdl2-image sys-apps/dbus sys-fs/fuse:3 sys-libs/libcap - || ( sys-apps/systemd sys-auth/elogind ) + || ( + sys-apps/systemd + sys-auth/elogind + ) " RDEPEND="${DEPEND}" BDEPEND="virtual/pkgconfig" @@ -60,7 +62,10 @@ CONFIG_CHECK=" ~TMPFS_XATTR " -PATCHES=( ""${FILESDIR}"/no_bundled_sdbus-r1.patch" ""${FILESDIR}"/lxc.patch" ) +PATCHES=( + "${FILESDIR}/lxc.patch" + "${FILESDIR}/no_bundled_sdbus-r1.patch" +) pkg_pretend() { if use !systemd; then @@ -72,13 +77,22 @@ pkg_pretend() { check_extra_config fi # Check if ANDROID_BINDER_DEVICES has binder string specicied in it - linux_config_exists && grep -qE '(CONFIG_ANDROID_BINDER_DEVICES=*[^h][^w]binder)' "${KERNEL_DIR}"/.config || eerror " CONFIG_ANDROID_BINDER_DEVICES does not contain string 'binder'" + if ! linux_config_exists && grep -qE '(CONFIG_ANDROID_BINDER_DEVICES=*[^h][^w]binder)' "${KERNEL_DIR}"/.config; then + eerror " CONFIG_ANDROID_BINDER_DEVICES does not contain string 'binder'" + fi } src_prepare() { - cp "${FILESDIR}"/FindGMock.cmake "${S}"/cmake - [[ "${PV}" == "9999" ]] || mv "${WORKDIR}"/cpu_features-"${EXTCOMMIT}"/* "${S}"/external/cpu_features || die - use !systemd && eapply "${FILESDIR}"/remove_systemd_dependency.patch + cp "${FILESDIR}/FindGMock.cmake" "${S}/cmake" || die + + if [[ "${PV}" != "99999999" ]]; then + mv "${WORKDIR}"/cpu_features-"${EXTCOMMIT}"/* "${S}"/external/cpu_features || die + fi + + if use !systemd; then + eapply "${FILESDIR}"/remove_systemd_dependency-r1.patch + fi + cmake_src_prepare } @@ -89,21 +103,26 @@ src_configure() { -DENABLE_WAYLAND=$(usex wayland) -DBUILD_SHARED_LIBS=OFF ) - [[ "${PV}" == "9999" ]] || mycmakeargs+=(-DANBOX_VERSION="${PV}") + if [[ "${PV}" != "99999999" ]]; then + mycmakeargs+=(-DANBOX_VERSION="${PV} (${COMMIT})") + fi + cmake_src_configure } src_install() { cmake_src_install + newbin "${FILESDIR}"/anbox-launch.sh anbox-launch + if use systemd; then systemd_dounit "${FILESDIR}"/anbox-{container-manager.service,bridge.net{dev,work}} systemd_douserunit "${FILESDIR}"/anbox-session-manager.service else exeinto /usr/share/anbox - doexe "scripts/anbox-bridge.sh" - newinitd "${FILESDIR}"/anbox-container-manager.initd anbox-container-manager - newconfd "${FILESDIR}"/anbox.confd anbox + doexe scripts/anbox-bridge.sh + newinitd "${FILESDIR}"/anbox-container-manager-r1.initd anbox-container-manager + newconfd "${FILESDIR}"/anbox-container-manager.confd anbox-container-manager fi } diff --git a/app-emulation/anbox/anbox-0_pre20201129.ebuild b/app-emulation/anbox/anbox-99999999.ebuild similarity index 64% rename from app-emulation/anbox/anbox-0_pre20201129.ebuild rename to app-emulation/anbox/anbox-99999999.ebuild index b48cc32..9f77e3f 100644 --- a/app-emulation/anbox/anbox-0_pre20201129.ebuild +++ b/app-emulation/anbox/anbox-99999999.ebuild @@ -1,26 +1,25 @@ # Copyright 2020-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 inherit linux-info systemd cmake DESCRIPTION="Container-based approach to boot a full Android system" HOMEPAGE="https://anbox.io/" -if [[ "${PV}" == "9999" ]]; then +if [[ "${PV}" == "99999999" ]]; then inherit git-r3 EGIT_REPO_URI="https://github.com/anbox/anbox.git" EGIT_SUBMODULES=( 'external/cpu_features' ) - EGIT_COMMIT_DATE="${PV}" else - COMMIT="6c10125a7f13908d2cbe56d2d9ab09872755f265" # 29.11.2020 + COMMIT="84f0268012cbe322ad858d76613f4182074510ac" # 20.10.2021 EXTCOMMIT="b9593c8b395318bb2bc42683a94f962564cc4664" SRC_URI=" - https://github.com/anbox/anbox/archive/"${COMMIT}".tar.gz -> "${P}".tar.gz - https://github.com/google/cpu_features/archive/"${EXTCOMMIT}".tar.gz -> cpu_features-"${EXTCOMMIT}".tar.gz + https://github.com/anbox/anbox/archive/${COMMIT}.tar.gz -> ${P}.tar.gz + https://github.com/google/cpu_features/archive/${EXTCOMMIT}.tar.gz -> cpu_features-${EXTCOMMIT}.tar.gz " - S=""${WORKDIR}"/"${PN}"-"${COMMIT}"" + S="${WORKDIR}/${PN}-${COMMIT}" KEYWORDS="~amd64" fi @@ -33,17 +32,20 @@ DEPEND=" dev-cpp/properties-cpp dev-cpp/sdbus-cpp dev-cpp/gtest - dev-libs/boost[threads] + dev-libs/boost[threads(+)] dev-libs/expat dev-libs/protobuf media-libs/libsdl2 media-libs/glm - media-libs/mesa[egl,gles2] + media-libs/mesa[egl(+),gles2] media-libs/sdl2-image sys-apps/dbus sys-fs/fuse:3 sys-libs/libcap - || ( sys-apps/systemd sys-auth/elogind ) + || ( + sys-apps/systemd + sys-auth/elogind + ) " RDEPEND="${DEPEND}" BDEPEND="virtual/pkgconfig" @@ -60,7 +62,10 @@ CONFIG_CHECK=" ~TMPFS_XATTR " -PATCHES=( ""${FILESDIR}"/no_bundled_sdbus.patch" ""${FILESDIR}"/lxc.patch" ) +PATCHES=( + "${FILESDIR}/lxc.patch" + "${FILESDIR}/no_bundled_sdbus-r1.patch" +) pkg_pretend() { if use !systemd; then @@ -72,12 +77,22 @@ pkg_pretend() { check_extra_config fi # Check if ANDROID_BINDER_DEVICES has binder string specicied in it - linux_config_exists && grep -qE '(CONFIG_ANDROID_BINDER_DEVICES=*[^h][^w]binder)' "${KERNEL_DIR}"/.config || eerror " CONFIG_ANDROID_BINDER_DEVICES does not contain string 'binder'" + if ! linux_config_exists && grep -qE '(CONFIG_ANDROID_BINDER_DEVICES=*[^h][^w]binder)' "${KERNEL_DIR}"/.config; then + eerror " CONFIG_ANDROID_BINDER_DEVICES does not contain string 'binder'" + fi } src_prepare() { - [[ "${PV}" == "9999" ]] || mv "${WORKDIR}"/cpu_features-"${EXTCOMMIT}"/* "${S}"/external/cpu_features || die - use !systemd && eapply "${FILESDIR}"/remove_systemd_dependency.patch + cp "${FILESDIR}/FindGMock.cmake" "${S}/cmake" || die + + if [[ "${PV}" != "99999999" ]]; then + mv "${WORKDIR}"/cpu_features-"${EXTCOMMIT}"/* "${S}"/external/cpu_features || die + fi + + if use !systemd; then + eapply "${FILESDIR}"/remove_systemd_dependency-r1.patch + fi + cmake_src_prepare } @@ -86,22 +101,28 @@ src_configure() { -DCMAKE_BUILD_TYPE=Release -DENABLE_X11=$(usex X) -DENABLE_WAYLAND=$(usex wayland) + -DBUILD_SHARED_LIBS=OFF ) - [[ "${PV}" == "9999" ]] || mycmakeargs+=(-DANBOX_VERSION="${PV}") + if [[ "${PV}" != "99999999" ]]; then + mycmakeargs+=(-DANBOX_VERSION="${PV} (${COMMIT})") + fi + cmake_src_configure } src_install() { cmake_src_install + newbin "${FILESDIR}"/anbox-launch.sh anbox-launch + if use systemd; then systemd_dounit "${FILESDIR}"/anbox-{container-manager.service,bridge.net{dev,work}} systemd_douserunit "${FILESDIR}"/anbox-session-manager.service else exeinto /usr/share/anbox - doexe "scripts/anbox-bridge.sh" - newinitd "${FILESDIR}"/anbox-container-manager.initd anbox-container-manager - newconfd "${FILESDIR}"/anbox.confd anbox + doexe scripts/anbox-bridge.sh + newinitd "${FILESDIR}"/anbox-container-manager-r1.initd anbox-container-manager + newconfd "${FILESDIR}"/anbox-container-manager.confd anbox-container-manager fi } diff --git a/app-emulation/anbox/files/anbox-container-manager-r1.initd b/app-emulation/anbox/files/anbox-container-manager-r1.initd new file mode 100644 index 0000000..694d74e --- /dev/null +++ b/app-emulation/anbox/files/anbox-container-manager-r1.initd @@ -0,0 +1,46 @@ +#!/sbin/openrc-run + +supervisor=supervise-daemon + +name="Anbox container manager" +ANDROID_IMAGE="${ANDROID_IMAGE:-"/usr/share/andbox/android.img"}" +DATA_PATH="${DATA_PATH:-"/var/lib/anbox"}" +command=/usr/bin/anbox +command_args="container-manager --daemon --privileged --data-path=${DATA_PATH} --android-image=${ANDROID_IMAGE}" + +depend() { + need localmount sysfs cgroups fuse + use net + after firewall +} + +start_pre() { + # that's all you need to avoid the lxc dependency + checkpath --directory /usr/lib/lxc + checkpath --directory /usr/lib/lxc/rootfs + + modprobe loop + modprobe tun + modprobe binder_linux + + if ! [[ -d /dev/binderfs ]] && grep -vq "binder on /dev/binderfs"; then + mkdir /dev/binderfs + mount -t binder binder /dev/binderfs + fi + + if ip link show anbox0 >/dev/null 2>&1; then + ewarn "anbox0 network interface already exists" + else + ebegin "Creating anbox0 network interface" + /usr/share/anbox/anbox-bridge.sh start + eend $? + fi +} + +stop_post() { + if ip link show anbox0 >/dev/null 2>&1; then + ebegin "Removing anbox0 network interface" + /usr/share/anbox/anbox-bridge.sh stop + eend $? + fi +} diff --git a/app-emulation/anbox/files/anbox-container-manager.confd b/app-emulation/anbox/files/anbox-container-manager.confd new file mode 100644 index 0000000..3938278 --- /dev/null +++ b/app-emulation/anbox/files/anbox-container-manager.confd @@ -0,0 +1,4 @@ +# /etc/conf.d/anbox-container-manager: config file for /etc/init.d/anbox-container-manager + +DATA_PATH="/var/lib/anbox" +ANDROID_IMAGE="/usr/share/anbox/android.img" diff --git a/app-emulation/anbox/files/remove_systemd_dependency-r1.patch b/app-emulation/anbox/files/remove_systemd_dependency-r1.patch new file mode 100644 index 0000000..1fda495 --- /dev/null +++ b/app-emulation/anbox/files/remove_systemd_dependency-r1.patch @@ -0,0 +1,38 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 713df49..8ef4633 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -68,7 +68,6 @@ pkg_check_modules(SDL2_IMAGE SDL2_image REQUIRED) + pkg_check_modules(DBUS dbus-1 REQUIRED) + pkg_check_modules(LXC lxc REQUIRED) + pkg_check_modules(PROPERTIES_CPP properties-cpp REQUIRED) +-pkg_check_modules(LIBSYSTEMD libsystemd REQUIRED) + pkg_check_modules(LIBCAP libcap REQUIRED) + + message(STATUS "LXC version: ${LXC_VERSION}") +diff --git a/src/anbox/cmds/launch.h b/src/anbox/cmds/launch.h +index 5238982..2d388f5 100644 +--- a/src/anbox/cmds/launch.h ++++ b/src/anbox/cmds/launch.h +@@ -21,7 +21,7 @@ + #include + #include + #include +-#include ++#include + + #include "anbox/android/intent.h" + #include "anbox/wm/stack.h" +diff --git a/src/anbox/dbus/bus.h b/src/anbox/dbus/bus.h +index 40b3d94..e798b4b 100644 +--- a/src/anbox/dbus/bus.h ++++ b/src/anbox/dbus/bus.h +@@ -25,7 +25,7 @@ + #include + #include + +-#include ++#include + + namespace anbox::dbus { + class Bus : public DoNotCopyOrMove {