From 07e70de82e4b868e347d7b5c94d275d1ec939eef Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 23 Jun 2020 21:56:15 +0200 Subject: [PATCH] gitlab-ci: make 'fdroid build' job fetch srclibs This uses @uniqx's awesome new 'plugin' feature to create a 'fetchsrclibs` command. The 'fdroid build' gitlab-ci job uses --on-server, which does not set up the srclibs. This plugin does the missing setup. --- .gitlab-ci.yml | 3 ++- tools/fdroid_fetchsrclibs.py | 42 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 tools/fdroid_fetchsrclibs.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e8bedbcec8..ca7ea66277 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -152,7 +152,7 @@ fdroid build: - curl --silent https://gitlab.com/fdroid/fdroidserver/repository/master/archive.tar.gz | tar -xz --directory=fdroidserver --strip-components=1 - export PATH="`pwd`/fdroidserver:$PATH" - - export PYTHONPATH="`pwd`/fdroidserver" + - export PYTHONPATH="`pwd`/fdroidserver:$CI_PROJECT_DIR/tools" - export PYTHONUNBUFFERED=true - bash fdroidserver/buildserver/provision-apt-get-install http://deb.debian.org/debian @@ -172,6 +172,7 @@ fdroid build: - for build in `./tools/find-changed-builds.py`; do set -x; apt-get install sudo; + fdroid fetchsrclibs $build --verbose; fdroid build --verbose --on-server --no-tarball $build; done diff --git a/tools/fdroid_fetchsrclibs.py b/tools/fdroid_fetchsrclibs.py new file mode 100644 index 0000000000..fca7bc4480 --- /dev/null +++ b/tools/fdroid_fetchsrclibs.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +# +# an fdroid plugin for setting up srclibs +# +# The 'fdroid build' gitlab-ci job uses --on-server, which does not +# set up the srclibs. This plugin does the missing setup. + +import argparse +import os +import pprint +from fdroidserver import _, common, metadata + +fdroid_summary = 'prepare the srclibs for `fdroid build --on-server`' + + +def main(): + common.config = { + 'accepted_formats': 'yml', + 'sdk_path': os.getenv('ANDROID_HOME'), + } + common.fill_config_defaults(common.config) + parser = argparse.ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") + common.setup_global_opts(parser) + parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) + metadata.add_metadata_arguments(parser) + options = parser.parse_args() + common.options = options + pkgs = common.read_pkg_args(options.appid, True) + allapps = metadata.read_metadata(xref=False) + apps = common.read_app_args(options.appid, allapps, True) + srclib_dir = os.path.join('build', 'srclib') + os.makedirs(srclib_dir, exist_ok=True) + srclibpaths = [] + for appid, app in apps.items(): + for build in app.builds: + for lib in build.srclibs: + srclibpaths.append(common.getsrclib(lib, srclib_dir, build=build)) + print('Set up srclibs:') + pprint.pprint(srclibpaths) + +if __name__ == "__main__": + main()