diff --git a/README b/README index 218deff8..6efc5cd8 100644 --- a/README +++ b/README @@ -27,4 +27,4 @@ install: virtualenv env/ . env/bin/activate pip install -e . - python setup.py install + python2 setup.py install diff --git a/fdroidserver/common.py b/fdroidserver/common.py index aa362ea8..0636915c 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -61,11 +61,11 @@ def get_default_config(): 'repo_url': "https://MyFirstFDroidRepo.org/fdroid/repo", 'repo_name': "My First FDroid Repo Demo", 'repo_icon': "fdroid-icon.png", - 'repo_description': + 'repo_description': ( "This is a repository of apps to be used with FDroid. Applications in this " - "repository are either official binaries built by the original application " - "developers, or are binaries built from source by the admin of f-droid.org " - "using the tools on https://gitlab.com/u/fdroid.", + + "repository are either official binaries built by the original application " + + "developers, or are binaries built from source by the admin of f-droid.org " + + "using the tools on https://gitlab.com/u/fdroid."), 'archive_older': 0, } @@ -121,6 +121,9 @@ def read_config(opts, config_file='config.py'): if not test_sdk_exists(config): sys.exit(3) + if not test_build_tools_exists(config): + sys.exit(3) + for k in ["keystorepass", "keypass"]: if k in config: write_password_file(k) @@ -151,9 +154,6 @@ def test_sdk_exists(c): if not os.path.isdir(os.path.join(c['sdk_path'], 'build-tools')): logging.critical('Android SDK path "' + c['sdk_path'] + '" does not contain "build-tools/"!') return False - if not os.path.isdir(os.path.join(c['sdk_path'], 'build-tools', c['build_tools'])): - logging.critical('Configured build-tools version "' + c['build_tools'] + '" not found in the SDK!') - return False return True diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 9b46de70..4e902304 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -157,9 +157,9 @@ def _local_sync(fromdir, todir): def sync_from_localcopy(repo_section, local_copy_dir): logging.info('Syncing from local_copy_dir to this repo.') # trailing slashes have a meaning in rsync which is not needed here, so - # remove them all - _local_sync(os.path.join(local_copy_dir, repo_section).rstrip('/'), - repo_section.rstrip('/')) + # make sure both paths have exactly one trailing slash + _local_sync(os.path.join(local_copy_dir, repo_section).rstrip('/') + '/', + repo_section.rstrip('/') + '/') def update_localcopy(repo_section, local_copy_dir): diff --git a/fdroidserver/update.py b/fdroidserver/update.py index bff615e4..72d268d3 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -876,11 +876,11 @@ def archive_old_apks(apps, apks, archapks, repodir, archivedir, defaultkeepversi if 'srcname' in apk: shutil.move(os.path.join(repodir, apk['srcname']), os.path.join(archivedir, apk['srcname'])) - # Move GPG signature too... - sigfile = apk['srcname'] + '.asc' - sigsrc = os.path.join(repodir, sigfile) - if os.path.exists(sigsrc): - shutil.move(sigsrc, os.path.join(archivedir, sigfile)) + # Move GPG signature too... + sigfile = apk['srcname'] + '.asc' + sigsrc = os.path.join(repodir, sigfile) + if os.path.exists(sigsrc): + shutil.move(sigsrc, os.path.join(archivedir, sigfile)) archapks.append(apk) apks.remove(apk) @@ -933,6 +933,13 @@ def main(): resize_all_icons(repodirs) sys.exit(0) + # check that icons exist now, rather than fail at the end of `fdroid update` + for k in ['repo_icon', 'archive_icon']: + if k in config: + if not os.path.exists(config[k]): + logging.error(k + ' "' + config[k] + '" does not exist! Correct it in config.py.') + sys.exit(1) + # Get all apps... apps = metadata.read_metadata() diff --git a/jenkins-build b/jenkins-build index 35add775..4069d820 100755 --- a/jenkins-build +++ b/jenkins-build @@ -53,17 +53,17 @@ cd $WORKSPACE/tests #------------------------------------------------------------------------------# # test building the source tarball cd $WORKSPACE -python setup.py sdist +python2 setup.py sdist #------------------------------------------------------------------------------# # test install using site packages cd $WORKSPACE rm -rf $WORKSPACE/env -virtualenv --system-site-packages $WORKSPACE/env +virtualenv --python=python2 --system-site-packages $WORKSPACE/env . $WORKSPACE/env/bin/activate pip install -e $WORKSPACE -python setup.py install +python2 setup.py install # run tests in new pip+virtualenv install . $WORKSPACE/env/bin/activate @@ -81,7 +81,7 @@ sh hooks/pre-commit cd $WORKSPACE set +e # use the virtualenv python so pylint checks against its installed libs - PYTHONPATH=$WORKSPACE/.pylint-plugins python /usr/bin/pylint \ + PYTHONPATH=$WORKSPACE/.pylint-plugins python2 /usr/bin/pylint \ --output-format=parseable --reports=n \ --load-plugins astng_hashlib \ fdroidserver/*.py fdroid makebuildserver setup.py > $WORKSPACE/pylint.parseable diff --git a/tests/run-tests b/tests/run-tests index 11aa2deb..44ede13d 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -23,10 +23,12 @@ copy_apks_into_repo() { set -x } +# keep this as an old version to test the automatic parsing of build-tools +# verion numbers in `fdroid init` create_fake_android_home() { mkdir $1/build-tools - mkdir $1/build-tools/20.0.0 - touch $1/build-tools/20.0.0/aapt + mkdir $1/build-tools/19.0.2 + touch $1/build-tools/19.0.2/aapt } create_test_dir() { @@ -75,12 +77,24 @@ if [ -z $aapt ]; then aapt=`ls -1 $ANDROID_HOME/build-tools/*/aapt | sort | tail -1` fi +# allow the location of python to be overridden +if [ -z $python ]; then + python=python2 +fi + + +#------------------------------------------------------------------------------# +echo_header "run commit hooks" + +cd $WORKSPACE +./hooks/pre-commit + #------------------------------------------------------------------------------# echo_header "create a source tarball and use that to build a repo" cd $WORKSPACE -python setup.py sdist +$python setup.py sdist REPOROOT=`create_test_dir` cd $REPOROOT @@ -172,7 +186,7 @@ set -e #------------------------------------------------------------------------------# -echo_header "check that fake android home passes `fdroid init`" +echo_header "check that fake android home passes 'fdroid init'" REPOROOT=`create_test_dir` FAKE_ANDROID_HOME=`create_test_dir`