mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 14:32:28 +03:00
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
This commit is contained in:
parent
e4f1066bb1
commit
daa5ad152e
4 changed files with 84 additions and 184 deletions
|
@ -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 \
|
||||
|
|
|
@ -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} <<EOH
|
||||
y
|
||||
# temporary test of whether this script ran. It will change once
|
||||
# 'tools' is no longer installed by default.
|
||||
if [ ! -x $ANDROID_HOME/tools/bin/sdkmanager ]; then
|
||||
mkdir -p ${ANDROID_HOME}/
|
||||
sdkmanager $packages
|
||||
fi
|
||||
|
||||
EOH
|
||||
# this hacked cache should not end up in the Vagrant box or Docker image
|
||||
rm -rf $cachedir
|
||||
|
||||
mkdir -p $ANDROID_HOME/licenses/
|
||||
|
||||
|
@ -129,6 +148,7 @@ chmod g+w $ANDROID_HOME
|
|||
find $ANDROID_HOME/ -type f -executable -print0 | xargs -0 chmod a+x
|
||||
|
||||
# allow gradle to install newer build-tools and platforms
|
||||
mkdir -p $ANDROID_HOME/{build-tools,platforms}
|
||||
chgrp vagrant $ANDROID_HOME/{build-tools,platforms}
|
||||
chmod g+w $ANDROID_HOME/{build-tools,platforms}
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ packages="
|
|||
mercurial
|
||||
patch
|
||||
rsync
|
||||
sdkmanager
|
||||
sudo
|
||||
"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue