aboutsummaryrefslogtreecommitdiffstats
path: root/testing/anbox
diff options
context:
space:
mode:
authorAntoine Fontaine <antoine.fontaine@epfl.ch>2020-02-08 13:50:46 +0100
committerRasmus Thomsen <oss@cogitri.dev>2020-02-19 22:28:03 +0100
commit42cc40daa84687688a75e3e405c653b605513733 (patch)
treedb2bea0b3ae61dfb2c5f55d1d4069d85f0ee67d7 /testing/anbox
parentebf3f2ec6890cfe610936b1ae393012eebd4e7bf (diff)
downloadaports-42cc40daa84687688a75e3e405c653b605513733.tar.bz2
aports-42cc40daa84687688a75e3e405c653b605513733.tar.xz
testing/anbox: new aports
Diffstat (limited to 'testing/anbox')
-rw-r--r--testing/anbox/APKBUILD111
-rw-r--r--testing/anbox/anbox-container-manager.initd29
-rw-r--r--testing/anbox/anbox-launch.sh9
-rw-r--r--testing/anbox/anbox-networkmanager.post-deinstall3
-rw-r--r--testing/anbox/anbox-networkmanager.post-install7
-rw-r--r--testing/anbox/anbox.confd8
-rw-r--r--testing/anbox/anbox.desktop9
-rw-r--r--testing/anbox/anbox.post-install11
-rw-r--r--testing/anbox/disable-tests.patch92
-rw-r--r--testing/anbox/fix-arm-build.patch24
-rw-r--r--testing/anbox/give-more-time-to-start.patch13
-rw-r--r--testing/anbox/musl-fixes.patch26
12 files changed, 342 insertions, 0 deletions
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 <bribbers@disroot.org>
+# Contributor: Grant Miller <GrantM11235@gmail.com>
+# Contributor: Antoine Fontaine <antoine.fontaine@epfl.ch>
+# 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 <<EOT
+
+Anbox needs an adapted android image installed to /var/lib/anbox/android.img.
+You can build one using the instructions here:
+https://github.com/anbox/anbox/blob/master/docs/build-android.md.
+Alternatively, you can use a prebuilt one by upstream:
+https://build.anbox.io/android-images/
+
+EOT
diff --git a/testing/anbox/disable-tests.patch b/testing/anbox/disable-tests.patch
new file mode 100644
index 0000000000..30d4a3b379
--- /dev/null
+++ b/testing/anbox/disable-tests.patch
@@ -0,0 +1,92 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4ee5b98..8aaa3db 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,7 +1,6 @@
+ project(anbox C CXX)
+ cmake_minimum_required(VERSION 2.8.2)
+
+-include(CTest)
+ include(GNUInstallDirs)
+
+ if (NOT CMAKE_BUILD_TYPE)
+@@ -91,8 +90,6 @@ IF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE])
+ SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ftest-coverage -fprofile-arcs" )
+ ENDIF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE])
+
+-find_package(GMock)
+-
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fPIC")
+
+ set(ANBOX_TRANSLATOR_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/anbox/translators)
+@@ -113,7 +110,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/config.h.in
+
+ add_subdirectory(external)
+ add_subdirectory(src)
+-add_subdirectory(tests)
+ add_subdirectory(android)
+
+ if (NOT "${HOST_CMAKE_C_COMPILER}" STREQUAL "")
+diff --git a/external/android-emugl/googletest.mk b/external/android-emugl/googletest.mk
+deleted file mode 100644
+index 9d8e5c0..0000000
+--- a/external/android-emugl/googletest.mk
++++ /dev/null
+@@ -1,37 +0,0 @@
+-# This contains common definitions used to define a host module
+-# to link GoogleTest with the EmuGL test programs.
+-#
+-# This is used instead of including external/gtest/Android.mk to
+-# be able to build both the 32-bit and 64-bit binaries while
+-# building a 32-bit only SDK (sdk-eng, sdk_x86-eng, sdk_mips-eng).
+-
+-
+-LOCAL_PATH := $(EMULATOR_GTEST_SOURCES_DIR)
+-
+-common_SRC_FILES := \
+- src/gtest-all.cc \
+- src/gtest_main.cc
+-
+-common_CFLAGS := -O0
+-
+-ifneq (windows,$(BUILD_TARGET_OS))
+- common_LDLIBS += -lpthread
+-endif
+-
+-$(call emugl-begin-host-static-library,libemugl_gtest)
+-LOCAL_SRC_FILES := $(common_SRC_FILES)
+-LOCAL_CFLAGS += $(common_CFLAGS)
+-LOCAL_CPP_EXTENSION := .cc
+-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/include)
+-$(call emugl-export,LDLIBS,$(common_LDLIBS))
+-$(call emugl-end-module)
+-
+-$(call emugl-begin-host-static-library,libemugl_gtest_host)
+-LOCAL_SRC_FILES := $(common_SRC_FILES)
+-LOCAL_CFLAGS += $(common_CFLAGS)
+-LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
+-LOCAL_CPP_EXTENSION := .cc
+-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/include)
+-$(call emugl-export,LDLIBS,$(common_LDLIBS) -lpthread)
+-LOCAL_HOST_BUILD := true
+-$(call emugl-end-module)
+diff --git a/external/android-emugl/shared/emugl/common/CMakeLists.txt b/external/android-emugl/shared/emugl/common/CMakeLists.txt
+index 09388c6..c4f659d 100644
+--- a/external/android-emugl/shared/emugl/common/CMakeLists.txt
++++ b/external/android-emugl/shared/emugl/common/CMakeLists.txt
+@@ -11,7 +11,6 @@ set(COMMON_SOURCES
+ message_channel.cpp
+ message_channel.h
+ mutex.h
+- mutex_unittest.cpp
+ pod_vector.cpp
+ pod_vector.h
+ scoped_pointer_vector.h
+@@ -25,7 +24,6 @@ set(COMMON_SOURCES
+ thread_pthread.cpp
+ thread_store.cpp
+ thread_store.h
+- thread_unittest.cpp
+ unique_integer_map.h)
+
+ add_library(emugl_common STATIC ${COMMON_SOURCES})
diff --git a/testing/anbox/fix-arm-build.patch b/testing/anbox/fix-arm-build.patch
new file mode 100644
index 0000000000..1e422ef09d
--- /dev/null
+++ b/testing/anbox/fix-arm-build.patch
@@ -0,0 +1,24 @@
+--- a/src/anbox/cmds/system_info.cpp
++++ b/src/anbox/cmds/system_info.cpp
+@@ -31,7 +31,9 @@
+ #include "OpenGLESDispatch/EGLDispatch.h"
+
+ #include "cpu_features_macros.h"
++#if defined(CPU_FEATURES_ARCH_X86)
+ #include "cpuinfo_x86.h"
++#endif
+
+ namespace fs = boost::filesystem;
+
+--- a/src/anbox/cmds/check_features.cpp
++++ b/src/anbox/cmds/check_features.cpp
+@@ -19,7 +19,9 @@
+ #include "anbox/utils.h"
+
+ #include "cpu_features_macros.h"
++#if defined(CPU_FEATURES_ARCH_X86)
+ #include "cpuinfo_x86.h"
++#endif
+
+ namespace {
+ std::vector<std::string> 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 <cstdint>
+
++#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
+ )
+