From a84b515430758f4aa9e14db19f26bbba12ac664a Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 17 Apr 2019 21:49:58 +0200 Subject: [PATCH 1/5] add weblate config for wlc CLI tool Set API key by sticking this in a file called ~/.config/weblate: [weblate] url = https://hosted.weblate.org/api/ translation = weblate/master [keys] https://hosted.weblate.org/api/ = ... --- .weblate | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .weblate diff --git a/.weblate b/.weblate new file mode 100644 index 00000000..cf2e653f --- /dev/null +++ b/.weblate @@ -0,0 +1,3 @@ +[weblate] +url = https://hosted.weblate.org/api/ +translation = f-droid/fdroidserver From f0460dea6ed9fe56787aa7971073f448dd1e850c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 1 May 2019 13:34:02 +0200 Subject: [PATCH 2/5] scanner: allow local Debian Maven repo file:///usr/share/maven-repo It is now possible to build an app using only things in Debian. Since the buildserver will always control the contents of file:///usr/share/maven-repo, it is the most safe repo there is. --- fdroidserver/scanner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 7c3dddef..866b8032 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -110,6 +110,7 @@ def scan_source(build_dir, build=metadata.Build()): 's3.amazonaws.com/repo.commonsware.com', # CommonsWare 'plugins.gradle.org/m2', # Gradle plugin repo 'maven.google.com', # Google Maven Repo, https://developer.android.com/studio/build/dependencies.html#google-maven + 'file:///usr/share/maven-repo', # local repo on Debian installs ] ] From 869c68dbdbd3fb5bd889fe8bece05258989c215f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 1 May 2019 13:43:24 +0200 Subject: [PATCH 3/5] deploy: if git mirror > 1GB after deleting history, delete the archive git mirrors are meant to be an easy way to host a repo that is zero maintenance. They are not meant to be the canonical repo with full, preserved archive. This option provides the zero maintenance mode. --- fdroidserver/server.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fdroidserver/server.py b/fdroidserver/server.py index ca4b2d6b..964edc3b 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -355,6 +355,10 @@ def update_servergitmirrors(servergitmirrors, repo_section): if os.path.isdir(dotgit) and _get_size(git_mirror_path) > 1000000000: logging.warning('Deleting git-mirror history, repo is too big (1 gig max)') shutil.rmtree(dotgit) + if options.no_keep_git_mirror_archive and _get_size(git_mirror_path) > 1000000000: + logging.warning('Deleting archive, repo is too big (1 gig max)') + archive_path = os.path.join(git_mirror_path, 'fdroid', 'archive') + shutil.rmtree(archive_path, ignore_errors=True) # rsync is very particular about trailing slashes common.local_rsync(options, @@ -629,6 +633,8 @@ def main(): help=_("Specify a local folder to sync the repo to")) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) + parser.add_argument("--no-keep-git-mirror-archive", action="store_true", default=False, + help=_("If a git mirror gets to big, allow the archive to be deleted")) options = parser.parse_args() config = common.read_config(options) From 5959a395c49f5a4f163d765944326f3d591d0b49 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 1 May 2019 13:49:56 +0200 Subject: [PATCH 4/5] nightly: archive older versions; remove archive if git mirror is full --- fdroidserver/nightly.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fdroidserver/nightly.py b/fdroidserver/nightly.py index e6f766c0..42202e71 100644 --- a/fdroidserver/nightly.py +++ b/fdroidserver/nightly.py @@ -102,6 +102,8 @@ def main(): help=_('The file to be included in the repo (path or glob)')) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) + parser.add_argument("--archive-older", default=20, + help=_("Set maximum releases in repo before older ones are archived")) # TODO add --with-btlog options = parser.parse_args() @@ -233,6 +235,7 @@ Last updated: {date}'''.format(repo_git_base=repo_git_base, config += "archive_name = '%s'\n" % (repo_git_base + ' archive') config += "archive_url = '%s'\n" % (repo_base + '/archive') config += "archive_icon = 'icon.png'\n" + config += "archive_older = %i\n" % options.archive_older config += "servergitmirrors = '%s'\n" % servergitmirror config += "keystore = '%s'\n" % KEYSTORE_FILE config += "repo_keyalias = '%s'\n" % KEY_ALIAS @@ -293,7 +296,8 @@ Last updated: {date}'''.format(repo_git_base=repo_git_base, if not options.no_deploy: try: - subprocess.check_call(['fdroid', 'server', 'update', '--verbose'], cwd=repo_basedir) + cmd = ['fdroid', 'server', 'update', '--verbose', '--no-keep-git-mirror-archive'] + subprocess.check_call(cmd, cwd=repo_basedir) except subprocess.CalledProcessError: logging.error(_('cannot publish update, did you set the deploy key?') + '\n' + deploy_key_url) From 0e807264f57695049aae146dd98b142646db4c15 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 2 May 2019 08:51:39 +0200 Subject: [PATCH 5/5] update bash completion for new deploy/nightly flags --- completion/bash-completion | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/completion/bash-completion b/completion/bash-completion index 531f9131..d00a767a 100644 --- a/completion/bash-completion +++ b/completion/bash-completion @@ -275,7 +275,7 @@ __complete_mirror() { __complete_nightly() { opts="-v -q" - lopts="--show-secret-var" + lopts="--show-secret-var --archive-older" __complete_options } @@ -288,7 +288,7 @@ __complete_stats() { __complete_deploy() { opts="-i -v -q" lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir - --verbose --quiet --no-checksum" + --verbose --quiet --no-checksum --no-keep-git-mirror-archive" __complete_options }