308 lines
7.4 KiB
YAML
308 lines
7.4 KiB
YAML
name: anbox
|
|
version: 4
|
|
version-script: |
|
|
if [ "$SNAPCRAFT_GRADE" = "stable" ]; then
|
|
echo $SNAPCRAFT_PROJECT_VERSION
|
|
else
|
|
echo $SNAPCRAFT_PROJECT_VERSION-$(git rev-parse --short HEAD)
|
|
fi
|
|
summary: Android in a Box
|
|
description: |
|
|
Runtime for Android applications which runs a full Android system
|
|
in a container using Linux namespaces (user, ipc, net, mount) to
|
|
separate the Android system fully from the host.
|
|
confinement: devmode
|
|
grade: devel
|
|
architectures: [amd64]
|
|
|
|
slots:
|
|
dbus-session-slot:
|
|
interface: dbus
|
|
bus: session
|
|
name: org.anbox
|
|
|
|
plugs:
|
|
dbus-session-plug:
|
|
interface: dbus
|
|
bus: session
|
|
name: org.anbox
|
|
|
|
apps:
|
|
anbox:
|
|
command: desktop-launch $SNAP/bin/anbox-wrapper.sh
|
|
slots:
|
|
- dbus-session-slot
|
|
plugs:
|
|
- x11
|
|
- unity7
|
|
- network
|
|
- opengl
|
|
- wayland
|
|
- pulseaudio
|
|
- home
|
|
- process-control
|
|
- desktop
|
|
|
|
container-manager:
|
|
command: bin/container-manager.sh start
|
|
stop-command: bin/container-manager.sh stop
|
|
daemon: simple
|
|
plugs:
|
|
- firewall-control
|
|
- mount-observe
|
|
- network-control
|
|
- network-bind
|
|
|
|
collect-bug-info:
|
|
command: bin/collect-bug-info.sh
|
|
shell:
|
|
command: bin/anbox-shell.sh
|
|
android-settings:
|
|
command: desktop-launch $SNAP/bin/app-android-settings.sh
|
|
desktop: desktop/android-settings.desktop
|
|
slots:
|
|
- dbus-session-slot
|
|
plugs:
|
|
- dbus-session-plug
|
|
- x11
|
|
- unity7
|
|
- network
|
|
- opengl
|
|
- wayland
|
|
- pulseaudio
|
|
- home
|
|
- process-control
|
|
- desktop
|
|
|
|
appmgr:
|
|
command: desktop-launch $SNAP/bin/app-appmgr.sh
|
|
desktop: desktop/appmgr.desktop
|
|
slots:
|
|
- dbus-session-slot
|
|
plugs:
|
|
- dbus-session-plug
|
|
- x11
|
|
- unity7
|
|
- network
|
|
- opengl
|
|
- wayland
|
|
- pulseaudio
|
|
- home
|
|
- process-control
|
|
- desktop
|
|
|
|
parts:
|
|
android:
|
|
plugin: dump
|
|
# This needs to be any directory but not the root one as if we use
|
|
# it we get superious permissions errors with the copied .git tree
|
|
source: data
|
|
build-packages:
|
|
- wget
|
|
override-build: |
|
|
LOCAL_IMAGE=$SNAPCRAFT_PART_INSTALL/../../../android-images/android.img
|
|
|
|
if [ -f $LOCAL_IMAGE ]; then
|
|
|
|
echo "Using local image $LOCAL_IMAGE"
|
|
cp $LOCAL_IMAGE $SNAPCRAFT_PART_INSTALL/android.img
|
|
|
|
else
|
|
|
|
IMAGE_PATH=
|
|
IMAGE_NAME=
|
|
ARCH=$(uname -m)
|
|
|
|
case "$ARCH" in
|
|
x86_64)
|
|
IMAGE_PATH="2018/07/19"
|
|
IMAGE_NAME="android_amd64.img"
|
|
IMAGE_HASH="6b04cd33d157814deaf92dccf8a23da4dc00b05ca6ce982a03830381896a8cca"
|
|
;;
|
|
*)
|
|
echo "ERROR: Unknown architecture $ARCH"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# FIXME: downloading with a source: field doesn't work as snapcraft
|
|
# expects the downloaded file to be an archive it can extract.
|
|
echo "Downloading image..."
|
|
wget http://build.anbox.io/android-images/$IMAGE_PATH/$IMAGE_NAME
|
|
|
|
echo "$IMAGE_HASH $IMAGE_NAME" > image-hash
|
|
sha256sum -c image-hash
|
|
|
|
mv $IMAGE_NAME $SNAPCRAFT_PART_INSTALL/android.img
|
|
|
|
fi
|
|
prime:
|
|
- android.img
|
|
|
|
apparmor:
|
|
plugin: nil
|
|
stage-packages:
|
|
- apparmor
|
|
|
|
zip:
|
|
plugin: nil
|
|
stage-packages:
|
|
- zip
|
|
prime:
|
|
- usr/bin/zip
|
|
|
|
lxc:
|
|
source: https://github.com/lxc/lxc
|
|
source-type: git
|
|
source-tag: lxc-3.0.1
|
|
build-packages:
|
|
- libapparmor-dev
|
|
- libcap-dev
|
|
- libgnutls28-dev
|
|
- libseccomp-dev
|
|
- pkg-config
|
|
plugin: autotools
|
|
configflags:
|
|
- --disable-selinux
|
|
- --disable-python
|
|
- --disable-lua
|
|
- --disable-tests
|
|
- --disable-examples
|
|
- --disable-doc
|
|
- --disable-api-docs
|
|
- --disable-bash
|
|
- --disable-cgmanager
|
|
- --enable-apparmor
|
|
- --enable-seccomp
|
|
- --enable-capabilities
|
|
- --with-rootfs-path=/var/snap/anbox/common/lxc/
|
|
- --libexecdir=/snap/anbox/current/libexec/
|
|
override-build: |
|
|
set -ex
|
|
git config user.email "buildbot@anbox.io"
|
|
git config user.name "Anbox Buildbot"
|
|
git remote add anbox https://github.com/anbox/lxc
|
|
git fetch anbox
|
|
# apparmor: don't require a transition for Anbox child profiles
|
|
git cherry-pick 2f81fb7c91560b32e506bb874f8cd63e37985906
|
|
set +ex
|
|
snapcraftctl build
|
|
organize:
|
|
snap/anbox/current/libexec: libexec
|
|
prime:
|
|
- lib/liblxc.so.1
|
|
- lib/liblxc.so.1.4.0
|
|
- libexec/lxc/lxc-monitord
|
|
- bin/lxc-start
|
|
- bin/lxc-stop
|
|
- bin/lxc-info
|
|
- bin/lxc-attach
|
|
- bin/lxc-ls
|
|
- bin/lxc-top
|
|
|
|
swiftshader:
|
|
plugin: cmake
|
|
source: https://swiftshader.googlesource.com/SwiftShader
|
|
source-type: git
|
|
# Points to latest head of branch android-emulator-current-release
|
|
source-commit: 79acc73de8a455f79fb7e458719adc86aa798f07
|
|
override-build: |
|
|
git submodule update --init
|
|
snapcraftctl build
|
|
artifacts:
|
|
- libEGL.so
|
|
- libGLES_CM.so
|
|
- libGLESv2.so
|
|
organize:
|
|
libEGL.so: lib/anbox/swiftshader/libEGL.so
|
|
libGLES_CM.so: lib/anbox/swiftshader/libGLES_CM.so
|
|
libGLESv2.so: lib/anbox/swiftshader/libGLESv2.so
|
|
|
|
anbox-scripts:
|
|
plugin: dump
|
|
source: scripts
|
|
organize:
|
|
snap-wrapper.sh: bin/anbox-wrapper.sh
|
|
container-manager.sh: bin/container-manager.sh
|
|
anbox-bridge.sh: bin/anbox-bridge.sh
|
|
collect-bug-info.sh: bin/collect-bug-info.sh
|
|
app-android-settings.sh: bin/app-android-settings.sh
|
|
app-appmgr.sh: bin/app-appmgr.sh
|
|
anbox-shell.sh: bin/anbox-shell.sh
|
|
prime:
|
|
- bin/anbox-bridge.sh
|
|
- bin/anbox-shell.sh
|
|
- bin/anbox-wrapper.sh
|
|
- bin/container-manager.sh
|
|
- bin/collect-bug-info.sh
|
|
- bin/app-*.sh
|
|
|
|
anbox-data:
|
|
plugin: dump
|
|
source: data
|
|
prime:
|
|
- glvnd
|
|
- desktop
|
|
- apparmor
|
|
- seccomp
|
|
|
|
anbox:
|
|
plugin: cmake
|
|
after:
|
|
- lxc
|
|
- desktop-glib-only
|
|
source: .
|
|
configflags:
|
|
# FIXME: Anbox currently has some paths with hard coded prefixes. Once
|
|
# that is fixed we can avoid using a prefix here.
|
|
- -DCMAKE_INSTALL_PREFIX:PATH=/usr
|
|
- -DANBOX_VERSION=$SNAPCRAFT_PROJECT_VERSION
|
|
# FIXME: Once we have everything in place for full snap confinement we
|
|
# can securely enable this.
|
|
# - -DSNAP_CONFINEMENT=ON
|
|
build-packages:
|
|
- build-essential
|
|
- cmake
|
|
- cmake-data
|
|
- cmake-extras
|
|
- debhelper
|
|
- dbus
|
|
- google-mock
|
|
- libboost-dev
|
|
- libboost-filesystem-dev
|
|
- libboost-log-dev
|
|
- libboost-iostreams-dev
|
|
- libboost-program-options-dev
|
|
- libboost-system-dev
|
|
- libboost-test-dev
|
|
- libboost-thread-dev
|
|
- libcap-dev
|
|
- libdbus-1-dev
|
|
- libegl1-mesa-dev
|
|
- libgles2-mesa-dev
|
|
- libglib2.0-dev
|
|
- libgtest-dev
|
|
- libprotobuf-dev
|
|
- libproperties-cpp-dev
|
|
- libsdl2-dev
|
|
- libsdl2-image-dev
|
|
- libsystemd-dev
|
|
- pkg-config
|
|
- protobuf-compiler
|
|
stage-packages:
|
|
- libboost-log1.58.0
|
|
- libboost-iostreams1.58.0
|
|
- libboost-program-options1.58.0
|
|
- libboost-thread1.58.0
|
|
- libdb5.3
|
|
- libegl1-mesa
|
|
- libgles2-mesa
|
|
- libgl1-mesa-glx
|
|
- libsdl2-2.0-0
|
|
- libsdl2-gfx-1.0-0
|
|
- libsdl2-image-2.0-0
|
|
- libsystemd0
|
|
prime:
|
|
- usr/bin/anbox
|
|
- usr/share/anbox
|
|
- usr/lib/*-linux-*/
|