From 131154ba80281c91e621c1498b80e12ad465c158 Mon Sep 17 00:00:00 2001 From: malinero Date: Fri, 9 Jul 2021 02:25:40 +0200 Subject: [PATCH 1/5] Docker android: update SDK and NDK --- Dockerfile.android | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/Dockerfile.android b/Dockerfile.android index ad5d9397..da3a5e2b 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -1,10 +1,10 @@ FROM debian:stretch ARG THREADS=1 -ARG ANDROID_NDK_REVISION=21d -ARG ANDROID_NDK_HASH=bcf4023eb8cb6976a4c7cff0a8a8f145f162bf4d -ARG ANDROID_SDK_REVISION=4333796 -ARG ANDROID_SDK_HASH=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 +ARG ANDROID_NDK_REVISION=21e +ARG ANDROID_NDK_HASH=c3ebc83c96a4d7f539bd72c241b2be9dcd29bda9 +ARG ANDROID_SDK_REVISION=7302050_latest +ARG ANDROID_SDK_HASH=7a00faadc0864f78edd8f4908a629a46d622375cbe2e5814e82934aebecdb622 ARG QT_VERSION=5.15.2 WORKDIR /opt/android @@ -15,7 +15,7 @@ ENV ANDROID_API=android-${ANDROID_NATIVE_API_LEVEL} ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang ENV ANDROID_CLANGPP=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang++ ENV ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION} -ENV ANDROID_SDK_ROOT=${WORKDIR}/tools +ENV ANDROID_SDK_ROOT=${WORKDIR}/cmdline-tools ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ENV PATH=${JAVA_HOME}/bin:${PATH} ENV PREFIX=${WORKDIR}/prefix @@ -26,16 +26,19 @@ RUN apt-get update \ libssl-dev libstdc++6 libtinfo5 libtool libz1 openjdk-8-jdk-headless openjdk-8-jre-headless pkg-config python3 \ unzip wget -RUN wget -q https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ - && unzip -q sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ - && rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip +RUN PACKAGE_NAME=commandlinetools-linux-${ANDROID_SDK_REVISION}.zip \ + && wget -q https://dl.google.com/android/repository/${PACKAGE_NAME} \ + && echo "${ANDROID_SDK_HASH} ${PACKAGE_NAME}" | sha256sum -c \ + && unzip -q ${PACKAGE_NAME} \ + && rm -f ${PACKAGE_NAME} -RUN wget -q https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ - && unzip -q android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ - && rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip +RUN PACKAGE_NAME=android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && wget -q https://dl.google.com/android/repository/${PACKAGE_NAME} \ + && echo "${ANDROID_NDK_HASH} ${PACKAGE_NAME}" | sha1sum -c \ + && unzip -q ${PACKAGE_NAME} \ + && rm -f ${PACKAGE_NAME} -RUN cd ${ANDROID_SDK_ROOT} && echo y | ./bin/sdkmanager "platform-tools" "platforms;${ANDROID_API}" "tools" > /dev/null -RUN cp -r ${WORKDIR}/platforms ${WORKDIR}/platform-tools ${ANDROID_SDK_ROOT} +RUN echo y | ${ANDROID_SDK_ROOT}/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} "build-tools;28.0.3" "platforms;${ANDROID_API}" "tools" > /dev/null ENV HOST_PATH=${PATH} ENV PATH=${TOOLCHAIN_DIR}/aarch64-linux-android/bin:${TOOLCHAIN_DIR}/bin:${PATH} @@ -196,12 +199,6 @@ RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git \ && make -j${THREADS} install \ && rm -rf $(pwd) -RUN cd tools \ - && wget -q http://dl-ssl.google.com/android/repository/tools_r25.2.5-linux.zip \ - && unzip -q tools_r25.2.5-linux.zip \ - && rm -f tools_r25.2.5-linux.zip \ - && echo y | ${ANDROID_SDK_ROOT}/tools/android update sdk --no-ui --all --filter build-tools-28.0.3 - RUN git clone -b v3.19.7 --depth 1 https://github.com/Kitware/CMake \ && cd CMake \ && git reset --hard 22612dd53a46c7f9b4c3f4b7dbe5c78f9afd9581 \ @@ -226,6 +223,7 @@ CMD set -ex \ -DBoost_USE_STATIC_RUNTIME=ON \ -DLRELEASE_PATH="${PREFIX}/bin" \ -DQT_ANDROID_APPLICATION_BINARY="monero-wallet-gui" \ + -DANDROID_SDK="${ANDROID_SDK_ROOT}" \ -DWITH_SCANNER=ON \ ../../.. \ && PATH=${HOST_PATH} make generate_translations_header \ From 8b356605b469a755cfc521cf7988f23a4d5b0a43 Mon Sep 17 00:00:00 2001 From: malinero Date: Fri, 9 Jul 2021 02:27:30 +0200 Subject: [PATCH 2/5] Docker android: bump libraries --- Dockerfile.android | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Dockerfile.android b/Dockerfile.android index da3a5e2b..5bdd0efb 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -102,7 +102,7 @@ RUN wget -q http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz ARG BOOST_VERSION=1_74_0 ARG BOOST_VERSION_DOT=1.74.0 ARG BOOST_HASH=83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1 -RUN wget -q https://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION_DOT}/boost_${BOOST_VERSION}.tar.bz2 \ +RUN wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \ && echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \ && tar -xf boost_${BOOST_VERSION}.tar.bz2 \ && rm -f boost_${BOOST_VERSION}.tar.bz2 \ @@ -146,8 +146,8 @@ RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-${ make -j$THREADS install && \ rm -rf $(pwd) -ARG UNBOUND_VERSION=1.13.2 -ARG UNBOUND_HASH=0a13b547f3b92a026b5ebd0423f54c991e5718037fd9f72445817f6a040e1a83 +ARG UNBOUND_VERSION=1.16.2 +ARG UNBOUND_HASH=2e32f283820c24c51ca1dd8afecfdb747c7385a137abe865c99db4b257403581 RUN wget https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.tar.gz && \ echo "${UNBOUND_HASH} unbound-${UNBOUND_VERSION}.tar.gz" | sha256sum -c && \ tar -xzf unbound-${UNBOUND_VERSION}.tar.gz && \ @@ -158,8 +158,8 @@ RUN wget https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.t make -j$THREADS install && \ rm -rf $(pwd) -ARG ZMQ_VERSION=v4.3.3 -ARG ZMQ_HASH=04f5bbedee58c538934374dc45182d8fc5926fa3 +ARG ZMQ_VERSION=v4.3.4 +ARG ZMQ_HASH=4097855ddaaa65ed7b5e8cb86d143842a594eebd RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} --depth 1 \ && cd libzmq \ && git checkout ${ZMQ_HASH} \ @@ -181,27 +181,27 @@ RUN set -ex \ && make -j${THREADS} install \ && rm -rf $(pwd) -RUN git clone -b libgpg-error-1.38 --depth 1 git://git.gnupg.org/libgpg-error.git \ +RUN git clone -b libgpg-error-1.41 --depth 1 git://git.gnupg.org/libgpg-error.git \ && cd libgpg-error \ - && git reset --hard 71d278824c5fe61865f7927a2ed1aa3115f9e439 \ + && git reset --hard 98032624ae89a67ee6fe3b1db5d95032e681d163 \ && ./autogen.sh \ && CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --host=aarch64-linux-android --prefix=${PREFIX} --disable-rpath --disable-shared --enable-static --disable-doc --disable-tests \ && PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} make -j${THREADS} \ && make -j${THREADS} install \ && rm -rf $(pwd) -RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git \ +RUN git clone -b libgcrypt-1.10.1 --depth 1 git://git.gnupg.org/libgcrypt.git \ && cd libgcrypt \ - && git reset --hard 56606331bc2a80536db9fc11ad53695126007298 \ + && git reset --hard ae0e567820c37f9640440b3cff77d7c185aa6742 \ && ./autogen.sh \ && CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --host=aarch64-linux-android --prefix=${PREFIX} --with-gpg-error-prefix=${PREFIX} --disable-shared --enable-static --disable-doc --disable-tests \ && PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} make -j${THREADS} \ && make -j${THREADS} install \ && rm -rf $(pwd) -RUN git clone -b v3.19.7 --depth 1 https://github.com/Kitware/CMake \ +RUN git clone -b v3.24.2 --depth 1 https://github.com/Kitware/CMake \ && cd CMake \ - && git reset --hard 22612dd53a46c7f9b4c3f4b7dbe5c78f9afd9581 \ + && git reset --hard 31f835410efeea50acd43512eb9e5646a26ea177 \ && PATH=${HOST_PATH} ./bootstrap \ && PATH=${HOST_PATH} make -j${THREADS} \ && PATH=${HOST_PATH} make -j${THREADS} install \ From 64a6ca7fc7a2ebbb78679c7e0c212386dc45ebe8 Mon Sep 17 00:00:00 2001 From: malinero Date: Sat, 10 Jul 2021 18:51:07 +0200 Subject: [PATCH 3/5] Docker android: upgrade base image --- Dockerfile.android | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile.android b/Dockerfile.android index 5bdd0efb..24fe05ec 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -1,4 +1,4 @@ -FROM debian:stretch +FROM debian:buster ARG THREADS=1 ARG ANDROID_NDK_REVISION=21e @@ -16,14 +16,14 @@ ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang ENV ANDROID_CLANGPP=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang++ ENV ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION} ENV ANDROID_SDK_ROOT=${WORKDIR}/cmdline-tools -ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 +ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 ENV PATH=${JAVA_HOME}/bin:${PATH} ENV PREFIX=${WORKDIR}/prefix ENV TOOLCHAIN_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64 RUN apt-get update \ && apt-get install -y ant automake build-essential ca-certificates-java file gettext git libc6 libncurses5 \ - libssl-dev libstdc++6 libtinfo5 libtool libz1 openjdk-8-jdk-headless openjdk-8-jre-headless pkg-config python3 \ + libssl-dev libstdc++6 libtinfo5 libtool libz1 openjdk-11-jdk-headless openjdk-11-jre-headless pkg-config python3 \ unzip wget RUN PACKAGE_NAME=commandlinetools-linux-${ANDROID_SDK_REVISION}.zip \ From 1b119eb8f52406b4870bd0cd2d8c261de8eeb966 Mon Sep 17 00:00:00 2001 From: malinero Date: Tue, 9 Aug 2022 16:13:53 +0200 Subject: [PATCH 4/5] Docker android: update Qt to 5.15.6 (and API level to 29) --- Dockerfile.android | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Dockerfile.android b/Dockerfile.android index 24fe05ec..03e5454d 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -5,12 +5,12 @@ ARG ANDROID_NDK_REVISION=21e ARG ANDROID_NDK_HASH=c3ebc83c96a4d7f539bd72c241b2be9dcd29bda9 ARG ANDROID_SDK_REVISION=7302050_latest ARG ANDROID_SDK_HASH=7a00faadc0864f78edd8f4908a629a46d622375cbe2e5814e82934aebecdb622 -ARG QT_VERSION=5.15.2 +ARG QT_VERSION=v5.15.6-lts-lgpl WORKDIR /opt/android ENV WORKDIR=/opt/android -ENV ANDROID_NATIVE_API_LEVEL=28 +ENV ANDROID_NATIVE_API_LEVEL=29 ENV ANDROID_API=android-${ANDROID_NATIVE_API_LEVEL} ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang ENV ANDROID_CLANGPP=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang++ @@ -79,7 +79,6 @@ RUN git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} --depth 1 \ -skip qtpurchasing \ -skip qtgamepad -skip qtscript -skip qtdoc \ -no-warnings-are-errors \ - && sed -i '213,215d' qtbase/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h \ && PATH=${HOST_PATH} make -j${THREADS} \ && PATH=${HOST_PATH} make -j${THREADS} install \ && cd qttools/src/linguist/lrelease \ From 96b6e5972fbf97ba0efbe0e3a56a313e14232ec4 Mon Sep 17 00:00:00 2001 From: malinero Date: Tue, 27 Sep 2022 21:06:16 +0200 Subject: [PATCH 5/5] Github workflow android: remove obsolete docker layers --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 21543b40..2417400e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -162,6 +162,8 @@ jobs: run: docker build --tag monero:build-env-android --build-arg THREADS=3 --file Dockerfile.android . - name: build run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -e THREADS=3 monero:build-env-android + - name: Remove obsolete docker layers + run: docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi || true - uses: actions/upload-artifact@v2 with: name: ${{ github.job }}