add more SDK checks: build-tools/19.0.3 and presense of aapt

Make sure that fdroid can find aapt in the current config, otherwise exit
with an error.  Some users don't have build_tools set, and their SDK does
not include the build-tools in the default versioned dir, so this should
warn them of what is wrong.
This commit is contained in:
Hans-Christoph Steiner 2014-05-29 21:43:16 -04:00
parent 3690b89e0a
commit 6ca060e10d
3 changed files with 66 additions and 15 deletions

View File

@ -144,6 +144,23 @@ def test_sdk_exists(c):
return True
def test_build_tools_exists(c):
if not test_sdk_exists(c):
return False
build_tools = os.path.join(c['sdk_path'], 'build-tools')
versioned_build_tools = os.path.join(build_tools, c['build_tools'])
if not os.path.isdir(versioned_build_tools):
logging.critical('Android Build Tools path "'
+ versioned_build_tools + '" does not exist!')
return False
if not os.path.exists(os.path.join(c['sdk_path'], 'build-tools', c['build_tools'], 'aapt')):
logging.critical('Android Build Tools "'
+ versioned_build_tools
+ '" does not contain "aapt"!')
return False
return True
def write_password_file(pwtype, password=None):
'''
writes out passwords to a protected file instead of passing passwords as

View File

@ -155,18 +155,15 @@ def main():
logging.info('Try running `fdroid init` in an empty directory.')
sys.exit()
# now that we have a local config.py, read configuration...
config = common.read_config(options)
# try to find a working aapt, in all the recent possible paths
build_tools = os.path.join(config['sdk_path'], 'build-tools')
build_tools = os.path.join(test_config['sdk_path'], 'build-tools')
aaptdirs = []
aaptdirs.append(os.path.join(build_tools, config['build_tools']))
aaptdirs.append(os.path.join(build_tools, test_config['build_tools']))
aaptdirs.append(build_tools)
for f in sorted(os.listdir(build_tools), reverse=True):
for f in os.listdir(build_tools):
if os.path.isdir(os.path.join(build_tools, f)):
aaptdirs.append(os.path.join(build_tools, f))
for d in aaptdirs:
for d in sorted(aaptdirs, reverse=True):
if os.path.isfile(os.path.join(d, 'aapt')):
aapt = os.path.join(d, 'aapt')
break
@ -174,9 +171,15 @@ def main():
dirname = os.path.basename(os.path.dirname(aapt))
if dirname == 'build-tools':
# this is the old layout, before versioned build-tools
write_to_config('build_tools', '')
test_config['build_tools'] = ''
else:
write_to_config('build_tools', dirname)
test_config['build_tools'] = dirname
write_to_config('build_tools', test_config['build_tools'])
if not common.test_build_tools_exists(test_config):
sys.exit(3)
# now that we have a local config.py, read configuration...
config = common.read_config(options)
# track down where the Android NDK is
ndk_path = '/opt/android-ndk'

View File

@ -3,6 +3,11 @@
set -e
set -x
echo_header() {
echo "=============================================================================="
echo $1
}
copy_apks_into_repo() {
for f in `ls -1 ../../*/bin/*.apk`; do
name=$(basename $(dirname `dirname $f`))
@ -40,7 +45,7 @@ if [ -z $fdroid ]; then
fi
#------------------------------------------------------------------------------#
echo "setup a new repo from scratch using ANDROID_HOME"
echo_header "setup a new repo from scratch using ANDROID_HOME"
REPOROOT=`create_test_dir`
cd $REPOROOT
@ -76,7 +81,33 @@ set -e
#------------------------------------------------------------------------------#
echo "check that --android-home overrides ANDROID_HOME"
echo_header "check that fake android home passes `fdroid init`"
REPOROOT=`create_test_dir`
FAKE_ANDROID_HOME=`create_test_dir`
create_fake_android_home $FAKE_ANDROID_HOME
KEYSTORE=$REPOROOT/keystore.jks
cd $REPOROOT
$fdroid init --keystore $KEYSTORE --android-home $FAKE_ANDROID_HOME
#------------------------------------------------------------------------------#
echo_header "check that 'fdroid init' fails when build-tools cannot be found"
REPOROOT=`create_test_dir`
FAKE_ANDROID_HOME=`create_test_dir`
create_fake_android_home $FAKE_ANDROID_HOME
rm -f $FAKE_ANDROID_HOME/build-tools/*/aapt
KEYSTORE=$REPOROOT/keystore.jks
cd $REPOROOT
set +e
$fdroid init --keystore $KEYSTORE --android-home $FAKE_ANDROID_HOME
[ $? -eq 0 ] && exit 1
set -e
#------------------------------------------------------------------------------#
echo_header "check that --android-home overrides ANDROID_HOME"
REPOROOT=`create_test_dir`
FAKE_ANDROID_HOME=`create_test_dir`
@ -94,7 +125,7 @@ set -e
#------------------------------------------------------------------------------#
echo "setup a new repo from scratch with keystore and android-home set on cmd line"
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
@ -115,7 +146,7 @@ export ANDROID_HOME=$STORED_ANDROID_HOME
#------------------------------------------------------------------------------#
echo "setup new repo from scratch using ANDROID_HOME, putting APKs in repo first"
echo_header "setup new repo from scratch using ANDROID_HOME, putting APKs in repo first"
REPOROOT=`create_test_dir`
cd $REPOROOT
@ -127,7 +158,7 @@ $fdroid update
#------------------------------------------------------------------------------#
echo "setup a new repo from scratch and generate a keystore"
echo_header "setup a new repo from scratch and generate a keystore"
REPOROOT=`create_test_dir`
KEYSTORE=$REPOROOT/keystore.jks
@ -142,7 +173,7 @@ test -e repo/index.jar
#------------------------------------------------------------------------------#
echo "setup a new repo from scratch with a HSM/smartcard"
echo_header "setup a new repo from scratch with a HSM/smartcard"
REPOROOT=`create_test_dir`
cd $REPOROOT