quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

commit 2ab3c26f3ac01be7de4a8cac05739264e7976aed
parent 070aa138cbfc24b6e62c2f8438bff547a2c5dc99
Author: Iván Ávalos <avalos@disroot.org>
Date:   Tue, 24 Jan 2023 15:20:30 -0600

WIP: Dockerize Android build

Diffstat:
ADockerfile | 30++++++++++++++++++++++++++++++
Abuild.sh | 10++++++++++
Mcross/build-android.sh | 2+-
Ainstall.sh | 41+++++++++++++++++++++++++++++++++++++++++
Aprepare.sh | 26++++++++++++++++++++++++++
5 files changed, 108 insertions(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile @@ -0,0 +1,30 @@ +FROM debian:bullseye-slim + +ENV LANG=C.UTF-8 +ENV DEBIAN_FRONTEND=noninteractive +ENV ANDROID_HOME=/opt/android-sdk +ENV REPO_URL=https://git.taler.net/quickjs-tart.git + +WORKDIR /opt/quickjs-build + +ADD prepare.sh ./ +ADD install.sh ./ + +RUN ./prepare.sh +RUN ./install.sh + +# Cleanup +RUN apt-get -y autoremove --purge && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ADD *.sh ./ +ADD quickjs ./quickjs +ADD subprojects ./subprojects +ADD meson.build ./ +ADD cross/build-android.sh ./cross/ +ADD *.js ./ +ADD *.c ./ +ADD *.h ./ + +CMD ./build.sh diff --git a/build.sh b/build.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -e +set -x + +. /etc/environment +./download_wallet_core_js.sh +./cross/build-android.sh x86 +./cross/build-android.sh x86_64 +./cross/build-android.sh arm64-v8a +./cross/build-android.sh armeabi-v7a diff --git a/cross/build-android.sh b/cross/build-android.sh @@ -53,7 +53,7 @@ ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk-bundle" HOST_ROOT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64" SYS_ROOT="${HOST_ROOT}/sysroot" -LIB_PATH="/${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi:${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi/${API_LEVEL}:${ANDROID_NDK_HOME}/platforms/android-${API_LEVEL}/arch-${ARCH}/usr/lib" +LIB_PATH="${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi:${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi/${API_LEVEL}:${ANDROID_NDK_HOME}/platforms/android-${API_LEVEL}/arch-${ARCH}/usr/lib" INC_PATH="${SYS_ROOT}/usr/include" export PATH="${HOST_ROOT}/bin:${PATH}" diff --git a/install.sh b/install.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -e +set -x + +# Install dependencies +apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + default-jdk-headless \ + git \ + unzip \ + wget + +apt-get install -y --no-install-recommends \ + meson -t bullseye-backports + +# Install Android SDK Manager +wget --no-verbose -O cmdline-tools.zip \ + https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip +unzip cmdline-tools.zip +rm cmdline-tools.zip +mkdir -p ${ANDROID_HOME}/cmdline-tools +mv cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest + +# Accept all those nasty EULAs +mkdir -p ${ANDROID_HOME}/licenses/ +printf "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > ${ANDROID_HOME}/licenses/android-sdk-license + +# Install platform-tools and ndk-bundle (for stripping libraries) +mkdir /root/.android +touch /root/.android/repositories.cfg +echo y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "ndk-bundle" + +# Add $ANDROID_HOME and $ANDROID_SDK_ROOT to PATH +# printf 'export PATH=$PATH:%s' $ANDROID_HOME/cmdline-tools/latest/bin > ~/.bashrc +printf 'export ANDROID_SDK_ROOT=%s' $ANDROID_HOME >> /etc/environment + +# clean up for smaller image size +apt-get -y autoremove --purge +apt-get clean +rm -rf /var/lib/apt/lists/* diff --git a/prepare.sh b/prepare.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -e +set -x + +# use snapshot repos for deterministic package versions +DATE="20230123T040022Z" +cat << EOF > /etc/apt/sources.list +deb http://snapshot.debian.org/archive/debian/${DATE}/ bullseye main +deb http://snapshot.debian.org/archive/debian/${DATE}/ bullseye-backports main +deb http://snapshot.debian.org/archive/debian-security/${DATE}/ bullseye-security main +EOF + +# ignore expired package releases (they expire too fast) +echo 'Acquire::Check-Valid-Until "0";' >> /etc/apt/apt.conf.d/10-ignore-expiry + +# do not install documentation to keep image small +echo "path-exclude=/usr/share/locale/*" >> /etc/dpkg/dpkg.cfg.d/01_nodoc +echo "path-exclude=/usr/share/man/*" >> /etc/dpkg/dpkg.cfg.d/01_nodoc +echo "path-exclude=/usr/share/doc/*" >> /etc/dpkg/dpkg.cfg.d/01_nodoc + +# update package sources +apt-get update +apt-get -y upgrade + +# install of default-jdk-headless fails otherwise on *-slim image +mkdir -p /usr/share/man/man1