From 42cc40daa84687688a75e3e405c653b605513733 Mon Sep 17 00:00:00 2001 From: Antoine Fontaine Date: Sat, 8 Feb 2020 13:50:46 +0100 Subject: testing/anbox: new aports --- testing/anbox/APKBUILD | 111 ++++++++++++++++++++++ testing/anbox/anbox-container-manager.initd | 29 ++++++ testing/anbox/anbox-launch.sh | 9 ++ testing/anbox/anbox-networkmanager.post-deinstall | 3 + testing/anbox/anbox-networkmanager.post-install | 7 ++ testing/anbox/anbox.confd | 8 ++ testing/anbox/anbox.desktop | 9 ++ testing/anbox/anbox.post-install | 11 +++ testing/anbox/disable-tests.patch | 92 ++++++++++++++++++ testing/anbox/fix-arm-build.patch | 24 +++++ testing/anbox/give-more-time-to-start.patch | 13 +++ testing/anbox/musl-fixes.patch | 26 +++++ 12 files changed, 342 insertions(+) create mode 100644 testing/anbox/APKBUILD create mode 100644 testing/anbox/anbox-container-manager.initd create mode 100644 testing/anbox/anbox-launch.sh create mode 100644 testing/anbox/anbox-networkmanager.post-deinstall create mode 100644 testing/anbox/anbox-networkmanager.post-install create mode 100644 testing/anbox/anbox.confd create mode 100644 testing/anbox/anbox.desktop create mode 100644 testing/anbox/anbox.post-install create mode 100644 testing/anbox/disable-tests.patch create mode 100644 testing/anbox/fix-arm-build.patch create mode 100644 testing/anbox/give-more-time-to-start.patch create mode 100644 testing/anbox/musl-fixes.patch (limited to 'testing/anbox') diff --git a/testing/anbox/APKBUILD b/testing/anbox/APKBUILD new file mode 100644 index 0000000000..185f27b2b2 --- /dev/null +++ b/testing/anbox/APKBUILD @@ -0,0 +1,111 @@ +# Contributor: Bart Ribbers +# Contributor: Grant Miller +# Contributor: Antoine Fontaine +# Maintainer: +pkgname=anbox +pkgver=0_git20200102 +pkgrel=0 +_commit="b18e62218af49ee882abd00da2ef540142e59784" +_cpu_features_commit="b5c271c53759b2b15ff91df19bd0b32f2966e275" +pkgdesc="Android in a box" +url="https://github.com/anbox/anbox" +arch="x86_64 armhf armv7 aarch64" +license="GPL-3.0-or-later" +options="!check" # TODO: make checks work +subpackages="$pkgname-openrc $pkgname-networkmanager" +install="$pkgname.post-install" +depends=" + dbus + dbus-libs + mesa-gles + mesa-egl + fuse3 + lxc + " +makedepends=" + mesa-dev + python2 + cmake + cmake-extras + lxc-dev + sdl2-dev + sdl2_image-dev + boost-dev + dbus-dev + libcap-dev + libdwarf-dev + protobuf-dev + elogind-dev + properties-cpp-dev + libexecinfo-dev + " +source=" + $pkgname-$_commit.tar.gz::https://github.com/anbox/anbox/archive/$_commit.tar.gz + cpu_features-$_cpu_features_commit.tar.gz::https://github.com/google/cpu_features/archive/$_cpu_features_commit.tar.gz + anbox-container-manager.initd + anbox.confd + disable-tests.patch + musl-fixes.patch + fix-arm-build.patch + give-more-time-to-start.patch + anbox-launch.sh + anbox.desktop + " +builddir="$srcdir/$pkgname-$_commit" + +prepare() { + default_prepare + + rm -rf external/cpu_features + cp -r $srcdir/cpu_features-*/ external/cpu_features + + mkdir -p "$builddir"/build +} + +build() { + cd "$builddir"/build + cmake "$builddir" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_TESTING=OFF \ + -DWerror=OFF + + make +} + +package() { + cd "$builddir"/build + DESTDIR="$pkgdir" make install + + install -m755 -D "$srcdir"/anbox-container-manager.initd \ + "$pkgdir"/etc/init.d/anbox-container-manager + install -m644 -D "$srcdir"/$pkgname.confd \ + "$pkgdir"/etc/conf.d/$pkgname + install -m755 -D "$srcdir"/$pkgname-launch.sh \ + "$pkgdir"/usr/bin/$pkgname-launch + install -m644 -D "$srcdir"/$pkgname.desktop \ + "$pkgdir"/usr/share/applications/$pkgname.desktop + install -m755 -D "$builddir"/scripts/anbox-bridge.sh \ + "$pkgdir"/usr/share/anbox/anbox-bridge.sh +} + +networkmanager() { + #install_if="$pkgname networkmanager" # causes issues, let's keep it installed manually for now + depends="$pkgname networkmanager" + install="$pkgname-networkmanager.post-install $pkgname-networkmanager.post-deinstall" + pkgdesc="$pkgdesc, internet access support" + mkdir "$subpkgdir" +} + +sha512sums="5abf2191968a68f2d9fcde5e85a9d174212506d3c848115e0859b2c41baadaeab08a6828449e3edd5023829432698aa8bbd9c6e16c8ce8560974db1403bbd556 anbox-b18e62218af49ee882abd00da2ef540142e59784.tar.gz +c0ec9b603cec2cc9049923e15ef50c85806bc0a0ffe57b63348631061aeddb73c1eca910b25696cf5eac2606aec3f86db29e8a01e01cf438bfee86edfe909e4a cpu_features-b5c271c53759b2b15ff91df19bd0b32f2966e275.tar.gz +5a8e76fd636670bdfcbf45c290c06f9399df7831af121e0a6238cc5d7d57d6f7036bca2d457c07f3f694df6f7a574a4e5ace6b1ad3a5e17a68fd638a299faa99 anbox-container-manager.initd +6a3bc88142c5287ec54d481a4788eceb7772d9974af950b5286ce63a49d05d9d49fce5ba1d02b4b1c9893896fd4ba218fd4d39b8e640bdd61ad196b5d5c9a021 anbox.confd +3351edbd50370f514e405f10584264b110cd3d5eff766185b23d4c7e885933f0378330df5222fbd4b5161ff81f292ea63b4940f4afb1c457a2511fe8b5110195 disable-tests.patch +401669509e05eb586ad40fc9e8f4284b52183f06c60e87bf4e923be165a72f10263daf226db7fd610ef6ff25d09abd140ca2d59187e2d1b85a0bd6ae887dd944 musl-fixes.patch +897a6f0fddd9d963f6c66e4561f5b468856dd94c8df500f27b08b2bfcef8c0d253f985333b501447afbe3e2abf5d354523b1db0304b87e762abcd4f1d8cac2e7 fix-arm-build.patch +4f4439a0f991a77a157464280fd9d43fcff1319effc9bdd235fc61f16c3fbef59d8585ae363326179dd4b1f71e4d206498844361d1418846eb42c5a0d40db33b give-more-time-to-start.patch +d88bc45b681b6ed318279ee4485ae0d47fd648f207722c094906b61c74d7c373762cdaba890fa577467da99204681cd502051071ee61b2c1c555732e403b4e15 anbox-launch.sh +bc3bec88f271484ef66afb862e517b614568270a4047e400995f73b08ce05cb4faa18a746db161711ec91ef125f0063127e4027699921302406405bbb778583d anbox.desktop" diff --git a/testing/anbox/anbox-container-manager.initd b/testing/anbox/anbox-container-manager.initd new file mode 100644 index 0000000000..6dc5bebcd5 --- /dev/null +++ b/testing/anbox/anbox-container-manager.initd @@ -0,0 +1,29 @@ +#!/sbin/openrc-run + +supervisor=supervise-daemon + +name="Anbox container manager" +command=/usr/bin/anbox +command_args="container-manager --daemon --privileged --data-path=/var/lib/anbox" + +depend() { + need localmount sysfs cgroups fuse + 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 + + /usr/share/anbox/anbox-bridge.sh start +} + +stop_post() { + # ideally, we would stop it _after_ shutting down + # the container manager. + /usr/share/anbox/anbox-bridge.sh stop +} diff --git a/testing/anbox/anbox-launch.sh b/testing/anbox/anbox-launch.sh new file mode 100644 index 0000000000..d843669ce6 --- /dev/null +++ b/testing/anbox/anbox-launch.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +#if [ -z "$(ps aux | grep 'anbox session-manager' | grep -v grep)" ]; then +# anbox session-manager & +# sleep 5s +#fi + +# We let Anbox autostart the session manager as this provides a splash-screen +anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity diff --git a/testing/anbox/anbox-networkmanager.post-deinstall b/testing/anbox/anbox-networkmanager.post-deinstall new file mode 100644 index 0000000000..2bfb4fcf05 --- /dev/null +++ b/testing/anbox/anbox-networkmanager.post-deinstall @@ -0,0 +1,3 @@ +#!/bin/sh + +nmcli connection delete anbox-net diff --git a/testing/anbox/anbox-networkmanager.post-install b/testing/anbox/anbox-networkmanager.post-install new file mode 100644 index 0000000000..1614b60226 --- /dev/null +++ b/testing/anbox/anbox-networkmanager.post-install @@ -0,0 +1,7 @@ +#!/bin/sh + +nmcli connection add type bridge ifname anbox0 -- connection.id anbox-net ipv4.method shared ipv4.addresses 192.168.250.1/24 + +# Alternatively, we could use the anbox-bridge script +# that relies on iptables. +# https://github.com/anbox/anbox/blob/master/scripts/anbox-bridge.sh diff --git a/testing/anbox/anbox.confd b/testing/anbox/anbox.confd new file mode 100644 index 0000000000..a519399936 --- /dev/null +++ b/testing/anbox/anbox.confd @@ -0,0 +1,8 @@ +# Sample conf.d file for alpine linux + +# +# Specify daemon options here. +# + +sample_opts="" +sample_user="" diff --git a/testing/anbox/anbox.desktop b/testing/anbox/anbox.desktop new file mode 100644 index 0000000000..acc77cbcc4 --- /dev/null +++ b/testing/anbox/anbox.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Anbox +GenericName=Android in a box +Version=1.0 +Type=Application +Icon=anbox +TryExec=anbox +Exec=anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity +Terminal=false diff --git a/testing/anbox/anbox.post-install b/testing/anbox/anbox.post-install new file mode 100644 index 0000000000..fdcd625eab --- /dev/null +++ b/testing/anbox/anbox.post-install @@ -0,0 +1,11 @@ +#!/bin/sh + +cat < cpu_whitelist = { diff --git a/testing/anbox/give-more-time-to-start.patch b/testing/anbox/give-more-time-to-start.patch new file mode 100644 index 0000000000..fb90ae13e8 --- /dev/null +++ b/testing/anbox/give-more-time-to-start.patch @@ -0,0 +1,13 @@ +Anbox tend not to leave enough time for Android to start. +This patch gives more breathing room. +--- a/src/anbox/cmds/launch.cpp ++++ a/src/anbox/cmds/launch.cpp +@@ -35,7 +35,7 @@ namespace fs = boost::filesystem; + + namespace { + constexpr unsigned int max_session_mgr_wait_attempts{10}; +-const std::chrono::seconds session_mgr_wait_interval{5}; ++const std::chrono::seconds session_mgr_wait_interval{25}; + constexpr unsigned int max_dbus_service_wait_attempts{10}; + const std::chrono::seconds dbus_service_wait_interval{5}; + diff --git a/testing/anbox/musl-fixes.patch b/testing/anbox/musl-fixes.patch new file mode 100644 index 0000000000..cd14a08d61 --- /dev/null +++ b/testing/anbox/musl-fixes.patch @@ -0,0 +1,26 @@ +diff --git a/external/process-cpp-minimal/include/core/posix/standard_stream.h b/external/process-cpp-minimal/include/core/posix/standard_stream.h +index f50a9b7..4a67a80 100644 +--- a/external/process-cpp-minimal/include/core/posix/standard_stream.h ++++ b/external/process-cpp-minimal/include/core/posix/standard_stream.h +@@ -23,6 +23,10 @@ + + #include + ++#undef stdin ++#undef stdout ++#undef stderr ++ + namespace core + { + namespace posix +diff --git a/external/process-cpp-minimal/src/CMakeLists.txt b/external/process-cpp-minimal/src/CMakeLists.txt +index dec4659..20c9053 100644 +--- a/external/process-cpp-minimal/src/CMakeLists.txt ++++ b/external/process-cpp-minimal/src/CMakeLists.txt +@@ -46,4 +46,5 @@ target_link_libraries( + + ${Boost_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} ++ execinfo + ) + -- cgit v1.2.3