From d2af293bb76f4f8b7c96c37e3b912c9fc2b6a730 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 4 May 2018 09:35:26 +0200 Subject: [PATCH 1/7] travis-ci: update to only recent OSX versions, well supported by brew --- .travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 21e55bc9..952eda78 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ matrix: - os: linux language: android - os: osx - osx_image: xcode9.3beta + osx_image: xcode9.3 env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk env: ANDROID_HOME=/usr/local/share/android-sdk - os: osx @@ -15,11 +15,7 @@ matrix: env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk env: ANDROID_HOME=/usr/local/share/android-sdk - os: osx - osx_image: xcode7.3 - env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk - env: ANDROID_HOME=/usr/local/share/android-sdk - - os: osx - osx_image: xcode6.4 + osx_image: xcode8.3 env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk env: ANDROID_HOME=/usr/local/share/android-sdk From 21a18cf26ba9ace8a8ad222765d40282a938d25e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 4 May 2018 09:44:58 +0200 Subject: [PATCH 2/7] gitlab-ci: fix ubuntu_lts test now that its bionic rather than xenial The new ubuntu:latest image is not set up for non-interactive, so this gitlab-ci job now needs to do that. --- .gitlab-ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 948cf678..3049262f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -62,13 +62,18 @@ ubuntu_lts: image: ubuntu:latest only: - master@fdroid/fdroidserver + variables: + DEBIAN_FRONTEND: noninteractive script: + - echo Etc/UTC > /etc/timezone + - apt-get -qy update + - apt-get -qy install gnupg - while ! apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 9AAC253193B65D4DF1D0A13EEC4632C79C5E0151; do sleep 15; done - export RELEASE=`sed -n 's,^deb [^ ][^ ]* \([a-z]*\).*,\1,p' /etc/apt/sources.list | head -1` - echo "deb http://ppa.launchpad.net/fdroid/fdroidserver/ubuntu $RELEASE main" >> /etc/apt/sources.list - apt-get -qy update - apt-get -qy dist-upgrade - - apt-get -qy install fdroidserver git python3-setuptools + - apt-get -qy install --install-recommends fdroidserver git python3-setuptools - export ANDROID_HOME=/usr/lib/android-sdk - export LANG=C.UTF-8 - cd tests From 9cc8826a79e27857e035ce2a71ab9d005a293929 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 3 May 2018 14:27:26 +0200 Subject: [PATCH 3/7] tests: allow running with only androguard, no Android SDK --- tests/run-tests | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/run-tests b/tests/run-tests index 9ab5a9b6..3cf6cae3 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -72,9 +72,14 @@ if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then fi if [ -z "$ANDROID_HOME" ]; then - echo "ANDROID_HOME must be set with the path to the Android SDK, i.e.: " - echo " export ANDROID_HOME=/opt/android-sdk" - exit 1 + if python3 -c "import androguard"; then + echo "ANDROID_HOME is not set, using androguard" + else + echo "ERROR: ANDROID_HOME is not set, androguard is not available!" + exit 1 + fi +else + echo "Using ANDROID_HOME=$ANDROID_HOME" fi if [ -d tests ]; then From cf1ce46e5cdb9c076ac5f97d4fb62938d25b0edf Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 3 May 2018 14:56:05 +0200 Subject: [PATCH 4/7] init: make work with only androguard, no Android SDK --- fdroidserver/init.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fdroidserver/init.py b/fdroidserver/init.py index b47d65b6..8bbf20bd 100644 --- a/fdroidserver/init.py +++ b/fdroidserver/init.py @@ -75,6 +75,8 @@ def main(): # in ANDROID_HOME if that exists, otherwise None if options.android_home is not None: test_config['sdk_path'] = options.android_home + elif common.use_androguard(): + pass elif not common.test_sdk_exists(test_config): if os.path.isfile('/usr/bin/aapt'): # remove sdk_path and build_tools, they are not required @@ -110,7 +112,8 @@ def main(): test_config['sdk_path'] = s if common.test_sdk_exists(test_config): break - if not common.test_sdk_exists(test_config): + if (options.android_home is not None or not common.use_androguard()) \ + and not common.test_sdk_exists(test_config): raise FDroidException("Android SDK not found.") if not os.path.exists('config.py'): From 77f7ca2f25425d59d2a087bedb450edd99333e88 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 3 May 2018 15:00:17 +0200 Subject: [PATCH 5/7] tests: allow the full suite to run without aapt, only androguard --- tests/run-tests | 61 +++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/tests/run-tests b/tests/run-tests index 3cf6cae3..4d35d8bf 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -6,11 +6,19 @@ echo_header() { { echo -e "==============================================================================\n$1"; } 2>/dev/null } +get_fdroid_apk_filename() { + if [ -z $aapt ]; then + python3 -c "from androguard.core.bytecodes.apk import APK; a=APK('$1'); print(a.package+'_'+a.get_androidversion_code()+'.apk')" + else + $aapt dump badging "$1" | sed -n "s,^package: name='\(.*\)' versionCode='\([0-9][0-9]*\)' .*,\1_\2.apk,p" + fi +} + copy_apks_into_repo() { set +x find $APKDIR -type f -name '*.apk' -print0 | while IFS= read -r -d '' f; do echo $f | grep -F -v -e unaligned -e unsigned -e badsig -e badcert -e bad-unicode -e janus.apk || continue - apk=`$aapt dump badging "$f" | sed -n "s,^package: name='\(.*\)' versionCode='\([0-9][0-9]*\)' .*,\1_\2.apk,p"` + apk=`get_fdroid_apk_filename "$f"` test "$f" -nt repo/$apk && rm -f repo/$apk # delete existing if $f is newer if [ ! -e repo/$apk ] && [ ! -e archive/$apk ]; then echo "$f --> repo/$apk" @@ -720,8 +728,8 @@ $fdroid init --keystore $KEYSTORE --android-home $FAKE_ANDROID_HOME #------------------------------------------------------------------------------# echo_header "check that 'fdroid init' fails when build-tools cannot be found" -if [ -e /usr/bin/aapt ]; then - echo "/usr/bin/aapt exists, not running test" +if [ -e /usr/bin/aapt ] || python3 -c 'import androguard'; then + echo "/usr/bin/aapt or androguard installed, not running test" else REPOROOT=`create_test_dir` FAKE_ANDROID_HOME=`create_test_dir` @@ -760,29 +768,32 @@ set -e # by --android-home over the one in ANDROID_HOME, therefore if it uses the one # in ANDROID_HOME, it won't work because it is a fake one. Only # --android-home provides a working one. -echo_header "setup a new repo from scratch with keystore and android-home set on cmd line" - -REPOROOT=`create_test_dir` -KEYSTORE=$REPOROOT/keystore.jks -FAKE_ANDROID_HOME=`create_test_dir` -create_fake_android_home $FAKE_ANDROID_HOME -STORED_ANDROID_HOME=$ANDROID_HOME -unset ANDROID_HOME -echo "ANDROID_HOME: $ANDROID_HOME" -cd $REPOROOT -$fdroid init --keystore $KEYSTORE --android-home $STORED_ANDROID_HOME --no-prompt -test -e $KEYSTORE -copy_apks_into_repo $REPOROOT -$fdroid update --create-metadata --verbose -$fdroid readmeta -grep -F ' Date: Fri, 4 May 2018 21:32:59 +0200 Subject: [PATCH 7/7] prefer latest version of Java, its no longer necessary to prefer 7 closes #474 --- fdroidserver/common.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index ee0ee345..dcda699a 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -220,7 +220,7 @@ def fill_config_defaults(thisconfig): pathlist += glob.glob(os.path.join(os.getenv('PROGRAMFILES'), 'Java', 'jdk1.[16-9][0-9]?.*')) _add_java_paths_to_config(pathlist, thisconfig) - for java_version in ('7', '8', '9'): + for java_version in ('14', '13', '12', '11', '10', '9', '8', '7'): if java_version not in thisconfig['java_paths']: continue java_home = thisconfig['java_paths'][java_version] @@ -228,7 +228,7 @@ def fill_config_defaults(thisconfig): if os.path.exists(jarsigner): thisconfig['jarsigner'] = jarsigner thisconfig['keytool'] = os.path.join(java_home, 'bin', 'keytool') - break # Java7 is preferred, so quit if found + break for k in ['ndk_paths', 'java_paths']: d = thisconfig[k]