diff options
-rw-r--r-- | .SRCINFO | 57 | ||||
-rw-r--r-- | .gitignore | 15 | ||||
-rw-r--r-- | PKGBUILD | 111 | ||||
-rw-r--r-- | anbox-container-manager.service | 3 | ||||
-rw-r--r-- | cpu_features.patch | 42 | ||||
-rw-r--r-- | desktop-dir.patch | 23 | ||||
-rw-r--r-- | dev-binderfs.mount | 13 | ||||
-rw-r--r-- | org.anbox.service | 4 |
8 files changed, 203 insertions, 65 deletions
@@ -1,5 +1,6 @@ pkgbase = anbox-git - pkgver = r1096.ea2b7a3 + pkgdesc = Running Android in a container + pkgver = r1366.ddf4c57 pkgrel = 1 epoch = 1 url = http://anbox.io/ @@ -8,43 +9,57 @@ pkgbase = anbox-git makedepends = cmake makedepends = git makedepends = glm - makedepends = lxc - makedepends = sdl2_image - makedepends = protobuf makedepends = boost makedepends = properties-cpp makedepends = gtest + makedepends = python + makedepends = systemd + makedepends = dbus + depends = lxc + depends = sdl2_image + depends = protobuf + depends = anbox-image + depends = libsystemd + depends = libcpufeatures + depends = boost-libs + depends = sdbus-cpp + conflicts = anbox-launchers + replaces = anbox-launchers source = git+https://github.com/anbox/anbox.git - source = git+https://github.com/anbox/anbox-modules.git + source = lxc4.patch::https://gitlab.alpinelinux.org/alpine/aports/-/raw/fc60972afd4ff0c096498e28557b9a16e801aa7f/community/anbox/lxc4.patch + source = sdbus.patch::https://gitlab.alpinelinux.org/alpine/aports/-/raw/fc60972afd4ff0c096498e28557b9a16e801aa7f/community/anbox/no-bundled-sdbus.patch + source = delayed-start.patch::https://gitlab.alpinelinux.org/alpine/aports/-/raw/70a1a8afb7b6ac37291d382e6e5cc7561fc88626/community/anbox/give-more-time-to-start.patch + source = egl.patch::https://github.com/anbox/anbox/pull/1877.patch + source = ByteSizeLong.patch::https://github.com/anbox/anbox/pull/1480.patch + source = lxc4010.patch::https://github.com/anbox/anbox/pull/1938.patch + source = cpu_features.patch + source = desktop-dir.patch source = anbox-container-manager.service source = anbox-session-manager.service source = 99-anbox.rules source = anbox.conf source = anbox.desktop + source = org.anbox.service + source = dev-binderfs.mount source = anbox-bridge.network source = anbox-bridge.netdev sha256sums = SKIP - sha256sums = SKIP - sha256sums = 5be94b63dc30d141f15ca7d1be6e3e81f26ef33f844614975537562f5d08236c + sha256sums = c1071203defdeaee56122913a6d7e67ac496c889a0c59cb889d94a58bc655bfa + sha256sums = 7c0626afaf1ce004ac2c57cd89db393f9a6ba21f1087001d15278a7bd79c8219 + sha256sums = 253c211455ff0cfaa058a0b80eb41d58f84ee646c0c67dbcbcc888b5833009a7 + sha256sums = c684ff93824137d79a384a134e644849ef33c986f2d9e192636fc8d80ef9baba + sha256sums = c922afe6a2cd4fe7296a0921e47e09abedf0104dc23d0037010d1df4cc42308b + sha256sums = b01699c635efcff48fc11f8d20e7f88e6497aba912496df2e379be46e584a6f4 + sha256sums = eeeb4dd40d30d0e8c0f0001d44ca7876c1c564dfc31b24ecfb871fd133037825 + sha256sums = d1e2e3fa1299b423f1d98cbd3c591d853f1ce8646f508ef838fe714f986fc5b2 + sha256sums = f76cf723e3436333176bcb778b2c32988d9789f14d339ee1cb8c13ef35e2fdd6 sha256sums = 1f22dbb5a3ca6925bbf62899cd0f0bbaa0b77c879adcdd12ff9d43adfa61b1d8 sha256sums = 210eb93342228168f7bb632c8b93d9bfda6f53f62459a6b74987fa1e17530475 sha256sums = 3e07dc524a827c1651857cce28a06c1565bc5188101c140ed213bbafedc5abff sha256sums = 7332d09865be553a259a53819cebddd21f661c7a251d78c2f46acd75c66676b6 + sha256sums = 74e2208e0c03e5f21be3ff54b58160a172e3768a80c41726c06b4ab8cc9288dd + sha256sums = c7e9958a9cff1191dca0d50b0ea8392d7728490e56ffb38a475ba516a09a2109 sha256sums = 44899328725667041e6e84912da81c1d0147b708006eb2c2bb6503f271629ff0 sha256sums = 559190df4d6d595480b30d8b13b862081fc4aac52790e33eb24cf7fbcb8003b8 pkgname = anbox-git - pkgdesc = Running Android in a container - depends = lxc - depends = sdl2_image - depends = protobuf - depends = anbox-image - depends = libsystemd - depends = boost-libs - optdepends = anbox-modules-dkms-git: Required Android kernel modules - -pkgname = anbox-modules-dkms-git - pkgdesc = Required kernel module sources for Android - arch = any - depends = dkms - diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..443341067c62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +* +!99-anbox.rules +!anbox-bridge.netdev +!anbox-bridge.network +!anbox.conf +!anbox-container-manager.service +!anbox.desktop +!anbox-session-manager.service +!desktop-dir.patch +!cpu_features.patch +!dev-binderfs.mount +!.gitignore +!org.anbox.service +!PKGBUILD +!.SRCINFO @@ -1,35 +1,59 @@ -# Maintainer: Iwan Timmer <irtimmer@gmail.com> +# Maintainer: Christoph Schmidpeter <john.doe@example.com> +# Co-Maintainer: Mubashshir <ahmubashshir@gmail.com> +# Contributor: Iwan Timmer <irtimmer@gmail.com> +# from: git -pkgname=('anbox-git' 'anbox-modules-dkms-git') -_pkgname=anbox -pkgver=r1096.ea2b7a3 +pkgname=anbox-git +pkgver=r1366.ddf4c57 pkgrel=1 epoch=1 arch=('x86_64') url="http://anbox.io/" license=('GPL3') -makedepends=('cmake' 'git' 'glm' 'lxc' 'sdl2_image' 'protobuf' 'boost' 'properties-cpp' 'gtest') +pkgdesc="Running Android in a container" +depends=('lxc' 'sdl2_image' 'protobuf' 'anbox-image' 'libsystemd' 'libcpufeatures' 'boost-libs' 'sdbus-cpp') +replaces=('anbox-launchers') +conflicts=('anbox-launchers') +makedepends=('cmake' 'git' 'glm' 'boost' 'properties-cpp' 'gtest' 'python' 'systemd' 'dbus') source=("git+https://github.com/anbox/anbox.git" - "git+https://github.com/anbox/anbox-modules.git" + 'lxc4.patch::https://gitlab.alpinelinux.org/alpine/aports/-/raw/fc60972afd4ff0c096498e28557b9a16e801aa7f/community/anbox/lxc4.patch' + 'sdbus.patch::https://gitlab.alpinelinux.org/alpine/aports/-/raw/fc60972afd4ff0c096498e28557b9a16e801aa7f/community/anbox/no-bundled-sdbus.patch' + 'delayed-start.patch::https://gitlab.alpinelinux.org/alpine/aports/-/raw/70a1a8afb7b6ac37291d382e6e5cc7561fc88626/community/anbox/give-more-time-to-start.patch' + 'egl.patch::https://github.com/anbox/anbox/pull/1877.patch' + 'ByteSizeLong.patch::https://github.com/anbox/anbox/pull/1480.patch' + 'lxc4010.patch::https://github.com/anbox/anbox/pull/1938.patch' + 'cpu_features.patch' + 'desktop-dir.patch' 'anbox-container-manager.service' 'anbox-session-manager.service' '99-anbox.rules' 'anbox.conf' 'anbox.desktop' + 'org.anbox.service' + 'dev-binderfs.mount' 'anbox-bridge.network' 'anbox-bridge.netdev') sha256sums=('SKIP' - 'SKIP' - '5be94b63dc30d141f15ca7d1be6e3e81f26ef33f844614975537562f5d08236c' + 'c1071203defdeaee56122913a6d7e67ac496c889a0c59cb889d94a58bc655bfa' + '7c0626afaf1ce004ac2c57cd89db393f9a6ba21f1087001d15278a7bd79c8219' + '253c211455ff0cfaa058a0b80eb41d58f84ee646c0c67dbcbcc888b5833009a7' + 'c684ff93824137d79a384a134e644849ef33c986f2d9e192636fc8d80ef9baba' + 'c922afe6a2cd4fe7296a0921e47e09abedf0104dc23d0037010d1df4cc42308b' + 'b01699c635efcff48fc11f8d20e7f88e6497aba912496df2e379be46e584a6f4' + 'eeeb4dd40d30d0e8c0f0001d44ca7876c1c564dfc31b24ecfb871fd133037825' + 'd1e2e3fa1299b423f1d98cbd3c591d853f1ce8646f508ef838fe714f986fc5b2' + 'f76cf723e3436333176bcb778b2c32988d9789f14d339ee1cb8c13ef35e2fdd6' '1f22dbb5a3ca6925bbf62899cd0f0bbaa0b77c879adcdd12ff9d43adfa61b1d8' '210eb93342228168f7bb632c8b93d9bfda6f53f62459a6b74987fa1e17530475' '3e07dc524a827c1651857cce28a06c1565bc5188101c140ed213bbafedc5abff' '7332d09865be553a259a53819cebddd21f661c7a251d78c2f46acd75c66676b6' + '74e2208e0c03e5f21be3ff54b58160a172e3768a80c41726c06b4ab8cc9288dd' + 'c7e9958a9cff1191dca0d50b0ea8392d7728490e56ffb38a475ba516a09a2109' '44899328725667041e6e84912da81c1d0147b708006eb2c2bb6503f271629ff0' '559190df4d6d595480b30d8b13b862081fc4aac52790e33eb24cf7fbcb8003b8') pkgver() { - cd "$srcdir/$_pkgname" + cd "${pkgname%*-git}" ( set -o pipefail git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' || printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" @@ -37,49 +61,50 @@ pkgver() { } prepare() { - cd "$srcdir/${_pkgname}" + cd "${pkgname%*-git}" # Don't build tests truncate -s 0 cmake/FindGMock.cmake truncate -s 0 tests/CMakeLists.txt + + # Thanks to @bartus <arch-user-repo@bartus.33mail.com> for suggesting the patch + # checking before applying it. + # Original patch: http://ix.io/3Clr + printf '%s\n' "${source[@]%%::*}" \ + | awk -F . '/\.patch/{print $1}' \ + | while read -r patch;do + if patch --dry-run -Np1 -Rsf < "$srcdir/$patch.patch" &> /dev/null; then + warning "Patch already applied, please remove $patch.patch from source[]!" + read -t5 -p 'press enter to continue...' || true + else + msg "Applying patch: $patch" + patch -Np1 < "$srcdir/$patch.patch" + fi + done } build() { - mkdir -p "$srcdir/${_pkgname}/build" - cd "$srcdir/${_pkgname}/build" - - cmake .. -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_FLAGS="-Wno-error=implicit-fallthrough -Wno-error=missing-field-initializers" -DCMAKE_BUILD_TYPE=Release - make + cmake -B build -S "${pkgname%*-git}" \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_SKIP_INSTALL_RPATH=YES \ + -DCMAKE_SKIP_RPATH=YES \ + -Wno-dev + make -C build } -package_anbox-git() { - depends=('lxc' 'sdl2_image' 'protobuf' 'anbox-image' 'libsystemd' 'boost-libs') - optdepends=('anbox-modules-dkms-git: Required Android kernel modules') - pkgdesc="Running Android in a container" - - cd "$srcdir/${_pkgname}" +package() { make -C build DESTDIR="$pkgdir" install - install -Dm 644 -t $pkgdir/usr/lib/systemd/system $srcdir/anbox-container-manager.service - install -Dm 644 -t $pkgdir/usr/lib/systemd/user $srcdir/anbox-session-manager.service - install -Dm 644 $srcdir/anbox-bridge.network $pkgdir/usr/lib/systemd/network/80-anbox-bridge.network - install -Dm 644 $srcdir/anbox-bridge.netdev $pkgdir/usr/lib/systemd/network/80-anbox-bridge.netdev - install -Dm 644 -t $pkgdir/usr/lib/udev/rules.d $srcdir/99-anbox.rules - install -Dm 644 -t $pkgdir/usr/share/applications $srcdir/anbox.desktop - install -Dm 644 snap/gui/icon.png $pkgdir/usr/share/pixmaps/anbox.png -} - -package_anbox-modules-dkms-git() { - pkgdesc="Required kernel module sources for Android" - depends=('dkms') - arch=('any') - - cd "$srcdir/anbox-modules" - modules=(ashmem binder) - for mod in "${modules[@]}"; do - install -dm 755 $pkgdir/usr/src - cp -a $mod $pkgdir/usr/src/anbox-modules-$mod-$pkgver - done; - - install -Dm 644 -t $pkgdir/usr/lib/modules-load.d $srcdir/anbox.conf + install -Dm 644 -t "$pkgdir/usr/lib/systemd/system" anbox-container-manager.service dev-binderfs.mount + install -Dm 644 -t "$pkgdir/usr/lib/systemd/user" anbox-session-manager.service + install -Dm 644 "$srcdir/anbox-bridge.network" "$pkgdir/usr/lib/systemd/network/80-anbox-bridge.network" + install -Dm 644 "$srcdir/anbox-bridge.netdev" "$pkgdir/usr/lib/systemd/network/80-anbox-bridge.netdev" + install -Dm 644 -t "$pkgdir/usr/lib/udev/rules.d" 99-anbox.rules + install -Dm 644 -t "$pkgdir/usr/share/applications" anbox.desktop + install -Dm 644 -t "$pkgdir/usr/share/dbus-1/services" org.anbox.service + install -Dm 644 "${pkgname%*-git}/snap/gui/icon.png" "$pkgdir/usr/share/pixmaps/anbox.png" + install -Dm 644 -t "$pkgdir/usr/share/desktop-directories" "${pkgname%*-git}/data/desktop/anbox-android.directory" + install -Dm 644 -t "$pkgdir/etc/xdg/menus/applications-merged" "${pkgname%*-git}/data/desktop/anbox-android.menu" } diff --git a/anbox-container-manager.service b/anbox-container-manager.service index 8be699138c94..81d01250adbc 100644 --- a/anbox-container-manager.service +++ b/anbox-container-manager.service @@ -2,7 +2,8 @@ Description=Anbox Container Manager [Service] -ExecStart=/usr/bin/anbox container-manager --daemon --privileged --data-path=/var/lib/anbox +ExecStart=/usr/bin/anbox container-manager --daemon --privileged --data-path=/var/lib/anbox --container-network-gateway=192.168.250.1 --container-network-address=192.168.250.2 [Install] WantedBy=multi-user.target +Also=dev-binderfs.mount diff --git a/cpu_features.patch b/cpu_features.patch new file mode 100644 index 000000000000..1e8c82498237 --- /dev/null +++ b/cpu_features.patch @@ -0,0 +1,42 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fc3d9bd..55e1182 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -60,6 +60,7 @@ find_package(Boost COMPONENTS filesystem log serialization system thread program + find_package(PkgConfig) + find_package(Threads) + find_package(SDBus-C++ REQUIRED) ++find_package(CpuFeatures REQUIRED) + find_package(EGL REQUIRED) + find_package(GLESv2 REQUIRED) + find_package(Protobuf REQUIRED) +diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt +index 332ca9e..b711e88 100644 +--- a/external/CMakeLists.txt ++++ b/external/CMakeLists.txt +@@ -5,4 +5,3 @@ add_subdirectory(backward-cpp) + + set(BUILD_TESTING OFF) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error") +-add_subdirectory(cpu_features EXCLUDE_FROM_ALL) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 9b7a508..64ca80d 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -25,7 +25,6 @@ include_directories( + ${CMAKE_BINARY_DIR}/external/android-emugl/host/libs/GLESv2_dec + ${CMAKE_SOURCE_DIR}/external/android-emugl/host/libs/renderControl_dec + ${CMAKE_BINARY_DIR}/external/android-emugl/host/libs/renderControl_dec +- ${CMAKE_SOURCE_DIR}/external/cpu_features/include + ) + + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBINDERFS_PATH=\"\\\"${BINDERFS_PATH}\\\"\"") +@@ -399,7 +398,7 @@ target_link_libraries(anbox-core + ${MIRCLIENT_LIBRARIES} + ${LIBSYSTEMD_LDFLAGS} + ${LIBSYSTEMD_LIBRARIES} +- cpu_features ++ CpuFeatures::cpu_features + pthread + process-cpp + emugl_common diff --git a/desktop-dir.patch b/desktop-dir.patch new file mode 100644 index 000000000000..7df9eb6fdcaa --- /dev/null +++ b/desktop-dir.patch @@ -0,0 +1,23 @@ +diff --git a/data/desktop/anbox-android.directory b/data/desktop/anbox-android.directory +index 8af4627..614cde8 100644 +--- a/data/desktop/anbox-android.directory ++++ b/data/desktop/anbox-android.directory +@@ -2,4 +2,4 @@ + Type=Directory + Name=Anbox + GenericName=Anbox +-Icon=${SNAP}/meta/gui/icon.png ++Icon=anbox +diff --git a/data/desktop/anbox-android.menu b/data/desktop/anbox-android.menu +index ad0af8b..492c78f 100644 +--- a/data/desktop/anbox-android.menu ++++ b/data/desktop/anbox-android.menu +@@ -9,7 +9,7 @@ + <Include> + <Or> + <Category>Anbox</Category> +- <Filename>appmgr.desktop</Filename> ++ <Filename>anbox.desktop</Filename> + </Or> + </Include> + </Menu> diff --git a/dev-binderfs.mount b/dev-binderfs.mount new file mode 100644 index 000000000000..b112a9dc140b --- /dev/null +++ b/dev-binderfs.mount @@ -0,0 +1,13 @@ +[Unit] +Description=Android Binder File System +ConditionPathExists=!/dev/binder +Before=anbox-container-manager.service + +[Mount] +Where=/dev/binderfs +What=binder +Type=binder +Options=nofail + +[Install] +WantedBy=anbox-container-manager.service diff --git a/org.anbox.service b/org.anbox.service new file mode 100644 index 000000000000..a344f98944f7 --- /dev/null +++ b/org.anbox.service @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.anbox +Exec=/usr/bin/anbox session-manager +SystemdService=anbox-session-manager.service |