From daa5ad152e63ec24913d1e578c5455b2fb666fd3 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 22 Apr 2022 10:28:25 +0200 Subject: [PATCH] buildserver: install default SDK packages using fdroid/sdkmanager fdroid/sdkmanager provides a root of trust to verify all the packages it downloads, so it fully replaces what makebuildserver was doing. closes #927 --- buildserver/Dockerfile | 6 +- buildserver/provision-android-sdk | 144 +++++++++++++++----------- buildserver/provision-apt-get-install | 1 + makebuildserver | 117 --------------------- 4 files changed, 84 insertions(+), 184 deletions(-) diff --git a/buildserver/Dockerfile b/buildserver/Dockerfile index e1fe8804..fcb50974 100644 --- a/buildserver/Dockerfile +++ b/buildserver/Dockerfile @@ -48,11 +48,7 @@ RUN printf "path-exclude=/usr/share/locale/*\npath-exclude=/usr/share/man/*\npat && bash /opt/buildserver/setup-env-vars /opt/android-sdk \ && . /etc/profile.d/bsenv.sh \ && bash /opt/buildserver/provision-apt-get-install https://deb.debian.org/debian \ - && tools=tools_r25.2.5-linux.zip \ - && mkdir -p /vagrant/cache \ - && curl https://dl.google.com/android/repository/$tools > /vagrant/cache/$tools \ - && echo "577516819c8b5fae680f049d39014ff1ba4af870b687cab10595783e6f22d33e /vagrant/cache/$tools" | sha256sum -c \ - && bash /opt/buildserver/provision-android-sdk \ + && bash /opt/buildserver/provision-android-sdk "tools;25.2.5" \ && bash /opt/buildserver/provision-android-ndk /opt/android-sdk/ndk \ && bash /opt/buildserver/provision-gradle \ && bash /opt/buildserver/provision-buildserverid $GIT_REV_PARSE_HEAD \ diff --git a/buildserver/provision-android-sdk b/buildserver/provision-android-sdk index ac3a0b99..c591642e 100644 --- a/buildserver/provision-android-sdk +++ b/buildserver/provision-android-sdk @@ -1,5 +1,4 @@ #!/bin/bash -# echo $0 set -e @@ -10,19 +9,6 @@ if [ -z $ANDROID_HOME ]; then exit 1 fi -# TODO remove the rm, this should work with an existing ANDROID_HOME -if [ ! -x $ANDROID_HOME/tools/android ]; then - rm -rf $ANDROID_HOME - mkdir ${ANDROID_HOME} - mkdir ${ANDROID_HOME}/temp - mkdir ${ANDROID_HOME}/platforms - mkdir ${ANDROID_HOME}/build-tools - cd $ANDROID_HOME - - tools=`ls -1 /vagrant/cache/tools_*.zip | sort -n | tail -1` - unzip -qq $tools -fi - # disable the repositories of proprietary stuff disabled=" @version@=1 @@ -40,59 +26,92 @@ for line in $disabled; do echo $line >> ${HOME}/.android/sites-settings.cfg done - -cd /vagrant/cache - -# make links for `android update sdk` to use and delete -blocklist="build-tools_r17-linux.zip - build-tools_r18.0.1-linux.zip - build-tools_r18.1-linux.zip - build-tools_r18.1.1-linux.zip - build-tools_r19-linux.zip - build-tools_r19.0.1-linux.zip - build-tools_r19.0.2-linux.zip - build-tools_r19.0.3-linux.zip - build-tools_r21-linux.zip - build-tools_r21.0.1-linux.zip - build-tools_r21.0.2-linux.zip - build-tools_r21.1-linux.zip - build-tools_r21.1.1-linux.zip - build-tools_r22-linux.zip - build-tools_r23-linux.zip - android-1.5_r04-linux.zip - android-1.6_r03-linux.zip - android-2.0_r01-linux.zip - android-2.0.1_r01-linux.zip" -latestm2=`ls -1 android_m2repository*.zip | sort -n | tail -1` -for f in $latestm2 android-[0-9]*.zip platform-[0-9]*.zip build-tools_r*-linux.zip; do - rm -f ${ANDROID_HOME}/temp/$f - if [[ $blocklist != *$f* ]]; then - ln -s /vagrant/cache/$f ${ANDROID_HOME}/temp/ - fi +# Include old makebuildserver cache that is a Vagrant synced_folder +# for sdkmanager to use. +cachedir=$HOME/.cache/sdkmanager +mkdir -p $cachedir +pushd $cachedir +for f in /vagrant/cache/*.zip; do + test -e $f && ln -s $f done +popd -# install all cached platforms -cached="" -for f in `ls -1 android-[0-9]*.zip platform-[0-9]*.zip`; do - sdk=`unzip -c $f "*/build.prop" | sed -n 's,^ro.build.version.sdk=,,p'` - cached=,android-${sdk}${cached} -done +# TODO do not preinstall 'tools' or 'platform-tools' at all, app builds don't need them +packages=" + tools;25.2.5 + platform-tools + build-tools;19.1.0 + build-tools;20.0.0 + build-tools;21.1.2 + build-tools;22.0.1 + build-tools;23.0.1 + build-tools;23.0.2 + build-tools;23.0.3 + build-tools;24.0.0 + build-tools;24.0.1 + build-tools;24.0.2 + build-tools;24.0.3 + build-tools;25.0.0 + build-tools;25.0.1 + build-tools;25.0.2 + build-tools;25.0.3 + build-tools;26.0.0 + build-tools;26.0.1 + build-tools;26.0.2 + build-tools;26.0.3 + build-tools;27.0.0 + build-tools;27.0.1 + build-tools;27.0.2 + build-tools;27.0.3 + build-tools;28.0.0 + build-tools;28.0.1 + build-tools;28.0.2 + build-tools;28.0.3 + build-tools;29.0.2 + build-tools;29.0.3 + build-tools;30.0.0 + build-tools;30.0.1 + build-tools;30.0.2 + build-tools;30.0.3 + build-tools;31.0.0 + platforms;android-10 + platforms;android-11 + platforms;android-12 + platforms;android-13 + platforms;android-14 + platforms;android-15 + platforms;android-16 + platforms;android-17 + platforms;android-18 + platforms;android-19 + platforms;android-20 + platforms;android-21 + platforms;android-22 + platforms;android-23 + platforms;android-24 + platforms;android-25 + platforms;android-26 + platforms;android-27 + platforms;android-28 + platforms;android-29 + platforms;android-30 + platforms;android-31 +" -# install all cached build-tools -for f in `ls -1 build-tools*.zip`; do - ver=`unzip -c $f "*/source.properties" | sed -n 's,^Pkg.Revision=,,p'` - if [[ $ver == 24.0.0 ]] && [[ $f =~ .*r24\.0\.1.* ]]; then - # 24.0.1 has the wrong revision in the zip - ver=24.0.1 - fi - cached=,build-tools-${ver}${cached} -done +if [ $# -gt 0 ]; then + echo found args + packages=$@ +fi -${ANDROID_HOME}/tools/android update sdk --no-ui --all \ - --filter platform-tools,extra-android-m2repository${cached} <