--- /dev/null
+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 || exit 1
+
+ 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
+ source-commit: b6e8c3f0f4830887d69ba765a922ac3c40e81dd9
+ 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
+ - -DBINDERFS_PATH=/var/snap/anbox/common/binderfs
+ # 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
+ - libglm-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-*/