name: anbox version: 3 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 slots: # Depending on in which environment we're running we either need # to use the system or session DBus so we also need to have one # slot for each. dbus-session: interface: dbus bus: system name: org.anbox dbus-system: interface: dbus bus: system name: org.anbox apps: anbox: command: bin/anbox-wrapper.sh container-manager: command: bin/container-manager.sh start stop-command: bin/container-manager.sh stop daemon: simple collect-bug-info: command: bin/collect-bug-info.sh parts: android-images: 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 install: | 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="2017/07/13" IMAGE_NAME="android_3_amd64.img" ;; arm*) IMAGE_PATH="2017/06/12" IMAGE_NAME="android_1_armhf.img" ;; *) 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 mv $IMAGE_NAME $SNAPCRAFT_PART_INSTALL/android.img fi prime: - android.img anbox-common: 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 prime: - bin/anbox-bridge.sh - bin/anbox-wrapper.sh - bin/container-manager.sh - bin/collect-bug-info.sh apparmor: plugin: nil stage-packages: - apparmor lxc: source: https://github.com/lxc/lxc source-type: git source-tag: lxc-2.0.7 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 - --disable-apparmor - --disable-seccomp - --enable-capabilities - --with-rootfs-path=/var/snap/anbox/common/lxc/ - --libexecdir=/snap/anbox/current/libexec/ organize: snap/anbox/current/libexec: libexec prime: - lib/liblxc.so.1 - lib/liblxc.so.1.2.0 - libexec/lxc/lxc-monitord - bin/lxc-start - bin/lxc-stop - bin/lxc-info - bin/lxc-attach - bin/lxc-ls - bin/lxc-top anbox: plugin: cmake after: - lxc 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 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 - libdbus-cpp-dev - libegl1-mesa-dev - libgles2-mesa-dev - libglib2.0-dev - libglm-dev - libgtest-dev - libprotobuf-dev - libproperties-cpp-dev - libsdl2-dev - libsdl2-image-dev - pkg-config - protobuf-compiler stage-packages: - libegl1-mesa - libgles2-mesa - libgl1-mesa-glx - libsdl2-2.0-0 - libsdl2-gfx-1.0-0 install: | make test prime: - usr/bin/anbox - usr/share/anbox - usr/lib/*-linux-*/