Compare commits

...

7009 commits
0.1 ... master

Author SHA1 Message Date
Hans-Christoph Steiner
40fbbd2e48 Merge branch 'wire--checksum-to-rclone' into 'master'
deploy: wire up --no-checksum option to rclone functionality

See merge request fdroid/fdroidserver!1705
2025-09-25 14:32:51 +00:00
Hans-Christoph Steiner
4fabdf9290 deploy: wire up --checksum option to rclone functionality
By default `fdroid deploy` uses the checksum to check for changed files.
The rclone code should do the same.
2025-09-25 16:21:50 +02:00
Hans-Christoph Steiner
7c2a0aa6c2 Merge branch 'fix-tests-for-replacing-s3cmd-and-libcloud' into 'master'
Fix tests for replacing s3cmd and libcloud

See merge request fdroid/fdroidserver!1703
2025-09-25 14:21:02 +00:00
paul mayero
ffc0a6cec0 Fix tests for replacing s3cmd and libcloud 2025-09-25 14:21:02 +00:00
Michael Pöhn
bf33fc5d9b Merge branch 'scanner' into 'master'
scanner: fix catalog match

See merge request fdroid/fdroidserver!1692
2025-09-18 11:31:13 +00:00
linsui
5ded08048b scanner: remove asLibraryDependency from catalog accessor 2025-09-18 11:19:32 +00:00
linsui
5f6e59c76d scanner: fix catalog match 2025-09-18 11:19:32 +00:00
linsui
9b8a334dcf Merge branch 'checkupdates-fix-get_upstream_main_branch' into 'master'
checkupdates: fix get_upstream_main_branch() for Debian/forky

See merge request fdroid/fdroidserver!1702
2025-09-18 10:57:09 +00:00
Hans-Christoph Steiner
8b11e098db checkupdates: fix get_upstream_main_branch() for Debian/forky
```
FAIL: test_get_upstream_main_branch (tests.test_checkupdates.CheckupdatesTest.test_get_upstream_main_branch)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builds/fdroid/fdroidserver/tests/test_checkupdates.py", line 509, in test_get_upstream_main_branch
    self.assertEqual(
    ~~~~~~~~~~~~~~~~^
        f'upstream/{testvalue}',
        ^^^^^^^^^^^^^^^^^^^^^^^^
        branch,
        ^^^^^^^
        f'The default branch should be called {testvalue}!',
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
AssertionError: 'upstream/foo' != 'upstream/main'
- upstream/foo
+ upstream/main
 : The default branch should be called foo!
```
2025-09-18 10:52:15 +00:00
Hans-Christoph Steiner
c9c5147cac Merge branch 'user-rclone.conf' into 'master'
deploy: find rclone.conf in the root of the repo

See merge request fdroid/fdroidserver!1701
2025-09-18 10:01:04 +00:00
thefuture
b6d6d46aeb error if repo rclone.conf is not referenced in config.yml 2025-09-18 11:06:04 +02:00
Hans-Christoph Steiner
1f9fb16844 deploy: find rclone.conf in the root of the repo
This enables the same way of managing the config as existed with s3cmd's
s3cfg file.
2025-09-18 11:05:18 +02:00
Hans-Christoph Steiner
0a87deff1c Merge branch 'remove-libcloud-and-s3cmd' into 'master'
Remove libcloud and s3cmd from fdroidserver

Closes #1289 and #1288

See merge request fdroid/fdroidserver!1650
2025-09-17 11:36:13 +00:00
paul mayero
dbd769db9f Remove libcloud and s3cmd from fdroidserver 2025-09-17 11:36:12 +00:00
Hans-Christoph Steiner
a9856cfb92 Merge branch 'spelling-versionCode-versionName' into 'master'
standardize on versionCode/versionName as spelling

See merge request fdroid/fdroidserver!1699
2025-09-17 07:08:00 +00:00
Hans-Christoph Steiner
bbe29abaa3 standardize on versionName as spelling 2025-09-17 06:55:46 +00:00
Hans-Christoph Steiner
1068057524 standardize on versionCode as spelling 2025-09-17 06:55:46 +00:00
linsui
e8d4d8fc6a Merge branch 'maven' into 'master'
scanner: remove tailing / from maven repo address

See merge request fdroid/fdroidserver!1700
2025-09-17 06:50:54 +00:00
linsui
f578684be8 scanner: remove tailing / from maven repo address 2025-09-17 14:37:30 +08:00
Hans-Christoph Steiner
57244dec63 Merge branch 'noversioncode' into 'master'
update: Handle APKs without a version code in their manifest

Closes #1240

See merge request fdroid/fdroidserver!1695
2025-08-26 10:10:51 +00:00
Tobias Mueller
2eb3986ecf update: Handle APKs without a version code in their manifest 2025-08-26 10:10:51 +00:00
Hans-Christoph Steiner
d4ad523dd2 Merge branch '__init__.py-black-format' into 'master'
convert fdroidserver/__init__.py to black format

See merge request fdroid/fdroidserver!1690
2025-08-18 15:48:23 +00:00
Hans-Christoph Steiner
6fff73b678 convert fdroidserver/__init__.py to black format 2025-08-18 15:38:08 +00:00
linsui
fbf8fc54db Merge branch 'patch-1' into 'master'
Sonatype is now Maven Central

See merge request fdroid/fdroidserver!1693
2025-08-18 13:32:29 +00:00
Licaon_Kter
f5f79ac1ea Sonatype is now Maven Central 2025-08-18 13:32:29 +00:00
Michael Pöhn
97e9784d5d Merge branch 'fix-srcname-cache-crash' into 'master'
update: don't crash if src tarball is not present

See merge request fdroid/fdroidserver!1691
2025-07-31 15:31:38 +00:00
Hans-Christoph Steiner
d20a6a5dcf update: don't crash if src tarball is not present 2025-07-29 17:20:11 +02:00
Michael Pöhn
058f0b7f6a Merge branch 'cache-srcname-sha256' into 'master'
update: cache the SHA-256 of the src tarball

Closes #1290

See merge request fdroid/fdroidserver!1686
2025-07-28 21:10:40 +00:00
Hans-Christoph Steiner
e07cdf5f0c update: cache the SHA-256 of the src tarball
closes #1290
2025-07-28 14:11:07 +00:00
Hans-Christoph Steiner
f9d111c8c1 Merge branch 'removeunf' into 'master'
Remove UpstreamNonFree

Closes fdroiddata#2481

See merge request fdroid/fdroidserver!1680
2025-07-28 14:10:18 +00:00
Licaon_Kter
8b54e2b4cf Remove UpstreamNonFree 2025-07-28 15:59:35 +02:00
Hans-Christoph Steiner
d594a683ab Merge branch 'isort' into 'master'
Sort import

See merge request fdroid/fdroidserver!1689
2025-07-26 15:47:48 +00:00
linsui
7a98650ed3 Sort import
ruff check --fix --select I
2025-07-26 15:35:19 +00:00
linsui
b19b8050db Merge branch 'fix-schildichat-fastlane' into 'master'
update: more accurate fastlane subdir/flavor matching

See merge request fdroid/fdroidserver!1687
2025-07-26 12:52:31 +00:00
Hans-Christoph Steiner
6a3758d3c4 update: more accurate fastlane subdir/flavor matching
This should fix Schildichat showing Element X's metadata.
2025-07-26 12:36:32 +00:00
Hans-Christoph Steiner
546821fc3d Merge branch 'scanpath' into 'master'
scanner: report all errors

See merge request fdroid/fdroidserver!1688
2025-07-26 10:44:26 +00:00
linsui
120a1655b4 scanner: report all errors 2025-07-26 18:33:57 +08:00
linsui
19d709edcd Merge branch 'standalone-gradlew-fdroid' into 'master'
make gradlew-fdroid a standalone project

See merge request fdroid/fdroidserver!1684
2025-07-25 17:46:59 +00:00
Hans-Christoph Steiner
5049645003 make gradlew-fdroid a standalone project
https://gitlab.com/fdroid/gradlew-fdroid
2025-07-25 17:46:31 +00:00
Hans-Christoph Steiner
e4b54c9768 Merge branch 'docker-buildserver-always-apt-https' into 'master'
buildserver: always use HTTPS for apt connections in Docker image

See merge request fdroid/fdroidserver!1603
2025-07-23 16:24:56 +00:00
Hans-Christoph Steiner
7988c54d00 buildserver: always use HTTPS for apt connections in Docker image
This configuration has been in use in .gitlab-ci.yml scripts for a while
now and has proven reliable.  This is a "low hanging fruit" improvement.
It provides an extra layer of protection for when their are apt vulns.  And
it makes it much harder to profile what a server/laptop is doing based on
the internet traffic.  The network observer will no longer be able to see
which packages are being downloaded since apt uses HTTP pipelining so size
attacks are not really possible. And HTTPS hides the URLs, filenames,
download contents, etc.
2025-07-23 16:09:20 +00:00
Hans-Christoph Steiner
05c4bf2483 Merge branch 'ci-PUBLISH-to-bookworm' into 'master'
gitlab-ci: update PUBLISH to bookworm since prod has already

See merge request fdroid/fdroidserver!1685
2025-07-23 16:08:48 +00:00
Hans-Christoph Steiner
7e219561b7 gitlab-ci: update PUBLISH to bookworm since prod has already 2025-07-22 21:52:28 +02:00
Hans-Christoph Steiner
6ad3c74bb4 Merge branch 'subdir-fastlane-support' into 'master'
update: support fastlane/ dir in subdir:

See merge request fdroid/fdroidserver!1679
2025-07-17 08:46:27 +00:00
Hans-Christoph Steiner
96c0d928da update: support fastlane/ dir in subdir:
GNU Taler apps use this.
* https://git.taler.net/taler-android.git/tree/merchant-terminal/fastlane/metadata/android/en-US?h=pos-1.0.2
2025-07-16 17:32:49 +02:00
Hans-Christoph Steiner
ba5c78d45f update: fetch Builds one time and reuse 2025-07-16 16:35:58 +02:00
linsui
8f1411607a Merge branch 'update-gradle-job' into 'master'
gitlab-ci: update "gradle" job to only check files when changed

See merge request fdroid/fdroidserver!1682
2025-07-16 12:23:02 +00:00
Hans-Christoph Steiner
97b0b0eaf8
gitlab-ci: update gradle: job to only check files in
While we are at it, also upgrade to Debian/trixie and rules:

this now handles making the merge requests:
https://gitlab.com/fdroid/gradle-transparency-log/-/merge_requests/2
2025-07-16 14:08:54 +02:00
Hans-Christoph Steiner
c6c4764b33 Merge branch 'gradle-release-checksums.py' into 'master'
bot: update to gradle v7.6.6

See merge request fdroid/fdroidserver!1681
2025-07-16 12:06:44 +00:00
fdroid-bot
7946acd52a gradle v8.14.3 2025-07-16 11:52:37 +00:00
linsui
0a91b98aee Merge branch 'gradle' into 'master'
AGP 8.11 requires Gradle 8.13

See merge request fdroid/fdroidserver!1678
2025-07-06 07:30:11 +00:00
linsui
09a51a429b AGP 8.11 requires Gradle 8.13 2025-07-06 07:29:46 +00:00
linsui
47b5ecdc8c Merge branch 'gradle' into 'master'
gradle 8.14.3

See merge request fdroid/fdroidserver!1677
2025-07-05 07:15:55 +00:00
linsui
909864a8c7 gradle 8.14.3 2025-07-05 15:03:27 +08:00
Hans-Christoph Steiner
47b9b24aef Merge branch 'gitlab-ci-pages-needs' into 'master'
gitlab-ci: 'pages' needs 'Build documentation' but it has `changes:`

See merge request fdroid/fdroidserver!1670
2025-06-26 06:55:43 +00:00
Hans-Christoph Steiner
f4f1c003a6 gitlab-ci: 'pages' needs 'Build documentation' but it has changes:
Fixes this error:

> Unable to create pipeline
>
> 'pages' job needs 'Build documentation' job, but 'Build documentation'
> does not exist in the pipeline. This might be because of the only,
> except, or rules keywords. To need a job that sometimes does not exist
> in the pipeline, use needs:optional.
2025-06-26 06:44:56 +00:00
Michael Pöhn
51b55963a5 Merge branch 'only-copy-icons-if-they-changed' into 'master'
only copy icons into repo/ if they changed

See merge request fdroid/fdroidserver!1664
2025-06-25 10:32:06 +00:00
Hans-Christoph Steiner
52c1bcca70 only copy icons into repo/ if they changed
This should make things more efficient and reduce the size of the diffs in
the transparency log.  Using shutil.copy2() preserves metadata.
2025-06-25 09:46:20 +00:00
Hans-Christoph Steiner
8a36e264b4 Merge branch 'merge_weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1676
2025-06-25 08:05:47 +00:00
Hans-Christoph Steiner
d5d65cfabd
make -C locale update 2025-06-25 09:54:03 +02:00
Hans-Christoph Steiner
dcb804f70d enable Bashkir (ba) as supported locale, its at 100% 2025-06-25 09:50:54 +02:00
Zulfar
a0cae97155 Translated using Weblate: Bashkir (ba) by Zulfar <mzulfar20@gmail.com>
Currently translated at 100.0% (579 of 579 strings)

Added translation using Weblate: Bashkir (ba) by Zulfar <mzulfar20@gmail.com>

Co-authored-by: Zulfar <mzulfar20@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ba/
Translation: F-Droid/F-Droid Server
2025-06-25 09:49:50 +02:00
Hans-Christoph Steiner
956cb11f91
gitlab-ci: rm dash from macOS tests, it reliably segfaults
dash rarely changes and is reliably run on Debian in the hooks/pre-commit
job.  So remove it from the macOS job, where it is flaky and hard to
troubleshoot (who has macOS? ;-)

https://gitlab.com/fdroid/fdroidserver/-/jobs/10454622138

```
==============================================================================
run commit hooks
+ echo_header 'run commit hooks'
+ test -x ./hooks/pre-commit
+ ./hooks/pre-commit
WARNING: pydocstyle is not installed, using dummy placeholder!
WARNING: pyflakes is not installed, using dummy placeholder!
WARNING: pycodestyle is not installed, using dummy placeholder!
./hooks/pre-commit: line 111: 20320 Segmentation fault: 11  $DASH -n $f
ERROR: dash tests failed!
```
2025-06-25 09:42:46 +02:00
Hans-Christoph Steiner
193ca5842c
version 2.4.2 2025-06-24 21:52:38 +02:00
Hans-Christoph Steiner
a44364d661
update CHANGELOG.md 2025-06-24 21:52:21 +02:00
Hans-Christoph Steiner
9fffe0aea4 Merge branch 'merge_weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1675
2025-06-24 15:24:31 +00:00
Artyom Rybakov
76eb0611a0 Translated using Weblate: Russian (ru) by Artyom Rybakov <rib.artem@gmail.com>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Artyom Rybakov <rib.artem@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2025-06-24 17:12:59 +02:00
WaldiS
e21fd0d167 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 100.0% (579 of 579 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 98.4% (570 of 579 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2025-06-24 17:12:59 +02:00
Swyter
d5e554dcd6 Translated using Weblate: Spanish (es) by Swyter <swyterzone@gmail.com>
Currently translated at 98.2% (569 of 579 strings)

Translated using Weblate: Spanish (es) by Swyter <swyterzone@gmail.com>

Currently translated at 98.2% (569 of 579 strings)

Co-authored-by: Swyter <swyterzone@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2025-06-24 17:12:59 +02:00
Hans-Christoph Steiner
e3ee7ed42e Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.6.5

See merge request fdroid/fdroidserver!1674
2025-06-24 15:08:15 +00:00
fdroid-bot
417ec9fe96 gradle v8.14.2 2025-06-24 14:58:15 +00:00
Torsten Grote
a3cd45c3fb Merge branch 'nightly-deploy-fixes' into 'master'
fixes for nightly and deploy, while debugging fdroidclient-nightly

See merge request fdroid/fdroidserver!1672
2025-06-24 12:05:14 +00:00
Hans-Christoph Steiner
d71fba164c nightly: fix bug that clones nightly repo to wrong location
bug introduced in ce018158ee from !1563
2025-06-24 13:08:48 +02:00
Hans-Christoph Steiner
e177520379 nightly: include project's LICENSE in the nightly repo 2025-06-24 13:08:48 +02:00
Hans-Christoph Steiner
10f2a4c592 Merge branch 'gitlab-ci-docker-depends-on-fdroid-build' into 'master'
gitlab-ci: "fdroid build" changes: for "docker" job

Closes docker-executable-fdroidserver#28

See merge request fdroid/fdroidserver!1673
2025-06-24 11:02:38 +00:00
Hans-Christoph Steiner
6b6cc2379c gitlab-ci: "fdroid build" changes: for "docker" job
"docker" depends on "fdroid build", so "fdroid build"'s changes: needs to
include "docker"'s.
2025-06-24 12:56:24 +02:00
Hans-Christoph Steiner
dcd5336138 scanner: fix tests after !1526 2025-06-23 23:10:15 +02:00
Hans-Christoph Steiner
f953146505
version 2.4.1 2025-06-23 22:37:29 +02:00
Hans-Christoph Steiner
e110390b99
update CHANGELOG.md 2025-06-23 22:37:26 +02:00
Hans-Christoph Steiner
fd3f71ad3c
run tests/refresh-SUSS_DEFAULT.py 2025-06-23 22:37:23 +02:00
Hans-Christoph Steiner
336d5381ae Merge branch 'fix-flaky-test' into 'master'
update: change assert to fix flaky tests

See merge request fdroid/fdroidserver!1671
2025-06-23 19:03:27 +00:00
Hans-Christoph Steiner
63298ad2ad update: change assert to fix flaky tests
This was happening often:

```
======================================================================
FAIL: test_strip_and_copy_image_in_file_ctime_changed (tests.test_update.UpdateTest.test_strip_and_copy_image_in_file_ctime_changed)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builds/fdroid/fdroidserver/tests/test_update.py", line 1409, in test_strip_and_copy_image_in_file_ctime_changed
    self.assertNotAlmostEqual(
AssertionError: 1750683024.4857466 == 1750683024.4957466 within 0.01 delta (0.009999990463256836 difference)
```
2025-06-23 15:16:21 +02:00
Torsten Grote
61777e273c Merge branch 'deploy-fix-for-nightly' into 'master'
deploy: use master branch when working complete git-mirror repo

See merge request fdroid/fdroidserver!1666
2025-06-23 13:09:57 +00:00
Hans-Christoph Steiner
53bf6c7ce1 deploy: use master branch when working complete git-mirror repo
The *-nightly git repo always uses the _master_ branch.  The `index_only:`
support maintains a separate local branch since its git repo should be as
small as possible.  The full repo should be maintained for mirrors not
using `index_only:` so that when it force-pushes, it does not need to always
push all the files, only the updated ones.  So the full repo should be
maintained in the _master_ branch, and only the `index_only` mirrors should
have their own branch.

This adds a test case to reproduce this error:
https://gitlab.com/fdroid/fdroidclient/-/jobs/10347168516

This case also applies to any setup that used `servergitmirrors:` before the
`index_only:` feature was added.  This also applies to cases if the repo
maintainer manually clones the *-nightly repo into _fdroid/git-mirror/_
2025-06-23 12:39:15 +00:00
linsui
51c973f15e Merge branch 'buildserver-androguard-from-backports' into 'master'
buildserver: androguard res0/res1 fixes from bookworm-backports

See merge request fdroid/fdroidserver!1667
2025-06-20 10:34:59 +00:00
Hans-Christoph Steiner
894fdb641e buildserver: androguard res0/res1 fixes from bookworm-backports 2025-06-20 10:34:27 +00:00
Hans-Christoph Steiner
d029095641 Merge branch 'merge_weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1669
2025-06-18 21:01:20 +00:00
Bora Atıcı
85dba17d48 Translated using Weblate: Turkish (tr) by Bora Atıcı <boratici.acc@gmail.com>
Currently translated at 99.8% (578 of 579 strings)

Co-authored-by: Bora Atıcı <boratici.acc@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2025-06-18 22:49:22 +02:00
Nuri KÜÇÜKLER
57541eb52e Translated using Weblate: Turkish (tr) by Nuri KÜÇÜKLER <enatsek@gmail.com>
Currently translated at 98.6% (571 of 579 strings)

Co-authored-by: Nuri KÜÇÜKLER <enatsek@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2025-06-18 22:49:22 +02:00
ssantos
7e8976d9b0 Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2025-06-18 22:49:22 +02:00
WaldiS
b6d7e8732b Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 98.2% (569 of 579 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2025-06-18 22:49:22 +02:00
Ecron
2590f00ff0 Translated using Weblate: Catalan (ca) by Ecron <ecron_89@hotmail.com>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Ecron <ecron_89@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2025-06-18 22:49:22 +02:00
Hans-Christoph Steiner
1135cee8b7 Merge branch 'nightly-GitPython' into 'master'
nightly: switch dep from vcs_git to GitPython

See merge request fdroid/fdroidserver!1563
2025-06-18 16:47:06 +00:00
Hans-Christoph Steiner
76d711ba3c nightly: convert to black format 2025-06-18 18:34:53 +02:00
Hans-Christoph Steiner
b2057a1ce0 nightly: switch dep from vcs_git to GitPython
This code already depends on GitPython, and hopefully the common.vcs* stuff
can eventually go away entirely.  GitPython should provide those bits
already, and they are maintained by someone else.

https://github.com/gitpython-developers/GitPython/pull/2029
2025-06-18 18:34:49 +02:00
Hans-Christoph Steiner
ce018158ee nightly: set up test for git clone function 2025-06-18 18:03:59 +02:00
Hans-Christoph Steiner
d398994ad3 Merge branch 'fix-categories-yml-only-icon' into 'master'
update: If categories.yml only has icon:, then add name:

See merge request fdroid/fdroidserver!1659
2025-06-16 17:25:09 +00:00
Hans-Christoph Steiner
494d811846 update: If cateogories.yml only has icon:, then add name:
E.g. if _categories.yml_ is like:

```yaml
Time:
  icon: time.png
```
2025-06-16 17:13:48 +00:00
Hans-Christoph Steiner
964861eb68 Merge branch 'polish-pylint' into 'master'
polish pylint

See merge request fdroid/fdroidserver!1637
2025-06-16 17:13:27 +00:00
linsui
8c14e44f63 gitlab-ci: show pylint output in log when it fails 2025-06-16 17:08:38 +00:00
Hans-Christoph Steiner
e1a8e1a08a pylint: use default good-names list 2025-06-16 17:08:38 +00:00
Hans-Christoph Steiner
d5bc7a6942 let pylint choose how many CPUs to use 2025-06-16 17:08:38 +00:00
Jochen Sprickerhof
78e6b8f04c Merge branch 'strip-and-copy-check-by-time' into 'master'
update: use ctime/mtime to control _strip_and_copy_image runs

See merge request fdroid/fdroidserver!1665
2025-06-11 19:26:03 +00:00
Hans-Christoph Steiner
59102fb07f update: use ctime/mtime to control _strip_and_copy_image runs
Oftentimes, the file that is copied is stripped, in which case, the file
size is different.  Using a file size check here means it will rerun the
strip and copy every time `fdroid update` is run for any image that needs
to be stripped.  If the source's ctime is newer than the destination, then
the process should run since it is a newly created file.  Even more so with
mtime, since the destination's mtime is reset based on the source's.
2025-06-11 17:33:34 +02:00
Hans-Christoph Steiner
3cb6078059 Merge branch 'lazyconfig' into 'master'
Lazyload environment variables in config.yml

See merge request fdroid/fdroidserver!1645
2025-06-11 13:02:09 +00:00
linsui
cd1630d2f5 Lazyload environment variables in config.yml 2025-06-11 13:02:09 +00:00
linsui
e44fd22199 Merge branch 'gradle' into 'master'
gradlew-fdroid: update AGP required gradle version

See merge request fdroid/fdroidserver!1661
2025-06-10 17:33:49 +00:00
linsui
69003ae65b gradlew-fdroid: update AGP required gradle version 2025-06-10 17:18:35 +00:00
Hans-Christoph Steiner
d4a71cd572 Merge branch 'two-fixes-for-tests' into 'master'
two fixes for the tests

See merge request fdroid/fdroidserver!1657
2025-06-10 17:14:21 +00:00
Hans-Christoph Steiner
721de49104 make_website: only parse repo_pubkey if its needed
This makes writing tests a lot easier, since the test cases no longer need
to provide a value for `repo_pubkey:`.
2025-06-08 20:12:04 +00:00
Hans-Christoph Steiner
677301bc8a gitlab-ci: make gradle job show files with trigger it
For some reason, this logic thinks that this merge request has changed
makebuildserver and/or gradlew-fdroid, though it clearly has not. This
should shed some light on it.

https://gitlab.com/fdroid/fdroidserver/-/jobs/9835383262
2025-06-08 20:12:04 +00:00
linsui
f281068cbf Merge branch 'gradle8142' into 'master'
gradle 8.14.2

See merge request fdroid/fdroidserver!1663
2025-06-08 07:14:18 +00:00
Licaon_Kter
e98f0966e0 gradle 8.14.2 2025-06-08 09:31:16 +03:00
linsui
0885cf3b49 Merge branch 'gradle8141' into 'master'
gradle - 8.14.1

See merge request fdroid/fdroidserver!1660
2025-05-24 07:32:06 +00:00
Licaon_Kter
c70af2503c gradle - 8.14.1 2025-05-24 09:36:38 +03:00
Hans-Christoph Steiner
bd10ee73c1 Merge branch 'deprecate_bzr_svn' into 'master'
Deprecate bzr, hg and git-svn support (attack surface)

See merge request fdroid/fdroidserver!1656
2025-05-23 07:15:12 +00:00
Jochen Sprickerhof
cfc848771d Deprecate bzr, hg and git-svn support (attack surface) 2025-05-23 07:14:42 +00:00
Michael Pöhn
ac90d11906 Merge branch 'funding-manifest-urls' into 'master'
💸 add .well-known/funding-manifest-urls

See merge request fdroid/fdroidserver!1658
2025-05-22 15:31:33 +00:00
Michael Pöhn
7cf1cd1f4c
💸 add .well-known/funding-manifest-urls
This is used by floss.fund to automatically verify that a repository is
indeed owned by the author of the corresponding funding.json file.
2025-05-22 17:29:50 +02:00
Hans-Christoph Steiner
2a939bf87f Merge branch 'flavor' into 'master'
update: match fastlane flavor with all combinations

See merge request fdroid/fdroidserver!1647
2025-05-22 12:59:26 +00:00
linsui
a5d966bf0f calculate all combinations of gradle flavors 2025-05-22 12:24:33 +02:00
linsui
e957583337 common: add calculate_gradle_flavor_combination 2025-05-22 12:24:32 +02:00
linsui
6c054f62ca flavour -> flavor 2025-05-22 12:16:43 +02:00
Hans-Christoph Steiner
0ac750463f Merge branch 'checkupdate' into 'master'
checkupdates: set push ref to HEAD:refs/heads/branch_name

See merge request fdroid/fdroidserver!1638
2025-05-22 10:13:23 +00:00
Hans-Christoph Steiner
8c9b0b3a2a add test case 2025-05-22 12:12:24 +02:00
linsui
243a0475f9 checkupdates: don't create branch with .lock end 2025-05-22 12:12:24 +02:00
linsui
e538c34c32 checkupdates: set push ref to HEAD:refs/heads/branch_name 2025-05-22 12:12:24 +02:00
Hans-Christoph Steiner
e7060011aa Merge branch 'triple-t' into 'master'
Fix handling of Triple-T 1.0.0 graphics

Closes #1260

See merge request fdroid/fdroidserver!1652
2025-05-22 10:11:25 +00:00
Leo Heitmann Ruiz
5f534ea2cb Add test case for Triple-T 1.0.0 graphics 2025-05-22 11:57:57 +02:00
Leo Heitmann Ruiz
ffd4274503 Fix handling of Triple-T 1.0.0 graphics
Unlike screenshots, the featureGraphic, icon, promoGraphic, and tvBanner
should be placed directly in the locale directory instead of in a
dedicated subdirectory (in the F-Droid metadata structure). For version
1.0.0 of the Triple-T structure this currently isn't done. Instead, the
graphics are treated as screenshots are.

To illustrate:

en-US/listing/icon/icon.png
en-US/listing/featureGraphic/play_store_feature_graphic.png

Should end up as:

en-US/icon.png
en-US/featureGraphic.png

But instead they currently end up as:

en-US/icon/icon.png
en-US/featureGraphic/play_store_feature_graphic.png

This patch should fix it.

It seems the erroneous behavior was introduced in
a4169484fd

Closes #1260
2025-05-21 16:57:35 +00:00
Hans-Christoph Steiner
0a8f9ec5fc Merge branch 'SOURCE_DATE_EPOCH' into 'master'
set SOURCE_DATE_EPOCH from app's git otherwise fdroiddata metadata file

See merge request fdroid/fdroidserver!1653
2025-05-20 20:03:48 +00:00
Hans-Christoph Steiner
20b36f1970 SOURCE_DATE_EPOCH from app's git otherwise fdroiddata metadata file
https://reproducible-builds.org/docs/source-date-epoch
2025-05-19 16:31:40 +02:00
linsui
0b6e304922 Merge branch 'gradlew-fdroid-one-more-level' into 'master'
gradlew-fdroid: also search ../../gradle/ for wrapper files

See merge request fdroid/fdroidserver!1655
2025-05-19 08:44:11 +00:00
Hans-Christoph Steiner
9384c5ab70 gradlew-fdroid: also search ../../gradle/ for wrapper files
https://github.com/geteduroam/android-app/pull/139
2025-05-17 00:15:44 +02:00
linsui
7b6767eb50 Merge branch 'no-git-exec-in-update' into 'master'
update: never execute VCS e.g. git

See merge request fdroid/fdroidserver!1630
2025-05-16 07:00:36 +00:00
Hans-Christoph Steiner
4e7bda736c update: never execute VCS e.g. git
Package repos come from untrusted sources, in terms of the buildserver. They
should be handled in VMs and containers as much as possible to avoid
vulnerabilities.  As far as I could tell, `fdroid update` only has a single
place where it executes any VCS system: if there is .fdroid.yml present in
a package repo, then it will fetch the commit ID using git.

For better security properties, this implements a simple function to just
read the files to get that commit ID.  The function that executes git to do
the same thing is relabeled "unsafe".  That is used for status JSON
everywhere, but that runs on fdroiddata.git and fdroidserver.git, which are
trusted repos.

The unsafe version is also used in places where git.Repo() is needed for
other things.
2025-05-12 18:30:03 +02:00
Hans-Christoph Steiner
2a9c8e9644 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1654
2025-05-12 14:44:41 +00:00
M. Fatih Uluçam
da58061c80 Translated using Weblate: Turkish (tr) by "M. Fatih Uluçam" <mulucam@gmail.com>
Currently translated at 94.6% (548 of 579 strings)

Co-authored-by: M. Fatih Uluçam <mulucam@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
VfBFan
696df82999 Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
Laurent FAVOLE
cc61a3e9e3 Translated using Weblate: French (fr) by Laurent FAVOLE <laurentfavole03@gmail.com>
Currently translated at 99.1% (574 of 579 strings)

Co-authored-by: Laurent FAVOLE <laurentfavole03@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
ssantos
3b78b3cf06 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
Aindriú Mac Giolla Eoin
0e086f5e61 Translated using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ga/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
Andrey
61943c3f06 Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 98.4% (570 of 579 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
Ihor Hordiichuk
eebbfedee5 Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
Besnik Bleta
1a9ba8e956 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.7% (566 of 579 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2025-05-12 16:29:00 +02:00
Fjuro
dd64d557f2
Translated using Weblate: Czech (cs) by Fjuro <fjuro@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:13 +02:00
Liner Seven
cd0b961e3c
Translated using Weblate: Japanese (ja) by Liner Seven <linour7gmekiblo@gmail.com>
Currently translated at 100.0% (579 of 579 strings)

Translated using Weblate: Japanese (ja) by Liner Seven <linour7gmekiblo@gmail.com>

Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Liner Seven <linour7gmekiblo@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:13 +02:00
C. Rüdinger
57ec6a93ed
Translated using Weblate: German (de) by "C. Rüdinger" <Mail-an-CR@web.de>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:13 +02:00
Ceeee
0e752f1ef0
Translated using Weblate: German (de) by Ceeee <marius.romanus@gmx.de>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Ceeee <marius.romanus@gmx.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:12 +02:00
VfBFan
13166fce05
Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:12 +02:00
Igor Rückert
22af55fb6d
Translated using Weblate: Portuguese (Brazil) (pt_BR) by Igor Rückert <igorruckert@yahoo.com.br>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:12 +02:00
大王叫我来巡山
858edaaa4d
Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:12 +02:00
Максим Горпиніч
f2faeca949
Translated using Weblate: Ukrainian (uk) by Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Currently translated at 100.0% (579 of 579 strings)

Co-authored-by: Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-05-11 16:14:11 +02:00
linsui
9e51fa36e5 Merge branch 'upgradedebianvm' into 'master'
Use latest Bookworm images for makebuildserver

See merge request fdroid/fdroidserver!1651
2025-05-08 12:13:25 +00:00
Licaon_Kter
7924888e5a Use latest Bookworm images for makebuildserver 2025-05-08 12:13:25 +00:00
Michael Pöhn
b581d08b6f Merge branch 'optional_config' into 'master'
Make v2 localized config optional

See merge request fdroid/fdroidserver!1649
2025-04-28 11:14:40 +00:00
Jochen Sprickerhof
b83c1aace3
Make v2 localized config optional
Fixes:

Traceback (most recent call last):
  File "/home/fdroid/fdroidserver/fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/home/fdroid/fdroidserver/fdroidserver/__main__.py", line 222, in main
    raise e
  File "/home/fdroid/fdroidserver/fdroidserver/__main__.py", line 203, in main
    mod.main()
  File "/home/fdroid/fdroidserver/fdroidserver/update.py", line 2774, in main
    fdroidserver.index.make(archived_apps, archapks, repodirs[1], True)
  File "/home/fdroid/fdroidserver/fdroidserver/index.py", line 132, in make
    make_v2(
  File "/home/fdroid/fdroidserver/fdroidserver/index.py", line 728, in make_v2
    output["repo"] = v2_repo(repodict, repodir, archive)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fdroid/fdroidserver/fdroidserver/index.py", line 686, in v2_repo
    repo["icon"] = config["archive" if archive else "repo"]["icon"]
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
KeyError: 'icon'
2025-04-28 08:38:54 +02:00
linsui
561da8f7d1 Merge branch 'gradle' into 'master'
gradle v8.14

See merge request fdroid/fdroidserver!1648
2025-04-26 07:11:12 +00:00
linsui
b93fc6f9da gradle v8.14 2025-04-26 14:41:27 +08:00
Michael Pöhn
265adadaba Merge branch 'include-stages-in-update.json' into 'master'
update: include stages timing info in update.json

See merge request fdroid/fdroidserver!1644
2025-04-23 17:38:27 +00:00
Hans-Christoph Steiner
2a33857fd0
update: include stages timing info in update.json
!1627 missed this, so stages only get included in running.json.  That means
the stages info is only visible while update is running, making it hard to
use.
2025-04-23 19:26:50 +02:00
Hans-Christoph Steiner
3b360f6b80 Merge branch 'repo_key_sha256-valid' into 'master'
lint: repo_key_sha256 to list of valid config keys

See merge request fdroid/fdroidserver!1643
2025-04-16 12:00:33 +00:00
Hans-Christoph Steiner
004103357b gitlab-ci: metadata_v0 test expects no config 2025-04-16 11:11:57 +00:00
Hans-Christoph Steiner
56338cd7d0 repo_key_sha256 to list of valid config keys
fdroidserver!287
2025-04-16 11:11:57 +00:00
Hans-Christoph Steiner
a03cfa3fc2 Merge branch 'patch-1' into 'master'
Clarify libmagic needs to be installed separately

See merge request fdroid/fdroidserver!1640
2025-04-15 16:22:22 +00:00
Benson Muite
c4d46a187f Clarify libmagic needs to be installed separately
See installation instructions at https://pypi.org/project/python-magic/
2025-04-12 14:54:36 +03:00
Hans-Christoph Steiner
692f79ec7d Merge branch 'verify-json-output' into 'master'
`fdroid verify` JSON output

See merge request fdroid/fdroidserver!1632
2025-04-10 15:52:41 +00:00
Hans-Christoph Steiner
17e5a59704 verify: generate <appid>.json files that list all reports 2025-04-10 15:41:46 +00:00
Hans-Christoph Steiner
029636ed61 verify: write verified.json in function to ease testing 2025-04-10 15:41:46 +00:00
Hans-Christoph Steiner
d34d051329 Merge branch 'checkupdate' into 'master'
checkupdates: always print remote message of git push

See merge request fdroid/fdroidserver!1636
2025-04-09 09:58:53 +00:00
linsui
2aba6fd324 checkupdates: always print remote message of git push 2025-04-09 17:48:11 +08:00
Hans-Christoph Steiner
f7cc4812a2 Merge branch 'gitlab-ci-refactor-to-rules' into 'master'
gitlab-ci: migrate to rules: syntax and split up linters into standalone jobs

See merge request fdroid/fdroidserver!1614
2025-04-09 07:31:18 +00:00
Hans-Christoph Steiner
9bcd13bfdd gitlab-ci: add "lint" pre-stage before default "test" stage 2025-04-09 07:19:50 +00:00
Hans-Christoph Steiner
7f67a882e7 gitlab-ci: only run Python-only jobs when .py files change 2025-04-09 07:19:50 +00:00
Hans-Christoph Steiner
6ad79e3c06 gitlab-ci: move bandit to its own job 2025-04-09 07:19:50 +00:00
Hans-Christoph Steiner
3e67bee037 gitlab-ci: move pylint to its own job 2025-04-09 07:19:50 +00:00
Hans-Christoph Steiner
3b9d39ac61 gitlab-ci: move shellcheck to own job fenced by changes: 2025-04-09 07:19:50 +00:00
Hans-Christoph Steiner
aa9cc14991 gitlab-ci: refactor to rules: and ditch old only: syntax
Adding workflow: is required, otherwise there would be duplicate
pipelines for all users in the @fdroid group.  There would be "branch
pipelines" and "merge request pipelines".  Confusingly, only jobs with
rules: get duplicated.
2025-04-09 07:19:50 +00:00
Hans-Christoph Steiner
07d499ce1f Merge branch 'checkupdate' into 'master'
checkupdates: adjust log level

See merge request fdroid/fdroidserver!1635
2025-04-09 07:01:34 +00:00
linsui
a13dd109d3 checkupdates: adjust log level 2025-04-09 14:51:27 +08:00
Hans-Christoph Steiner
3582a12f18 Merge branch 'clearer-srclibs' into 'master'
vcs_git: clearer error messages for checkrepo()

See merge request fdroid/fdroidserver!1634
2025-04-03 10:25:11 +00:00
Michael Pöhn
69f9f52ba2 drop error prefix when raising VCSException in case retrieving git revision failed 2025-04-03 10:24:46 +00:00
Michael Pöhn
046c527ee8 vcs_git: clearer error messages for checkrepo()
This updates error messages the help identify issues when loading srclibs
and fixes pushing srclibs into build vms/containers.
2025-04-03 10:24:46 +00:00
Michael Pöhn
0d88a94192 metadata: rename srcdir -> srclibs_dir for clarity 2025-04-03 10:24:46 +00:00
Hans-Christoph Steiner
e6cff099f2
delete file I mistakenly included 2025-04-01 11:41:46 +02:00
Hans-Christoph Steiner
bb7394ab3c Merge branch 'start-integrating' into 'master'
start integrating

See merge request fdroid/fdroidserver!1631
2025-03-31 15:34:14 +00:00
Hans-Christoph Steiner
a011b34b97 black format and use returncode directly without != 0 2025-03-31 11:27:13 +02:00
Hans-Christoph Steiner
9a8d80ee6b purge dead code: apk_signer_fingerprint_short 2025-03-31 11:09:07 +02:00
Hans-Christoph Steiner
ef4bbe4612 Merge branch 'use-codeclimate-for-linting-tests' into 'master'
ci: use GitLab Code Quality for linting tests

See merge request fdroid/fdroidserver!1443
2025-03-26 21:33:31 +00:00
proletarius101
90b82ea7e6 ci: use GitLab Code Quality for linting tests 2025-03-26 21:33:31 +00:00
Hans-Christoph Steiner
c98028136a
version 2.4.0 2025-03-25 12:13:57 +01:00
Hans-Christoph Steiner
9fb909b648
update CHANGELOG.md 2025-03-25 12:13:54 +01:00
Hans-Christoph Steiner
0cce48dc04
use black code format for locale/pick-complete-translations.py 2025-03-25 12:13:51 +01:00
Hans-Christoph Steiner
eef237de85
locale/pick-complete-translations.py: use stable sort order for MANIFEST.in 2025-03-25 12:13:47 +01:00
Hans-Christoph Steiner
0c867f908f
make -C locale update 2025-03-25 12:13:43 +01:00
Hans-Christoph Steiner
4cefec9333
fix missing comma in error message 2025-03-25 12:13:22 +01:00
Ihor Hordiichuk
d9046727e5
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (578 of 578 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-03-25 11:23:22 +01:00
Hans-Christoph Steiner
01b948cae7 Merge branch 'publish-and-signatures-cleanup' into 'master'
run test_signatures.py in PUBLISH CI job; clean up signatures/publish tests

See merge request fdroid/fdroidserver!1624
2025-03-25 10:23:16 +00:00
Hans-Christoph Steiner
59474437b3 delete cruft test script 2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
a69340a1ea MANIFEST.in: case-insensitive ASCII byte value for stable sort
```
LC_ALL=C sort --ignore-case --stable --output=MANIFEST.in MANIFEST.in
```
2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
40be283c4a APK for testing maxSdkVersion handling
APK is org.bitbucket.tickytacky.mirrormirror_4.apk disassembled with
`apktool decode`, maxSdkVersion added, then reassembled with `apktool build`
2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
eef3188600 test_signatures: remove unneeded config from tests 2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
d024c8964f convert test_signatures.py to black code format 2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
8f351d8406 publish: convert to black code format 2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
68fad5c7f7 gitlab-ci: delete extraneous keystore key from PUBLISH job
repo_keyalias is set in tests/config.yml, so this does not need to fake the
fdroiddata value.
2025-03-25 10:23:00 +00:00
Hans-Christoph Steiner
5150c721f4 verify_apk_signature: work when options is not set
Then test_signatures.py can run on the PUBLISH CI job.
2025-03-25 10:23:00 +00:00
Michael Pöhn
8d17b67642 Merge branch 'update-stages-in-status-json' into 'master'
update: add execution stages to status JSON

See merge request fdroid/fdroidserver!1627
2025-03-25 09:07:22 +00:00
Hans-Christoph Steiner
acbab69722 update: add execution stages to status JSON
This should help us profile what takes so long in `fdroid update`.  It also
gives feedback so that people can see how close to done it is, or where it
failed.

This is based on how incremental status JSON works for `fdroid build`.
2025-03-24 11:14:40 +01:00
Hans-Christoph Steiner
51487192b9 Merge branch 'fix-found-dexdump' into 'master'
fix _dexdump_found() in test_scanner.py !1621

See merge request fdroid/fdroidserver!1625
2025-03-24 08:24:46 +00:00
Hans-Christoph Steiner
58609aa9f0 fix _dexdump_found() in test_scanner.py !1621
find_sdk_tools_cmd() will throw an exception if it can't find the tool, not
return None.
2025-03-24 08:24:01 +00:00
Hans-Christoph Steiner
0b192a7694 Merge branch 'weblate' into 'master'
update source strings

See merge request fdroid/fdroidserver!1626
2025-03-23 21:00:40 +00:00
Hans-Christoph Steiner
b29ee09fda
locale: full update of source strings 2025-03-23 21:49:34 +01:00
Aindriú Mac Giolla Eoin
7cf7f4b14e
Translated using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ga/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:05 +01:00
LucasMZ
050aec31e2
Translated using Weblate: Portuguese (Brazil) (pt_BR) by LucasMZ <git@lucasmz.dev>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: LucasMZ <git@lucasmz.dev>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:04 +01:00
Edgars Andersons
f0cd68a9fb
Translated using Weblate: Latvian (lv) by Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Currently translated at 11.0% (69 of 623 strings)

Co-authored-by: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/lv/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:04 +01:00
Besnik Bleta
868eb64de6
Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.7% (609 of 623 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:04 +01:00
VfBFan
51457a6f8e
Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:04 +01:00
大王叫我来巡山
b95d60f24b
Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:04 +01:00
Fjuro
3c9fa6761e
Translated using Weblate: Czech (cs) by Fjuro <fjuro@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:03 +01:00
Champ0999
4e18b38d8f
Translated using Weblate: Italian (it) by Champ0999 <champ0999@users.noreply.hosted.weblate.org>
Currently translated at 89.7% (559 of 623 strings)

Co-authored-by: Champ0999 <champ0999@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:03 +01:00
Максим Горпиніч
cb69c4fea3
Translated using Weblate: Ukrainian (uk) by Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-03-23 11:56:03 +01:00
Hans-Christoph Steiner
2b8640b95a Merge branch 'scanner-suppress-verbose' into 'master'
scanner: only output "X problems found" if errors or --verbose

See merge request fdroid/fdroidserver!1622
2025-03-21 08:45:52 +00:00
Hans-Christoph Steiner
35d205a9b9 scanner: only output "X problems found" if errors or --verbose
UNIX/POSIX standard behavior is to output nothing at all if a command
succeeds.  This suppresses "0 problems found", unless the user requests it.
2025-03-21 08:45:23 +00:00
Hans-Christoph Steiner
78efc16fc2 scanner: suppress verbose/confusing log output on success
This additionally asserts that the right log output happened.
2025-03-21 08:45:23 +00:00
Hans-Christoph Steiner
88f4a36f38 Merge branch 'no-more-stats-dir' into 'master'
remove last uses of stats/ dir

See merge request fdroid/fdroidserver!1620
2025-03-20 14:42:09 +00:00
Hans-Christoph Steiner
4b9100ae80 publish: remove last use of stats/ dir
This file can be treated like the other index files in repo/. This also has
the advantage that it will automatically get synced by @CiaranG's existing
sync scripts.
2025-03-20 15:08:32 +01:00
Hans-Christoph Steiner
38378ddfb7 rename v1_sort_packages to sort_package_versions 2025-03-20 15:08:32 +01:00
Hans-Christoph Steiner
8565a97465 rename functions and variables to reflect stats/ going away 2025-03-20 15:08:32 +01:00
Hans-Christoph Steiner
b911fb9ed9
make -C locale/ update 2025-03-20 15:06:59 +01:00
Hans-Christoph Steiner
c17a9253ff
version 2.4 alpha 2 2025-03-20 15:04:20 +01:00
Hans-Christoph Steiner
88108c8381
update CHANGELOG.md 2025-03-20 15:04:17 +01:00
Hans-Christoph Steiner
80edad8947 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1623
2025-03-20 13:43:15 +00:00
Edgars Andersons
46939ec4ba
Translated using Weblate: Latvian (lv) by Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Currently translated at 10.7% (67 of 621 strings)

Co-authored-by: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/lv/
Translation: F-Droid/F-Droid Server
2025-03-20 12:48:20 +00:00
Максим Горпиніч
efd79866a7
Translated using Weblate: Ukrainian (uk) by Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Currently translated at 100.0% (621 of 621 strings)

Co-authored-by: Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-03-20 12:48:20 +00:00
VfBFan
f6011ae304
Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>

Currently translated at 99.5% (618 of 621 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-03-20 12:48:19 +00:00
大王叫我来巡山
d67a7c1b04
Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (621 of 621 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2025-03-20 12:48:19 +00:00
Igor Rückert
af147855f6
Translated using Weblate: Portuguese (Brazil) (pt_BR) by Igor Rückert <igorruckert@yahoo.com.br>
Currently translated at 100.0% (621 of 621 strings)

Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2025-03-20 12:48:18 +00:00
Hosted Weblate
dad3299810
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2025-03-20 12:48:17 +00:00
Hans-Christoph Steiner
ada4631f15 Merge branch 'dexdump-arch-skip' into 'master'
handle arches that are missing dexdump in tests

See merge request fdroid/fdroidserver!1621
2025-03-20 12:48:05 +00:00
Hans-Christoph Steiner
ec2b847e03 handle arches that are missing dexdump in tests
dexdump is only available for certain CPU architectures.  Google binaries
are for amd64 and arm64.  Debian binaries are for amd64, arm64, armhf,
i386, and riscv64.  That leaves out armel, ppc64el, s390x, loong64, etc.
where pure Python code runs perfectly fine.
2025-03-20 12:42:59 +00:00
Hans-Christoph Steiner
f09d859281 Merge branch 'fix-1125' into 'master'
index: fail if user sets mirrors:isPrimary wrong

Closes #1125

See merge request fdroid/fdroidserver!1617
2025-03-20 11:13:36 +00:00
Hans-Christoph Steiner
20569217d9 index: fail if user sets mirrors:isPrimary wrong
Really, this is not meant to be set by the user in the config.  But if they
add something harmless that'll be ignored anyway, it seems that throwing an
error is too much.  So only throw the error if it is set wrongly.
2025-03-20 11:13:09 +00:00
Hans-Christoph Steiner
8e39f82eb9 Merge branch 'bun' into 'master'
scanner: add bun.lock as lock file of package.json

See merge request fdroid/fdroidserver!1615
2025-03-20 07:30:02 +00:00
linsui
5e28cd367f scanner: add bun.lock as lock file of package.json 2025-03-20 07:29:09 +00:00
Hans-Christoph Steiner
0af61d8fe1 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1618
2025-03-19 20:20:38 +00:00
Hans-Christoph Steiner
6fbb2fec9c
make -C locale update 2025-03-19 17:57:41 +01:00
Kristoffer Grundström
4448aeb550
Translated using Weblate: Swedish (sv) by Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Currently translated at 19.2% (118 of 613 strings)

Co-authored-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Ricky Tigg
65b015302d
Translated using Weblate: Finnish (fi) by Ricky Tigg <ricky.tigg@gmail.com>
Currently translated at 5.0% (31 of 613 strings)

Co-authored-by: Ricky Tigg <ricky.tigg@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fi/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Hosted Weblate
273b763aed
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Hans-Christoph Steiner
c62094274c
Translated using Weblate: Tamil (ta) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 98.6% (604 of 612 strings)

Co-authored-by: Hans-Christoph Steiner <hans@eds.org>
Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Kristoffer Grundström
29487d8c3a
Translated using Weblate: Swedish (sv) by Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Currently translated at 12.5% (77 of 612 strings)

Co-authored-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Marcus skoding
560d7fd200
Translated using Weblate: Swedish (sv) by Marcus skoding <ggd7cnc9m@mozmail.com>
Currently translated at 12.5% (77 of 612 strings)

Translated using Weblate: Swedish (sv) by Marcus skoding <ggd7cnc9m@mozmail.com>

Currently translated at 12.2% (75 of 612 strings)

Co-authored-by: Marcus skoding <ggd7cnc9m@mozmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Kristoffer Grundström
f76114ba5c
Translated using Weblate: Swedish (sv) by Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Currently translated at 12.2% (75 of 612 strings)

Co-authored-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Kuldeep Singh
40daf5e153
Added translation using Weblate: Punjabi (pa) by Kuldeep Singh <kuldeepburjbhalaike@gmail.com>
Co-authored-by: Kuldeep Singh <kuldeepburjbhalaike@gmail.com>
2025-03-19 17:53:54 +01:00
தமிழ்நேரம்
72ca7ebc4f
Translated using Weblate: Tamil (ta) by தமிழ்நேரம் <anishprabu.t@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Hosted Weblate
db7afbedf5
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Bård Sigurd Møller
e50ce950a3
Translated using Weblate: Norwegian Nynorsk (nn) by Bård Sigurd Møller <git@bsmoller.no>
Currently translated at 0.6% (4 of 611 strings)

Added translation using Weblate: Norwegian Nynorsk (nn) by Bård Sigurd Møller <git@bsmoller.no>

Co-authored-by: Bård Sigurd Møller <git@bsmoller.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nn/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Edgars Andersons
7f207496bb
Translated using Weblate: Latvian (lv) by Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Currently translated at 7.0% (43 of 612 strings)

Translated using Weblate: Latvian (lv) by Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>

Currently translated at 6.8% (42 of 611 strings)

Co-authored-by: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/lv/
Translation: F-Droid/F-Droid Server
2025-03-19 17:53:54 +01:00
Hans-Christoph Steiner
edd88cc701
version 2.4 alpha 1 2025-03-19 17:45:15 +01:00
Hans-Christoph Steiner
a01e91da6c
update CHANGELOG.md 2025-03-19 17:45:12 +01:00
Hans-Christoph Steiner
e23b196a0f
run tests/refresh-SUSS_DEFAULT.py 2025-03-19 17:45:08 +01:00
Hans-Christoph Steiner
52045f9819 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1616
2025-03-19 16:24:40 +00:00
Golubev Alexander
ca082daaea Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
大王叫我来巡山
9429f0917b Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Максим Горпиніч
c5d5ab3a79 Translated using Weblate: Ukrainian (uk) by Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
LucasMZ
26860dbf2f Translated using Weblate: Portuguese (Brazil) (pt_BR) by LucasMZ <git@lucasmz.dev>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: LucasMZ <git@lucasmz.dev>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
ssantos
0907755efe Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (613 of 613 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (613 of 613 strings)

Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>

Currently translated at 99.8% (612 of 613 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
WaldiS
2a36726798 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 100.0% (613 of 613 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 99.8% (612 of 613 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Liner Seven
c0da9df12f Translated using Weblate: Japanese (ja) by Liner Seven <linour7gmekiblo@gmail.com>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: Liner Seven <linour7gmekiblo@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Aindriú Mac Giolla Eoin
bb5d7a0e91 Translated using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ga/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Lula Bye
dedc92b467 Translated using Weblate: French (fr) by Lula Bye <translate.cylinder716@passinbox.com>
Currently translated at 97.3% (597 of 613 strings)

Co-authored-by: Lula Bye <translate.cylinder716@passinbox.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Nicolás Pérez
99b8f76487 Translated using Weblate: Spanish (es) by Nicolás Pérez <ccnicolasperez@gmail.com>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: Nicolás Pérez <ccnicolasperez@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
VfBFan
d3eff85c51 Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Fjuro
fcbbf3bea3 Translated using Weblate: Czech (cs) by Fjuro <fjuro@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
pitroig
2b8c957d12 Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 100.0% (613 of 613 strings)

Co-authored-by: pitroig <ona@riseup.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2025-03-19 17:13:35 +01:00
Hans-Christoph Steiner
a95f4f11b0
pick-complete-translations.py: use new Weblate API 2025-03-19 17:13:29 +01:00
Hans-Christoph Steiner
b416d9b604 Merge branch 'skip-test-for-unsupported-arch' into 'master'
skip tests that won't run on a given CPU architecture

See merge request fdroid/fdroidserver!1330
2025-03-19 14:56:18 +00:00
Hans-Christoph Steiner
0b3fe26524
skip tests that won't run on a given CPU architecture 2025-03-19 15:47:06 +01:00
Hans-Christoph Steiner
025828932d purge test exceptions for Python < 3.9, that's the min version 2025-03-19 11:11:36 +01:00
Michael Pöhn
17a4912e83 Merge branch 'gitlab-ci-signing-server' into 'master'
gitlab-ci: "PUBLISH" job to test in the signing server's setup

See merge request fdroid/fdroidserver!1613
2025-03-12 16:48:36 +00:00
Hans-Christoph Steiner
c5f442616e gitlab-ci: "PUBLISH" job to test in the signing server's setup 2025-03-12 17:27:26 +01:00
Hans-Christoph Steiner
2f4e0f47a1 signatures: make from . import net optional
This eliminates the need to have python3-requests installed on the signing
server.  This was missed in 031ae1103e
2025-03-12 17:27:26 +01:00
Hans-Christoph Steiner
3e6cb67e69 Merge branch 'signing-server' into 'master'
complete workflow for porting the signing server for config.yml

See merge request fdroid/fdroidserver!1610
2025-03-12 13:11:21 +00:00
Hans-Christoph Steiner
d06e33697a lint: missing valid config key: apk_signing_key_block_list 2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
9d147c6b6b test_common: remove self.tmpdir and use standard self.testdir pat 2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
858068c64b only show "unsafe perms on config.yml" when secrets are present
This should make for fewer false positives.
2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
36007d50e5 AbstractBaseTest class for sharing setUp and tearDown in tests 2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
f269232b96 hide error messages in tests that are meant to fail 2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
8cf1297e2c clarify config data types and structures 2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
081e02c109 expand {env: foo} in any place a string can be
`keypass: {env: keypass}` has been in use in production repos for
years.  That is not anything new. It makes it possible to maintain
_config.yml_ publicly even when it needs secrets.  This change makes
sure it is possible to use {env: foo} syntax anywhere where a string
value is valid. The "list of dicts" values can be str, list of str or
list of dicts with str.

Before the {env: keypass} syntax, the actual password was just inline
in the config file.  Before this commit, it was only possible to use
{env: key} syntax in simple, string-only configs, e.g. from
examples/config.yml:
2025-03-12 13:37:17 +01:00
Hans-Christoph Steiner
031ae1103e function-local imports to limit deps for publish/signindex/gpgsign
This eliminates the need to have these installed on the signing server:

* python3-qrcode
* python3-requests

The signing server currently uses a git clone to run _fdroidserver_ and
`apt-get install` for dependencies.  This leaves "qrcode" in
"install_requires" since moving it to "extras_require" would break
`fdroid update` and `fdroid nightly` for anything that does
`pip install fdroidserver`:

https://gitlab.com/eighthave/fdroidserver/-/jobs/9386520037
2025-03-12 13:37:13 +01:00
Hans-Christoph Steiner
864ccb560b Merge branch 'pydocfix' into 'master'
🪐 fix pydoc link in hooks/pre-commit

See merge request fdroid/fdroidserver!1612
2025-03-12 09:17:58 +00:00
Michael Pöhn
14e13b4f4a
🪐 fix pydoc link in hooks/pre-commit
updated pydoc linter flags based on how it's used in .gitlab-ci.yml
2025-03-12 10:04:46 +01:00
Michael Pöhn
1521d5c659 Merge branch 'YAML-1.2' into 'master'
standardize config on ruamel.yaml with a YAML 1.2 config

See merge request fdroid/fdroidserver!1611
2025-03-10 08:34:06 +00:00
Hans-Christoph Steiner
3ab2baf542 _yaml.config_dump() for writing out config
This outputs YAML in a string that is suitable for use in regexps
and string replacements, as well as complete files.  It is therefore
explicitly set up to avoid writing out headers and footers.
2025-03-10 08:49:18 +01:00
Hans-Christoph Steiner
2f47938dbf standardize config on ruamel.yaml with a YAML 1.2 config
This is a key piece of the ongoing `PUBLISH` _config.yml_ migration. There was uneven implementation of which YAML parser to use, and that could lead to bugs where one parser might read a value one way, and a different parser will read the value a different way. I wanted to be sure that YAML 1.2 would always work.

This makes all code that handles config files use the same `ruamel.yaml` parsers.  This only touches other usages of YAML parsers when there is overlap.  This does not port all of _fdroidserver_ to `ruamel.yaml` and YAML 1.2.  The metadata files should already be YAML 1.2 anyway.

# Conflicts:
#	fdroidserver/lint.py
2025-03-10 08:48:58 +01:00
Hans-Christoph Steiner
53b62415d3 load lint_licenses where it is needed to avoid circular imports
This is the only thing that common.py imports from lint.py.
2025-03-07 14:52:23 +01:00
Jochen Sprickerhof
16fb0fbe91 Merge branch 'purge-config.py' into 'master'
purge config.py

See merge request fdroid/fdroidserver!1607
2025-03-05 14:42:01 +00:00
Hans-Christoph Steiner
3cc6c09ffc use common var for 'config.yml', standarize on UTF-8
This makes it easy to track all the places that use config.yml, and
hopefully makes things feel cleaner.  This also standardizes all places
where config.yml is written out to use UTF-8 as the file encoding.

This also includes a lot of black code format fixes.
2025-03-05 12:20:32 +01:00
Hans-Christoph Steiner
1f96a84f9a
gitlab-ci: add yamllint job 2025-02-26 17:28:01 +01:00
Hans-Christoph Steiner
642499ec94
purge config.py handling, it is no longer supported 2025-02-26 17:27:58 +01:00
Hans-Christoph Steiner
cb9533bd74 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.13

See merge request fdroid/fdroidserver!1609
2025-02-26 12:39:57 +00:00
fdroid-bot
a37c409c74 gradle v8.13 2025-02-26 10:19:22 +00:00
Michael Pöhn
0f5a1a0bfb Merge branch 'lint-config.yml' into 'master'
Lint config.yml

See merge request fdroid/fdroidserver!1606
2025-02-26 10:18:47 +00:00
Hans-Christoph Steiner
1ee9ea8cf9 lint: implement for config.yml 2025-02-24 19:07:27 +01:00
Hans-Christoph Steiner
695d97e103
fix: "no new line character at the end of file"
If yamllint is installed `fdroid lint` will run it, and what will output
the  (new-line-at-end-of-file) warning message.
2025-02-24 18:13:13 +01:00
Hans-Christoph Steiner
56865f9ba6
checkupdates: remove auto_author: config, it is no longer used
checkupdates-runner sets the required values anyway.
fe3cb890db/.gitlab-ci.yml (L35)
2025-02-24 11:58:56 +01:00
Hans-Christoph Steiner
ecdf47d893 update: do not crash on {env: } in paths in config.yml 2025-02-22 23:32:29 +01:00
Hans-Christoph Steiner
4d66f30faf Merge branch 'skip-test-on-macOS' into 'master'
skip test with mystery failure only on macOS

See merge request fdroid/fdroidserver!1605
2025-02-14 10:15:17 +00:00
Hans-Christoph Steiner
f92542c7ea skip test with mystery failure only on macOS
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1587#note_2273747610

This happened when this test was a shell script as well:
https://gitlab.com/fdroid/fdroidserver/-/blob/2.3.5/tests/run-tests#L1244
2025-02-14 11:12:22 +01:00
Hans-Christoph Steiner
dde1942520 Merge branch 'migrate-integration-tests-to-python' into 'master'
Migrate integration tests from Bash to Python

See merge request fdroid/fdroidserver!1587
2025-02-13 20:40:35 +00:00
Hans-Christoph Steiner
1694966455 gpg requires a short path to the socket to talk to gpg-agent 2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
efda0f5d6c skip gpgsign test if gpg is not availabe on the PATH 2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
b7c5233668 test_integration: stop trying to handle proxy errors
I don't think it is possible to automatically handle those cases, because
proxy setups can be so widely varied and can have privacy ramifications.
The person running the test who hits proxy errors will need to handle them
manually.
2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
efce0ce0e4 use shared test function to replicate .testfiles setup
* It should include a subdir named after the test case.
* self.testdir is the common var name for this.
* tmp_repo is not a repo/ subdir, but instead the root of the whole repo
2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
820abbc876 'archive/' dir might have been locally created 2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
7a21c24e45 test_integration: add docstring comments 2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
b933043ca1 new helpers: get_output_extension() & get_release_apk_filename()
This also moves to the standard var names: appid & versionCode
2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
8b52740636 use for f in files var name; avoid using keyword as var name 2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
1720a51e9e replace := walrus operator usages 2025-02-13 17:56:30 +01:00
mindston
1cbd68af84 Ignore bandit insecure usage of tmp dir warnings 2025-02-13 17:56:30 +01:00
mindston
565ae02678 Remove macOS exceptions 2025-02-13 17:56:30 +01:00
mindston
fa4ff197aa Force C.UTF-8 locale for messages instead of en_US.UTF-8 2025-02-13 17:56:30 +01:00
mindston
aeb6c612e9 Set configuration variables for tests that run Git 2025-02-13 17:56:30 +01:00
mindston
96f9d7fdf8 Fix androguard import for versions <4 2025-02-13 17:56:30 +01:00
mindston
385832c1fd Fix usage of removed $WORKSPACE variable in run-tests 2025-02-13 17:56:30 +01:00
mindston
62b4af4f19 Fix UTC timezone import to work on Python <3.11 2025-02-13 17:56:30 +01:00
mindston
9201b3ca94 Migrate integration tests from Bash to Python 2025-02-13 17:56:30 +01:00
Hans-Christoph Steiner
49697d1479 Merge branch 'error-on-duplicate-files' into 'master'
index: error if duplicate package files are in repo

See merge request fdroid/fdroidserver!1602
2025-02-13 16:56:08 +00:00
Hans-Christoph Steiner
f7dc89e9ba index: error if duplicate package files are in repo
Looks like the ~index-v2 work removed this error case, and the old bash
integration test case failed to catch it.  This reestablishes this error.

@mindston's refactoring of the old bash test suite caught this issue, e.g.
!1587
2025-02-12 18:38:05 +01:00
Jochen Sprickerhof
6df9d0ecba Merge branch 'autoname' into 'master'
checkupdates: sort the order of dirs when finding autoname

See merge request fdroid/fdroidserver!1601
2025-02-07 17:26:17 +00:00
linsui
a7e56598d6 checkupdates: sort the order of dirs when finding autoname 2025-02-07 22:16:18 +08:00
Hans-Christoph Steiner
9215f5e4b1 Merge branch 'triple-t' into 'master'
update.py: fix triple-t metadata extract when there is no subdir

See merge request fdroid/fdroidserver!1599
2025-01-27 13:49:11 +00:00
linsui
2b725a5966 update.py: fix triple-t metadata extract when there is no subdir 2025-01-27 13:47:36 +00:00
Hans-Christoph Steiner
7c376209e0 Merge branch 'testcommon-rename-to-shared_test_code' into 'master'
tests: rename testcommon module to shared_test_code

See merge request fdroid/fdroidserver!1583
2025-01-27 10:21:58 +00:00
Hans-Christoph Steiner
66d220bd9f tests: rename testcommon module to shared_test_code
This name always confuses me, since there is also test_common.py. And this
module is not actually a test suite, even though it starts with "test".
This also makes for better tab completion, e.g.

python3 -m unittest tests/te[Tab] -> tests/test_
2025-01-27 10:11:19 +00:00
linsui
f9431aaf0f Merge branch 'gradle' into 'master'
gradle v8.12.1

See merge request fdroid/fdroidserver!1598
2025-01-26 04:20:00 +00:00
linsui
0c6e976a01 gradle v8.12.1 2025-01-26 12:09:54 +08:00
Hans-Christoph Steiner
6e1c1f4cc0
make -C locale update 2025-01-21 17:03:56 +01:00
Hans-Christoph Steiner
f719efcba0
version 2.3.5 2025-01-21 16:43:22 +01:00
Hans-Christoph Steiner
e45709beef
update CHANGELOG.md 2025-01-21 16:43:16 +01:00
Hans-Christoph Steiner
0930937939 Merge branch 'ban-apksigner-v33' into 'master'
ban apksigner v33, it has bugs verifying APKs with v3/v3.1 sigs

See merge request fdroid/fdroidserver!1593
2025-01-21 15:00:24 +00:00
Hans-Christoph Steiner
2ac925a249 ban apksigner v33, it has bugs verifying APKs with v3/v3.1 sigs 2025-01-21 15:00:23 +00:00
Hans-Christoph Steiner
afd1a89ca5 Merge branch 'updatedebianimagetrick' into 'master'
Fix vagrant image download issue

See merge request fdroid/fdroidserver!1595
2025-01-21 14:08:09 +00:00
Licaon_Kter
f3102d81b1 Fix vagrant image download issue 2025-01-21 15:57:12 +02:00
Hans-Christoph Steiner
c8c2b1be78 Merge branch 'updatedebianimage' into 'master'
Use latest Bookworm images for makebuildserver

See merge request fdroid/fdroidserver!1594
2025-01-21 13:49:50 +00:00
Licaon_Kter
9e03dba11e Use latest Bookworm images for makebuildserver 2025-01-21 13:36:56 +02:00
Hans-Christoph Steiner
1fc8053936 Merge branch 'fix-ci' into 'master'
two CI fixes: remove broken arch job and ignore one checkupdates test on macOS

See merge request fdroid/fdroidserver!1592
2025-01-21 09:34:12 +00:00
Hans-Christoph Steiner
9b5a67340e checkupdates: skip test_get_upstream_main_branch on macOS
This test checks the detection of the default initial branch. It is a hard
thing to test since different platform configurations have different
defaults.  checkupdates is basically only used on GNU/Linux anyway.

Here's the failure:
https://gitlab.com/fdroid/fdroidserver/-/jobs/8896420261
2025-01-20 15:37:54 +01:00
Hans-Christoph Steiner
594099a10c gitlab-ci: remove arch_pip_install job
https://gitlab.com/fdroid/fdroidserver/-/jobs/8898887965

It broke and no one seems to want to maintain it.
2025-01-20 15:28:25 +01:00
Hans-Christoph Steiner
f14c3e38c8 Merge branch 'merge_weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1591
2025-01-20 14:04:35 +00:00
大王叫我来巡山
d588afd3f9 Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Максим Горпиніч
eecfcbe547 Translated using Weblate: Ukrainian (uk) by Максим Горпиніч <mgorpinic2005@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Максим Горпиніч <mgorpinic2005@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Reno Tx
06eb722b13 Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Reno Tx <renotx@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Besnik Bleta
d969181b55 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.7% (598 of 612 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Andrey
49d18e494b Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Golubev Alexander
a9404dbb42 Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Dmitry
89f44e0fed Translated using Weblate: Russian (ru) by Dmitry <dmitrydmitry761@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Dmitry <dmitrydmitry761@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
ssantos
a3f9b244d9 Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
LucasMZ
787612b93f Translated using Weblate: Portuguese (Brazil) (pt_BR) by LucasMZ <git@lucasmz.dev>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: LucasMZ <git@lucasmz.dev>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Liner Seven
d742fc4f65 Translated using Weblate: Japanese (ja) by Liner Seven <linour7gmekiblo@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Liner Seven <linour7gmekiblo@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Aindriú Mac Giolla Eoin
f78492e8ad Translated using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ga/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Armand Camponovo
7720402d72 Translated using Weblate: French (fr) by Armand Camponovo <contact@camarm.dev>
Currently translated at 96.7% (592 of 612 strings)

Co-authored-by: Armand Camponovo <contact@camarm.dev>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Sylvain Pichon
eb616643c4 Translated using Weblate: French (fr) by Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Currently translated at 96.5% (591 of 612 strings)

Translated using Weblate: French (fr) by Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>

Currently translated at 95.7% (586 of 612 strings)

Co-authored-by: Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
gallegonovato
11574b717e Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
VfBFan
6e0b9c94b2 Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Fjuro
c1f0914476 Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
pitroig
8831217ca1 Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: pitroig <ona@riseup.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2025-01-20 14:53:42 +01:00
Hans-Christoph Steiner
3000cfcd04
pick-complete-translations.py: auto cherry-pick complete langs 2025-01-20 14:53:08 +01:00
Hans-Christoph Steiner
d4b348bd93 Merge branch 'nettests_localhost' into 'master'
test_net: figure out the proper IP protocol for localhost

See merge request fdroid/fdroidserver!1589
2025-01-20 10:34:01 +00:00
Simon Chopin
89a282c12e test_net: figure out the proper IP protocol for localhost
On some systems, localhost is only defined for 127.0.0.1 (e.g. Ubuntu
and Debian containers). However, there is code that hardcodes possible
values for localhost, making it possible to open an IPv6 socket for
localhost.

On those systems, the socket will be open but urllib3 will resolve
localhost *only* to 127.0.0.1, thus failing miserably to connect.

To resolve the situation, rather than defaulting to IPv6 we actually
resolve localhost and use the socket family of the first result. On my
current system (upcoming Ubuntu Plucky) if localhost=::1 is defined in
/etc/hosts it will come up as the first result, if not 127.0.0.1 will.

V2: Use self.port rather than a forgotten hardcoded port.

Fixes: f01628ca6b "fix localhost network tests on systems with IPv6"
2025-01-20 10:33:49 +00:00
Hans-Christoph Steiner
2716f93e79 Merge branch 'verify-handle-corrupt-json' into 'master'
verify: handle corrupt verified.json

See merge request fdroid/fdroidserver!1580
2025-01-20 09:48:32 +00:00
Hans-Christoph Steiner
5b1b1d12a1 verify: handle corrupt verified.json
verified.json can get quite large on verification.f-droid.org, and for some
unknown reason, it sometimes corrupts it when writing it out.  All the data
is already available in all the other JSON files, so this just automatically
reconstructs it.  Its a hack, but it took me much less time than I've
already spent trying to troubleshoot why it writes out corrupt verified.json.
2025-01-20 09:48:20 +00:00
Jochen Sprickerhof
4c88b19bae Merge branch 'apk-v1-signature-regex-fix' into 'master'
match the full file name when looking for the v1 signature block

See merge request fdroid/fdroidserver!1588
2025-01-15 15:24:37 +00:00
Hans-Christoph Steiner
f5a6aa2cbf bandit no longer includes B410 lxml check
https://github.com/PyCQA/bandit/pull/1212
2025-01-15 15:07:24 +01:00
Hans-Christoph Steiner
20caa6fa1c match the full file name when looking for the v1 signature block
ZipFile.namelist() produces a string per file.  The filename could contain
newline chars, including at the beginning and end.  ^$ in regex matches
around newline chars.  \A\Z matches the beginning/end of the full string.

This is exactly the same as obfusk's r'\AMETA-INF/(?s:.)*\.(DSA|EC|RSA)\Z'
but in a readable format that is also easily searchable, and standard for
this code base.

https://github.com/obfusk/fdroid-fakesigner-poc/blob/master/fdroidserver-regex.patch

#1251
2025-01-15 14:45:35 +01:00
linsui
0bb240fac6 Merge branch 'gradle' into 'master'
update to gradle v8.12

See merge request fdroid/fdroidserver!1584
2024-12-22 07:11:51 +00:00
linsui
c70684ea25 update to gradle v8.12 2024-12-22 15:00:47 +08:00
Hans-Christoph Steiner
3b64dcee7a
version 2.3.4 2024-12-12 17:43:43 +01:00
Hans-Christoph Steiner
eb49351b81
update CHANGELOG.md 2024-12-12 17:43:19 +01:00
Hans-Christoph Steiner
dfbf79ef2b Merge branch 'fix-net-tests-on-ipv6' into 'master'
fix localhost network tests on systems with IPv6

See merge request fdroid/fdroidserver!1581
2024-12-12 15:20:24 +00:00
Hans-Christoph Steiner
f01628ca6b fix localhost network tests on systems with IPv6
Thanks to themill from Debian for this suggestion:

> https://docs.python.org/3/library/socket.html#socket.socket makes me
> think socket.socket has done an ipv4 only but urilib3 will do
> whatever localhost resolves to.  I suspect the test code should be
> using socket.create_server - there's an example at
> https://docs.python.org/3/library/socket.html#socket.create_server
2024-12-12 15:19:58 +00:00
Jochen Sprickerhof
99c3ea9966 Merge branch 'extlib' into 'master'
lint: only error out on missing extlib on versions not archived

See merge request fdroid/fdroidserver!1579
2024-12-12 14:43:42 +00:00
linsui
f93e30f1e9 lint: only error out on missing extlib on versions not archived 2024-12-12 22:33:36 +08:00
linsui
9b59d5cf48 update: extract archive policy calculation to common 2024-12-12 22:20:38 +08:00
Hans-Christoph Steiner
173e45f248
make -C locale update 2024-12-11 14:39:27 +01:00
Hans-Christoph Steiner
c631ca7142
version 2.3.3 2024-12-11 12:51:34 +01:00
Hans-Christoph Steiner
b408d56c2b
update CHANGELOG.md for 2.3.3 2024-12-11 12:51:03 +01:00
Hans-Christoph Steiner
d826178892 Merge branch 'verify--clean-up-verified' into 'master'
verify: --clean-up-verified to rm all files except the JSON report

See merge request fdroid/fdroidserver!1574
2024-12-11 11:48:39 +00:00
Hans-Christoph Steiner
5deb936e86 verify: --clean-up-verified to rm all files except the JSON report 2024-12-11 11:39:02 +00:00
Hans-Christoph Steiner
56814824ee new function get_src_tarball_name; deprecates getsrcname
Some places in the code that need this, like verify.py, do not have
app and build instances, but do have appid and versionCode.  And
fdroidserver/build.py is going away.
2024-12-11 11:39:02 +00:00
Hans-Christoph Steiner
78865a7b2b Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1578
2024-12-11 11:35:28 +00:00
VfBFan
ba0069aaa2 Translated using Weblate: German (de) by VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Licaon Kter
66704e1a4c Translated using Weblate: Romanian (ro) by Licaon Kter <licaon.kter@protonmail.com>
Currently translated at 95.4% (583 of 611 strings)

Co-authored-by: Licaon Kter <licaon.kter@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Golubev Alexander
2d12f8c731 Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
WaldiS
25daaea989 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 99.3% (607 of 611 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Reno Tx
cd25bd6ce7 Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Reno Tx <renotx@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Eryk Michalak
4a5d2c4422 Translated using Weblate: Polish (pl) by Eryk Michalak <gnu.ewm@protonmail.com>
Currently translated at 97.3% (595 of 611 strings)

Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Shuuji TAKAHASHI (shuuji3)
07b83ed101 Translated using Weblate: Japanese (ja) by "Shuuji TAKAHASHI (shuuji3)" <shuuji3@gmail.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Shuuji TAKAHASHI (shuuji3) <shuuji3@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Ecron
8658f21282 Translated using Weblate: Catalan (ca) by Ecron <ecron_89@hotmail.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Ecron <ecron_89@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
தமிழ்நேரம்
067a216f00 Translated using Weblate: Tamil (ta) by தமிழ்நேரம் <anishprabu.t@gmail.com>
Currently translated at 100.0% (611 of 611 strings)

Translated using Weblate: Tamil (ta) by தமிழ்நேரம் <anishprabu.t@gmail.com>

Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Ldm Public
6671720d68 Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 95.9% (586 of 611 strings)

Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>

Currently translated at 95.9% (586 of 611 strings)

Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>

Currently translated at 95.4% (583 of 611 strings)

Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>

Currently translated at 95.0% (581 of 611 strings)

Co-authored-by: Ldm Public <ldmpub@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Lzebulon
e8aff6a755 Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>
Currently translated at 95.9% (586 of 611 strings)

Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>

Currently translated at 95.4% (583 of 611 strings)

Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>

Currently translated at 95.0% (581 of 611 strings)

Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>

Currently translated at 94.9% (580 of 611 strings)

Co-authored-by: Lzebulon <lzebulon@crans.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-12-11 12:25:21 +01:00
Michael Pöhn
36fafaf2cc Merge branch 'replace-deprecated-pkg_resources' into 'master'
support Python 3.13

See merge request fdroid/fdroidserver!1576
2024-12-11 10:28:02 +00:00
Hans-Christoph Steiner
bc118484e4 index.xml: XML escaping from Python < 3.13 which stopped converting "
index.xml is for old clients that are stuck in the past forever.  So the
format should not change at all.  Python 3.13 changed minidom so it no
longer converts " to an XML entity.
154477be72
2024-12-06 16:15:48 +01:00
Hans-Christoph Steiner
6d40e8fa27
extras_require: python-magic is preferred when libmagic is available 2024-12-06 12:26:45 +01:00
Hans-Christoph Steiner
46dba20ba3
setup.py: update classifiers 2024-12-06 12:26:42 +01:00
Hans-Christoph Steiner
5fde2f4d03
replace deprecated pkg_resources.get_distribution() from setuptools
This should fix the CI error for macOS and reduce technical debt.
https://gitlab.com/fdroid/fdroidserver/-/jobs/8542884186
2024-12-06 12:26:37 +01:00
Jochen Sprickerhof
30e308ac8a Merge branch 'stop-overwriting-index-png' into 'master'
update: only gen index.png when making index.html

See merge request fdroid/fdroidserver!1575
2024-12-04 12:25:06 +00:00
Hans-Christoph Steiner
ad9b0c3294 update: only gen index.png when making index.html
* https://f-droid.org/repo does not use the index.png at all
* Some repos want to set their own index.png rather than the QR code
2024-12-04 13:13:30 +01:00
Hans-Christoph Steiner
11aee5b325
version 2.3.2 2024-11-26 22:17:08 +01:00
Hans-Christoph Steiner
620e9f9331
update CHANGELOG.md for 2.3.2 2024-11-26 22:17:05 +01:00
Hans-Christoph Steiner
194d4b63d0 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1573
2024-11-26 21:13:32 +00:00
தமிழ்நேரம்
a45893addf Translated using Weblate: Tamil (ta) by தமிழ்நேரம் <anishprabu.t@gmail.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
Joan Pujolar
dbd6034738 Translated using Weblate: Catalan (ca) by Joan Pujolar <joan.pujolar@gmail.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Joan Pujolar <joan.pujolar@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
Ldm Public
222f19d167 Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 93.7% (573 of 611 strings)

Co-authored-by: Ldm Public <ldmpub@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
Peter Dave Hello
a8c354a2d0 Translated using Weblate: Chinese (Traditional Han script) (zh_Hant) by Peter Dave Hello <hsu@peterdavehello.org>
Currently translated at 81.9% (501 of 611 strings)

Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
Danial Behzadi
19bb2bf1aa Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 18.1% (111 of 611 strings)

Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>

Currently translated at 9.9% (61 of 611 strings)

Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>

Currently translated at 9.9% (61 of 611 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
Hugo Carvalho
9ce877acdb Translated using Weblate: Portuguese (pt) by Hugo Carvalho <hugokarvalho@hotmail.com>
Currently translated at 100.0% (611 of 611 strings)

Translated using Weblate: Portuguese (pt) by Hugo Carvalho <hugokarvalho@hotmail.com>

Currently translated at 97.3% (595 of 611 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hugo Carvalho <hugokarvalho@hotmail.com>

Currently translated at 100.0% (611 of 611 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hugo Carvalho <hugokarvalho@hotmail.com>

Currently translated at 97.3% (595 of 611 strings)

Co-authored-by: Hugo Carvalho <hugokarvalho@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
gfbdrgng
0b40c04422 Translated using Weblate: Russian (ru) by gfbdrgng <hnaofegnp@hldrive.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: gfbdrgng <hnaofegnp@hldrive.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2024-11-26 22:03:01 +01:00
Reno Tx
4ea9cdfa93
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 96.8% (592 of 611 strings)

Co-authored-by: Reno Tx <renotx@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
Translation: F-Droid/F-Droid Server
2024-11-26 19:01:59 +01:00
Michael Pöhn
e52a07d63a Merge branch 'install-fixes' into 'master'
install: fix breakage in downloading from Maven Central, GitHub Releases

See merge request fdroid/fdroidserver!1572
2024-11-26 15:15:59 +00:00
Hans-Christoph Steiner
8fc340aaca install: fix download dir when fetching from GitHub Releases 2024-11-26 15:31:47 +01:00
Hans-Christoph Steiner
8c81033ea3 FDroidPopenBytes: do not crash if options are not set
This makes writing test cases a lot easier. For example:

======================================================================
ERROR: test_devices (tests.test_install.InstallTest.test_devices)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/tests/test_install.py", line 31, in test_devices
    devices = fdroidserver.install.devices()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/hans/code/fdroid/server/fdroidserver/install.py", line 225, in devices
    p = common.SdkToolsPopen(['adb', "devices"])
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/hans/code/fdroid/server/fdroidserver/common.py", line 2921, in SdkToolsPopen
    return FDroidPopen([abscmd] + commands[1:],
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/hans/code/fdroid/server/fdroidserver/common.py", line 3024, in FDroidPopen
    result = FDroidPopenBytes(commands, cwd, envs, output, stderr_to_stdout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/hans/code/fdroid/server/fdroidserver/common.py", line 2987, in FDroidPopenBytes
    if output and options.verbose:
                  ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'verbose'
2024-11-26 15:20:06 +01:00
Hans-Christoph Steiner
d2cc020336 install: fix broken URL building logic for Maven Central
The append logic was wrong, so it was trying to download URLs like:
https://repo.maven.apache.org/maven2/org/fdroid/fdroid/F-Droid/maven-metadata.xml/org/fdroid/fdroid/F-Droid/1.20.0/F-Droid-1.20.0.apk

Which should be:
https://repo.maven.apache.org/maven2/org/fdroid/fdroid/F-Droid/1.20.0/F-Droid-1.20.0.apk

Can be manually tested using:
`test_download_fdroid_apk=1 python -m unittest -k test_download_fdroid_apk_from_maven`
2024-11-26 15:14:18 +01:00
Hans-Christoph Steiner
a2d27ba15e
install: remove forgotten print() 2024-11-26 11:17:46 +01:00
Michael Pöhn
a9c6eeb753 Merge branch 'fix-1543' into 'master'
buildserver/provision-apt-get-install: install python3-magic for scanner

See merge request fdroid/fdroidserver!1571
2024-11-25 18:43:01 +00:00
Hans-Christoph Steiner
9b2a4a90a7 buildserver/provision-apt-get-install:
This was forgotten in !1543

ansible-role-install-fdroidserver-dependencies!11
2024-11-25 19:21:07 +01:00
Hans-Christoph Steiner
fe29f56238
version 2.3.1 2024-11-25 17:38:02 +01:00
Hans-Christoph Steiner
a26995e534
update CHANGELOG.md for 2.3.0 and 2.3.1 2024-11-25 17:35:39 +01:00
Hans-Christoph Steiner
25bd35a166 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1570
2024-11-25 15:42:28 +00:00
大王叫我来巡山
865c7a33bb Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
Besnik Bleta
e61ee39ee4 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.5% (596 of 611 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
gfbdrgng
e162278143 Translated using Weblate: Russian (ru) by gfbdrgng <hnaofegnp@hldrive.com>
Currently translated at 98.3% (601 of 611 strings)

Co-authored-by: gfbdrgng <hnaofegnp@hldrive.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
dedakir923
4b53f4b1d3 Translated using Weblate: Portuguese (Brazil) (pt_BR) by dedakir923 <dedakir923@exoular.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: dedakir923 <dedakir923@exoular.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
LucasMZ
04f8058dfc Translated using Weblate: Portuguese (Brazil) (pt_BR) by LucasMZ <git@lucasmz.dev>
Currently translated at 97.7% (597 of 611 strings)

Co-authored-by: LucasMZ <git@lucasmz.dev>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
Aindriú Mac Giolla Eoin
46dd2227e9 Translated using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ga/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
Sylvain Pichon
8ee15b9cac Translated using Weblate: French (fr) by Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Currently translated at 92.7% (567 of 611 strings)

Co-authored-by: Sylvain Pichon <Sp_@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
Sylvain Pichon
13db3f7018 Translated using Weblate: French (fr) by Sylvain Pichon <service@spichon.fr>
Currently translated at 92.6% (566 of 611 strings)

Translated using Weblate: French (fr) by Sylvain Pichon <service@spichon.fr>

Currently translated at 92.1% (563 of 611 strings)

Co-authored-by: Sylvain Pichon <service@spichon.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
gallegonovato
a9c9825727 Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
VfBFan
696f68a99d Translated using Weblate: German (de) by VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
Fjuro
bb911bf4f3 Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (611 of 611 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2024-11-25 16:30:51 +01:00
Jochen Sprickerhof
67e27cc706 Merge branch 'optional-deps-for-macOS' into 'master'
install biplist and pycountry by default on macOS

See merge request fdroid/fdroidserver!1569
2024-11-25 14:39:34 +00:00
Hans-Christoph Steiner
1b0fabe8f5 install biplist and pycountry by default on macOS
* biplist is only used for Apple iOS IPA files.
* pycountry is only used for linting countryCodes in mirror configs.

Both of these are included via the Debian packaging, where those packages
and updates are more vetted.  Homebrew for macOS makes it very difficult to
include optional dependencies, so this includes the optional dependencies
via distutils' method.
2024-11-25 15:28:43 +01:00
Jochen Sprickerhof
cd29dd84d2 Merge branch 'drop_imghdr' into 'master'
scanner: replace deprecated imghdr with libmagic/puremagic

See merge request fdroid/fdroidserver!1543
2024-11-25 13:57:06 +00:00
Jochen Sprickerhof
8a5359ab3f scanner: replace deprecated imghdr with libmagic/puremagic
libmagic's Python bindings detect more types, puremagic is pure Python.

imghdr was dropped in Python 3.13.

This reverts commit 3bc246ccad.
2024-11-25 13:26:38 +01:00
Hans-Christoph Steiner
432618eb03 Merge branch 'master' into 'master'
post release translation updates

See merge request fdroid/fdroidserver!1568
2024-11-21 20:45:45 +00:00
Hans-Christoph Steiner
4d3feb93e3
make -C locale update 2024-11-21 21:35:26 +01:00
Doctorredits_here
732a945fa3
Translated using Weblate: Indonesian (id) by Doctorredits_here <alkaf.alkaf2018@tutamail.com>
Currently translated at 16.8% (100 of 592 strings)

Co-authored-by: Doctorredits_here <alkaf.alkaf2018@tutamail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2024-11-21 21:35:23 +01:00
Cool Man
069f75b3d5
Translated using Weblate: Arabic (ar) by Cool Man <mcool3273@gmail.com>
Currently translated at 5.5% (33 of 592 strings)

Co-authored-by: Cool Man <mcool3273@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ar/
Translation: F-Droid/F-Droid Server
2024-11-21 21:35:19 +01:00
Hans-Christoph Steiner
6ff1c9733c
include tests/__init__.py in dist tarball 2024-11-21 21:35:16 +01:00
Hans-Christoph Steiner
d69028e1b1 Merge branch 'master' into 'master'
release 2.3.0

See merge request fdroid/fdroidserver!1567
2024-11-21 16:01:50 +00:00
Hans-Christoph Steiner
eae5ae3ae8
version 2.3.0 2024-11-21 16:49:01 +01:00
Hans-Christoph Steiner
37dc6c121d run tests/refresh-SUSS_DEFAULT.py 2024-11-21 15:23:29 +01:00
Hans-Christoph Steiner
2a6d584713 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.11.1

See merge request fdroid/fdroidserver!1566
2024-11-21 12:48:17 +00:00
fdroid-bot
50b686b33b gradle v8.11.1 2024-11-21 12:26:23 +00:00
linsui
9203941b78 Merge branch 'fix-checkupdates-one-MR-per-app' into 'master'
checkupdates: reuse per-app branches when making merge requests; plus bug fixes

See merge request fdroid/fdroidserver!1551
2024-11-21 12:25:47 +00:00
Hans-Christoph Steiner
0ec9cd6921 checkupdates: only update app branches if metadata file changed 2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
e3f724681a checkupdates: parse default branch from upstream remote 2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
fd15ac9276 checkupdates: mark as Draft when only changing Current Version
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1551#note_2190155816
2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
c97503b5f3 checkupdates: get default branch from git config 2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
fbe9152ee5 checkupdates: commit summary is merge request title 2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
cd8d4ef88b checkupdates: reuse per-app branches when making merge requests
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1551#note_2206085258
2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
20ff302e89 checkupdates: remove duplicate push in push_commits() 2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
17c480d299 checkupdates: make iter_commits only include commits in appid branch
iter_commits() follows `git rev-list` (which selects different commits
than `git diff`).  With ... notation, `git rev-list` will return all
the commits that are not shared by the two branches.  This needs only
the commits in the right side of the comparison (like how `git diff`
does it).
2024-11-21 12:15:14 +00:00
Hans-Christoph Steiner
f34a132132 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1564
2024-11-20 16:42:27 +00:00
Phantomwise
fb880ad14f Translated using Weblate: French (fr) by Phantomwise <phantomwise67@protonmail.com>
Currently translated at 94.4% (559 of 592 strings)

Co-authored-by: Phantomwise <phantomwise67@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-11-20 17:31:53 +01:00
Hugo Carvalho
82e47bd392 Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hugo Carvalho <hugokarvalho@hotmail.com>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: Hugo Carvalho <hugokarvalho@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2024-11-20 17:31:53 +01:00
linsui
a72be3e415 Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by linsui <linsui@inbox.lv>
Currently translated at 100.0% (592 of 592 strings)

Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by linsui <linsui@inbox.lv>

Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: linsui <linsui@inbox.lv>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-11-20 17:31:53 +01:00
ygsk10
fcf4875c76 Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by ygsk10 <yogaskung@protonmail.ch>
Currently translated at 100.0% (592 of 592 strings)

Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by ygsk10 <yogaskung@protonmail.ch>

Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: ygsk10 <yogaskung@protonmail.ch>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-11-20 17:31:53 +01:00
Hans-Christoph Steiner
a8e31796d8 Merge branch 'wasm' into 'master'
scanner: disallow wasm file

See merge request fdroid/fdroidserver!1562
2024-11-20 12:49:15 +00:00
linsui
56d5f360ed scanner: disallow wasm file 2024-11-20 19:10:30 +08:00
Jochen Sprickerhof
e137aa9c44 Merge branch 'refactor-tests' into 'master'
Refactor TestCase files into python modules

See merge request fdroid/fdroidserver!1561
2024-11-20 09:58:58 +00:00
Hans-Christoph Steiner
487269c667 tests: standardize on VerboseFalseOptions as mock 2024-11-20 10:46:21 +01:00
SilentGhost
7ff32bc4b0 Refactor TestCase files into python modules
Convert all TestCase files into standard python modules to be run and
discovered by unittest.
2024-11-20 10:37:52 +01:00
Hans-Christoph Steiner
4d6682bc70 update: fix _strip_and_copy_image to work with pathlib 2024-11-19 20:27:29 +01:00
Hans-Christoph Steiner
65119b3193 rename to test_gradlew-fdroid to match Python unittest naming 2024-11-19 20:27:29 +01:00
Hans-Christoph Steiner
00e9b7dcd7 Merge branch 'color-output' into 'master'
add --color arg for optional colorized log output

See merge request fdroid/fdroidserver!1552
2024-11-19 13:04:38 +00:00
Hans-Christoph Steiner
290587f449 add ColorFormatter class for optional colorized log output 2024-11-19 13:04:23 +00:00
Hans-Christoph Steiner
7e8e2403cd black formatting 2024-11-19 13:04:23 +00:00
Hans-Christoph Steiner
801d6f9566 Merge branch 'hg-gotorevisionx' into 'master'
Fix local build scenario with Mercurial repositories

See merge request fdroid/fdroidserver!1560
2024-11-18 21:12:23 +00:00
relan
118c7fc783 Remove "hg purge" after "hg update"
1. "hg purge" works only on interactive shell (see #1015).
2. No need to clean anything because we did this before "hg update".
2024-11-18 21:12:04 +00:00
relan
87909fae74 Remove ignored files on gotorevisionx for hg
Other revisions can change the list of ignored files and if we don't
remove them, switching to another revision can fail.
2024-11-18 21:12:04 +00:00
Hans-Christoph Steiner
3bd2bc69d3 Merge branch 'fix-file-exists' into 'master'
Vagrantfile: fix undefined method `exists?' error

See merge request fdroid/fdroidserver!1558
2024-11-18 21:09:22 +00:00
relan
7661518775 Vagrantfile: fix undefined method `exists?' error
This method has been deprecated for a long time, now it's gone.
2024-11-18 21:09:12 +00:00
Hans-Christoph Steiner
d7813b2abc Merge branch 'fix-chown-dot' into 'master'
Fix warning from "chown" about the syntax

See merge request fdroid/fdroidserver!1559
2024-11-18 21:08:35 +00:00
relan
5b57ced0a6 Fix warning from "chown" about the syntax
The warning:

    chown: warning: '.' should be ':': ‘vagrant.vagrant’
2024-11-14 21:45:46 +03:00
Hans-Christoph Steiner
069f088b38 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.11

See merge request fdroid/fdroidserver!1556
2024-11-13 07:24:20 +00:00
fdroid-bot
dde2947ad2 gradle v8.11 2024-11-13 06:40:37 +00:00
Hans-Christoph Steiner
c42edd4163 Merge branch 'fdroid-install-updates' into 'master'
`fdroid install` updates

See merge request fdroid/fdroidserver!1554
2024-11-13 06:40:00 +00:00
Hans-Christoph Steiner
1be808c728 include net.TestCase in dist tarball
Now that `fdroid install` is something that is expected to work as part of
any package, the test suite should also include the net tests, which
`fdroid install` relies on.
2024-11-08 17:59:06 +02:00
Hans-Christoph Steiner
ad66baa266 net: skip test in CI that mysteriously fails there
I couldn't figure out why it is failing there.
2024-11-08 17:49:15 +02:00
Hans-Christoph Steiner
85e585161f net: use localhost instead of IP for both sides of test setup 2024-11-08 17:49:15 +02:00
Hans-Christoph Steiner
90eeb63809 net: ignore proxy env vars, tests only use localhost
Proxy settings via environment variables can interfere with this
test. The requests library will automatically pick up proxy
settings from environment variables. Proxy settings can force the
local connection over the proxy, which might not support that,
then this fails with an error like 405 or others.
2024-11-08 17:49:14 +02:00
Hans-Christoph Steiner
05e091804d install: verify sig for all downloaded APKs if apksigner is installed 2024-11-08 17:12:42 +02:00
Hans-Christoph Steiner
addb7b9acc install: echo characters that the user inputs at the prompt 2024-11-08 17:12:42 +02:00
Hans-Christoph Steiner
b9b4ca9778 install: download any app from f-droid.org 2024-11-08 17:12:42 +02:00
Hans-Christoph Steiner
dfbf54bbba Merge branch 'rewordfrosting' into 'master'
Reword extra blocks

See merge request fdroid/fdroidserver!1555
2024-11-08 15:09:05 +00:00
Licaon_Kter
96ed60fda3 Reword extra blocks 2024-11-08 15:09:05 +00:00
Hans-Christoph Steiner
d666c030f7 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1553
2024-11-05 14:31:18 +00:00
Hans-Christoph Steiner
69d2c874b6
enable new languages: Irish (ga) and Japanese (ja) 2024-11-05 15:20:56 +01:00
Peter Dave Hello
46df7d87aa Translated using Weblate: Chinese (Traditional Han script) (zh_Hant) by Peter Dave Hello <hsu@peterdavehello.org>
Currently translated at 82.0% (486 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
2024-11-05 15:18:40 +01:00
WaldiS
7ee9882be5 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 99.6% (590 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2024-11-05 15:18:40 +01:00
Golubev Alexander
7da3357d47 Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
2024-11-05 15:18:40 +01:00
Fat Potato
eec7addc16 Translated using Weblate: Portuguese (Portugal) (pt_PT) by Fat Potato <mjwany48@gmail.com>
Currently translated at 98.3% (582 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
2024-11-05 15:18:40 +01:00
ssantos
d6a004da56 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2024-11-05 15:18:40 +01:00
Eryk Michalak
f37381e0ff Translated using Weblate: Polish (pl) by Eryk Michalak <gnu.ewm@protonmail.com>
Currently translated at 99.3% (588 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2024-11-05 15:18:40 +01:00
Lily Chou
cc2088d7bf Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by Lily Chou <lily-develop@outlook.com>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2024-11-05 15:18:40 +01:00
pitroig
4a6bb9e064 Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
5771cfe9f4 Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 99.6% (590 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
770d31ce3e Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 48.3% (286 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
aae4d7f08a Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 25.8% (153 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
dd98d45698 Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 25.6% (152 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
f3151bfb3e Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 25.3% (150 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
14df3c3ec5 Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 25.1% (149 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
12b816421f Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 25.0% (148 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
97bdfcbe7c Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 20.4% (121 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
ba5ed94494 Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 18.2% (108 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
f9ddddf1c6 Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 11.3% (67 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
Fjuro
f3303f88cc Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2024-11-05 15:18:39 +01:00
Fjuro
df496419d4 Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2024-11-05 15:18:39 +01:00
Reno Tx
75995b3915 Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-11-05 15:18:39 +01:00
Suguru Hirahara
c5b8d2823d Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 10.4% (62 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
2024-11-05 15:18:39 +01:00
VfBFan
18d0fad4d1 Translated using Weblate: German (de) by VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (592 of 592 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
2024-11-05 15:18:39 +01:00
Wang
97eab1ada9 Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by Wang <wang@plasma.ac.cn>
Currently translated at 97.9% (580 of 592 strings)

Co-authored-by: Wang <wang@plasma.ac.cn>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Fjuro
e2ad739628 Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Ihor Hordiichuk
11a7c8d1ce Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
ssantos
0babd55762 Translated using Weblate: German (de) by ssantos <ssantos@web.de>
Currently translated at 99.6% (590 of 592 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Aindriú Mac Giolla Eoin
9e092582c2 Translated using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Currently translated at 100.0% (592 of 592 strings)

Added translation using Weblate: Irish (ga) by Aindriú Mac Giolla Eoin <aindriu80@gmail.com>

Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ga/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Jakub Boukal
3e7bce38f8 Translated using Weblate: Czech (cs) by Jakub Boukal <www.bagr@gmail.com>
Currently translated at 99.1% (587 of 592 strings)

Co-authored-by: Jakub Boukal <www.bagr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Nazar
8676ab800f Translated using Weblate: Ukrainian (uk) by Nazar <balaraz@tuta.io>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: Nazar <balaraz@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
VfBFan
8e0722d490 Translated using Weblate: German (de) by VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Currently translated at 98.4% (583 of 592 strings)

Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Besnik Bleta
3d923a07c1 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.1% (575 of 592 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
大王叫我来巡山
3f71f87900 Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 94.7% (561 of 592 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-11-05 15:18:39 +01:00
Oğuz Ersen
6e70263dcb Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguz@ersen.moe>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2024-11-05 15:17:21 +01:00
Hans-Christoph Steiner
643d8da709 Merge branch 'fdroid-install' into 'master'
install: expand subcommand to be able to fetch F-Droid.apk and install it

See merge request fdroid/fdroidserver!1546
2024-11-05 13:13:01 +00:00
Hans-Christoph Steiner
acae5f1ac9 tests/run-tests: stop skipping install.TestCase 2024-11-01 00:57:45 +01:00
Hans-Christoph Steiner
27e3b5066a install: add --no-privacy-mode as an argument 2024-11-01 00:34:03 +01:00
Hans-Christoph Steiner
4d22a7f67f install: Y/n prompt, --yes, --no controls downloading F-Droid.apk 2024-11-01 00:34:03 +01:00
Hans-Christoph Steiner
560472e4e5 install: download from GitHub Releases 2024-11-01 00:16:13 +01:00
Hans-Christoph Steiner
1eb6516f16 install: add IPNS download method 2024-11-01 00:09:58 +01:00
Hans-Christoph Steiner
3da48e64bc install: use Maven Central as additional source 2024-11-01 00:09:58 +01:00
Hans-Christoph Steiner
b77eba824b install: convert to common.get_config() 2024-11-01 00:09:54 +01:00
Hans-Christoph Steiner
3a3417f6f8 install: add --privacy-mode flag 2024-10-31 23:49:34 +01:00
Hans-Christoph Steiner
c7bc8d0fea install: function to fetch, verify and install the F-Droid.apk 2024-10-31 23:49:30 +01:00
Hans-Christoph Steiner
681d705da0 install: reliable algorithm for picking devices from adb output
Versions of this algorithm are used elsewhere:
* https://github.com/openatx/adbutils/blob/master/adbutils/_adb.py
2024-10-31 21:55:20 +01:00
Hans-Christoph Steiner
f1b110942a net: let localhost RetryServer tests run with an HTTP proxy active 2024-10-31 21:55:20 +01:00
Hans-Christoph Steiner
59fcfa5dec index: download_repo_index_v2() uses mirrors
test_download_repo_index_v2_url_parsing is no longer needed, since all the
things it tested are now handled in test_download_repo_index_v2
2024-10-31 21:55:18 +01:00
Hans-Christoph Steiner
2e3f6d273a net: download_using_mirrors() to download like fdroidclient does 2024-10-31 21:54:47 +01:00
Hans-Christoph Steiner
49dcc53076 install: download_fdroid_apk() to fetch the recommended initial APK 2024-10-31 21:54:47 +01:00
Hans-Christoph Steiner
56bed02a29 install: download_apk() fetchs APKs by appid based on the index 2024-10-31 21:54:45 +01:00
Jochen Sprickerhof
97b156a963 Merge branch 'drop_known_apks' into 'master'
Drop stats/known_apks.txt

See merge request fdroid/fdroidserver!1547
2024-10-31 11:02:09 +00:00
Hans-Christoph Steiner
ab28c442e2 KnownApks: remove dead code 2024-10-31 09:20:26 +00:00
Hans-Christoph Steiner
173c1d67f4 KnownApks: appid is no longer needed at all, remove it. 2024-10-31 09:20:26 +00:00
Hans-Christoph Steiner
5032207da0 add basic tests of KnownApks mechanism
The tests in tests/run-tests do provide coverage for these cases, but it is
not explicit, but just comes from testing that the index file has not
changed.  These tests make it explicit what is being tested.
2024-10-31 09:20:26 +00:00
Jochen Sprickerhof
81c0c9d4aa Drop stats/known_apks.txt
Use repo/index-v2.json instead.
Also fix deprecated datetime.utcnow().
2024-10-31 09:20:26 +00:00
Hans-Christoph Steiner
83a3227235 Merge branch 'fix-checkupdates-one-MR-per-app' into 'master'
checkupdates: --merge_request commits to branch named after appid

See merge request fdroid/fdroidserver!1550
2024-10-30 19:03:14 +00:00
Hans-Christoph Steiner
25779e8b32 checkupdates: --merge_request commits to branch named after appid 2024-10-30 18:35:34 +01:00
Hans-Christoph Steiner
21cb8ac5e0 Merge branch 'frosting' into 'master'
scanner: scan frosting blocks in binary scanner

See merge request fdroid/fdroidserver!1548
2024-10-30 15:26:23 +00:00
linsui
e3eb597331 scanner: scan frosting blocks in binary scanner 2024-10-30 15:16:32 +00:00
linsui
5c32d5bb38 Merge branch 'checkupdates-merge-request' into 'master'
checkupdates: --merge-request flag for single app runs then a MR

See merge request fdroid/fdroidserver!1149
2024-10-30 14:44:28 +00:00
Hans-Christoph Steiner
9a34590e95 checkupdates: make merge-request per appid on push 2024-10-30 14:43:45 +00:00
Hans-Christoph Steiner
66a340fe89 checkupdates: add --verbose progress to push_commits() 2024-10-30 14:43:45 +00:00
Hans-Christoph Steiner
206f07364b checkupdates: remove appid branches that have been merged
To avoid having thousands of branches on checkupdatess-bot's remote, this
cleans up any remote branches that are pointing to commit that has been
fully merged.
2024-10-30 14:43:45 +00:00
Hans-Christoph Steiner
78b368f88b enforce black code format for tests/checkupdates.TestCase 2024-10-30 14:43:45 +00:00
Hans-Christoph Steiner
e03915e391 deploy: ensure progress is instantiated before trying to use it 2024-10-30 14:43:45 +00:00
Hans-Christoph Steiner
4c225f02d2 checkupdates: push_commits() to push auto-branch when new commits 2024-10-30 14:43:45 +00:00
Hans-Christoph Steiner
a9db97d214 Merge branch 'catalog2' into 'master'
scanner: catalog: get catalog from parent dirs

See merge request fdroid/fdroidserver!1540
2024-10-30 13:51:12 +00:00
linsui
24dc3baadf scanner: catalog: relax VERSION_CATALOG_REGEX
There may be other blocks in dependencyResolutionManagement
2024-10-20 21:21:28 +08:00
linsui
4c3dd9c76c scanner: catalog: get catalog from parent dirs
When walking through the repo, there may be another settings.gradle in a
sub project with a different catalog. In the subdir the catalog of the
sub project shuold be used and in other subdir the catalog of the root
project should be used.
2024-10-20 21:21:28 +08:00
Hans-Christoph Steiner
399ac608c7 Merge branch 'apkcache_no_checksum' into 'master'
Use mtime and file size for apkcache

See merge request fdroid/fdroidserver!1542
2024-10-18 10:50:57 +00:00
Jochen Sprickerhof
3544d5195d Use mtime and file size for apkcache
This reduces the update time significantly as we no longer compute the
sha256 for every apk.
2024-10-18 10:41:15 +00:00
Hans-Christoph Steiner
1e919a6e19 Merge branch 'doc_repo_web_base_url' into 'master'
Document repo_web_base_url

See merge request fdroid/fdroidserver!1178
2024-10-15 16:36:02 +00:00
Jochen Sprickerhof
de2f05e4da
Document repo_web_base_url 2024-10-15 18:31:56 +02:00
Hans-Christoph Steiner
5fbd5ed2d1 Merge branch 'move-mirror-script' into 'master'
mv mirror push script to fdroid-bootstrap-buildserver

See merge request fdroid/fdroidserver!1545
2024-10-11 09:44:11 +00:00
Hans-Christoph Steiner
40c6b7d9cf mv mirror push script to fdroid-bootstrap-buildserver
This script is only part of the production _buildserver_, so it should
be managed by the Ansible setup for the production _buildserver_.

fdroid-bootstrap-buildserver!26
2024-10-11 09:44:03 +00:00
Jochen Sprickerhof
ae42710d33 Merge branch 'flutter-triple-t' into 'master'
Consider subdir for Flutter app triple-t metadata discover

See merge request fdroid/fdroidserver!1541
2024-10-10 12:51:16 +00:00
linsui
deabd7bdc0 Consider subdir for Flutter app triple-t metadata discover 2024-10-10 12:50:59 +00:00
Hans-Christoph Steiner
f446be6c0c Merge branch 'gradlew_plugin' into 'master'
gradlew: fix plugin version

See merge request fdroid/fdroidserver!1544
2024-10-09 10:03:38 +00:00
linsui
eadfe415b0 gradlew: fix plugin version 2024-10-09 00:48:47 +08:00
Jochen Sprickerhof
b9ff024775 Merge branch 'read_metadata' into 'master'
Read only metadata of apps given on the command line

See merge request fdroid/fdroidserver!1037
2024-10-06 08:35:05 +00:00
Jochen Sprickerhof
15d3a3612d
Drop duplicated code (already done in get_metadata_files) 2024-10-06 10:25:19 +02:00
Jochen Sprickerhof
4d0a21f336
Use vercodes in read_metadata interface
read_metadata is only called in read_app_args with an argument. As
vercodes is already there, drop the duplicate call.
2024-10-06 10:25:19 +02:00
Jochen Sprickerhof
8ab1d53318
Read only metadata of apps given on the command line 2024-10-06 10:25:19 +02:00
linsui
66018d3f09 Merge branch 'catalog' into 'master'
scanner: catalog: dependency declaration can be declared as a simple string

See merge request fdroid/fdroidserver!1536
2024-09-27 16:33:58 +00:00
linsui
2ceec6b9d6 scanner: catalog: dependency declaration can be declared as a simple string 2024-09-27 14:28:55 +00:00
Hans-Christoph Steiner
1323751835 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.10.2

See merge request fdroid/fdroidserver!1538
2024-09-25 11:08:17 +00:00
fdroid-bot
2a13d6d400 gradle v8.10.2 2024-09-25 10:58:29 +00:00
Hans-Christoph Steiner
ba91b71d60 Merge branch 'ipfs-cid' into 'master'
Only check for ipfs_cid when doing fdroid update

See merge request fdroid/fdroidserver!1503
2024-09-25 10:57:55 +00:00
g0t mi1k
5f7203ddf2 Only check for ipfs_cid when doing fdroid update 2024-09-25 11:44:05 +01:00
Hans-Christoph Steiner
680554c1c6 Merge branch 'licaon-kter-master-patch-50256' into 'master'
Use latest Bookworm images for makebuildserver

See merge request fdroid/fdroidserver!1534
2024-09-23 19:04:58 +00:00
Licaon_Kter
17a051329e Use latest Bookworm images for makebuildserver 2024-09-23 19:04:42 +00:00
Hans-Christoph Steiner
8c4583b04e Merge branch 'catalog' into 'master'
scanner: support libs.versions.toml

Closes #1168

See merge request fdroid/fdroidserver!1526
2024-09-23 15:03:25 +00:00
linsui
eff0ef48f4 scanner: support libs.versions.toml 2024-09-23 16:35:27 +08:00
linsui
528760acc8 scanner.TestCase: format 2024-09-23 16:28:50 +08:00
Hans-Christoph Steiner
0d148d58e1 Merge branch 'appid-args-should-not-end-with-colon' into 'master'
throw error when CLI appid args end with a : but no Version Code

See merge request fdroid/fdroidserver!1522
2024-09-23 08:21:31 +00:00
Hans-Christoph Steiner
0d5c7516f2 throw error when CLI appid args end with a : but no Version Code
This is already the behavior in read_app_args(), but wasn't implemented in
read_pkg_args() yet.
2024-09-23 08:21:21 +00:00
Hans-Christoph Steiner
21e91564a0 Merge branch 'ci-debian-testing-libcloud' into 'master'
gitlab-ci: include libcloud for tests

See merge request fdroid/fdroidserver!1533
2024-09-23 08:16:31 +00:00
Hans-Christoph Steiner
2b9cb9cf3e gitlab-ci: include libcloud for tests 2024-09-23 10:13:07 +02:00
Hans-Christoph Steiner
a57a612982 Merge branch 'remove-flattr' into 'master'
Remove all mentions of Flattr

See merge request fdroid/fdroidserver!1530
2024-09-23 07:59:08 +00:00
Leo Heitmann Ruiz
0cee694c43 Remove all mentions of Flattr 2024-09-23 07:59:08 +00:00
Hans-Christoph Steiner
96ec2da0e7 Merge branch 'fix-scanner-tests-failing-with-refresh' into 'master'
scanner: always use built-in ruleset when running tests

See merge request fdroid/fdroidserver!1532
2024-09-23 07:57:57 +00:00
Hans-Christoph Steiner
043492277e
scanner: always use built-in ruleset when running tests
The SUSS rule sets are changing all the time, but the test cases are not.
So this makes the test cases just use the built-in ruleset so the test
cases don't randomly break.
2024-09-21 17:20:11 +02:00
Hans-Christoph Steiner
9a65e24930 Merge branch 'diff' into 'master'
Show \r when diffing reproducible apk

See merge request fdroid/fdroidserver!1529
2024-09-19 13:25:55 +00:00
linsui
afc31e115e Show \r when diffing reproducible apk 2024-09-19 20:19:44 +08:00
Hans-Christoph Steiner
143639b8df Merge branch 'fix-scanner-tests' into 'master'
add test files missing from MANIFEST.in

See merge request fdroid/fdroidserver!1527
2024-09-17 15:58:52 +00:00
Hans-Christoph Steiner
feb0fdfad6 add test files missing from MANIFEST.in 2024-09-17 15:58:30 +00:00
Hans-Christoph Steiner
2bf2777f5e Merge branch 'licaon-kter-master-patch-66765' into 'master'
scanner - jcenter is gone

See merge request fdroid/fdroidserver!1528
2024-09-17 15:58:12 +00:00
Licaon_Kter
02f0052806 scanner - jcenter is gone 2024-09-17 15:58:02 +00:00
Hans-Christoph Steiner
19beb0378d Merge branch 'deploy-standardization' into 'master'
standardize deploy.py code to follow fdroidserver patterns

See merge request fdroid/fdroidserver!1521
2024-09-17 11:57:33 +00:00
Hans-Christoph Steiner
fe3d929f67 deploy: lists for command lines to handle escaping
fdroidserver uses lists of strings to handle the escaping command line
arguments, this converts the rclone code to that pattern.
2024-09-17 10:16:57 +00:00
Hans-Christoph Steiner
5126a58af8 deploy: rclone_config always as list to avoid code duplication 2024-09-17 10:16:57 +00:00
linsui
567e3dbaba Merge branch 'import' into 'master'
import_subcommand.py: misc fixes and updates

See merge request fdroid/fdroidserver!1525
2024-09-16 13:16:49 +00:00
linsui
8648954f19 import_subcommand.py: misc fixes and updates 2024-09-16 19:48:02 +08:00
linsui
faac9b38c8 import_subcommand.py: move functions from common.py
These functions are only used in this file
2024-09-12 22:14:28 +08:00
linsui
5da4e670dd import_subcommand.py: format 2024-09-12 22:12:06 +08:00
Hans-Christoph Steiner
b7749ece8d Merge branch 'weblate' into 'master'
fix typo in translatable string: s,itmes,items,g

See merge request fdroid/fdroidserver!1524
2024-09-10 16:05:35 +00:00
Hans-Christoph Steiner
492d4a5619
fix typo in translatable string: s,itmes,items,g 2024-09-10 17:00:54 +02:00
Jose Delvani
41b9419740
Translated using Weblate: Portuguese (Brazil) (pt_BR) by Jose Delvani <jsdelvani@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: Jose Delvani <jsdelvani@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2024-09-10 15:17:38 +02:00
gallegonovato
c326fc961d
Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (592 of 592 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2024-09-10 15:17:38 +02:00
Besnik Bleta
eb68ae3d8c
Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 93.2% (552 of 592 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2024-09-10 15:17:38 +02:00
Hans-Christoph Steiner
f6f962aaf4
Translated using Weblate: Serbian (sr) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 97.9% (580 of 592 strings)

Translated using Weblate: Romanian (ro) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 97.9% (580 of 592 strings)

Translated using Weblate: Albanian (sq) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 90.5% (536 of 592 strings)

Translated using Weblate: Polish (pl) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 96.4% (571 of 592 strings)

Translated using Weblate: French (fr) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 93.2% (552 of 592 strings)

Translated using Weblate: Italian (it) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 93.5% (554 of 592 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 97.9% (580 of 592 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 97.9% (580 of 592 strings)

Co-authored-by: Hans-Christoph Steiner <hans@eds.org>
Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
Translation: F-Droid/F-Droid Server
2024-09-10 15:17:38 +02:00
Hosted Weblate
d6f5a1760a
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2024-09-10 15:17:38 +02:00
Hans-Christoph Steiner
a0c1029fee
version 2.3 alpha 2 2024-09-10 11:26:10 +02:00
Hans-Christoph Steiner
fe1c6b5149 run tests/refresh-SUSS_DEFAULT.py 2024-09-10 11:11:34 +02:00
Hans-Christoph Steiner
3a85c754ae Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1523
2024-09-10 09:03:16 +00:00
Hans-Christoph Steiner
4579aa079a
make -C locale compile 2024-09-10 10:52:24 +02:00
Hans-Christoph Steiner
a8f09043d2
fix format strings 2024-09-10 10:52:21 +02:00
Hans-Christoph Steiner
fef7ae772e
enable new official languages: Catalan Serbian Swahili 2024-09-10 10:52:15 +02:00
abelbiwott-dev
f84af4feb0
Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
Reno Tx
0f26f66553
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
Reno Tx
ed71e06bc4
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 75.6% (439 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
Cxnfl1ct
c7ad9f8e41
Translated using Weblate: Korean (ko) by Cxnfl1ct <wind0wso2o2@naver.com>
Currently translated at 31.2% (181 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/
2024-09-09 19:35:54 +02:00
Reno Tx
e7909fd48a
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 58.6% (340 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
Ihor Hordiichuk
3612153cf3
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
2024-09-09 19:35:54 +02:00
linsui
39e8c68425
Translated using Weblate: Chinese (Simplified Han script) (zh_Hans) by linsui <linsui@inbox.lv>
Currently translated at 96.0% (557 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2024-09-09 19:35:54 +02:00
Reno Tx
936a51f4c2
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 57.9% (336 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
Reno Tx
411304defa
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 53.2% (309 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
Reno Tx
9437c6a110
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 36.5% (212 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
abelbiwott-dev
46c058470a
Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>
Currently translated at 99.8% (579 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
Reno Tx
c2b940dfed
Translated using Weblate: Serbian (sr) by Reno Tx <renotx@users.noreply.hosted.weblate.org>
Currently translated at 28.1% (163 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
2024-09-09 19:35:54 +02:00
abelbiwott-dev
e49674c08b
Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>
Currently translated at 99.6% (578 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
a576422ae4
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 97.5% (566 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
Ihor Hordiichuk
3b7cc2625e
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
2024-09-09 19:35:54 +02:00
paul mayero
9d50d4fbc5
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.1% (569 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
dd36b8173a
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.1% (569 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
8f17d754be
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.2% (570 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
8d2cf47c6f
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.2% (570 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
3684a1753a
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.2% (570 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
a4758e7e61
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.2% (570 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
pitroig
f3ac6d8038
Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
paul mayero
b8a83bfac5
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.2% (570 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
paul mayero
8bd395c35a
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 98.4% (571 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
WaldiS
f693e12135
Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 98.2% (570 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2024-09-09 19:35:54 +02:00
pitroig
fb32fd2c4b
Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 23.6% (137 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
pitroig
7513cee223
Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 14.1% (82 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
pitroig
d121a39841
Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 14.1% (82 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
unmes
5871fb6b44
Translated using Weblate: Catalan (ca) by unmes <jordi.guiu.pujols@gmail.com>
Currently translated at 14.1% (82 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
Adrià Martín
639d96da30
Translated using Weblate: Catalan (ca) by Adrià Martín <adriamartinmor@gmail.com>
Currently translated at 13.7% (80 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
Yaron Shahrabani
5f63577bc7
Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>
Currently translated at 4.6% (27 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/he/
2024-09-09 19:35:54 +02:00
Coool (github.com/Coool)
4ef611e67e
Translated using Weblate: Latvian (lv) by "Coool (github.com/Coool)" <coool@mail.lv>
Currently translated at 0.3% (2 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/lv/
2024-09-09 19:35:54 +02:00
Coool (github.com/Coool)
0796d14161
Added translation using Weblate: Latvian (lv) by "Coool (github.com/Coool)" <coool@mail.lv> 2024-09-09 19:35:54 +02:00
Ihor Hordiichuk
94f02b3e04
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
2024-09-09 19:35:54 +02:00
ssantos
edf32a6f8a
Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2024-09-09 19:35:54 +02:00
ssantos
07c3857491
Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
2024-09-09 19:35:54 +02:00
paul mayero
071f7af9f6
Translated using Weblate: Swahili (sw) by paul mayero <pmmayero@gmail.com>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
2024-09-09 19:35:54 +02:00
ssantos
828cedfd30
Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 99.4% (577 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2024-09-09 19:35:54 +02:00
ssantos
5aad779d69
Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>
Currently translated at 99.4% (577 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
2024-09-09 19:35:54 +02:00
chumoer
a14acc510f
Translated using Weblate: Chinese (Simplified) (zh_Hans) by chumoer <k17733196511@gmail.com>
Currently translated at 96.0% (557 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2024-09-09 19:35:54 +02:00
Danial Behzadi
dc4eb2dbd1
Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 8.1% (47 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
2024-09-09 19:35:54 +02:00
raulmagdalena
98569b13fb
Translated using Weblate: Catalan (ca) by raulmagdalena <4omoald1a@mozmail.com>
Currently translated at 6.7% (39 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
2024-09-09 19:35:54 +02:00
109247019824
83691d1580
Translated using Weblate: Bulgarian (bg) by 109247019824 <stoyan@gmx.com>
Currently translated at 0.1% (1 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bg/
2024-09-09 19:35:54 +02:00
Fqwe1
ef524f87de
Translated using Weblate: Ukrainian (uk) by Fqwe1 <Fqwe1@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
2024-09-09 19:35:54 +02:00
lucasmz-dev
e07c7eb08f
Translated using Weblate: Portuguese (Brazil) (pt_BR) by lucasmz-dev <git@lucasmz.dev>
Currently translated at 100.0% (580 of 580 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
2024-09-09 19:35:54 +02:00
Xiang Heng Wei
1bf951a91d
Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>
Currently translated at 88.9% (516 of 580 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>

Currently translated at 81.0% (470 of 580 strings)

Co-authored-by: Xiang Heng Wei <yylteam@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:54 +02:00
Jose Delvani
e7ad71527f
Translated using Weblate: Portuguese (Brazil) (pt_BR) by Jose Delvani <delvani.eletricista@gmail.com>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: Jose Delvani <delvani.eletricista@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Tymofii Lytvynenko
109e66260d
Translated using Weblate: Ukrainian (uk) by Tymofii Lytvynenko <till.svit@gmail.com>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: Tymofii Lytvynenko <till.svit@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Christopher Forzy
d0054d3f89
Translated using Weblate: French (fr) by Christopher Forzy <christopher.forzy@ecomail.fr>
Currently translated at 95.1% (552 of 580 strings)

Co-authored-by: Christopher Forzy <christopher.forzy@ecomail.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
neverender
d36712c4c7
Translated using Weblate: Russian (ru) by neverender <audiolunaire@getgoogleoff.me>
Currently translated at 99.8% (579 of 580 strings)

Co-authored-by: neverender <audiolunaire@getgoogleoff.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
WaldiS
82f0d13f75
Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 98.1% (569 of 580 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 97.5% (566 of 580 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 97.2% (564 of 580 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
pitroig
c7af6b439e
Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 4.4% (26 of 580 strings)

Co-authored-by: pitroig <ona@riseup.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
hugoalh
fe768cb734
Translated using Weblate: Chinese (Traditional) (zh_Hant) by hugoalh <hugoalh@users.noreply.hosted.weblate.org>
Currently translated at 73.9% (429 of 580 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by hugoalh <hugoalh@users.noreply.hosted.weblate.org>

Currently translated at 73.6% (427 of 580 strings)

Co-authored-by: hugoalh <hugoalh@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
gfbdrgng
aaf775481f
Translated using Weblate: Russian (ru) by gfbdrgng <hnaofegnp@hldrive.com>
Currently translated at 99.6% (578 of 580 strings)

Co-authored-by: gfbdrgng <hnaofegnp@hldrive.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
gallegonovato
c52c368b75
Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
lucasmz-dev
d7ad6e9b54
Translated using Weblate: Portuguese (Brazil) (pt_BR) by lucasmz-dev <git@lucasmz.dev>
Currently translated at 95.3% (553 of 580 strings)

Co-authored-by: lucasmz-dev <git@lucasmz.dev>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Maxi
e545f5e24f
Translated using Weblate: German (de) by Maxi <maxitendo01@proton.me>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: Maxi <maxitendo01@proton.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
abelbiwott-dev
8dc0633096
Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>
Currently translated at 100.0% (580 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 86.2% (500 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 78.6% (456 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 66.7% (387 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 56.3% (327 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 48.1% (279 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 42.2% (245 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 34.3% (199 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 31.2% (181 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 23.9% (139 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 18.7% (109 of 580 strings)

Translated using Weblate: Swahili (sw) by abelbiwott-dev <abelbiwott@outlook.com>

Currently translated at 14.3% (83 of 580 strings)

Co-authored-by: abelbiwott-dev <abelbiwott@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sw/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Test Account
991d3c8d35
Added translation using Weblate: Swahili (sw) by Test Account <ta2464666@gmail.com>
Co-authored-by: Test Account <ta2464666@gmail.com>
2024-09-09 19:35:53 +02:00
Licaon Kter
9bd7b42109
Translated using Weblate: Romanian (ro) by Licaon Kter <licaon.kter@protonmail.com>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: Licaon Kter <licaon.kter@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Agnieszka C
030dd4d484
Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 96.8% (562 of 580 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
大王叫我来巡山
f3d301d1de
Translated using Weblate: Chinese (Simplified) (zh_Hans) by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 80.0% (464 of 580 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Fjuro
7a7657638e
Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Oğuz Ersen
55ea03c769
Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguz@ersen.moe>
Currently translated at 100.0% (580 of 580 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Hosted Weblate
9d025dc3a9
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Danial Behzadi
ccbd68c1d4
Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 8.3% (46 of 552 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
pitroig
7c26cd31f2
Translated using Weblate: Catalan (ca) by pitroig <ona@riseup.net>
Currently translated at 4.5% (25 of 552 strings)

Co-authored-by: pitroig <ona@riseup.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ca/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
3bab86f352
Translated using Weblate: Greek (el) by ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ <stavros.daliakopoulos@gmail.com>
Currently translated at 11.9% (66 of 552 strings)

Translated using Weblate: Greek (el) by ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ <stavros.daliakopoulos@gmail.com>

Currently translated at 11.7% (65 of 552 strings)

Co-authored-by: ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ <stavros.daliakopoulos@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/el/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Suguru Hirahara
3de9027875
Translated using Weblate: Japanese (ja) by Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Currently translated at 1.4% (8 of 552 strings)

Co-authored-by: Suguru Hirahara <shirahara@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Naveen
597b1415b3
Translated using Weblate: Tamil (ta) by Naveen <naveen.sakthivel@tutanota.com>
Currently translated at 1.9% (11 of 552 strings)

Co-authored-by: Naveen <naveen.sakthivel@tutanota.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
flac
d02357093e
Translated using Weblate: Belarusian (be) by flac <flac_twin@keemail.me>
Currently translated at 8.5% (47 of 552 strings)

Co-authored-by: flac <flac_twin@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/be/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Laachir
b55934d69c
Translated using Weblate: Arabic (ar) by Laachir <LaachirDeeper@users.noreply.hosted.weblate.org>
Currently translated at 5.6% (31 of 552 strings)

Co-authored-by: Laachir <LaachirDeeper@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ar/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Kristoffer Grundström
dae6e46137
Translated using Weblate: Swedish (sv) by Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Currently translated at 13.0% (72 of 552 strings)

Translated using Weblate: Swedish (sv) by Kristoffer Grundström <swedishsailfishosuser@tutanota.com>

Currently translated at 12.8% (71 of 552 strings)

Co-authored-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Issa1553
ad4762a1f2
Translated using Weblate: Dutch (nl) by Issa1553 <fairfull.playing@gmail.com>
Currently translated at 18.4% (102 of 552 strings)

Co-authored-by: Issa1553 <fairfull.playing@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nl/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
PD
feb4cd48d3
Translated using Weblate: Arabic (ar) by PD <macstuff@pretreer.com>
Currently translated at 4.5% (25 of 552 strings)

Translated using Weblate: Arabic (ar) by PD <macstuff@pretreer.com>

Currently translated at 3.4% (19 of 552 strings)

Co-authored-by: PD <macstuff@pretreer.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ar/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
P.O
ac4bf4eb1f
Translated using Weblate: Swedish (sv) by "P.O" <rasmusson.mikael@protonmail.com>
Currently translated at 12.6% (70 of 552 strings)

Co-authored-by: P.O <rasmusson.mikael@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2024-09-09 19:35:53 +02:00
Hans-Christoph Steiner
26c7630b4e Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.10.1

See merge request fdroid/fdroidserver!1520
2024-09-09 17:35:47 +00:00
fdroid-bot
773f6e4009 gradle v8.10.1 2024-09-09 15:57:11 +00:00
Jochen Sprickerhof
1f82e10748 Merge branch 'doc-updates' into 'master'
doc updates

See merge request fdroid/fdroidserver!1518
2024-09-09 15:56:34 +00:00
Hans-Christoph Steiner
22204f4e07 README: remove obsolete section on buildserver tests 2024-09-09 15:56:24 +00:00
Hans-Christoph Steiner
a386a6132a README: document how releases work 2024-09-09 15:56:24 +00:00
Hans-Christoph Steiner
c6e8dfd4dd CONTRIBUTING: specify which Black version for format 2024-09-09 15:56:24 +00:00
Jochen Sprickerhof
72a0ad81b8 Merge branch 'safety-only-with-api-key' into 'master'
Safety only with API key

See merge request fdroid/fdroidserver!1514
2024-09-09 15:52:46 +00:00
Hans-Christoph Steiner
b669ce654d gitlab-ci: only trigger safety job if API key is present 2024-09-09 15:52:28 +00:00
Hans-Christoph Steiner
3c03fef28f safety: clarify reason to ignore CVE 2024-09-09 15:52:28 +00:00
Hans-Christoph Steiner
adf9dcb93e Merge branch 'walk-straight' into 'master'
Correct traversing cibase

See merge request fdroid/fdroidserver!1519
2024-09-08 18:16:07 +00:00
SilentGhost
8e89cf511d Correct traversing cibase
Partly revert d9aab228 and fix bug introduced in 548f73d9:
modifying list that is being iterated over
2024-09-06 15:05:36 +02:00
Hans-Christoph Steiner
88a23f3a33 Merge branch 'config_lint' into 'master'
lint: check for valid keys in config files

See merge request fdroid/fdroidserver!1516
2024-09-05 11:28:49 +00:00
linsui
0ad2820b6f lint: check config keys 2024-09-05 18:54:46 +08:00
linsui
debac3fd61 lint.py: format 2024-09-05 02:09:55 +08:00
Hans-Christoph Steiner
634466f8a5 Merge branch 'lock' into 'master'
scanner: fix build_dir type

See merge request fdroid/fdroidserver!1515
2024-09-04 16:08:04 +00:00
linsui
9b633fb827 scanner: fix build_dir type 2024-09-04 23:58:09 +08:00
Hans-Christoph Steiner
745f01a96c Merge branch 'lock' into 'master'
scanner: support workspace for lock files

See merge request fdroid/fdroidserver!1513
2024-09-04 14:55:40 +00:00
linsui
3a4a4190aa scanner: add test files into MANIFEST.in 2024-09-04 16:44:48 +02:00
linsui
632959ae35 scanner: fix test
The suss rule is updated
2024-09-04 22:32:48 +08:00
linsui
4e829e2f19 scanner: fix npm lock file name 2024-09-04 22:32:48 +08:00
linsui
9482ddfbe3 scanner: support workspace for lock files 2024-09-04 22:32:48 +08:00
Hans-Christoph Steiner
f337ef95a9 Merge branch 'ci-safety-fix' into 'master'
safety: update to 3.x and make two CVEs just a warning

See merge request fdroid/fdroidserver!1509
2024-09-04 13:39:17 +00:00
Hans-Christoph Steiner
d9e9618c56 gitlab-ci: port to Safety 3.x and move to own job
https://docs.safetycli.com/safety-docs/installation/gitlab
https://docs.safetycli.com/safety-docs/administration/safety-policy-files
2024-09-04 13:38:44 +00:00
Hans-Christoph Steiner
b1084c0b8a WIP safety: make CVE-2024-6345 just a warning 2024-09-04 13:38:44 +00:00
Hans-Christoph Steiner
ef247bc97a safety: make CVE-2024-5569 just a warning
We get these packages from Debian, zipp is not used in production, and its
only a DoS.
2024-09-04 13:38:44 +00:00
Hans-Christoph Steiner
3a1bbb54aa Merge branch 'lock' into 'master'
scanner: error on dependency files without lock file

Closes #1200

See merge request fdroid/fdroidserver!1504
2024-08-31 13:13:02 +00:00
linsui
9ccb3b5f0d Remove comment of google mave repo to workground a bug of ruff 2024-08-31 02:45:14 +08:00
linsui
8884732114 scanner.py: skip format on hex literal 2024-08-31 01:47:26 +08:00
Hans-Christoph Steiner
65f768e1cf black: fdroidserver/scanner.py now complies 2024-08-30 13:47:20 +02:00
linsui
1d796b734f scanner: error on dependency files without lock file 2024-08-30 13:46:17 +02:00
linsui
c3644464ff scanner.py: format 2024-08-30 13:46:17 +02:00
linsui
3782eddc4d Add ruff rule 2024-08-30 13:46:17 +02:00
Hans-Christoph Steiner
9684eade0d Merge branch 'fix/duplicated-sign' into 'master'
fix(nightly): workaround for broken os.walk and more logging

See merge request fdroid/fdroidserver!1512
2024-08-30 10:22:55 +00:00
WrenIX
d1d1eb4c53
chore(nightly): improve log messages 2024-08-29 09:58:27 +02:00
WrenIX
d9aab228e2
fix(nightly): workaround for broken os.walk and more logging 2024-08-29 00:51:30 +02:00
Hans-Christoph Steiner
5276d9880f Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.10

See merge request fdroid/fdroidserver!1508
2024-08-17 19:12:48 +00:00
fdroid-bot
170b6d4648 gradle v8.10 2024-08-15 15:47:52 +00:00
Hans-Christoph Steiner
84150be5d0 Merge branch 'reset-server' into 'master'
Drop --reset-server

See merge request fdroid/fdroidserver!1507
2024-08-15 15:45:29 +00:00
g0t mi1k
19aef075b4 Drop --reset-server 2024-08-15 15:44:59 +00:00
Jochen Sprickerhof
1ebf32321f Merge branch 'checkupdates_ignore_appname' into 'master'
Support UpdateCheckName in dirs_with_manifest

Closes #1155

See merge request fdroid/fdroidserver!1501
2024-07-30 11:32:59 +00:00
Jochen Sprickerhof
0edc732705
Support UpdateCheckName in dirs_with_manifest
Closes: #1155
2024-07-25 10:45:27 +02:00
Jochen Sprickerhof
c4db47dc47 Merge branch 'scanner-uncrash' into 'master'
🐜 scanner: fix ScannerTool init crash

Closes #1212

See merge request fdroid/fdroidserver!1485
2024-07-25 07:04:23 +00:00
Michael Pöhn
8cf4503a00 🐜 scanner: fix ScannerTool init crash
When scanner.py::ScannerTool is instatiated but the calling code was
started by a call to e.g. `build.py` ScannerTool will crash. This change
makes it so that ScannerTool will intializes with a default value
instead of crashing when triging to access a non existen cli argument.

also see https://gitlab.com/fdroid/fdroidserver/-/issues/1212
2024-07-25 06:54:42 +00:00
Jochen Sprickerhof
7f7c93e801 Merge branch 'appdirs_platformdirs' into 'master'
Replace unmaintained appdirs by platformdirs

See merge request fdroid/fdroidserver!1496
2024-07-25 06:46:55 +00:00
Jochen Sprickerhof
e1aaa3ce93
Replace unmaintained appdirs by platformdirs
8734277956
2024-07-25 08:36:45 +02:00
Jochen Sprickerhof
956c4be7e5 Merge branch 'gradle' into 'master'
Gradle 8.9

See merge request fdroid/fdroidserver!1498
2024-07-18 11:33:56 +00:00
StellarSand
ecd980f366 gradle 8.9 2024-07-18 02:23:45 +00:00
Jochen Sprickerhof
59f353e119 Merge branch 'prune' into 'master'
Prune origin before fetch

See merge request fdroid/fdroidserver!1494
2024-07-10 08:09:24 +00:00
linsui
d1856bea26 Prune origin before fetch 2024-07-10 15:33:51 +08:00
Hans-Christoph Steiner
7a9945ce88 Merge branch 'index-only-follow-up' into 'master'
always use GitLab Pages, not Artifacts, with index-only mode

See merge request fdroid/fdroidserver!1493
2024-07-03 09:30:23 +00:00
Hans-Christoph Steiner
fbb6772e37 always use GitLab Pages, not Artifacts, with index-only mode
If the repo is too large, then it'll hit the GitLab Pages limit.  That is
basically impossible in index-only mode, so it should always use Pages.
2024-07-03 09:18:22 +00:00
Hans-Christoph Steiner
034e83bfca deploy: complete index-only support for awsbucket: 2024-07-03 09:18:22 +00:00
Hans-Christoph Steiner
4a362541bd Merge branch 'gh-releases' into 'master'
🛰️  deploy: github releases

See merge request fdroid/fdroidserver!1471
2024-06-28 13:21:55 +00:00
Michael Pöhn
0fa88c5c20
💇 implement review nits
Implement review nits as requested bei @eighthave in
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1471
2024-06-27 12:28:54 +02:00
Michael Pöhn
3cf3685280
🐐 appeace bandint security warnings
In this particular case bandit was complaining about potential path
escape exploits on urlopen. However the urls are safe enough, because
all template parameters inserted into the url are from:

 * config.yml - malicious changes to config.yml are possible that's
   already a lot bigger issue than this than redirecting github api
   calls.
 * git tags witch are present in bot the local index-v2.json file (as
   versionName) and the remote github API. (git tags don't allow the
   string '..')
2024-06-27 12:28:41 +02:00
Michael Pöhn
aca98c1355
🏏 incorporate review feedback 2024-06-27 12:28:29 +02:00
Michael Pöhn
a87284cf80
🚥 deploy: tests for github releases deploy functions
Add test cases for github releases function in deploy.py
2024-06-27 12:28:16 +02:00
Michael Pöhn
242490ddc3
🎯 deploy: no releaseChannels on github releases
Don't deploy versions of to GitHub releases where a `releaseChannels`
value is set in index-v2.json. (This usually would mean it's a alpha or
beta version.)
2024-06-27 12:28:04 +02:00
Michael Pöhn
c6598f2835
☄️ deploy: github releases - whatsNew text as note
Use whatsNew text (if available) as release notes text when deploying to
Github releases. This feature will always use 'en-US' locale texts,
since English is the lingua franka on GitHub. Additionally this change
also adds a config option to preprend a static text to those release
notes.
2024-06-27 12:27:51 +02:00
Michael Pöhn
a079f9d85f
♟️ deploy: add global config github_token 2024-06-27 12:27:39 +02:00
Michael Pöhn
7a6fa7f816
🛄 deploy: separate function for release file lookup 2024-06-27 12:27:27 +02:00
Michael Pöhn
44b0af933d
🎡 add unit tests for github.py
add unittests for our github api calls
2024-06-27 12:27:15 +02:00
Michael Pöhn
1b19293ab0
🛰️ deploy: github releases
Implemented basic support for using `fdroid delpoy` to upload APKs from
the repo to GitHub releases.
2024-06-27 12:27:01 +02:00
Hans-Christoph Steiner
aeb8a7a3e5 Merge branch 'fix-subprocess-checkoutput-on-rclone' into 'master'
fix: subprocess.check_output to produce string and not bytes

See merge request fdroid/fdroidserver!1490
2024-06-12 06:31:49 +00:00
pmmayero
8255dec6b8 fix: jinja 2 CVE 2024-06-12 06:30:27 +00:00
pmmayero
3f59d0908f fix: subprocess.check_output to produce string and not bytes 2024-06-12 06:30:27 +00:00
Hans-Christoph Steiner
21e03e62a8 Merge branch 'index-only-deploy-mode' into 'master'
Add index only deployment mode

Closes #1181

See merge request fdroid/fdroidserver!1420
2024-06-11 17:46:00 +00:00
proletarius101
845ed3ef47 Add index only deployment mode 2024-06-11 17:45:59 +00:00
Hans-Christoph Steiner
24b3b0957f Merge branch 'safety-false-positive' into 'master'
safety: ignore false positive

See merge request fdroid/fdroidserver!1492
2024-06-07 10:15:32 +00:00
Hans-Christoph Steiner
6e489b78b3
safety: ignore false positive
jinja2 is not used by fdroidserver, nor any dependencies I could find via
debtree and pipdeptree.
2024-06-07 12:04:12 +02:00
Hans-Christoph Steiner
e7ff344f2b Merge branch 'gradle' into 'master'
gradle 8.8

See merge request fdroid/fdroidserver!1489
2024-06-05 15:00:19 +00:00
linsui
41e90e5ee7 gradle 8.8 2024-06-01 16:24:26 +08:00
Hans-Christoph Steiner
f50e5a806d Merge branch 'switching-s3cmd-for-rclone' into 'master'
Adding rclone as an option to fdroid deploy

Closes #1095

See merge request fdroid/fdroidserver!1095
2024-05-29 14:08:07 +00:00
paul mayero
7aabfbcbf0 Adding rclone as an option to fdroid deploy 2024-05-29 14:08:07 +00:00
Hans-Christoph Steiner
eadbf06d48 Merge branch 'licaon-kter-master-patch-05845' into 'master'
Fix more tests after !1487

See merge request fdroid/fdroidserver!1488
2024-05-23 08:30:36 +00:00
Licaon_Kter
feafe2812d Fix more tests after !1487 2024-05-22 13:40:27 +00:00
Hans-Christoph Steiner
b3748aa3f1 Merge branch 'scannerid' into 'master'
scanner - pickup by id, sort list

See merge request fdroid/fdroidserver!1487
2024-05-22 09:26:13 +00:00
Licaon_Kter
98f935493e fix test cases 2024-05-22 09:25:49 +00:00
Licaon_Kter
df97ebe052 scanner - pickup by id, sort list 2024-05-22 09:25:49 +00:00
Hans-Christoph Steiner
18c9bc6e01 Merge branch 'sdkmanager-bookworm-backports' into 'master'
buildserver: use sdkmanager from backports

See merge request fdroid/fdroidserver!1475
2024-05-20 18:36:40 +00:00
Hans-Christoph Steiner
afb9b7570e buildserver: use sdkmanager from backports 2024-05-20 18:36:33 +00:00
Hans-Christoph Steiner
25b1a77424
fix merge conflict with https://hosted.weblate.org/projects/f-droid/fdroidserver/ 2024-05-14 12:22:56 +02:00
Hans-Christoph Steiner
4c0fa1d0a9 Merge branch 'update-pot' into 'master'
make -C locale update

See merge request fdroid/fdroidserver!1484
2024-05-13 12:10:49 +00:00
Hans-Christoph Steiner
c37a26bcd2
make -C locale update 2024-05-13 13:59:52 +02:00
Hans-Christoph Steiner
b45b31b927
version 2.3 alpha 1 2024-05-13 10:45:09 +02:00
Hans-Christoph Steiner
2f148b4407 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1483
2024-05-13 08:44:31 +00:00
Hans-Christoph Steiner
6bebd8b160
safety: ignore CVE-2018-20225, should never affect fdroidserver
https://data.safetycli.com/v/67599/97c
2024-05-13 10:33:37 +02:00
Fjuro
7e1b2e0788 Translated using Weblate: Czech (cs) by Fjuro <fjuro@alius.cz>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2024-05-13 10:25:52 +02:00
Random
34dd9a75e4 Translated using Weblate: Italian (it) by Random <random-r@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2024-05-13 10:25:43 +02:00
ALoLo_527
f6235831ae Translated using Weblate: Chinese (Simplified) (zh_Hans) by ALoLo_527 <ALoLo@users.noreply.hosted.weblate.org>
Currently translated at 82.0% (453 of 552 strings)

Co-authored-by: ALoLo_527 <ALoLo@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-05-13 10:25:35 +02:00
Oğuz Ersen
99841bf7c5 Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguz@ersen.moe>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2024-05-13 10:25:03 +02:00
Agnieszka C
c7f1bdd14c Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2024-05-13 10:24:56 +02:00
gallegonovato
25278801de Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2024-05-13 10:24:45 +02:00
Michael Pöhn
8d9c048505 Merge branch 'config-options-as-module-level-variables' into 'master'
clarify that 'config' and 'options' should only be module-level variables

See merge request fdroid/fdroidserver!1477
2024-05-08 14:47:49 +00:00
Hans-Christoph Steiner
64c9154fff
gitlab-ci: fix macOS job after !1466 2024-05-08 16:36:21 +02:00
Hans-Christoph Steiner
5745ed4753 common: only try to delete .testfiles dir if it exists
Otherwise, some tests fail with an error.
2024-05-08 16:28:14 +02:00
Hans-Christoph Steiner
18f3acc32e split out options from read_config()
There is no longer any reason for these to be intertwined.

This deliberately avoids touching some files as much as possible because
they are super tangled and due to be replaced.  Those files are:

* fdroidserver/build.py
* fdroidserver/update.py

# Conflicts:
#	tests/testcommon.py

# Conflicts:
#	fdroidserver/btlog.py
#	fdroidserver/import_subcommand.py
2024-05-08 16:26:46 +02:00
Hans-Christoph Steiner
685efa23d4 import: always load testcommon from localmodule
Having this import before sys.path.insert() made it load testcommon from
the Debian package.
2024-05-08 16:19:27 +02:00
Hans-Christoph Steiner
1e5699e90c remove all references to optparse (deprecated since Python 3.2) 2024-05-08 16:19:27 +02:00
Hans-Christoph Steiner
717df09be0 clarify that config/options can be global or module-level variable 2024-05-08 16:19:27 +02:00
Hans-Christoph Steiner
92a3f4b191 rename local variable to stop overwriting global options
This fixes a bug where if smartcardoptions is set as a str in config.yml
will overwrite all command line options.

a4d069862
fdroidserver!1106
2024-05-08 16:19:27 +02:00
Hans-Christoph Steiner
1eaba25021 common: do not use module reference for local functions
This just makes things more confusing.
2024-05-08 16:19:27 +02:00
Hans-Christoph Steiner
8208841460 common: make explicit which test cases need mocked options 2024-05-08 16:19:27 +02:00
Hans-Christoph Steiner
660f8756e5 Merge branch 'docstrings' into 'master'
docstrings and code format from !1436

See merge request fdroid/fdroidserver!1482
2024-05-08 13:55:10 +00:00
Gregor Düster
dbdefe200c Format files with ruff 2024-05-08 15:41:51 +02:00
Gregor Düster
df27405d8b [build] Add more docstrings 2024-05-08 15:35:28 +02:00
Gregor Düster
1c70758940 [btlog] Add more docstrings 2024-05-08 15:31:43 +02:00
Gregor Düster
4109e8fb03 [checkupdates] Add module docstring 2024-05-08 15:31:38 +02:00
Gregor Düster
97346a2cba [nightly] Add more docstrings 2024-05-08 15:31:32 +02:00
Gregor Düster
6c27fec94b [import] Add more docstrings 2024-05-08 15:31:29 +02:00
Michael Pöhn
5d8c6b8cd5 Merge branch 'fix-ubuntu-ppa-job' into 'master'
Fix ubuntu ppa job

See merge request fdroid/fdroidserver!1481
2024-05-08 13:17:23 +00:00
Hans-Christoph Steiner
9f62445f38 gitlab-ci: fix ubuntu_lts_ppa job to work with Ubuntu/noble 2024-05-08 13:16:00 +00:00
Michael Pöhn
80705579c2 Merge branch 'getcert' into 'master'
get_first_signer_certificate: check all v1 v2 and v3 certs

Closes #1128

See merge request fdroid/fdroidserver!1466
2024-05-08 13:14:05 +00:00
Hans-Christoph Steiner
ad9f0a9022 include @obfusk's proof-of-concept APKs in test suite
https://github.com/obfusk/fdroid-fakesigner-poc/releases/tag/poc-apks
2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
fc4a9c96a5 test APK signatures with a cert chain are parsed like apksigner
Microsoft and SanDisk sign APKs with a X.509 certificate chain of
trust, so there are actually three certificates included. apksigner
only cares about one certificate and ignores the other certificates in
the chain.

The correct values come from:

    apksigner verify --print-certs 883cbdae7aeb2e4b122e8ee8d89966c7062d0d49107a130235fa220a5b994a79.apk

X.509 certificates are machine generated and just data, so are not
copyrightable.  So I included SANAPPSI.* directly.
2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
accdd65f91 also handle APKs entirely without JAR/v1 signatures
future-proofing!
2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
9a327b5097 reliable implementation of get_first_signer_certificate()
This keeps key pieces of @linsui's algorithm, specifically the check
that all certificates are the same.  apksigner also does this check.

closes #1128
2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
a8fd360a88 skip AndroidManifest.xml and resources when fetching v2+ certs 2024-05-07 16:22:59 +02:00
FC (Fay) Stegerman
6f5fd2b132 PoC + writeup + patch
6c6dc25112/fdroidserver.patch (L28)

https://github.com/androguard/androguard/issues/1030
refs #1128

(this is an excerpt of the original patch)
2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
312f822764 androguard is required, stop using use_androguard() 2024-05-07 16:22:59 +02:00
linsui
2fea71a6c7 get_first_signer_certificate: check all v1 v2 and v3 certs 2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
93f361c623 replace decade old pyasn1 crypto impl with working asn1crypto
For some APKs, get_certificate() was returning a different result than
apksigner and keytool.  So I just took the algorithm from androguard, which
uses asn1crypto instead of pyasn1.  So that removes a dependency as well.
asn1crypto is already required by androguard.

The original get_certificate() came from 6e2d0a9e1
2024-05-07 16:22:59 +02:00
Hans-Christoph Steiner
4666330a4d Merge branch 'gradlefile' into 'master'
throw error if gradle build method is used but no build.gradle file is found

See merge request fdroid/fdroidserver!1479
2024-05-07 14:14:26 +00:00
linsui
7104411296 throw error if gradle build method is used but no build.gradle file is found 2024-05-07 14:13:47 +00:00
Hans-Christoph Steiner
99bd544ab9 Merge branch 'fedora-40-ci-failure' into 'master'
make it easier to support the Fedora job

See merge request fdroid/fdroidserver!1474
2024-05-07 14:11:53 +00:00
Hans-Christoph Steiner
5df3d27126 gitlab-ci: stay on Fedora 39 until it is no longer supported
We can rely on the debian:testing job to test the bleeding edge, and it is
a lot easier to troubleshoot.

The Fedora job is a lot harder to troubleshoot than the Debian-based jobs,
and they are often quite bleeding edge.  Currently, there is a change to
either Python or an image processing lib (Pillow?) that now compresses PNGs
differently than all previous releases.  That breaks the tests based on
processing images and checking the SHA-256 matches.

70e7e720b9
fdroidserver!669
2024-05-07 12:58:23 +00:00
Hans-Christoph Steiner
1b65e33835 make it easy to keep test artifacts from jobs
When troubleshooting things that are difficult to reproduce locally, like
different behaviors in the fedora_latest job, these changes make it easy to
keep the test files around after the tests run.  For example, if PNGs are
processed differently by newer Python versions.
2024-05-07 12:58:23 +00:00
Hans-Christoph Steiner
299e3e5f4c index: handle image processing diffs across various Python versions
Apparently, the newest Python thingies strip the PNGs a tiny bit smaller,
so a fixed file size will lead to the test failing:

https://gitlab.com/fdroid/fdroidserver/-/jobs/6703386074
```
Traceback (most recent call last):
  File "/builds/fdroid/fdroidserver/tests/index.TestCase", line 704, in test_package_metadata
    self.assertEqual(36027, metadata['featureGraphic']['en-US']['size'])
AssertionError: 36027 != 35619
```
2024-05-07 12:58:23 +00:00
Hans-Christoph Steiner
1cb1394de3 Merge branch 'debugkey' into 'master'
lint: blocklist known AOSP debug keys in AASK

See merge request fdroid/fdroidserver!1478
2024-05-07 11:33:12 +00:00
Hans-Christoph Steiner
9a9b5beeaa simplify test setup
I'm in the midst of working towards getting rid of the "config" instances
that are in the subcommand module, e.g. `fdroidserver.lint.config`
2024-05-07 11:33:04 +00:00
Hans-Christoph Steiner
14c8647909 add additional tests 2024-05-07 11:33:04 +00:00
linsui
d243cbd030 lint: blocklist known AOSP debug keys in AASK 2024-05-07 11:33:04 +00:00
Michael Pöhn
08c553e1cb Merge branch 'deploy' into 'master'
deploy: retry when git push fails

See merge request fdroid/fdroidserver!1480
2024-05-06 06:36:58 +00:00
linsui
f82d648cb1 deploy: retry when git push fails 2024-05-05 20:53:35 +00:00
Michael Pöhn
79586fd9e3 Merge branch 'fix-icons-in-fdroid-mirror' into 'master'
mirror: apparently the 'icons' dir does not always exist

See merge request fdroid/fdroidserver!1476
2024-05-05 17:14:49 +00:00
Hans-Christoph Steiner
6f07538cdc mirror: apparently the 'icons' dir does not always exist
https://apt.izzysoft.de/fdroid/archive/com.futsch1.medtimer_28.apk:
2024-04-21 18:55:20 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.hardbacknutter.nevertoomanybooks_75.apk:
2024-04-21 18:55:20 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.jovial.jrpn15_20.apk:
2024-04-21 18:55:20 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.jovial.jrpn2_20.apk:
2024-04-21 18:55:20 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.logger.app_8.apk:
2024-04-21 18:55:21 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.lorenzovainigli.foodexpirationdates.foss_22.apk:
2024-04-21 18:55:21 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.openathena_36.apk:
2024-04-21 18:55:21 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.oppzippy.openscq30_21.apk:
2024-04-21 18:55:21 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.sanmer.mrepo_713.apk:
2024-04-21 18:55:21 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/com.starry.myne_325.apk:
2024-04-21 18:55:21 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/dev.imranr.obtainium_22602.apk:
2024-04-21 18:55:22 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/dev.sanmer.pi_137.apk:
2024-04-21 18:55:22 ERROR 404: Not Found.
https://apt.izzysoft.de/fdroid/archive/org.breezyweather_50108.apk:
2024-04-21 18:55:22 ERROR 404: Not Found.
2024-04-21 18:55:22,448 ERROR: no "icon" in org.breezyweather
2024-04-21 18:55:22,449 ERROR: no "icon" in com.lorenzovainigli.foodexpirationdates.foss
2024-04-21 18:55:22,449 ERROR: no "icon" in com.jovial.jrpn15
2024-04-21 18:55:22,450 ERROR: no "icon" in com.jovial.jrpn2
2024-04-21 18:55:22,450 ERROR: no "icon" in com.logger.app
2024-04-21 18:55:22,450 ERROR: no "icon" in com.futsch1.medtimer
2024-04-21 18:55:22,451 ERROR: no "icon" in com.sanmer.mrepo
2024-04-21 18:55:22,451 ERROR: no "icon" in com.starry.myne
2024-04-21 18:55:22,451 ERROR: no "icon" in com.hardbacknutter.nevertoomanybooks
2024-04-21 18:55:22,452 ERROR: no "icon" in dev.imranr.obtainium
2024-04-21 18:55:22,452 ERROR: no "icon" in com.openathena
2024-04-21 18:55:22,453 ERROR: no "icon" in com.oppzippy.openscq30
2024-04-21 18:55:22,453 ERROR: no "icon" in dev.sanmer.pi
2024-04-21 18:55:22,454 CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/home/fdroid/code/fdroid/fdroidserver/fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/home/fdroid/code/fdroid/fdroidserver/fdroidserver/__main__.py", line 230, in main
    raise e
  File "/home/fdroid/code/fdroid/fdroidserver/fdroidserver/__main__.py", line 211, in main
    mod.main()
  File "/home/fdroid/code/fdroid/fdroidserver/fdroidserver/mirror.py", line 269, in main
    _run_wget(os.path.join(basedir, section, icondir), urls[icondir])
KeyError: 'icons'
2024-05-02 18:29:42 +02:00
Hans-Christoph Steiner
32ef77ecb6 Merge branch 'androguard-modernization' into 'master'
port to androguard >= 4 and drop support for older than 3.3.5

See merge request fdroid/fdroidserver!1462
2024-04-25 11:09:27 +00:00
Hans-Christoph Steiner
be59b38ac1 update: handle ValueError from apkInspector in androguard 4.1
androguard 4.1 uses a new lib called apkInspector instead of zipfile.ZipFile
so that it can handle usable but invalid ZIP files.  It will also throw
ValueError on some things, for example:

Traceback (most recent call last):
  File "/builds/eighthave/fdroidserver/fdroidserver-2.3a0/tests/update.TestCase", line 878, in test_scan_apk_bad_zip
    fdroidserver.update.scan_apk(apkfile)
  File "/builds/eighthave/fdroidserver/fdroidserver-2.3a0/fdroidserver/update.py", line 1586, in scan_apk
    scan_apk_androguard(apk, apk_file)
  File "/builds/eighthave/fdroidserver/fdroidserver-2.3a0/fdroidserver/update.py", line 1725, in scan_apk_androguard
    apkobject = common.get_androguard_APK(apkfile)
  File "/builds/eighthave/fdroidserver/fdroidserver-2.3a0/fdroidserver/common.py", line 2673, in get_androguard_APK
    return APK(apkfile)
  File "/usr/local/lib/python3.10/dist-packages/androguard/core/apk/__init__.py", line 273, in __init__
    self.zip = ZipEntry.parse(filename, False)
  File "/usr/local/lib/python3.10/dist-packages/apkInspector/headers.py", line 410, in parse
    eocd = EndOfCentralDirectoryRecord.parse(apk_file)
  File "/usr/local/lib/python3.10/dist-packages/apkInspector/headers.py", line 59, in parse
    raise ValueError("End of central directory record (EOCD) signature not found")
ValueError: End of central directory record (EOCD) signature not found
2024-04-25 13:00:23 +02:00
Hans-Christoph Steiner
ef4ec74882 some parts of androguard 4.x use loguru instead of logging 2024-04-25 12:39:12 +02:00
Hans-Christoph Steiner
1c84f63247 replace deprecated get_element() which was removed in 4.x
/usr/lib/python3/dist-packages/androguard/core/bytecodes/apk.py:884: DeprecationWarning: This method is deprecated since 3.3.5.

It was added in 3.3.5.  Debian/bullseye and Ubuntu/20.04/focal both include
new enough versions.  Debian/buster's is too old (3.3.3).
2024-04-25 12:39:12 +02:00
Hans-Christoph Steiner
5b7abc0423 single function to tame androguard's verbose default output
# Conflicts:
#	fdroidserver/common.py
2024-04-25 12:39:12 +02:00
Hans-Christoph Steiner
7a144a4762 port to androguard >= 4 and drop support for older than 3.3.3
This also makes androguard a hard requirement, which has been true for a
while anyway.  So the code that handles androguard as an optional
requirement is removed.  androguard from Debian/buster is new enough, so
this does not seem like it will cause any problems.
2024-04-25 12:39:12 +02:00
Hans-Christoph Steiner
cdc7c98707 common.get_androguard_APK() is no longer private to the module 2024-04-25 12:39:12 +02:00
Hans-Christoph Steiner
a742df3758
add CHANGELOG entry for v2.2.2 2024-04-25 12:39:00 +02:00
Hans-Christoph Steiner
e45e37b2df Merge branch 'altstore-index-fix' into 'master'
🐛 index fix: skip altstore when no IPAs present

See merge request fdroid/fdroidserver!1473
2024-04-24 12:05:03 +00:00
Michael Pöhn
005a33732c apply review suggestions 2024-04-24 11:56:07 +00:00
Michael Pöhn
bd6afa4365
🐛 index fix: skip altstore when no IPAs present 2024-04-24 12:45:29 +02:00
Hans-Christoph Steiner
07929ffe66 Merge branch 'black' into 'master'
move fdroidserver/deploy.py to black format

See merge request fdroid/fdroidserver!1472
2024-04-24 08:51:46 +00:00
Hans-Christoph Steiner
79f148167a deploy: automatically convert to black format 2024-04-24 08:42:15 +00:00
Hans-Christoph Steiner
cb04d801d8 deploy: manually move hard cases to black code format 2024-04-24 08:42:15 +00:00
Hans-Christoph Steiner
eacfb8095b Merge branch 'alt-store' into 'master'
iOS metadata + alt-store source support

See merge request fdroid/fdroidserver!1465
2024-04-24 08:39:05 +00:00
Hans-Christoph Steiner
9716b5e1ab index: manual black format 2024-04-24 10:29:50 +02:00
Michael Pöhn
d00a87ed6c
🏏 alt-store index: incorporate review feedback 2024-04-23 17:28:30 +02:00
Michael Pöhn
f2118b35a3
🏟️ fix ci 2024-04-23 16:06:10 +02:00
Michael Pöhn
45efb88f85
🕴️ add test for make_altstore 2024-04-23 16:05:58 +02:00
Michael Pöhn
86db8c93cc
🩹 fix parse_ipa tests 2024-04-23 16:05:47 +02:00
Michael Pöhn
f742799a9d
🏟️ add test for _parse_from_pbxproj
Also fix lint issues
2024-04-23 16:05:34 +02:00
Michael Pöhn
450765490b
🗺️ add test for _get_ipa_ico 2024-04-23 16:05:22 +02:00
Michael Pöhn
a21ed39117
🛻 move alstore index function
Move function for generating altstore index from update.py to index.py
2024-04-23 16:05:10 +02:00
Michael Pöhn
301f0c8273
🍎 altstore: implement ipa entitlement parser
This adds a parser for reading entitlement values from .ipa files.
Entitlement values are stored in files called
'.../embedded.mobileprovision' packed into .ipa files. These are CMS
signed plist files.

https://en.wikipedia.org/wiki/Cryptographic_Message_Syntax

This also ignores the 2 non-optional entitlements, as mentioned in
altstore docs:

https://faq.altstore.io/distribute-your-apps/make-a-source#entitlements-array-of-strings
2024-04-23 16:04:57 +02:00
Michael Pöhn
2658c22933
🖼️ altstore index screenshots and icons 2024-04-23 16:04:44 +02:00
Michael Pöhn
519c3c1fcf
👑 altstore index: add entitlement support 2024-04-23 16:04:31 +02:00
Michael Pöhn
93e7cc9092
📑 better alt-store index 2024-04-23 16:04:19 +02:00
Michael Pöhn
fb33ae58e2
🐑 naive alt-store support
Naive shot at implementing alt store support. Might still be missing important
bits and pices I'm not aware of.
2024-04-23 16:04:07 +02:00
Hans-Christoph Steiner
e24640da85 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1470
2024-04-10 14:03:35 +00:00
Hans-Christoph Steiner
1fa376a9dc CheckUpdates should be called checkupdates
"checkupdates" is an fdroid subcommand, e.g. `fdroid checkupdates`, and it
is always spelled all lower case.

sed -i 's,CheckUpdates,checkupdates,g' fdroidserver/*.py locale/*/LC_MESSAGES/fdroidserver.po
2024-04-10 15:50:26 +02:00
Hans-Christoph Steiner
6ab1fd9945 fix UpdateCheckMode string in lint
sed -i "s/UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet/UpdateCheckMode is set but it looks like checkupdates hasn't been run yet./g" locale/*/LC_MESSAGES/fdroidserver.po
2024-04-10 15:50:26 +02:00
Hans-Christoph Steiner
443973c6f1 Translated using Weblate: Romanian (ro) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 100.0% (552 of 552 strings)

Translated using Weblate: Hungarian (hu) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 57.6% (318 of 552 strings)

Translated using Weblate: Korean (ko) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 32.7% (181 of 552 strings)

Translated using Weblate: French (fr) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 100.0% (552 of 552 strings)

Translated using Weblate: Tibetan (bo) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 53.4% (295 of 552 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 66.8% (369 of 552 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2024-04-10 15:50:26 +02:00
VfBFan
954c136506 Translated using Weblate: German (de) by VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
2024-04-10 15:50:26 +02:00
Alexander Ivanov
4e491830cc Translated using Weblate: Russian (ru) by Alexander Ivanov <saiv46.dev@gmail.com>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
2024-04-10 15:50:26 +02:00
Besnik Bleta
a90191949d Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.1% (536 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
2024-04-10 15:50:26 +02:00
Besnik Bleta
e8a980ea9c Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 94.5% (522 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
2024-04-10 15:50:26 +02:00
Simona Iacob
0d12b5ffba Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>
Currently translated at 100.0% (552 of 552 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 99.6% (550 of 552 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 99.0% (547 of 552 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 98.5% (544 of 552 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 98.3% (543 of 552 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 97.2% (537 of 552 strings)

Co-authored-by: Simona Iacob <s@zp1.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2024-04-10 15:50:10 +02:00
Licaon Kter
b08ae68706 Translated using Weblate: Romanian (ro) by Licaon Kter <licaon.kter@protonmail.com>
Currently translated at 96.7% (534 of 552 strings)

Co-authored-by: Licaon Kter <licaon.kter@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2024-04-10 15:50:10 +02:00
linsui
44f4317ff8 Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>
Currently translated at 80.4% (444 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>

Currently translated at 80.4% (444 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>

Currently translated at 80.2% (443 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>

Currently translated at 80.0% (442 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>

Currently translated at 79.8% (441 of 552 strings)

Co-authored-by: linsui <linsui@inbox.lv>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-04-10 15:47:54 +02:00
David Jiang
98d880fe1c Translated using Weblate: Chinese (Simplified) (zh_Hans) by David Jiang <david.jiang2024@gmail.com>
Currently translated at 80.4% (444 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by David Jiang <david.jiang2024@gmail.com>

Currently translated at 80.2% (443 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by David Jiang <david.jiang2024@gmail.com>

Currently translated at 80.0% (442 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by David Jiang <david.jiang2024@gmail.com>

Currently translated at 79.8% (441 of 552 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by David Jiang <david.jiang2024@gmail.com>

Currently translated at 79.7% (440 of 552 strings)

Co-authored-by: David Jiang <david.jiang2024@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2024-04-10 15:47:54 +02:00
Daniel Hejduk
6ba048d660 Translated using Weblate: Czech (cs) by Daniel Hejduk <jellymail@protonmail.com>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Daniel Hejduk <jellymail@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2024-04-10 15:40:59 +02:00
Hans-Christoph Steiner
d6bbebddbb Merge branch 'buymeacoffee' into 'master'
insert_funding_yml_donation_links: update lfx link and add polar

See merge request fdroid/fdroidserver!1469
2024-04-10 12:06:06 +00:00
linsui
d62b8cc2ed insert_funding_yml_donation_links: support polar 2024-04-10 18:58:27 +08:00
linsui
c23af7984c insert_funding_yml_donation_links: update lfx link
community_bridge is lfx_crowdfunding now
2024-04-10 18:58:27 +08:00
Hans-Christoph Steiner
18fe76ced9 Merge branch 'drop_version_lock_pyasn1' into 'master'
Drop version locking on pyasn1

See merge request fdroid/fdroidserver!1467
2024-04-10 09:30:49 +00:00
Jochen Sprickerhof
4389168588 Drop version locking on pyasn1
I did not find any reason for this.
2024-04-10 09:30:34 +00:00
Hans-Christoph Steiner
b53c498fcd Merge branch 'buymeacoffee' into 'master'
insert_funding_yml_donation_links: support buymeacoffee

See merge request fdroid/fdroidserver!1468
2024-04-10 09:25:59 +00:00
linsui
d9f59536cf insert_funding_yml_donation_links: support buymeacoffee 2024-04-10 15:01:27 +08:00
Hans-Christoph Steiner
6a84fe1ae8 Merge branch 'ios-metadata' into 'master'
support iOS fastlane metadata

See merge request fdroid/fdroidserver!1426
2024-04-03 15:04:54 +00:00
Michael Pöhn
b6482f19a6 🛣️ update: fix pathlib import 2024-04-03 14:55:35 +00:00
Michael Pöhn
6152abee08 🪀 tests for insert_localized_ios_app_metadata
Split some functions from insert_localized_ios_app_metadata into
sub-functions and implemented separate tests for each.
2024-04-03 14:55:35 +00:00
Michael Pöhn
bbf17ee59c 🧆 improve and test parse_ios_screenshot_name 2024-04-03 14:55:35 +00:00
Michael Pöhn
806a07b719 🫏 better variable name 2024-04-03 14:55:35 +00:00
Michael Pöhn
53185ea2e7 🫏 appeace linter 2024-04-03 14:55:35 +00:00
Michael Pöhn
293caf5ff9 🪪 iOS fastlane screenshot support 2024-04-03 14:55:35 +00:00
Michael Pöhn
c166a8a2b7 🪄 split screenshot ingestion into separate function 2024-04-03 14:55:35 +00:00
Michael Pöhn
c1500e4ca1 🗨 iOS text metadata support
This change adds basic i18n support for parsing iOS fastlane metadata.
Currently supported:
 * name
 * subtitle (summary)
 * description
2024-04-03 14:55:35 +00:00
Hans-Christoph Steiner
d20e0adab4 Merge branch '1189-fdroid-link' into 'master'
Switch to generating fdroid.link links

Closes #1189

See merge request fdroid/fdroidserver!1459
2024-04-03 13:55:08 +00:00
Torsten Grote
faf1090214 Use fdroid.link for repo index page 2024-04-03 13:54:48 +00:00
Torsten Grote
be673c56cf Use fdroid.link for nightly README 2024-04-03 13:54:48 +00:00
Michael Pöhn
0ced053eaf Merge branch 'testOnly-check' into 'master'
check for <application android:testOnly="true">

See merge request fdroid/fdroidserver!1463
2024-04-03 13:49:47 +00:00
Hans-Christoph Steiner
9c65bed4a5 check for <application android:testOnly="true">
This adds a check for "testOnly" to the existing "debuggable" check, since
they are very similar.  We should really be refactoring all the checks into
a more reasonable setup.  Since "debuggable" and "testOnly" are both set in
the same place (`<application>` in _AndroidManifest.xml_) and are both set
by the same process (running debug builds), I thought it would be OK to
include both in the same place.  Plus it was a one-line change.
2024-04-03 13:47:04 +00:00
Michael Pöhn
0cf1749ec3 Merge branch 'publish-error-on-failed' into 'master'
publish: --error-on-failed to exit when signing/verifying fails

See merge request fdroid/fdroidserver!1464
2024-04-03 13:42:30 +00:00
Hans-Christoph Steiner
e269e41b12
publish: --error-on-failed to exit when signing/verifying fails
Since we have limited visibility into @CiaranG's signing server, it is hard
to make changes to the publishing process, especially ones that might break
@CiaranG's automation.  So `fdroid publish` mostly reports success by
moving an APK from unsigned/ to repo/.  In some cases, we want immediate
failure, like in CI.  So this adds `--error-on-failed` for that purpose.
2024-04-03 15:33:18 +02:00
Hans-Christoph Steiner
4c03082d14 Merge branch 'gradle' into 'master'
gradle 8.7

See merge request fdroid/fdroidserver!1460
2024-03-24 21:30:08 +00:00
linsui
1f28fce1ea gradle 8.7 2024-03-24 20:03:54 +08:00
Jochen Sprickerhof
6ab4b99a5f Merge branch 'jdk17' into 'master'
checkupdates: add a bookworm blocklist item

See merge request fdroid/fdroidserver!1458
2024-03-15 07:15:26 +00:00
linsui
082df1d9b6 checkupdates: add a bookworm blocklist item 2024-03-14 21:44:32 +08:00
Michael Pöhn
f7ca36a66b Merge branch 'appdirs' into 'master'
use appdirs to get easy cross-platform standard directories

See merge request fdroid/fdroidserver!1457
2024-03-14 12:44:10 +00:00
Hans-Christoph Steiner
6781525ddd use appdirs to get easy cross-platform standard directories
This is more important to get right now, with `fdroid install`, which
should work easily on all platforms.
2024-03-14 12:43:02 +00:00
Hans-Christoph Steiner
f003492574 Merge branch 'bookworm' into 'master'
Upgrade build server images to Bookworm

See merge request fdroid/fdroidserver!1439
2024-03-14 12:26:14 +00:00
proletarius101
ac4694fcd3
fix Could not initialize class org.codehaus.groovy.runtime.InvokerHelper
https://gitlab.com/proletarius101/fdroidserver/-/jobs/6068794117#L547
2024-03-14 13:14:41 +01:00
proletarius101
b20a14af09
fix unnecessary or invalid openjdk installation scripts 2024-03-14 13:14:41 +01:00
proletarius101
f2bdf5214a
install openjdk 11 from bullseye repo instead in the test cases 2024-03-14 13:14:41 +01:00
proletarius101
1bd35fc37f
upgrade basebox to 12.20231211.1 2024-03-14 13:14:41 +01:00
proletarius101
0a3f785254
drop gradle support before 7.3
debian bookworm supports only Java 17+, which is compatible with gradle 7.3+: https://docs.gradle.org/current/userguide/compatibility.html
2024-03-14 13:14:41 +01:00
proletarius101
a0a766cc8e
drop gradle support before 2.0
debian bullseye supports only Java 8+, which is compatible with gradle 2.0+: https://docs.gradle.org/current/userguide/compatibility.html
2024-03-14 13:14:41 +01:00
proletarius101
cf74ca5f56
update docker image tag 2024-03-14 13:14:41 +01:00
proletarius101
2fc9564ebe
use full base docker image 2024-03-14 13:14:40 +01:00
Licaon_Kter
5dc327e867
add missed file 2024-03-14 13:14:40 +01:00
Licaon_Kter
5733545972
fine tune purge 2024-03-14 13:14:40 +01:00
Licaon_Kter
27206162d4
Upgrade Buildserver VM to latest Debian (Bookworm) 2024-03-14 13:14:39 +01:00
Licaon_Kter
d31856b6c7
Upgrade Buildserver VM to latest Debian (Bookworm) 2024-03-14 13:14:35 +01:00
Licaon_Kter
f30dcf5069
Upgrade Buildserver VM to latest Debian (Bookworm) 2024-03-14 13:14:34 +01:00
Hans-Christoph Steiner
9105738427 Merge branch 'windows-path-split-fix' into 'master'
Fix path splitting error on Windows

See merge request fdroid/fdroidserver!1452
2024-03-13 19:46:08 +00:00
Sergey Zolotarev
6d71690946 Fix path splitting error on Windows 2024-03-13 19:44:44 +00:00
Hans-Christoph Steiner
980ff3c20a Merge branch 'fix_generic_whatsNew' into 'master'
Add unversioned whatsNew to index-v2 (Closes: #1202)

Closes #1202

See merge request fdroid/fdroidserver!1456
2024-03-13 18:11:00 +00:00
Jochen Sprickerhof
edb2d76e25
Add unversioned whatsNew to index-v2 (Closes: #1202)
copy_triple_t_store_metadata() can read the whatsNew from an unversioned
release-notes.txt. For v2 copy this to the latest build.
2024-03-13 06:40:33 +01:00
Hans-Christoph Steiner
b222275d77 Merge branch 'uri' into 'master'
scanner: update maven repo regex

See merge request fdroid/fdroidserver!1453
2024-03-12 07:57:11 +00:00
linsui
a002e46997 scanner: update maven repo regex 2024-03-12 07:57:11 +00:00
Hans-Christoph Steiner
07a0bd7314 Merge branch 'https-apt' into 'master'
gitlab-ci: always use HTTPS for apt repos

See merge request fdroid/fdroidserver!1450
2024-03-06 14:01:38 +00:00
Hans-Christoph Steiner
3560a2522a
gitlab-ci: docker:git has become stable, so switch to stable tag
When this job was implemented, it needed the "git" tag.  Now that it works,
still with the stable tag.
2024-03-06 14:51:19 +01:00
Hans-Christoph Steiner
7b45ea7898
gitlab-ci: always use HTTPS for apt repos
This has been in place in a number of other places and has proven stable,
so I'm introducing it here, since the "docker" job actually publishes
docker images that are publicly used.  So little painless security fixes
are worthwhile.
2024-03-06 14:50:51 +01:00
Hans-Christoph Steiner
2f556a9026 Merge branch 'net-install-tests' into 'master'
tests and code format from %"mirroring resilience" work

See merge request fdroid/fdroidserver!1451
2024-03-06 13:32:12 +00:00
Hans-Christoph Steiner
cff3364fdf split out mirrors data structure into standalone, tested function 2024-03-06 13:31:46 +00:00
Hans-Christoph Steiner
9749282b44 net: fix test_download_file_url_parsing
self.assertTrue(requests_get.called) will always be true because .called
will contain a MagicMock instance.
2024-03-06 13:31:46 +00:00
Hans-Christoph Steiner
7904f12d05 net: add test of automatic retries in download_file()
The existing logic from d1ddd525c in !1225 is confusing because it adds its
own retry loop on top of the retry mechanism that is built into requests.
So this test confirms that setting `download_file(retries=3)` actually
results in more than three retries.
2024-03-06 13:31:46 +00:00
Hans-Christoph Steiner
074dda4b61 use tiny entry.jar rather than large index-v1.jar for net test case 2024-03-06 13:31:46 +00:00
Hans-Christoph Steiner
261be20109 convert tests/testcommon.py to black code format 2024-03-06 13:31:46 +00:00
Hans-Christoph Steiner
617a9e75c7 convert install.py to black code format 2024-03-06 13:31:46 +00:00
Michael Pöhn
9dc14674f1 Merge branch 'nice-console-output' into 'master'
method to globally set logging to output nicely to the console

See merge request fdroid/fdroidserver!1449
2024-03-06 13:03:18 +00:00
Hans-Christoph Steiner
76d9eddb3a method to globally set logging to output nicely to the console
This will make all of the direct calls to logging level functions output
in a format that looks appropriate for the console. Previously, the default
output looked like it should be written to a log file.
2024-03-06 12:53:20 +00:00
Hans-Christoph Steiner
091fe9b260 Merge branch 'litecoin' into 'master'
fix litecoin address regex

See merge request fdroid/fdroidserver!1441
2024-02-28 08:01:03 +00:00
linsui
7913df25ba fix litecoin address regex 2024-02-28 08:00:39 +00:00
Hans-Christoph Steiner
c5d4b5b991 Merge branch 'nonfreenet-non-changeable' into 'master'
add 'non-changeable' to NonFreeNet description

See merge request fdroid/fdroidserver!1448
2024-02-21 17:31:58 +00:00
Nitai Sasson
8931e038d6 add 'non-changeable' to NonFreeNet description 2024-02-21 17:13:58 +01:00
Hans-Christoph Steiner
ba59241422 Merge branch 'refresh-scanner-in-buildserver-vm' into 'master'
build: pass --refresh-scanner thru to buildserver VM

See merge request fdroid/fdroidserver!1447
2024-02-16 15:36:34 +00:00
Hans-Christoph Steiner
04cedd1808 build: pass --refresh-scanner thru to buildserver VM 2024-02-16 11:43:42 +01:00
Hans-Christoph Steiner
35c373a473 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.6.4

See merge request fdroid/fdroidserver!1445
2024-02-14 17:41:46 +00:00
fdroid-bot
ec88cc627f gradle v8.6 2024-02-14 17:32:15 +00:00
Hans-Christoph Steiner
3c77ac66b1
gitlab-ci: revert to old config.py for servergitmirrors: job 2024-02-14 18:31:25 +01:00
Hans-Christoph Steiner
c794c0fe18 Merge branch 'fixup-1438' into 'master'
fixups from "feat: add servergitmirrors as a dict support"

See merge request fdroid/fdroidserver!1446
2024-02-14 17:12:17 +00:00
Hans-Christoph Steiner
4e0c721b04 fixups from "feat: add servergitmirrors as a dict support"
These slipped by in reviewing fdroidserver!1438
https://gitlab.com/fdroid/fdroidserver/-/jobs/6173435409
2024-02-14 18:10:29 +01:00
Hans-Christoph Steiner
094764398a Merge branch 'servergitmirrors-as-dict' into 'master'
feat: add servergitmirrors as a dict support

See merge request fdroid/fdroidserver!1438
2024-02-14 16:50:40 +00:00
proletarius101
947217549a feat: add servergitmirrors as a dict support 2024-02-14 16:50:39 +00:00
Hans-Christoph Steiner
12692b76b7 Merge branch 'safety-ignore-windows-only-CVE-2024-22190' into 'master'
safety: ignore CVE-2024-22190 it only affects Windows

See merge request fdroid/fdroidserver!1444
2024-02-14 16:49:50 +00:00
Hans-Christoph Steiner
b36153b06c
safety: ignore CVE-2024-22190 it only affects Windows
https://security-tracker.debian.org/tracker/CVE-2024-22190
2024-02-14 17:46:12 +01:00
Hans-Christoph Steiner
7462ed7283 Merge branch 'gradle' into 'master'
add gradle 8.6

See merge request fdroid/fdroidserver!1440
2024-02-05 13:23:45 +00:00
linsui
ac71bb07b8 add gradle 8.6 2024-02-05 13:23:13 +00:00
Hans-Christoph Steiner
ee764ff92e Merge branch 'scanner' into 'master'
scanner: refresh data without scanning

See merge request fdroid/fdroidserver!1437
2024-01-29 15:26:28 +00:00
linsui
2f313a0bd6 scanner: refresh data without scaning 2024-01-29 23:13:13 +08:00
Michael Pöhn
1c203ae643 Merge branch 'refresh_scanner-config' into 'master'
scanner: add refresh_config config item for buildserver

Closes #1184

See merge request fdroid/fdroidserver!1435
2024-01-25 22:40:23 +00:00
Hans-Christoph Steiner
031a130395 scanner: add refresh_config config item for buildserver
Includes some cosmetic changes from black.
2024-01-25 17:04:38 +01:00
Hans-Christoph Steiner
907dfd1c3c Merge branch 'suss-refresh' into 'master'
scanner: use the refreshed data

Closes #1184

See merge request fdroid/fdroidserver!1434
2024-01-25 13:11:21 +00:00
Hans-Christoph Steiner
d6aa3caaca
scanner: test of --refresh controls triggering a refresh 2024-01-25 14:03:46 +01:00
linsui
6fb2e07dda fdroid build: add --refresh-scanner option
Apply 1 suggestion(s) to 1 file(s)
2024-01-25 14:03:12 +01:00
linsui
fe7e4f8226 scanner: refresh data before loading data 2024-01-25 14:03:12 +01:00
Hans-Christoph Steiner
aa0b85955c Merge branch 'version' into 'master'
Fix "fdroid --version"

Closes #1164

See merge request fdroid/fdroidserver!1433
2024-01-25 12:00:30 +00:00
Gregor Düster
b9c7e8f63a Fix "fdroid --version"
Fixes https://gitlab.com/fdroid/fdroidserver/-/issues/1164 .

Helpful resource:
https://packaging.python.org/en/latest/guides/single-sourcing-package-version/
2024-01-25 12:00:05 +00:00
Hans-Christoph Steiner
7ade08e46d Merge branch 'updatesuss' into 'master'
Update default suss

See merge request fdroid/fdroidserver!1431
2024-01-25 11:40:32 +00:00
Hans-Christoph Steiner
1d9ec42758 scanner: update test counts based on new default rules
The new rules announce more things.
2024-01-25 12:31:05 +01:00
Hans-Christoph Steiner
681392d8c2 scanner: script to update default rules from SUSS 2024-01-25 11:51:22 +01:00
Licaon_Kter
ac6a08e10f Update default suss 2024-01-25 11:05:55 +01:00
Michael Pöhn
d60f36c30e Merge branch 'serverwebroot-as-dict' into 'master'
config: convert serverwebroot: to list-of-dicts format

See merge request fdroid/fdroidserver!1430
2024-01-24 10:46:04 +00:00
Hans-Christoph Steiner
810387a009 deploy: update_serverwebroots() for testable logic
This moves all of the serverwebroot: logic into a function, and adds tests.
I did this because I ran into issues in the logic in main():

Traceback (most recent call last):
  File "/builds/eighthave/fdroidserver/fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/builds/eighthave/fdroidserver/fdroidserver/__main__.py", line 230, in main
    raise e
  File "/builds/eighthave/fdroidserver/fdroidserver/__main__.py", line 211, in main
    mod.main()
  File "/builds/eighthave/fdroidserver/fdroidserver/deploy.py", line 753, in main
    s = serverwebroot.rstrip('/').split(':')
AttributeError: 'dict' object has no attribute 'rstrip'
2024-01-23 18:49:12 +01:00
Hans-Christoph Steiner
fbf097d390 deploy: update_serverwebroot() works w/o options/config
Since update_serverwebroot() is part of the public API, this function should
work without setting `fdroidserver.deploy.options` or
`fdroidserver.deploy.config`.
2024-01-23 17:48:47 +01:00
Hans-Christoph Steiner
7a656d45e3 config: convert serverwebroot: to list-of-dicts format
This allows for more metadata about the server and deploy mode.
2024-01-22 22:11:49 +01:00
Hans-Christoph Steiner
3f50372d8d config: test cases for serverwebroot: with string and list 2024-01-22 22:11:49 +01:00
Michael Pöhn
5983962107 Merge branch 'biplist' into 'master'
gitlab-ci: install biplist if available, otherwise skip test_parse_ipa

See merge request fdroid/fdroidserver!1429
2024-01-11 16:21:32 +00:00
Hans-Christoph Steiner
dc7170e709 gitlab-ci: install biplist if available, otherwise skip test_parse_ipa
Fedora does not have a biplist package.
2024-01-11 16:02:06 +01:00
Hans-Christoph Steiner
6eee83db47 run black on new .ipa test cases 2024-01-11 16:02:06 +01:00
Hans-Christoph Steiner
22d3ba81dd Merge branch 'ipa-support' into 'master'
minimal IPA support

Closes #1067

See merge request fdroid/fdroidserver!1413
2024-01-11 11:13:48 +00:00
Michael Pöhn
8b5a61bb25 ⛰️ make ipa related test cases more robust 2024-01-11 12:02:53 +01:00
Michael Pöhn
881943a0db 🥔 install biplist for ci tests
biplist is an optional python dependency required for processing iOS
apps. (.ipa files)
2024-01-11 12:02:52 +01:00
Michael Pöhn
7211e9f9b4 🍲 add unit test for update.scan_repo_for_ipas 2024-01-11 11:34:21 +01:00
Michael Pöhn
995118bcd2 🥔 add strapped IPA file and test for parse_ipa 2024-01-11 11:34:21 +01:00
Michael Pöhn
c288317530 🪨 version string conversion: error handling+tests 2024-01-11 11:34:21 +01:00
Michael Pöhn
3ee91d1777 🧴 force android package names for IPAs for now 2024-01-11 11:34:21 +01:00
Michael Pöhn
ea9374ecf6 🛠️ update.py: finish minimal IPA support
This add a few missing pieces to get IPA support working. (added and
lastUpdated dates + caching for ipa files)
2024-01-11 11:34:05 +01:00
Jochen Sprickerhof
60371093e2 Make python3-biplist optional 2024-01-11 11:34:00 +01:00
Jochen Sprickerhof
e3d319f30b Update with suggestions 2024-01-11 11:33:25 +01:00
Jochen Sprickerhof
7d06608531 Move version_string_to_int into separate function 2024-01-11 11:33:25 +01:00
Jochen Sprickerhof
dfbb2df839 Use CFBundleShortVersionString for version code 2024-01-11 11:33:25 +01:00
Jochen Sprickerhof
a987341c37 ipa: add Usage permissions 2024-01-11 11:33:25 +01:00
Jochen Sprickerhof
77daf6feb6 Add Apple ipa support (Closes: #1067) 2024-01-11 11:33:25 +01:00
Hans-Christoph Steiner
11d21d6b18
gitlab-ci: bump base commit in metadata_v0 job to get rev-parse fix
!1427
2024-01-11 11:33:00 +01:00
Hans-Christoph Steiner
50aa35772b Merge branch 'fix-ci-pycountry' into 'master'
gitlab-ci: include pycountry in all master-only jobs

See merge request fdroid/fdroidserver!1428
2024-01-10 17:46:53 +00:00
Hans-Christoph Steiner
69ccce0644
gitlab-ci: include pycountry in all master-only jobs
follow up from !1418
2024-01-09 16:53:25 +01:00
Hans-Christoph Steiner
79bb763986 Merge branch 'fix_git_describe' into 'master'
Use git rev-parse instead of describe

See merge request fdroid/fdroidserver!1427
2024-01-09 14:04:26 +00:00
Hans-Christoph Steiner
0849e664e7 metadata_v0: use git rev-parse instead of git describe 2024-01-09 14:54:38 +01:00
Jochen Sprickerhof
d3abb74c88
Use git rev-parse instead of describe
We only want the hash.
2024-01-09 13:15:23 +01:00
Hans-Christoph Steiner
252af24cc3 Merge branch 'lint-config-files' into 'master'
lint config files

See merge request fdroid/fdroidserver!1418
2024-01-09 09:41:35 +00:00
Hans-Christoph Steiner
d7a673523d "field will be in random order" only applies to config.py
YAML only has lists, no sets or tuples, so this warning can only ever make
any sense when config.py is the active config file.
2024-01-09 09:32:37 +00:00
Hans-Christoph Steiner
a1d9d9d885 switch to loading mirrors.yml with ruamel to get YAML 1.2 support 2024-01-09 09:32:37 +00:00
Hans-Christoph Steiner
96fc49d7fc lint: check syntax of countryCode: fields for mirrors 2024-01-09 09:32:37 +00:00
Hans-Christoph Steiner
4511da68b9 lint: support linting config files 2024-01-09 09:32:37 +00:00
Hans-Christoph Steiner
3f35b0b361 lint: do yamllint install check once globally 2024-01-09 09:32:37 +00:00
Hans-Christoph Steiner
a3b7c5ad12 Merge branch 'parse-srclibs' into 'master'
handle all cases of @ in srclibs, and remove duplicate code

See merge request fdroid/fdroidserver!1424
2024-01-08 15:02:34 +00:00
Hans-Christoph Steiner
6faaae9431 always parse srclib entries with parse_srclib_spec()
Remove duplicated code.
2024-01-07 10:50:29 +01:00
Hans-Christoph Steiner
15b983f48d handle all cases of @ in srclibs
expands on fdroidserver!1422
2024-01-07 10:50:29 +01:00
Hans-Christoph Steiner
599bd5a3a1 Merge branch 'srclib' into 'master'
allow @ in srclib tag

See merge request fdroid/fdroidserver!1422
2024-01-06 21:46:33 +00:00
linsui
2331bcfe15 all @ in srclib tag 2023-12-19 15:49:17 +08:00
Hans-Christoph Steiner
83cd04f3b6 Merge branch 'macOS' into 'master'
GitLab CI: add shellcheck, androguard <4, silence irrelevant bandit error, enable macOS job

See merge request fdroid/fdroidserver!1421
2023-12-15 08:47:42 +00:00
Hans-Christoph Steiner
8c8b9021f5 tests/run-tests: disable nightly.TestCase on non-Linux until its ported 2023-12-15 09:15:19 +01:00
Hans-Christoph Steiner
52f27aea75 tests/run-tests: temp disable git mirror test on non-Linux
I looked into this but couldn't figure it out.  It is the only failing
test on macOS, so it seemed worth just adding this single quirk for now.
2023-12-15 09:15:19 +01:00
Hans-Christoph Steiner
d9288c8613 gitlab-ci: add macOS job based on only Travis job 2023-12-15 09:14:50 +01:00
Hans-Christoph Steiner
2f84ce36da androguard 4 came out, and has breaking changes 2023-12-15 08:40:27 +01:00
Hans-Christoph Steiner
2d5770985f gitlab-ci: silence irrelevant bandit error
This SSH connection is only ever to the Vagrant VM on the same machine.

>> Issue: [B507:ssh_no_host_key_verification] Paramiko call with policy set to automatically trust the unknown host key.
   Severity: High   Confidence: Medium
   CWE: CWE-295 (https://cwe.mitre.org/data/definitions/295.html)
   More Info: https://bandit.readthedocs.io/en/1.7.6/plugins/b507_ssh_no_host_key_verification.html
   Location: ./fdroidserver/build.py:104:8
103	        sshs = paramiko.SSHClient()
104	        sshs.set_missing_host_key_policy(paramiko.AutoAddPolicy())
105	        sshs.connect(sshinfo['hostname'], username=sshinfo['user'],
2023-12-15 08:40:27 +01:00
Hans-Christoph Steiner
865673964e gitlab-ci: enable shellcheck on tests/run-tests 2023-12-15 08:40:01 +01:00
Hans-Christoph Steiner
9d8c098f74 gitlab-ci: add shellcheck to gradlew-fdroid checks 2023-12-15 08:39:13 +01:00
Hans-Christoph Steiner
45d1363a0e tests/run-tests: use $sed var for all calls that need GNU sed
FreeBSD, macOS, and others come with BSD sed, which does not support all
the things that GNU sed does.  Also, BSD rmdir does not have any extended
options like --ignore-fail-on-non-empty.
2023-12-13 22:30:19 +01:00
Michael Pöhn
bf73477d4c Merge branch 'port-to-vendored-looseversion' into 'master'
port to vendored looseversion lib

See merge request fdroid/fdroidserver!1419
2023-12-08 11:18:30 +00:00
Hans-Christoph Steiner
e2949cbd61 port to looseversion 2023-12-08 10:48:01 +01:00
Hans-Christoph Steiner
4b208e438e gitlab-ci: gradle job needs python3-packaging now 2023-12-08 10:42:29 +01:00
Hans-Christoph Steiner
ad9cabdab9 add looseversion license information to vendored file 2023-12-08 10:42:29 +01:00
Hans-Christoph Steiner
a1a88d39cf download looseversion to vendor
e1a5a176a9/src/looseversion/__init__.py
2023-12-08 10:42:27 +01:00
Hans-Christoph Steiner
c4424a5e1a Merge branch 'python3.12' into 'master'
Add support for Python 3.12

See merge request fdroid/fdroidserver!1403
2023-12-08 07:30:48 +00:00
Andrew Gunnerson
679ba6f552
Add support for Python 3.12
Python 3.12 completely removed the builtin `distutils` module. This
commit replaces its use with the `packaging` package, which is an
external dependency, but maintained by the Python developers.

Signed-off-by: Andrew Gunnerson <accounts+gitlab@chiller3.com>
2023-12-07 18:15:05 -05:00
Michael Pöhn
2fb8fc4879 Merge branch 'config-mirrors-yml' into 'master'
establish config/mirrors.yml as a way to set up mirrors

See merge request fdroid/fdroidserver!1417
2023-12-07 16:34:14 +00:00
Hans-Christoph Steiner
4536b130df index: add datatype checking to mirrors: and config/mirrors.yml 2023-12-07 17:25:15 +01:00
Hans-Christoph Steiner
6d541e3ef6
establish config/mirrors.yml as a way to set up mirrors
The mirrors: entry in config.yml is great for quick access and shorter
mirror lists.  Now that we are adding a lot more metadata to the mirrors,
including potentially the full text of the privacy policy, having this
in its own file should make these cases easier to manage.
2023-12-07 14:38:26 +01:00
Hans-Christoph Steiner
7a0dad6dfc Merge branch 'master' into 'master'
Support `Uri.create()` syntax for maven repositories

Closes #1180

See merge request fdroid/fdroidserver!1412
2023-12-07 09:58:53 +00:00
Axel López
825f969652 Support Uri.create() syntax for maven repositories 2023-12-07 01:30:59 +00:00
Hans-Christoph Steiner
4a8b6432a4 Merge branch 'lint' into 'master'
lint: remove check_bulletes_lists

See merge request fdroid/fdroidserver!1416
2023-12-06 16:01:22 +00:00
linsui
2081a9f2d2 lint: remove check_bulletes_lists 2023-12-06 23:35:55 +08:00
Michael Pöhn
baf4cd6b61 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.5

See merge request fdroid/fdroidserver!1415
2023-12-01 13:29:37 +00:00
fdroid-bot
685983bfab gradle v8.5 2023-11-30 19:13:01 +00:00
Hans-Christoph Steiner
a7142f787c Merge branch 'fix-bandit-lint' into 'master'
🩹 fix bandit warning

See merge request fdroid/fdroidserver!1414
2023-11-30 19:12:29 +00:00
Michael Pöhn
ac2a3896aa
🩹 fix bandit warning
F-Droid server doesn't fetch pip dependencies directly from mercurial/hg
repositories. So https://data.safetycli.com/v/62044/f17/ is not
affecting us. Hence we can ingore it.
2023-11-30 17:49:55 +01:00
Hans-Christoph Steiner
304caa4b42 Merge branch 'deinit' into 'master'
add --force to git deinit

See merge request fdroid/fdroidserver!1411
2023-11-28 10:02:03 +00:00
linsui
e2e7782ef3 add --force to git deinit 2023-11-25 22:11:19 +08:00
Michael Pöhn
9b38690df6 Merge branch 'port-test-jq-to-gnu-sed' into 'master'
remove jq dependency in the tests, port to GNU sed

See merge request fdroid/fdroidserver!1410
2023-11-23 12:29:25 +00:00
Hans-Christoph Steiner
f13d9235ce remove jq dependency in the tests, port to GNU sed
This avoids spreading the jq dependency to more places, like:

https://gitlab.com/eighthave/ansible-role-install-fdroidserver-dependencies/-/jobs/5559798360

And is helpful when porting to non-Debian platforms.
2023-11-23 12:24:49 +00:00
Michael Pöhn
4b5dd72674 Merge branch 'ruamel' into 'master'
set ruamel.yaml version to older than 1.17.22

See merge request fdroid/fdroidserver!1389
2023-11-23 12:24:32 +00:00
linsui
6a7a6e310b set ruamel.yaml version to older than 1.17.22
Newer version changed the behavior
2023-11-23 12:17:56 +00:00
Jochen Sprickerhof
ecb6b599b6 Merge branch 'remove_glay_repotrunk' into 'master'
Remove --gplay option and UpdateCheckMode "RepoTrunk"

See merge request fdroid/fdroidserver!1402
2023-11-21 07:27:08 +00:00
Gregor Düster
b5424d40f1 [checkupdates] Remove UpdateCheckMode "RepoTrunk"
It's unclear whether this still works and we're not planning to maintain
it.
2023-11-21 07:18:17 +00:00
Gregor Düster
81fdba452a [checkupdates] Remove --gplay option
It's unclear whether this still works and we're not planning to maintain
it.
2023-11-21 07:18:17 +00:00
Jochen Sprickerhof
cbfb12f917 Merge branch 'revert--filter-blob-none' into 'master'
Revert "Clone without blobs to save space"

Closes #1177

See merge request fdroid/fdroidserver!1409
2023-11-20 09:23:21 +00:00
Hans-Christoph Steiner
3e9f27612e Revert "Clone without blobs to save space" !1382
This seems to make git ignore the _fsck skipList_ files.

This reverts commit 24ea1f6852.

closes #1177
fdroid-bootstrap-buildserver!34
!1408
2023-11-20 10:07:05 +01:00
Hans-Christoph Steiner
79adc6f57a Merge branch 'fetchsrclib' into 'master'
fetch_srclib: fetch source code

See merge request fdroid/fdroidserver!1407
2023-11-17 10:46:06 +00:00
linsui
5ae15532f0 fetch_srclib: fetch source code 2023-11-17 10:45:53 +00:00
Hans-Christoph Steiner
cbbb255551 Merge branch 'python3.12_docker' into 'master'
buildserver: Add python3-packaging dependency

See merge request fdroid/fdroidserver!1406
2023-11-17 09:16:54 +00:00
Andrew Gunnerson
f4f1de941c
buildserver: Add python3-packaging dependency
Signed-off-by: Andrew Gunnerson <accounts+gitlab@chiller3.com>
2023-11-15 18:43:58 -05:00
Jochen Sprickerhof
5751a50f21 Merge branch 'deinit' into 'master'
deinit git submodule

See merge request fdroid/fdroidserver!1404
2023-11-15 14:02:14 +00:00
linsui
f99f430e9e deinit git submodule 2023-11-14 01:06:49 +08:00
Hans-Christoph Steiner
f14efd849c Merge branch 'install-android-m2repository-without-sudo' into 'master'
allow gradle/sdkmanager to install extras;android;m2repository

Closes #1169

See merge request fdroid/fdroidserver!1399
2023-11-09 12:26:07 +00:00
Hans-Christoph Steiner
8aad2dd0c3 allow gradle/sdkmanager to install extras;android;m2repository
closes #1169
2023-11-09 12:25:33 +00:00
Hans-Christoph Steiner
79d69696a4 Merge branch 'clone_without_blobs' into 'master'
Clone without blobs to save space

See merge request fdroid/fdroidserver!1382
2023-11-09 12:22:20 +00:00
sim
24ea1f6852 Clone without blobs to save space 2023-11-09 12:13:29 +00:00
Jochen Sprickerhof
bb5fc0a380 Merge branch 'fixup_more_docstrings' into 'master'
[docs] Remove unnecessary use of Union

See merge request fdroid/fdroidserver!1401
2023-11-06 08:46:05 +00:00
Gregor Düster
81fea25509
[docs] Remove unnecessary use of Union 2023-10-26 09:17:43 +02:00
Jochen Sprickerhof
f4b10cf839 Merge branch 'more_docstrings' into 'master'
[checkupdates] Add more docstrings

See merge request fdroid/fdroidserver!1400
2023-10-23 08:54:38 +00:00
Gregor Düster
02b855da5e
[docs] Start utilising intersphinx 2023-10-22 21:27:08 +02:00
Gregor Düster
f238470855
[docs] Put type annotations in type hints instead of docstring 2023-10-22 21:01:27 +02:00
Gregor Düster
7b715bb2c9
[docs] Enable intersphinx 2023-10-22 20:43:52 +02:00
Gregor Düster
5503a05ef6
[checkupdates] Add more docstrings 2023-10-22 19:19:56 +02:00
Hans-Christoph Steiner
d036d5be36 Merge branch 'fix-typo-build-py' into 'master'
Fix typo in build.py

See merge request fdroid/fdroidserver!1398
2023-10-10 14:26:52 +00:00
cvzi
af1c5d4e5d Fix typo in build.py
encoutered -> encountered
2023-10-10 12:14:20 +00:00
Jochen Sprickerhof
3f8c3cdf18 Merge branch 'safety-ignore-patched-cves' into 'master'
safety: ignore CVEs patched in Debian

See merge request fdroid/fdroidserver!1397
2023-10-10 07:43:47 +00:00
Hans-Christoph Steiner
667567abb8
safety: ignore CVEs patched in Debian 2023-10-10 09:33:51 +02:00
Hans-Christoph Steiner
7af54754e6 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.6.3

See merge request fdroid/fdroidserver!1396
2023-10-10 07:27:00 +00:00
fdroid-bot
1ddc448f15 gradle v8.4 2023-10-10 07:19:29 +00:00
Hans-Christoph Steiner
608e2d0839 Merge branch 'gradle84' into 'master'
Gradle 8.4

See merge request fdroid/fdroidserver!1395
2023-10-10 07:18:54 +00:00
Licaon_Kter
2a33567577 Gradle 8.4 2023-10-10 07:18:42 +00:00
Hans-Christoph Steiner
113bf3a769 Merge branch 'fix_logging' into 'master'
Ignore encoding errors in logs

See merge request fdroid/fdroidserver!1394
2023-10-10 07:16:15 +00:00
Jochen Sprickerhof
49c415424d
Ignore encoding errors in logs
Found while compiling io.privatestorage.privatestoragemobile_9:

Traceback (most recent call last):
  File "/home/fdroid/fdroidserver/fdroidserver/build.py", line 1053, in main
    if trybuild(app, build, build_dir, output_dir, log_dir,
  File "/home/fdroid/fdroidserver/fdroidserver/build.py", line 813, in trybuild
    build_server(app, build, vcs, build_dir, output_dir, log_dir, force)
  File "/home/fdroid/fdroidserver/fdroidserver/build.py", line 253, in build_server
    logging.debug("buildserver > " + str(line, 'utf-8').rstrip())
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfa in position 8: invalid start byte
2023-09-27 17:41:26 +02:00
Hans-Christoph Steiner
047819d34f Merge branch 'weblate' into 'master'
Sync translations with Weblate

See merge request fdroid/fdroidserver!1393
2023-09-22 08:23:53 +00:00
Gregor Düster
d6187679b6
locale/ro: Fix template string 2023-09-22 09:37:33 +02:00
Yaron Shahrabani
a2f9ca4bf4
Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>
Currently translated at 4.5% (25 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/he/
2023-09-21 14:23:37 +00:00
Xiang Heng Wei
5dd325941c
Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>
Currently translated at 79.5% (439 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2023-09-21 14:23:37 +00:00
Bai
edfe52a5eb
Translated using Weblate: Turkish (tr) by Bai <batuhanakkurt000@gmail.com>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
2023-09-21 14:23:36 +00:00
Random
376209dcca
Translated using Weblate: Italian (it) by Random <random-r@users.noreply.hosted.weblate.org>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2023-09-21 14:23:36 +00:00
Random
e2ba75aa51
Translated using Weblate: Italian (it) by Random <random-r@users.noreply.hosted.weblate.org>
Currently translated at 96.7% (534 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2023-09-21 14:23:35 +00:00
Random
36cadf0103
Translated using Weblate: Italian (it) by Random <random-r@users.noreply.hosted.weblate.org>
Currently translated at 96.5% (533 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2023-09-21 14:23:34 +00:00
The Cats
95e85c2a86
Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
2023-09-21 14:23:34 +00:00
Simona Iacob
3761e3368c
Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>
Currently translated at 95.1% (525 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
2023-09-21 14:23:33 +00:00
HM
c26f0d0da8
Translated using Weblate: Persian (fa) by HM <goodlinuxuser@chmail.ir>
Currently translated at 7.7% (43 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
2023-09-21 14:23:33 +00:00
The Cats
fb36179919
Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>
Currently translated at 96.9% (535 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
2023-09-21 14:23:32 +00:00
coronabond
84839b5914
Translated using Weblate: Italian (it) by coronabond <coronabond@airmail.cc>
Currently translated at 96.3% (532 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2023-09-21 14:23:31 +00:00
gallegonovato
1fe77bb34f
Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2023-09-21 14:23:31 +00:00
Translator
3a5374be9d
Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 100.0% (552 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2023-09-21 14:23:30 +00:00
gallegonovato
1603f00ab4
Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 97.8% (540 of 552 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2023-09-21 14:23:30 +00:00
John Donne
8164f3d13f
Translated using Weblate: French (fr) by John Donne <akheron@zaclys.net>
Currently translated at 99.0% (547 of 552 strings)

Co-authored-by: John Donne <akheron@zaclys.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:29 +00:00
zhiqi
348b4ac19b
Translated using Weblate: Chinese (Simplified) (zh_Hans) by zhiqi <lzqlzq21@gmail.com>
Currently translated at 76.4% (422 of 552 strings)

Co-authored-by: zhiqi <lzqlzq21@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:28 +00:00
Stephan Paternotte
5f1740ebc8
Translated using Weblate: Dutch (nl) by Stephan Paternotte <stephan@paternottes.net>
Currently translated at 3.6% (20 of 552 strings)

Co-authored-by: Stephan Paternotte <stephan@paternottes.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nl/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:28 +00:00
Mirko Di
8acc82a11c
Translated using Weblate: Italian (it) by Mirko Di <mirko@mirkodi.eu>
Currently translated at 96.3% (532 of 552 strings)

Co-authored-by: Mirko Di <mirko@mirkodi.eu>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:27 +00:00
Kingo Bingo
8ee10c9499
Translated using Weblate: Chinese (Simplified) (zh_Hans) by Kingo Bingo <bingokingosoft@gmail.com>
Currently translated at 75.9% (419 of 552 strings)

Co-authored-by: Kingo Bingo <bingokingosoft@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:26 +00:00
ssantos
7396c77474
Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (552 of 552 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:26 +00:00
abe1242
218db99769
Translated using Weblate: Malayalam (ml) by abe1242 <abmdn1242@gmail.com>
Currently translated at 1.0% (6 of 552 strings)

Co-authored-by: abe1242 <abmdn1242@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:25 +00:00
C. Rüdinger
318010649f
Translated using Weblate: German (de) by "C. Rüdinger" <Mail-an-CR@web.de>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:25 +00:00
The Cats
f6cdeadb1f
Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>
Currently translated at 96.7% (534 of 552 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>

Currently translated at 95.8% (529 of 552 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>

Currently translated at 95.1% (525 of 552 strings)

Co-authored-by: The Cats <philosoph@danwin1210.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:24 +00:00
Davide Neri
b167f6b3ee
Translated using Weblate: Italian (it) by Davide Neri <davnerix@gmail.com>
Currently translated at 96.1% (531 of 552 strings)

Translated using Weblate: Italian (it) by Davide Neri <davnerix@gmail.com>

Currently translated at 96.0% (530 of 552 strings)

Co-authored-by: Davide Neri <davnerix@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:23 +00:00
gallegonovato
2029b5a107
Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 95.1% (525 of 552 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:23 +00:00
Rex_sa
0fe7c5ef1f
Translated using Weblate: Arabic (ar) by Rex_sa <rex.sa@pm.me>
Currently translated at 3.2% (18 of 552 strings)

Translated using Weblate: Arabic (ar) by Rex_sa <rex.sa@pm.me>

Currently translated at 2.7% (15 of 552 strings)

Co-authored-by: Rex_sa <rex.sa@pm.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ar/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:22 +00:00
Translator
ed6da709d4
Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 97.8% (540 of 552 strings)

Co-authored-by: Translator <kvb@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:22 +00:00
random r
eb11af9226
Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 92.7% (512 of 552 strings)

Co-authored-by: random r <epsilin@yopmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:21 +00:00
Andrey
fe44aa2a21
Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:20 +00:00
Ihor Hordiichuk
7c0a2e3508
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:20 +00:00
Fjuro
1824605730
Translated using Weblate: Czech (cs) by Fjuro <ifjuro@proton.me>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Fjuro <ifjuro@proton.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:19 +00:00
Agnieszka C
36195e14e6
Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:18 +00:00
Макар Разин
65f4f489a8
Translated using Weblate: Belarusian (be) by Макар Разин <makarrazin14@gmail.com>
Currently translated at 7.6% (42 of 552 strings)

Added translation using Weblate: Belarusian (be) by Макар Разин <makarrazin14@gmail.com>

Translated using Weblate: Russian (ru) by Макар Разин <makarrazin14@gmail.com>

Currently translated at 100.0% (552 of 552 strings)

Translated using Weblate: Ukrainian (uk) by Макар Разин <makarrazin14@gmail.com>

Currently translated at 99.8% (551 of 552 strings)

Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/be/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:18 +00:00
Eric
6a137f5e6a
Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 75.7% (418 of 552 strings)

Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:17 +00:00
Mehrab Poladov
35fedfb37f
Translated using Weblate: Azerbaijani (az) by Mehrab Poladov <thepoladov@protonmail.com>
Currently translated at 0.1% (1 of 552 strings)

Added translation using Weblate: Azerbaijani (az) by Mehrab Poladov <thepoladov@protonmail.com>

Co-authored-by: Mehrab Poladov <thepoladov@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/az/
Translation: F-Droid/F-Droid Server
2023-09-21 14:23:16 +00:00
Hans-Christoph Steiner
c02a194978 Merge branch 'fix_categories' into 'master'
Add default locale for generated categories

See merge request fdroid/fdroidserver!1390
2023-09-21 14:23:07 +00:00
Jochen Sprickerhof
521ff4fe17 Add default locale for generated categories
The client expects at least a name to be set.

Regression of 2c566cf6.
2023-09-21 14:14:06 +00:00
Hans-Christoph Steiner
b5724f507b Merge branch 'licaon-kter-master-patch-70325' into 'master'
Lint 'main' too as it gains popularity

See merge request fdroid/fdroidserver!1392
2023-09-21 13:25:05 +00:00
Licaon_Kter
4d0117d54c fix lint 2023-09-21 13:16:49 +00:00
Licaon_Kter
4a9b69a720 Lint 'main' too 2023-09-21 13:16:49 +00:00
Michael Pöhn
aaf58826c0 Merge branch 'test_sdk_exists' into 'master'
test_sdk_exists to be based on apksigner, that's the requirement

See merge request fdroid/fdroidserver!1391
2023-09-21 13:15:09 +00:00
Hans-Christoph Steiner
17cb026d97 safety: ignore 60350, it is being handled in Debian
* https://security-tracker.debian.org/tracker/CVE-2023-40267
2023-09-20 10:10:15 +02:00
Hans-Christoph Steiner
3757add164 test_sdk_exists to be based on apksigner, that's the requirement
Before, lots of pieces of the Android SDK were required for fdroidserver to
operate, like aapt, zipalign, etc.  Now, apksigner is the only requirement.

%"support APK Signature v2+"
!889
2023-09-17 23:31:07 +02:00
Hans-Christoph Steiner
b470ad2a6f
Merge branch 'error-messages-and-categories' into 'master'
error messages and categories

Closes #1137

See merge request fdroid/fdroidserver!1384
2023-09-08 08:54:50 +00:00
Hans-Christoph Steiner
48559ecec5 category with no apps should be ignored, even if defined in config
https://gitlab.com/fdroid/fdroidclient/-/issues/2619#note_1421280589

The test needed to change because the test index files contained category
definitions that were not ever used in the "copy tests/repo, generate java/gpg
keys, update, and gpgsign" test in tests/run-tests.
2023-09-08 10:45:53 +02:00
Hans-Christoph Steiner
2c566cf68f update: add all categories in metadata files to repo definitions
!1366 makes it so categories are now defined by the repo. Categories can be
defined in the config so that lint has a list of categories to enforce. This
also provides a place for localization and icons for the categories. The old
way of defining categories was just listing them in app metadata files. This
restores that way of functioning when using index-v2.

closes #1137
2023-09-08 10:45:51 +02:00
Hans-Christoph Steiner
64b8ee772c throw useful error if a config YAML file is not a dict 2023-09-08 10:42:27 +02:00
Hans-Christoph Steiner
00aa595f37 deploy: give useful error if rsync is not installed 2023-09-08 10:42:27 +02:00
Hans-Christoph Steiner
ed50de055a
Merge branch 'gradlew-fdroid-8.2' into 'master'
gradlew-fdroid: add key/values for Gradle Android Plugin 8.3, 8.2 and 8.1

See merge request fdroid/fdroidserver!1386
2023-09-08 08:35:29 +00:00
Hans-Christoph Steiner
207859f160 gradlew-fdroid: add key/values for Gradle Android Plugin 8.3/8.2/8.1 2023-09-08 08:35:21 +00:00
Hans-Christoph Steiner
38c0463bd0
Merge branch 'indent' into 'master'
metadata: set mapping indentation to 2

Closes #1154

See merge request fdroid/fdroidserver!1385
2023-09-08 08:26:38 +00:00
linsui
8188bb6bfa metadata: set mapping indentation to 2 2023-09-08 08:18:27 +00:00
Jochen Sprickerhof
c3331b1c58 Merge branch 'gradlew-8.3' into 'master'
Gradle 8.3

See merge request fdroid/fdroidserver!1388
2023-08-21 12:26:40 +00:00
cvzi
f0aa3bae66
Gradle 8.3 2023-08-19 00:17:21 +02:00
Michael Pöhn
8bba38f5dc Merge branch 'config-files-error' into 'master'
log error if config file name is not known; standardize Release Channels config filename

See merge request fdroid/fdroidserver!1369
2023-07-25 14:39:34 +00:00
Hans-Christoph Steiner
9df8caca07 log error if config file name is not known
The case of Anti-Features keys and filenames is quite confusing.  I was
confused to find out that config/antiFeatures.yml is correct, while
config/antifeatures.yml is nothing.  This throws an error message to make
that clear.
2023-07-25 14:31:09 +00:00
Hans-Christoph Steiner
4e28fad55a use constants for names used in the config dict
Hopefully this helps with the Anti-Features case confusion:
* antifeatures
* antiFeatures
* AntiFeatures
2023-07-25 14:31:09 +00:00
Hans-Christoph Steiner
190a95ab17 use consistent name for releaseChannels config file 2023-07-25 14:31:09 +00:00
Jochen Sprickerhof
04aa9d2a06 Merge branch 'mirror-rsync-timeout' into 'master'
mirror-to-mirror.sh: set 1h timeout for rsync runs

See merge request fdroid/fdroidserver!1381
2023-07-25 13:03:41 +00:00
Hans-Christoph Steiner
ce77a33228
mirror-to-mirror.sh: set 1h timeout for rsync runs
This script is run every 10 minutes or so to push new files to the primary
mirrors.  It sets a lock to prevent multiple copies from running in
parallel.  Yesterday, one rsync process got stuck and never exited, thereby
preventing this script from running.  Adding a 1h timeout seems like a safe
way to deal with this kind of problem.  This would not deal with rsync
getting so stuck that it fails to heed the timeout, hopefully that's not an
issue.
2023-07-25 14:52:29 +02:00
Hans-Christoph Steiner
c88eb253f6 Merge branch 'importtemplate' into 'master'
Import - add more template content

See merge request fdroid/fdroidserver!1378
2023-07-12 13:45:10 +00:00
Licaon_Kter
a756ce0b1a Import - add more template content 2023-07-12 13:45:10 +00:00
Hans-Christoph Steiner
15adec73ca Merge branch 'licaon-kter-master-patch-54084' into 'master'
Gradle 8.2.1

See merge request fdroid/fdroidserver!1380
2023-07-12 13:33:52 +00:00
Licaon_Kter
d040fc518a Gradle 8.2.1 2023-07-12 13:33:46 +00:00
Hans-Christoph Steiner
85d87aea14 Merge branch 'alex2-master-patch-82183' into 'master'
Don't specify a release candidate in version constraint for androguard dependency

See merge request fdroid/fdroidserver!1379
2023-07-10 10:19:59 +00:00
Alex Gaynor
5660e7089d Don't specify a release candidate in version constraint for androguard dependency
This causes pip to include pre-releases for all dependencies, which is unfortunate in many cases.
2023-07-08 16:24:00 +00:00
Hans-Christoph Steiner
e1a108fd71 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.2

See merge request fdroid/fdroidserver!1377
2023-07-04 08:27:43 +00:00
fdroid-bot
fda149821a gradle v8.2 2023-07-04 08:19:00 +00:00
Hans-Christoph Steiner
3f02072f20 Merge branch 'licaon-kter-master-patch-84619' into 'master'
Gradle 8.2

See merge request fdroid/fdroidserver!1375
2023-07-04 08:18:33 +00:00
Licaon_Kter
f9d9abf98d Gradle 8.2 2023-07-04 08:18:21 +00:00
Hans-Christoph Steiner
61925ac4f4 Merge branch 'fix-ci' into 'master'
two small fixes for failing GitLab CI jobs

See merge request fdroid/fdroidserver!1376
2023-07-04 08:18:05 +00:00
Hans-Christoph Steiner
132e953c8c update: use proper name for PIL image filter ANTIALIAS -> LANCZOS
ANTIALIAS was made an alias of LANCZOS in 2.7.0:
https://pillow.readthedocs.io/en/stable/releasenotes/2.7.0.html#antialias-renamed-to-lanczos

The ANTIALIAS alias was removed in Pillow 10.0.0:
https://pillow.readthedocs.io/en/stable/deprecations.html
2023-07-03 17:44:47 +02:00
Hans-Christoph Steiner
3db90b65fb gitlab-ci: switch archlinux job to virtualenv
https://gitlab.com/fdroid/fdroidserver/-/jobs/4466370098

$ pip install -e .[test]
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
    python-xyz', where xyz is the package you are trying to
    install.

    If you wish to install a non-Arch-packaged Python package,
    create a virtual environment using 'python -m venv path/to/venv'.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.

    If you wish to install a non-Arch packaged Python application,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. Make sure you have python-pipx
    installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
2023-07-03 16:17:08 +02:00
Hans-Christoph Steiner
255258f1c8 Merge branch 'lint-categories-from-config' into 'master'
Lint: categories from config

See merge request fdroid/fdroidserver!1366
2023-06-13 16:05:51 +00:00
Hans-Christoph Steiner
6b82710039 test load_localized_config() with categories 2023-06-02 13:28:53 +02:00
Hans-Christoph Steiner
bc58959315 purge remnants of repo/categories.txt, which is long unused 2023-06-02 13:26:03 +02:00
Hans-Christoph Steiner
1c3a87e002 lint: get Categories from config 2023-06-02 13:26:03 +02:00
Hans-Christoph Steiner
6124caf341 Merge branch 'test_for_1370' into 'master'
Add test for !1370

See merge request fdroid/fdroidserver!1372
2023-06-02 11:12:17 +00:00
Jochen Sprickerhof
7af95fc660
gitlab-ci: bump version to compare in metadata_v0 job 2023-06-02 10:38:16 +02:00
Jochen Sprickerhof
27ea667438
Add test for !1370
The bug fixed in !1370 was due to a reuse of the per app anti features
dictionary in the per version one and adding the per version anti
features into it. This was not caught by the test suite as the app
versions are processed from newest to oldest and the test data had only
anti features in the oldest version. This patch adds an anti feature to
a newest version so only those in between should not have it.
2023-06-02 10:26:27 +02:00
Hans-Christoph Steiner
a1c4f803de Merge branch 'fix-ArchivePolicy-0' into 'master'
update: fix regression for ArchivePolicy: 0

See merge request fdroid/fdroidserver!1371
2023-06-01 18:59:14 +00:00
Hans-Christoph Steiner
d96de4d8c2 update: test archive_old_apks() with ArchivePolicy: 0 2023-06-01 20:31:26 +02:00
FC Stegerman
9ac7dfe452 update: fix regression for ArchivePolicy: 0
* https://gitlab.com/fdroid/fdroidserver/-/merge_requests/920#note_1413338920
* https://gitlab.com/fdroid/fdroidserver/-/merge_requests/920#note_1413344025
2023-06-01 20:31:24 +02:00
Hans-Christoph Steiner
d564ba1fd1 Merge branch 'fix_antifeatures' into 'master'
Don't modify app dict when generating v2 antifeatures

Closes #1103

See merge request fdroid/fdroidserver!1370
2023-06-01 17:56:59 +00:00
Jochen Sprickerhof
2ee3cccb60 Don't modify app dict when generating v2 antifeatures
Regression of: 061ca38a
Closes: #1103
2023-06-01 17:53:34 +00:00
Hans-Christoph Steiner
3f7e01b909 Merge branch 'licaon-kter-master-patch-94098' into 'master'
scanner - tgz is gzip

See merge request fdroid/fdroidserver!1368
2023-06-01 11:40:20 +00:00
Licaon_Kter
2a60f6c195 scanner - tgz is gzip 2023-06-01 07:43:42 +00:00
Hans-Christoph Steiner
d929c15843 Merge branch 'archivepolicy-integer' into 'master'
Make "ArchivePolicy" always be an integer

Closes #327

See merge request fdroid/fdroidserver!920
2023-05-31 19:34:00 +00:00
Gregor Düster
31791b44f3
fixup! metadata: Make ArchivePolicy an interger internally 2023-05-30 23:05:59 +02:00
Hans-Christoph Steiner
9ef2088ace
add unit tests 2023-05-30 23:02:36 +02:00
Gregor Düster
337974cbed
metadata: Make ArchivePolicy an interger internally 2023-05-30 23:02:34 +02:00
Michael Pöhn
cf887583c0 Merge branch 'metadata-sort-and-refactor' into 'master'
metadata: remove obsolete quirks; add sorting and removal of empty values

Closes #332

See merge request fdroid/fdroidserver!1365
2023-05-29 16:50:57 +00:00
Hans-Christoph Steiner
fac7ceffe3 metadata: remove non-values from Builds: entries 2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
689786eea4 metadata: refactor _builds_to_yaml to use dicts and _format functions
_builds_to_yaml does not use any features of the metadata.Build class, so
it can operate on plain dicts as well.  It also does not need to output
Build instances because those are converted to plain dicts when writing out
to YAML.
2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
b055559df7 metadata: remove STRING/INT conversion on output
The type conversion should all happen in post_parse_yaml_metadata whenever
possible.  Also, when `if` blocks end in `return`, it is clearer if no
`elif` or `else` is used.
2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
1bc9b41a2b metadata: YAML 1.2 handles gradle: off now, "off" isn't a boolean
Before switching to YAML 1.2, there needed to be special handling of values
that YAML parsed as booleans.
2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
070dae1431 versionCode is an int everywhere since !1176 fixed #332 2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
e64f121c0c metadata: type conversion happens at parsing, not at writing
These test cases were writing assuming they had to transform the data
format.  That is no longer the case.  Going forward, the parsing process
converts everything to a standardized format.  That will hopefully be
enforceable by the JSON Schema in the future.
2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
26b2cffdcc metadata: tests for converting Builds: entries for writing out
* The metadata.Builds() class initializes all possible flags, then the
  flags with init values are filtered out when writing out YAML.
* TYPE_SCRIPT flags with one entry will be converted to a string.
2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
d3521d7374 metadata: case-insensitive sort for AntiFeatures Categories 2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
2efc9437ab gitlab-ci: purge stale removals from metadata_v0 job. 2023-05-29 16:50:28 +00:00
Hans-Christoph Steiner
65a1698ba3 Merge branch 'normalize-type-list-int' into 'master'
metadata: refactor parsing normalization

See merge request fdroid/fdroidserver!1359
2023-05-25 15:05:01 +00:00
Hans-Christoph Steiner
2aa0403208 metadata: handle SHA-256 values that parse as decimal ints
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1350#note_1370665635
2023-05-25 16:53:02 +02:00
Hans-Christoph Steiner
642e444cfa metadata: _normalize_type_list for TYPE_LIST quirks and errors
This should reduce surprises when dealing with filenames in things like
`rm:`.  So any float/int/bool value can be used directly, without quoting.

* A plain str/int/float value is interpreted as a list of one string.
* Dictionaries as values throws error.
* A set is treated like a list.
2023-05-25 16:53:02 +02:00
Hans-Christoph Steiner
4711b632b8 metadata: _normalize_type_int to handle exceptions 2023-05-25 16:53:02 +02:00
Hans-Christoph Steiner
9f606d0fbb metadata: auto-convert YAML special float values: .nan .inf -.inf
Even for people who know what the special floats not-a-number, infinity,
and negative infinity, they don't necessarily know the YAML 1.2 syntax for
these.  I didn't.  And I've spent some quality time fighting things with
those values.  They are also easy to reliably convert to string values.
2023-05-25 16:53:02 +02:00
Hans-Christoph Steiner
8374842faa metadata: normalize TYPE_BOOL to YAML 1.2 booleans
This makes the internal representation always be a boolean, and that also
means that YAML 1.2 booleans will be written out, e.g. rewritemeta.
2023-05-25 16:53:02 +02:00
Hans-Christoph Steiner
aa98d67c86 metadata: test None in post_metadata_parse 2023-05-25 15:10:05 +02:00
Hans-Christoph Steiner
d9b1d845e7 Merge branch 'linsui-master-patch-37288' into 'master'
Fix Chinese example in doc string

See merge request fdroid/fdroidserver!1364
2023-05-25 13:06:55 +00:00
linsui
982ecb45ab Fix Chinese example in doc string 2023-05-25 13:06:45 +00:00
Michael Pöhn
7e1c63b407 Merge branch 'test-build-Prepare-only-in-VM' into 'master'
build: add test to ensure Prepare: is only run in VM

See merge request fdroid/fdroidserver!1361
2023-05-25 13:06:21 +00:00
Hans-Christoph Steiner
df7c909884 build: add test to ensure Prepare: is only run in VM 2023-05-25 13:03:25 +00:00
Michael Pöhn
65e1c81f20 Merge branch 'scanner_argument_order' into 'master'
scanner: Print all short options before long options

See merge request fdroid/fdroidserver!1363
2023-05-25 12:54:18 +00:00
Gregor Düster
fde880d780
scanner: Print all short options before long options
This is the default throughout the code base.
2023-05-25 12:33:39 +02:00
Hans-Christoph Steiner
6d8c1fb885 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1360
2023-05-24 21:10:26 +00:00
Hans-Christoph Steiner
544fa1bb4d
make -C locale update 2023-05-24 23:01:08 +02:00
Hosted Weblate
c5ef3d19cd
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2023-05-24 23:01:06 +02:00
Hans-Christoph Steiner
5d85f7ad95 Merge branch 'ci-metadata_v0-RequiresRoot' into 'master'
gitlab-ci: update metadata_v0 job for RequiresRoot: as TYPE_BOOL

See merge request fdroid/fdroidserver!1362
2023-05-24 20:45:08 +00:00
Hans-Christoph Steiner
fc9afc83b8 gitlab-ci: update metadata_v0 job for RequiresRoot: as TYPE_BOOL
b0c05842d8
!1350
2023-05-24 22:36:11 +02:00
Michael Pöhn
86343cbf18 Merge branch 'antiFeatures-from-config' into 'master'
allow Anti-Features to include localized descriptions about why they were added

Closes #683

See merge request fdroid/fdroidserver!1350
2023-05-23 19:08:35 +00:00
Hans-Christoph Steiner
dbf163e03f test to check that the right Builds flag values get removed 2023-05-23 12:11:09 +02:00
Hans-Christoph Steiner
f68b77a933 use pathlib's read_text() to avoid confusin intended blocks 2023-05-23 12:06:21 +02:00
Hans-Christoph Steiner
895e0553a0 error if a YAML Anti-Feature conflicts with a localized file
https://gitlab.com/fdroid/fdroidserver/-/issues/683#note_1383597734
2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
b0c05842d8 metadata: RequiresRoot is boolean, according to docs
"Set this optional field to ‘True’ if the application requires root
privileges to be usable."
https://f-droid.org/docs/Build_Metadata_Reference/#RequiresRoot
2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
0393e46af9 metadata: handle TYPE_STRINGMAP when writing out YAML 2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
e8ab84b583 metadata: simplify _app_to_yaml()
There are some redundant checks and odd construct:
* cm.update({a: b}) --> cm[a] = b
* getattr(app, field) --> app.get(field)
2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
2cb12f9594 metadata: break out write_yaml to standalone function and add unit tests 2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
784bebfee9 metadata: keep manually added NoSourceSince in AntiFeatures
If the metadata file contains NoSourceSince:, it is added to the collection
of Anti-Features.  When rewriting the .yml file, NoSourceSince should only
be written into the AntiFeatures: collection if there are manual changes,
e.g. the user had provided translations.
2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
7c1d7fb4b3 metadata: check error messages are printed for more cases 2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
b2fc59ef9a gitlab-ci: bump version to compare in metadata_v0 job
The previous commit changes the internal representation of
antiFeatures from a list to dict.
https://gitlab.com/eighthave/fdroidserver/-/jobs/4260622978
2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
061ca38afd define "string map" type for new Anti-Features explanations
closes #683
2023-05-23 10:47:03 +02:00
Hans-Christoph Steiner
6e62ea3614 Merge branch 'scanner-allow-non-zero-exit' into 'master'
feat(scanner): Allow non-zero-exit code if problems were found

See merge request fdroid/fdroidserver!1342
2023-05-23 08:35:18 +00:00
Georg krause
9af2efda2e feat(scanner): Allow non-zero-exit code if problems were found 2023-05-23 09:54:24 +02:00
Hans-Christoph Steiner
44513c23fd Merge branch 'readme-and-contributing' into 'master'
update README and add CONTRIBUTING.md

See merge request fdroid/fdroidserver!1353
2023-05-22 14:16:43 +00:00
Hans-Christoph Steiner
a08d4a74e8 update CONTRIBUTING.md 2023-05-22 14:16:31 +00:00
Hans-Christoph Steiner
a02ed98c7e update README to fix out of date things 2023-05-22 14:16:31 +00:00
Hans-Christoph Steiner
84b45abb03 Merge branch 'last-prop' into 'master'
gradlew-fdroid: use last duplicate key like java.util.Properties

Closes #1131

See merge request fdroid/fdroidserver!1356
2023-05-22 11:35:54 +00:00
FC Stegerman
f160ae55cb
gradlew-fdroid: use last duplicate key like java.util.Properties 2023-05-19 18:12:23 +02:00
Michael Pöhn
a9b2f624e5 Merge branch 'scanner_dataclass' into 'master'
scanner: replace global dict by dataclass

See merge request fdroid/fdroidserver!1208
2023-05-12 17:58:26 +00:00
Jochen Sprickerhof
2488cb5710 scanner: replace global dict by dataclass 2023-05-12 17:58:04 +00:00
Jochen Sprickerhof
52e798575b Merge branch 'fix_mkdir' into 'master'
Create repo/icons without failure

See merge request fdroid/fdroidserver!1355
2023-05-12 07:25:53 +00:00
Jochen Sprickerhof
5723a1dafe
Create repo/icons without failure
Fixes fdroid lint CI.
2023-05-12 09:12:28 +02:00
Michael Pöhn
1b765d11e7 Merge branch 'lint-AntiFeatures-from-config' into 'master'
lint: Anti-Features validator uses names from config / plus tests, cleanups, and minor bugfixes

See merge request fdroid/fdroidserver!1352
2023-05-11 14:20:15 +00:00
Hans-Christoph Steiner
af5b067396 gitlab-ci: bump version to compare in metadata_v0 job
The relevant change comes from !1332
2023-05-11 10:37:45 +02:00
Hans-Christoph Steiner
024d309262 index: rename app var to app_dict, its not an App instance
Throughout the code, variables named "app" are instances of the App class.
In this case, this is related, but it is a dict not an App instance, since
it is being prepared for including in the index-v1.json.
2023-05-11 10:37:45 +02:00
Hans-Christoph Steiner
8bc9a3da73 test_parse_yaml_metadata_continue_on_warning checks logging calls 2023-05-11 10:37:45 +02:00
Hans-Christoph Steiner
86b643f87b metadata: test to check that metadata/*.yml overrides .fdroid.yml
This actually uncovered that .fdroid.yml isn't really working. But that is
a problem for another day.
2023-05-11 10:37:45 +02:00
Hans-Christoph Steiner
bb99986630 metadata: fix crash if .fdroid.yml but its not a git repo 2023-05-11 10:37:45 +02:00
Hans-Christoph Steiner
c2bc52dd85 use constant for default locale 2023-05-11 10:37:45 +02:00
Hans-Christoph Steiner
d5a1439457 lint: Anti-Features validator uses names from config 2023-05-11 10:29:04 +02:00
Hans-Christoph Steiner
d6dba05ec3 test load_localized_locale() and translated Anti-Features 2023-05-10 13:34:09 +02:00
Hans-Christoph Steiner
b04c7ff539 load_localized_config() returns a dict in a stable order
I renamed the variables while I was at it, to make it clearer.
2023-05-10 13:17:40 +02:00
Hans-Christoph Steiner
74a23284e1 common: load_localized_config() should make repo/ if not present
For 1,000,000 checks, this adds:
* ~4 seconds of runtime on a server with very slow disks.
* ~0.7 seconds of runtime on my laptop with a fast SSD.
2023-05-10 09:21:14 +02:00
Hans-Christoph Steiner
49362b5fd1 move load_locale() and file_entry() to be accessible by all modules
* load_locale -> common.load_localized_config() since common handles config
* file_entry -> metadata.file_entry() since metadata handles data format
2023-05-10 09:21:14 +02:00
Hans-Christoph Steiner
f9864dc3a2 rewritemeta: split into remove_blank_flags_from_builds()
This takes this key bit of functionality, splits it out as its own
function, and adds some unit tests.
2023-05-10 09:21:14 +02:00
Hans-Christoph Steiner
8ccc89ad4e index: fix requestsdict check order of operations
If requestsdict is None, the old logic would still check
requestsdict["uninstall"]) and crash there.
2023-05-10 09:21:14 +02:00
Hans-Christoph Steiner
3efe797bf8 gitlab-ci: CI_BUILD_* vars were renamed to other things
https://web.archive.org/web/20190110134948/https://docs.gitlab.com/ee/ci/variables/#gitlab-90-renaming

Looks like GitLab v16 is finally removing the old names.

sed -i \
  -e s,CI_BUILD_TOKEN,CI_JOB_TOKEN,g \
  -e s,CI_BUILD_REF_SLUG,CI_COMMIT_REF_SLUG,g \
  -e s,CI_BUILD_REF_NAME,CI_COMMIT_REF_NAME,g \
  -e s,CI_BUILD_REPO,CI_REPOSITORY_URL,g \
  .gitlab-ci.yml
2023-05-10 09:21:14 +02:00
Hans-Christoph Steiner
f7830a41f1 deploy: ensure mirrors and binary transparency always create 'master'
If there was a global default on a machine that was something other than
'master', these things would crash with:

Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/home/hans/code/fdroid/server/fdroidserver/__main__.py", line 230, in main
    raise e
  File "/home/hans/code/fdroid/server/fdroidserver/__main__.py", line 211, in main
    mod.main()
  File "/home/hans/code/fdroid/server/fdroidserver/deploy.py", line 833, in main
    push_binary_transparency(BINARY_TRANSPARENCY_DIR,
  File "/home/hans/code/fdroid/server/fdroidserver/deploy.py", line 705, in push_binary_transparency
    local.pull('master')
  File "/usr/lib/python3/dist-packages/git/remote.py", line 1045, in pull
    res = self._get_fetch_info_from_stderr(proc, progress, kill_after_timeout=kill_after_timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/git/remote.py", line 848, in _get_fetch_info_from_stderr
    proc.wait(stderr=stderr_text)
  File "/usr/lib/python3/dist-packages/git/cmd.py", line 604, in wait
    raise GitCommandError(remove_password_if_present(self.args), status, errstr)
git.exc.GitCommandError: Cmd('git') failed due to: exit code(1)
  cmdline: git pull -v -- local master
  stderr: 'fatal: couldn't find remote ref master'
2023-05-10 09:21:14 +02:00
Hans-Christoph Steiner
0735bfa7e5 remove obsolete test case 2023-05-09 20:45:16 +02:00
Hans-Christoph Steiner
0124b9dde9 Merge branch 'cert-pin' into 'master'
`AllowedAPKSigningKeys` cleanups

See merge request fdroid/fdroidserver!1343
2023-05-05 08:47:02 +00:00
Hans-Christoph Steiner
43b278b9d6
build: fix loading config files in tests
The new test case works with the default config.
2023-05-05 09:49:34 +02:00
Hans-Christoph Steiner
1e4e2489aa
add keep_when_not_allowed config/option 2023-05-05 09:49:32 +02:00
Hans-Christoph Steiner
386fb55b99
keep old test case intact 2023-05-05 09:49:27 +02:00
Jason A. Donenfeld
26472c22ce build: check AllowedAPKSigningKeys in reproducible build scenario
The builder should check the `AllowedAPKSigningKeys` at build time, so
that the CI can check if somebody gives a wrong value that doesn't match
a compared RB binary.  In the event it fails, it gives useful
information, and in the event it succeeds, it makes it clear that this
build has verification back to the developer's original key.

Also, add tests for this to the test suite.
2023-05-05 06:14:31 +00:00
Jason A. Donenfeld
8a0b7e5b1b lint: binary or Binaries requires AllowedAPKSigningKeys
Per fdroiddata!12911 the linter should error out if somebody uses `binary` or
`Binaries` without supplying an `AllowedAPKSigningKeys`.

There are two reasons for this:

- Security: this allows full verification that the binaries built match
  the developers, not just what happened to get uploaded onto github at
  some later point in time.

- Reliable updates: if the signing key changes, users won't be able to
  update, so this is something we should learn about when upstreams send
  in commits changing their signing key, rather than just leaving it to
  chance.
2023-05-05 06:14:31 +00:00
Hans-Christoph Steiner
41104e217b Merge branch 'consistent-linting-formatting' into 'master'
make linting and formatting rules consistent

See merge request fdroid/fdroidserver!1160
2023-05-04 14:12:09 +00:00
proletarius101
4b898287e9 make linting and formatting rules consistent 2023-05-04 14:12:08 +00:00
Michael Pöhn
acc774f91e Merge branch 'clean-up-metadata' into 'master'
collection of cleanups, tests and minor refactoring related to metadata

See merge request fdroid/fdroidserver!1351
2023-05-04 12:55:38 +00:00
Hans-Christoph Steiner
f871df502d metadata: minor optimization: call fieldtype() once per loop
I profiled this with timeit and a dict with 1000000000 items, and this is
the time difference:

with_equals:		0.8466835720173549
with_is:		0.8536969239939936
with_old:		1.4458542719949037

I also compared using `==` and `is`, and `==` was slightly faster.
2023-05-02 13:53:53 +02:00
Hans-Christoph Steiner
9a9705a667 update test_read_metadata to use ruamel.yaml and YAML 1.2
I tried to get this to indent the .yaml files properly so yamllint defaults
work with tests/metadata/dump/*.yaml, but it didn't take for some reason:

    yaml.indent(mapping=4, sequence=4, offset=2)
2023-05-02 13:52:38 +02:00
Hans-Christoph Steiner
28ea6cea7f add tests of TYPE_LIST parsing 2023-05-02 13:52:06 +02:00
Hans-Christoph Steiner
0b3fd725c3 metadata.TestCase: metadata.warnings_action = 'error' as default
The default state for the tests should be to fail on errors.
2023-05-02 13:51:44 +02:00
Hans-Christoph Steiner
822439dff5 remove exception for ruamel.yaml on Debian/stretch
stretch is no more, and this code base specifies Python 3.9 as minimum.
2023-05-02 13:50:54 +02:00
Hans-Christoph Steiner
74dddfd9fb refactor App.get_last_build() to checkupdates
This function is only used in checkupdates, and removing it from the App
class moves the App class one step closer to being a plain dict, which is a
more Pythonic style.
2023-05-02 13:50:31 +02:00
Hans-Christoph Steiner
8300ed051b ruamel.yaml is now required and the packages are all new enough 2023-05-02 13:41:39 +02:00
Hans-Christoph Steiner
e794ccb38c work towards switching fdroidserver/metadata.py to black 2023-05-02 13:41:27 +02:00
Hans-Christoph Steiner
e5fda54693 add test_check_metadata_AntiFeatures 2023-05-02 13:37:07 +02:00
Hans-Christoph Steiner
c6ad8505d4 some easier fixes for black code format 2023-05-02 13:37:07 +02:00
Hans-Christoph Steiner
5968cfe7e0 Merge branch 'litecoin' into 'master'
add litecoin address native segwit format

See merge request fdroid/fdroidserver!1332
2023-05-02 11:31:41 +00:00
linsui
1a0a0a1839 add litecoin address native segwit format 2023-05-02 11:31:34 +00:00
Michael Pöhn
2135a9e7fb Merge branch 'refactor-into-single-yaml-post-process' into 'master'
refactor into a single function to do YAML post processing

See merge request fdroid/fdroidserver!1346
2023-05-02 11:31:06 +00:00
Hans-Christoph Steiner
572819dbc8 gitlab-ci: use bookworm for "Build documentation" job
I think most fdroidserver core devs are working on bookworm these days, and
the bullseye version is erroring on things that the bookworm version does
not.

fdroidserver/metadata.py:777 in public function `post_parse_yaml_metadata`:
        D202: No blank lines allowed after function docstring (found 1)
2023-04-28 10:55:21 +02:00
Hans-Christoph Steiner
a692cd9d72 hooks/pre-commit: enable pydocstyle, if installed 2023-04-28 10:55:21 +02:00
Hans-Christoph Steiner
d7214a7f1c hooks/pre-commit: run yamllint on more YAML files
I keep messing up YAML syntax with values that have : in them...

This doesn't work for all YAML files:
* tests/metadata/dump/*.yaml have bad indenting
* tests/metadata/*.yml have bad indenting, which is useful for tests
2023-04-28 10:55:21 +02:00
Hans-Christoph Steiner
1bcd9a8489 metadata: handle empty files and dicts, and error out on non-dicts 2023-04-28 10:55:20 +02:00
Hans-Christoph Steiner
2b81a66b79 App.comments is no more since !772 2023-04-28 10:44:19 +02:00
Hans-Christoph Steiner
dbe21b2b94 metadata: transform all TYPE_STRING values w/ _normalize_type_string()
Before this, there were separate post-parse paths for app-fields versus
build-flags.  This makes all TYPE_STRING values always go through the same
post-parse code path.
2023-04-28 10:44:19 +02:00
Hans-Christoph Steiner
a8531a03a6 metadata: refactor into one function to do YAML post processing
It used to be that there had to be separate post processing steps depending
on whether it was parsing .txt or .yml.  The .txt format is long gone!

!772
2023-04-28 10:44:19 +02:00
Hans-Christoph Steiner
3869e1374b metadata: force TYPE_STRING fields to string in internal dict
* YAML 1.2's boolean is 'true' so this makes the conversion correct.
* rewritemeta would also have to be changed to support this.
2023-04-27 21:51:10 +02:00
Hans-Christoph Steiner
c0ae09e0df metadata: remove strange app arg construct from parse_yaml_metadata()
My guess is that this is some kind of vestige of the old code structure,
back when there was .txt and .yml formats.  This makes it a normal Python
function: input as arg, return value is the result.
2023-04-27 21:51:10 +02:00
Hans-Christoph Steiner
41972e6525 warn on all unrecognized build flags
No need to put the list of keys in a set beforehand, just report all build
flags that are invalid.
2023-04-27 21:51:10 +02:00
Hans-Christoph Steiner
1166258145 map out type conversions in metadata.PostMetadataParseTest suite 2023-04-27 21:50:49 +02:00
Hans-Christoph Steiner
27a0df9ddb metadata: failfast=False like the rest of the tests 2023-04-27 21:48:27 +02:00
Michael Pöhn
2293633380 Merge branch 'enable-more-black' into 'master'
enable more black code format

See merge request fdroid/fdroidserver!1349
2023-04-27 09:50:59 +00:00
Hans-Christoph Steiner
6dcdadd0e3
config black exceptions in pyproject.toml
This means that anyone can run `black .` and it won't break things. Plus it
gives us a roadmap for fully enabling black.
2023-04-27 11:34:19 +02:00
Hans-Christoph Steiner
32ea4ef19a
enable black on fdroidserver/asynchronousfilereader/__init__.py 2023-04-27 11:34:18 +02:00
Hans-Christoph Steiner
2273d8203b
enable black on fdroidserver/signatures.py 2023-04-27 11:34:16 +02:00
Hans-Christoph Steiner
6620bf0208
enable black on tests: api, gpgsign, main, net, vcs 2023-04-27 11:34:14 +02:00
Hans-Christoph Steiner
77f9ac9fa8
enable black on fdroidserver/rewritemeta.py 2023-04-27 11:34:12 +02:00
Hans-Christoph Steiner
eb81af57bb
enable black on fdroidserver/init.py 2023-04-27 11:34:10 +02:00
Hans-Christoph Steiner
c7070b2799
index.TestCase: manually convert to black code format
* switch to `from fdroidserver import common, index, signindex...`
2023-04-27 11:34:07 +02:00
Hans-Christoph Steiner
98decf8cfa index: use 'fake.url' as test domain when no networking is used 2023-04-27 10:35:09 +02:00
Michael Pöhn
5e75b03814 Merge branch 'mirror-metadata' into 'master'
index-v2 'mirrors' fully settable from config

See merge request fdroid/fdroidserver!1344
2023-04-27 08:06:13 +00:00
Hans-Christoph Steiner
7c692a4532 index-v2 'mirrors' fully settable from config
This lets mirrors: in config.yml be the same list-of-dicts format as it is
in index-v2.  This also includes a data format conversion to maintain the
right format for the old, unchanging index v0 and v1 formats.

#928
#1107
2023-04-27 07:53:02 +00:00
Hans-Christoph Steiner
ceef07d2f2 test of current internal format of mirrors list in config 2023-04-27 07:53:02 +00:00
Hans-Christoph Steiner
c4d202f2d8 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.1.1

See merge request fdroid/fdroidserver!1348
2023-04-24 09:35:05 +00:00
fdroid-bot
087fd04b02 gradle v8.1.1 2023-04-24 09:21:53 +00:00
Hans-Christoph Steiner
60e11cab6c Merge branch 'remove-last-maven-quirks' into 'master'
remove last `maven:` quirks and make it always a string

See merge request fdroid/fdroidserver!1345
2023-04-24 09:21:11 +00:00
Hans-Christoph Steiner
ad960c6ecd
remove last maven: quirks and make it always a string
It turns out that the maven: field was originally declared as a TYPE_STRING,
given that it was not given a different type in metadata.py's 	flagtypes.
The code was confused because it was given a default value of `False` rather
than `None` as the rest of the TYPE_STRING fields have.

This construct in build.py means maven: should always be a string:

        if '@' in build.maven:
            maven_dir = os.path.join(root_dir, build.maven.split('@', 1)[1])
        else:
            maven_dir = root_dir
2023-04-24 11:08:48 +02:00
Hans-Christoph Steiner
a107e810d4
build: add test case for maven: builds 2023-04-24 11:08:46 +02:00
Hans-Christoph Steiner
7641c30389
add real test of moving files with deploy.update_serverwebroot() 2023-04-24 11:08:42 +02:00
Hans-Christoph Steiner
fa95302580
add myself to .mailmap !1347 2023-04-21 08:01:44 +02:00
Hans-Christoph Steiner
f09c806c96 Merge branch 'mailmap' into 'master'
Add .mailmap

See merge request fdroid/fdroidserver!1347
2023-04-21 05:56:28 +00:00
Gregor Düster
a2868766db
Add .mailmap
See https://git-scm.com/docs/gitmailmap .
2023-04-21 07:21:45 +02:00
Hans-Christoph Steiner
331d3663db Merge branch 'metadata_purge_legacy' into 'master'
metadata: Remove code ensuring YAML 1.2 compatibility

See merge request fdroid/fdroidserver!1328
2023-04-20 07:59:20 +00:00
Gregor Düster
d971f19e92
metadata: Remove code ensuring YAML 1.2 compatibility
This is no longer necessary b/c the current YAML parser, ruamel.yaml,
implements YAML 1.2 in contrast to the previous parser PyYAML.
2023-04-18 17:08:44 +02:00
Gregor Düster
cff57e1a53
metadata: Remove ununsed code 2023-04-18 17:08:43 +02:00
Michael Pöhn
82c3e364a5 Merge branch 'fix-ci-for-sdkmanager' into 'master'
gitlab-ci: ubuntu_lts_ppa & debian_testing jobs need sdkmanager

See merge request fdroid/fdroidserver!1339
2023-04-13 13:32:15 +00:00
Hans-Christoph Steiner
3b0a6575de gitlab-ci: ubuntu_lts_ppa & debian_testing jobs need sdkmanager 2023-04-13 12:32:47 +00:00
Hans-Christoph Steiner
894a421d43 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.1

See merge request fdroid/fdroidserver!1341
2023-04-12 14:06:19 +00:00
fdroid-bot
c107d93568 gradle v8.1 2023-04-12 12:45:24 +00:00
Hans-Christoph Steiner
5e3624157c Merge branch 'sonatype' into 'master'
Add maven central staging repo to allowed list

See merge request fdroid/fdroidserver!1340
2023-04-12 12:44:43 +00:00
Jason Donenfeld
6a239cbde4 Add maven central staging repo to allowed list 2023-04-12 12:44:42 +00:00
Hans-Christoph Steiner
135fb76b6d Merge branch 'update_status' into 'master'
Write status json upon fdroid update start (Closes: #1114)

Closes #1114

See merge request fdroid/fdroidserver!1338
2023-04-11 16:45:45 +00:00
Jochen Sprickerhof
f5cdeff507
Write status json upon fdroid update start (Closes: #1114) 2023-04-11 17:14:58 +02:00
Hans-Christoph Steiner
ab3f64c22f Merge branch 'fix-apt-syntax' into 'master'
buildserver: fix apt Acquire::Retries syntax

See merge request fdroid/fdroidserver!1337
2023-04-11 14:45:45 +00:00
Hans-Christoph Steiner
48be7c3b25
buildserver: fix apt Acquire::Retries syntax
Acquire is its own group, not a subgroup of APT:
https://manpages.debian.org/buster/apt/apt.conf.5.en.html#THE_ACQUIRE_GROUP
2023-04-11 16:33:14 +02:00
Hans-Christoph Steiner
f5d5d9e9b8 Merge branch 'remove-download-handling' into 'master'
remove NDK download handling in favor of fdroid/sdkmanager

See merge request fdroid/fdroidserver!1070
2023-04-11 11:55:18 +00:00
Hans-Christoph Steiner
36d2a8f899
all ndk paths in config must be strings
The paths in the config must be strings because they are used in things
like env vars where they must be strings.  Plus lots of other places in the
code assumes they are strings.  This is the first step to defining the
border of where paths can be pathlib.Path() and where they must be strings.
2023-04-11 13:54:19 +02:00
Hans-Christoph Steiner
898624dcac
common.get_android_tools_versions() for modern NDK dir layout
NDK r10e is still in use, but is so old, it does not have the modern
sdkmanager package metadata.
2023-04-11 13:54:17 +02:00
Hans-Christoph Steiner
0dd5a7db64
remove NDK download handling in favor of fdroid/sdkmanager 2023-04-11 13:54:05 +02:00
Hans-Christoph Steiner
66d750e5fa Merge branch 'fix_ipfs_test' into 'master'
Strip ipfsCIDv1 before testing index-v2

See merge request fdroid/fdroidserver!1335
2023-04-11 10:29:57 +00:00
Jochen Sprickerhof
d59a88f844 Strip ipfsCIDv1 before testing index-v2 2023-04-11 10:29:27 +00:00
Hans-Christoph Steiner
239ab5bd21 Merge branch 'test_find_sdk_tools_cmd-intermittent' into 'master'
set skipUnless for test that relies on ANDROID_HOME

See merge request fdroid/fdroidserver!1334
2023-04-11 09:05:18 +00:00
Hans-Christoph Steiner
94badac317 set skipUnless for test that relies on ANDROID_HOME
This job just started failing, but wasn't before:
https://gitlab.com/eighthave/fdroidserver/-/jobs/4060582594

But I look at it, and it looks right that it fails.  So how on earth
was it succeeding before?  Basically the `os.getenv('ANDROID_HOME')`
returns `None` when `ANDROID_HOME` is not set. It is not set in both the
jobs, so how did it not stacktrace before?
2023-04-04 22:41:46 +02:00
Hans-Christoph Steiner
7c85afc988 Merge branch 'fix_antifeatures' into 'master'
Fix antifeatures

See merge request fdroid/fdroidserver!1331
2023-04-04 14:21:10 +00:00
Jochen Sprickerhof
889b8cb372 Don't copy per version anti features to all versions
make_v0() modified the apps data structure to copy an anti feature for a
specific version to all versions resulting in index-v1 and -v2 to
contain wrong anti feature annotations. This patch fixes this and adds a
test that the data structure is no longer modified.

The bug shadowed bugs in the AF implementation of -v1 and -v2 resulting
in not coping the version specific data. This is corrected as well.
This is also tested now.

For -v2 the AF dict is now sorted to make the result reproducible.

Finally The NoSourceSince AF was added as a per version and overall AF
in -v1 and is now only applied as an overall AF and the test is updated
accordingly.
2023-04-04 14:20:41 +00:00
Jochen Sprickerhof
484f289919 index.TestCase: support more arguments (like -k) 2023-04-04 14:20:41 +00:00
Hans-Christoph Steiner
4a386aa2eb Merge branch 'licaon-kter-master-patch-59706' into 'master'
Scanner - add newer sonatype maven repos

Closes #1113

See merge request fdroid/fdroidserver!1333
2023-04-04 11:30:55 +00:00
Licaon_Kter
35133a9a8f Scanner - add newer sonatype maven repos 2023-04-04 11:00:13 +00:00
Hans-Christoph Steiner
4165c32e2f Merge branch 'fix_class' into 'master'
vmtools: Properly initialize provider member

See merge request fdroid/fdroidserver!1329
2023-03-21 14:02:21 +00:00
Jochen Sprickerhof
2a5b127773
vmtools: Properly initialize provider member 2023-03-21 14:00:58 +01:00
Hans-Christoph Steiner
0136872154 Merge branch 'pylint' into 'master'
pylint: Reenable 10 checks

See merge request fdroid/fdroidserver!1319
2023-03-20 16:51:40 +00:00
Hans-Christoph Steiner
8f4167660e disable pylint no-member on tests/extra/manual-vmtools-test.py
This script is some of the only documentation of certain processes that
run in the buildserver setup.  It is not really maintained, but is still
here as a kind of reference.
2023-03-20 17:38:10 +01:00
Hans-Christoph Steiner
9749b26baa pylint: Reenable C0201 consider-iterating-dictionary
* C0201: Consider iterating the dictionary directly instead of calling .keys() (consider-iterating-dictionary)
2023-03-20 16:33:16 +01:00
FestplattenSchnitzel
a4c1ca48ad pylint: Reenable R1722 consider-using-sys-exit
* R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
2023-03-20 16:33:16 +01:00
Hans-Christoph Steiner
1fbfae355a pylint: Reenable R1723 no-else-break
* R1723: Unnecessary "elif" after "break", remove the leading "el" from "elif" (no-else-break)
2023-03-20 16:33:16 +01:00
FestplattenSchnitzel
abc752314b pylint: Reenable E1101 no-member 2023-03-20 16:33:16 +01:00
FestplattenSchnitzel
1dcb863f55 pylint: Set Python version, exclude vendored file 2023-03-20 16:33:16 +01:00
Jochen Sprickerhof
b5ec531e72 Merge branch 'checkupdates' into 'master'
checkupdates: skip when there is no match for version

See merge request fdroid/fdroidserver!1321
2023-03-20 14:43:41 +00:00
linsui
88eac942ec checkupdates: skip when there is no match for version
... name regex in CheckUpdateData
2023-03-20 14:31:08 +00:00
Jochen Sprickerhof
99be8d679d Merge branch 'fix-ci' into 'master'
fix the current crop of new CI failures

See merge request fdroid/fdroidserver!1327
2023-03-20 14:28:21 +00:00
Hans-Christoph Steiner
b92e280eab fix code format for new black rule 2023-03-20 14:47:48 +01:00
Hans-Christoph Steiner
e903952029 always use defusedxml.ElementTree, never xml.etree.ElementTree
defusedxml is now available and installed everywhere, including the
buildserver VM and the buildserver host.

This fixes bandit's error because it didn't understand the try: block
* https://gitlab.com/eighthave/fdroidserver/-/jobs/3965835264
* https://bandit.readthedocs.io/en/1.7.5/blacklists/blacklist_calls.html#b313-b320-xml
2023-03-20 14:44:13 +01:00
Hans-Christoph Steiner
4295d254f9 build: actually raise exception when ndk: entry is invalid
pylint said:
fdroidserver/common.py:4238:8: W0133: Exception statement has no effect (pointless-exception-statement)
2023-03-20 14:43:44 +01:00
Hans-Christoph Steiner
bf5e65dd24 pylint: hide broad-exception-caught and broad-exception-raised
I suppose it would be nice to have these enabled, but yeah...
2023-03-20 14:43:44 +01:00
Hans-Christoph Steiner
08d4b4671c Merge branch 'ndk-path-long' into 'master'
metadata.Build.ndk_path(): find long form ndk too

Closes #1099

See merge request fdroid/fdroidserver!1313
2023-03-20 13:40:10 +00:00
FC Stegerman
a5978ad8b2 metadata.Build.ndk_path(): find long form ndk too 2023-03-20 13:39:47 +00:00
Jochen Sprickerhof
668a83a9af Merge branch 'update-handle-bad-xml-namespaces' into 'master'
update: handle messed up namespaces in AndroidManifest.xml

See merge request fdroid/fdroidserver!1326
2023-03-20 13:24:59 +00:00
Hans-Christoph Steiner
e6ff596b4c update: handle messed up namespaces in AndroidManifest.xml 2023-03-20 13:24:59 +00:00
Hans-Christoph Steiner
1f6eab8365
set dev version: 2.3 alpha 0 2023-03-09 16:00:50 +01:00
Hans-Christoph Steiner
35a1cb20e6
version 2.2.1 2023-03-09 14:53:00 +01:00
Hans-Christoph Steiner
e093d471f8 update CHANGELOG for 2.2.1 2023-03-09 13:58:14 +01:00
Hans-Christoph Steiner
770a860fe7 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1325
2023-03-09 12:54:40 +00:00
Hans-Christoph Steiner
202ecc858c gitlab-ci: break out locale tests into job that fails on errors 2023-03-09 13:42:33 +01:00
Hans-Christoph Steiner
5a0453ca9d make -C locale update 2023-03-09 13:20:42 +01:00
Hans-Christoph Steiner
68cd544dfb fix bad formats in translations 2023-03-09 13:16:14 +01:00
Max Xie
950e342d6e
Translated using Weblate: Chinese (Simplified) (zh_Hans) by Max Xie <monyxie@gmail.com>
Currently translated at 77.9% (417 of 535 strings)

Co-authored-by: Max Xie <monyxie@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:33 +01:00
Oğuz Ersen
aa80a762c4
Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguz@ersen.moe>
Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:33 +01:00
Fjuro
b45fa5d864
Translated using Weblate: Czech (cs) by Fjuro <ifjuro@proton.me>
Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: Fjuro <ifjuro@proton.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:33 +01:00
Besnik Bleta
963d119a0c
Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.5% (522 of 535 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
VfBFan
7973dd2c8f
Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (535 of 535 strings)

Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>

Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
ssantos
ad391f02f3
Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (535 of 535 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (535 of 535 strings)

Translated using Weblate: German (de) by ssantos <ssantos@web.de>

Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Agnieszka C
4fc443ce9c
Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Andrey
37441f6f1a
Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Ihor Hordiichuk
cadd53c40c
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Translator
8c4f8cb388
Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 100.0% (535 of 535 strings)

Co-authored-by: Translator <kvb@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Eric
badbe7af5d
Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <hamburger2048@users.noreply.hosted.weblate.org>
Currently translated at 77.1% (413 of 535 strings)

Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Hosted Weblate
5600e4828f
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Saurmandal
33e506e5e4
Translated using Weblate: Hindi (hi) by Saurmandal <saurmandal@protonmail.com>
Currently translated at 2.5% (16 of 619 strings)

Co-authored-by: Saurmandal <saurmandal@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hi/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
VfBFan
49412de27c
Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>

Currently translated at 100.0% (619 of 619 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Hosted Weblate
50c3ed0f4b
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Rubén
f848824371
Added translation using Weblate: Catalan (ca) by Rubén <rubenx@mail.com>
Co-authored-by: Rubén <rubenx@mail.com>
2023-03-09 12:48:32 +01:00
Ahmad0a
e74fc222f4
Translated using Weblate: Arabic (ar) by Ahmad0a <Ahmad3p@protonmail.com>
Currently translated at 1.7% (11 of 623 strings)

Translated using Weblate: Arabic (ar) by Ahmad0a <Ahmad3p@protonmail.com>

Currently translated at 1.6% (10 of 623 strings)

Added translation using Weblate: Arabic (ar) by Ahmad0a <Ahmad3p@protonmail.com>

Co-authored-by: Ahmad0a <Ahmad3p@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ar/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Danial Behzadi
fef8239502
Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 8.5% (53 of 623 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Đorđe Vasiljević
bded120a90
Translated using Weblate: Serbian (sr) by Đorđe Vasiljević <djordje.vasiljevich@gmail.com>
Currently translated at 0.1% (1 of 623 strings)

Co-authored-by: Đorđe Vasiljević <djordje.vasiljevich@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Abhiram
3b66bd2899
Translated using Weblate: Malayalam (ml) by Abhiram <abhiram@skiff.com>
Currently translated at 0.8% (5 of 623 strings)

Co-authored-by: Abhiram <abhiram@skiff.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
K.B.Dharun Krishna
94a19d5727
Translated using Weblate: Tamil (ta) by K.B.Dharun Krishna <kbdharunkrishna@gmail.com>
Currently translated at 1.6% (10 of 623 strings)

Translated using Weblate: Tamil (ta) by K.B.Dharun Krishna <kbdharunkrishna@gmail.com>

Currently translated at 0.1% (1 of 623 strings)

Added translation using Weblate: Tamil (ta) by K.B.Dharun Krishna <kbdharunkrishna@gmail.com>

Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:32 +01:00
Goudarz Jafari
3f84832953
Translated using Weblate: Persian (fa) by Goudarz Jafari <goudarz.jafari@gmail.com>
Currently translated at 7.8% (49 of 623 strings)

Co-authored-by: Goudarz Jafari <goudarz.jafari@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Yaron Shahrabani
c3b1c56c72
Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>
Currently translated at 2.2% (14 of 623 strings)

Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>

Currently translated at 1.7% (11 of 623 strings)

Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>

Currently translated at 1.4% (9 of 623 strings)

Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>

Currently translated at 1.1% (7 of 623 strings)

Translated using Weblate: Hebrew (he) by Yaron Shahrabani <sh.yaron@gmail.com>

Currently translated at 0.1% (1 of 623 strings)

Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/he/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Hosted Weblate
6e1e544c44
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Linerly
29e3f97347
Translated using Weblate: Indonesian (id) by Linerly <linerly@protonmail.com>
Currently translated at 15.0% (92 of 612 strings)

Co-authored-by: Linerly <linerly@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Holiq Ibrahim
952bcda61c
Translated using Weblate: Indonesian (id) by Holiq Ibrahim <holiq.ibrahim376@gmail.com>
Currently translated at 15.0% (92 of 612 strings)

Co-authored-by: Holiq Ibrahim <holiq.ibrahim376@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
bobwww
20b50ff522
Added translation using Weblate: Hebrew (he) by bobwww <noambro199@gmail.com>
Co-authored-by: bobwww <noambro199@gmail.com>
2023-03-09 12:48:31 +01:00
Aleksandar Hadzhivelichkov
4c40ba7664
Added translation using Weblate: Bulgarian (bg) by Aleksandar Hadzhivelichkov <Raphaelo245@gmail.com>
Co-authored-by: Aleksandar Hadzhivelichkov <Raphaelo245@gmail.com>
2023-03-09 12:48:31 +01:00
Саша Петровић
9de082d12a
Added translation using Weblate: Serbian (sr) by Саша Петровић <salepetronije@gmail.com>
Co-authored-by: Саша Петровић <salepetronije@gmail.com>
2023-03-09 12:48:31 +01:00
Hosted Weblate
4edb662b4b
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Coding Otaku
7b65ce1d1f
Translated using Weblate: Malayalam (ml) by Coding Otaku <contact@codingotaku.com>
Currently translated at 0.6% (4 of 576 strings)

Co-authored-by: Coding Otaku <contact@codingotaku.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Amal Benny
0d111732d2
Translated using Weblate: Malayalam (ml) by Amal Benny <amalb1883@gmail.com>
Currently translated at 0.6% (4 of 576 strings)

Co-authored-by: Amal Benny <amalb1883@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/
Translation: F-Droid/F-Droid Server
2023-03-09 12:48:31 +01:00
Hans-Christoph Steiner
e9ab9a8981 Merge branch 'download_repo_index_v2' into 'master'
index.download_repo_index_v2() and index.download_repo_index_v1()

See merge request fdroid/fdroidserver!1323
2023-03-09 11:48:24 +00:00
Hans-Christoph Steiner
b1f482009a
tame verbose logging in index tests by default 2023-03-09 12:35:31 +01:00
Hans-Christoph Steiner
f3e49f4bcb
download_repo_index_v2() for verified downloading of index-v2 2023-03-09 12:35:29 +01:00
Hans-Christoph Steiner
a557764b4d
sign tests/repo/index-v1.jar once per index.TestCase run
Signing files is a slow operation, especially with jarsigner. This speeds
up the full test run from 10-12 seconds to 2-3 seconds, which makes it
possible to run the tests interactively again. And it stops signing the
file entirely for tests that do not even touch that file.

In the long run, it would probably make sense to have each test case sign
the file as it needs it, but that's a much bigger change.
2023-03-09 12:34:57 +01:00
Hans-Christoph Steiner
dd16076651
add verify_jar_signature() to verify entry.jar 2023-03-09 12:34:55 +01:00
Hans-Christoph Steiner
cfe399888b
add new test module for the public API 2023-03-09 12:34:54 +01:00
Hans-Christoph Steiner
723873456d
versioned download_repo_index_v1() to be future proof 2023-03-09 12:34:52 +01:00
Hans-Christoph Steiner
f7b8a100c7 Merge branch 'purge_buildozer' into 'master'
Remove support for Buildozer

Closes #642

See merge request fdroid/fdroidserver!1322
2023-03-09 11:28:12 +00:00
FestplattenSchnitzel
2dda9db1f1
Remove support for Buildozer 2023-03-09 12:03:57 +01:00
Jochen Sprickerhof
00fefd35bd Merge branch 'port-lint-job-to-debian' into 'master'
gitlab-ci: port lint_* job to Debian/bookworm for stability

See merge request fdroid/fdroidserver!1324
2023-03-09 10:58:11 +00:00
Hans-Christoph Steiner
4282d34343 gitlab-ci: port lint_* job to Debian/bookworm for stability
This saves us from being surprised by new rules in pylint, pyflakes, etc
like:
https://gitlab.com/FestplattenSchnitzel/fdroidserver/-/jobs/3895256515
2023-03-09 11:45:02 +01:00
Hans-Christoph Steiner
ae2b33dab3 Merge branch 'licaon-kter-master-patch-44056' into 'master'
Gradle 8.0.2

See merge request fdroid/fdroidserver!1320
2023-03-07 19:40:20 +00:00
Licaon_Kter
1449dc88e8 Gradle 8.0.2 2023-03-06 07:44:43 +00:00
Jochen Sprickerhof
12d081fe51 Merge branch 'licaon-kter-master-patch-00517' into 'master'
Gradle 7.6.1

See merge request fdroid/fdroidserver!1318
2023-03-02 08:49:22 +00:00
Licaon_Kter
1f8f31de68 Gradle 7.6.1 2023-02-27 07:36:35 +00:00
Hans-Christoph Steiner
1c589a108c Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v6.9.4

See merge request fdroid/fdroidserver!1317
2023-02-23 20:20:39 +00:00
fdroid-bot
47a14d5302 gradle v8.0.1 2023-02-23 19:59:38 +00:00
Hans-Christoph Steiner
7b2f941f07 Merge branch 'purge-zipalign' into 'master'
purge all references to zipalign, that is delegated to other things

Closes #1078 and #1100

See merge request fdroid/fdroidserver!1316
2023-02-23 19:58:58 +00:00
Hans-Christoph Steiner
98448e0481 purge all references to zipalign, that is delegated to other things
Things like apksigner and @obfusk's tools handle this now.
jarsigner is used in the test, since that's the most common use of
`common.find_sdk_tools_cmd()`.

closes #1100
2023-02-22 14:45:51 +01:00
Hans-Christoph Steiner
f8a186b1d9
Revert locale/hi/LC_MESSAGES/fdroidserver.po conflicting with Weblate
This reverts commit b9b64c7b22.
2023-02-22 14:40:35 +01:00
Hans-Christoph Steiner
4037f4b18f Merge branch 'fix_java_arch' into 'master'
Fix openjdk detection on different architectures

See merge request fdroid/fdroidserver!1315
2023-02-22 11:25:22 +00:00
Jochen Sprickerhof
bae94931b4 Fix openjdk detection on different architectures
The pattern in Debian is:

java-$VERSION-openjdk-$DEB_HOST_ARCH

The regex for $DEB_HOST_ARCH did not match arm64, armel and armhf. As it
can be any string just match anything.
2023-02-22 11:24:39 +00:00
Hans-Christoph Steiner
d5bd2350a2 Merge branch 'translation-sync' into 'master'
Translation sync

See merge request fdroid/fdroidserver!1312
2023-02-22 11:24:18 +00:00
Hans-Christoph Steiner
b9b64c7b22 make -C locale update 2023-02-21 14:57:39 +01:00
Hans-Christoph Steiner
f775734cac remove obsolete source strings, run xgettext without --join-existing 2023-02-21 14:57:39 +01:00
Hans-Christoph Steiner
c78aeb3947 Merge branch 'getvcs-pathlib-fix' into 'master'
handle str and pathlib.Path in getvcs()

See merge request fdroid/fdroidserver!1311
2023-02-21 10:32:50 +00:00
Hans-Christoph Steiner
5af5ed2759 fix test_fill_config_defaults_java for non-amd64 arches 2023-02-21 11:20:16 +01:00
Hans-Christoph Steiner
24df262f6b handle str and pathlib.Path in getvcs() 2023-02-21 11:20:15 +01:00
Hans-Christoph Steiner
d0d15a205f
version 2.2.0 2023-02-20 22:44:41 +01:00
Hans-Christoph Steiner
71a5d33104 update CHANGELOG for 2.2.0; include missing entries 2023-02-20 21:56:22 +01:00
Jochen Sprickerhof
56b5b180aa Merge branch 'fix_path' into 'master'
Fix compare of Path objects

See merge request fdroid/fdroidserver!1309
2023-02-20 11:12:06 +00:00
Jochen Sprickerhof
671d1eba4c
Fix compare of Path objects 2023-02-20 11:59:16 +01:00
Hans-Christoph Steiner
deffe7ced3 Merge branch 'purge-stats' into 'master'
purge all vestiges of the unused `fdroid stats`, closes #839

Closes #839

See merge request fdroid/fdroidserver!1305
2023-02-20 07:21:42 +00:00
Hans-Christoph Steiner
9e9c909380 tests/run-tests: silence err_handler output 2023-02-19 22:54:38 +01:00
Hans-Christoph Steiner
5e812a4af7 set --no-wrap on all translation files 2023-02-19 22:54:38 +01:00
Hans-Christoph Steiner
b8f59097f7 purge all vestiges of the unused fdroid stats, closes #839
* for f in locale/*/LC_MESSAGES/fdroidserver.po; do msgattrib --set-obsolete --no-wrap --ignore-file=locale/fdroidserver.pot -o $f $f; done
* sed -i 's, \.\./fdroidserver/stats\.py,,' locale/*/LC_MESSAGES/fdroidserver.po
2023-02-19 22:54:38 +01:00
Hans-Christoph Steiner
798fe90c67 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1308
2023-02-19 21:30:17 +00:00
Xiang Heng Wei
551bf543ad Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>
Currently translated at 80.0% (499 of 623 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>

Currently translated at 79.2% (494 of 623 strings)

Co-authored-by: Xiang Heng Wei <yylteam@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:47 +01:00
The Cats
d2827e3ed7 Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>
Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@danwin1210.de>

Currently translated at 98.3% (613 of 623 strings)

Co-authored-by: The Cats <philosoph@danwin1210.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:43 +01:00
Ldm Public
995ce3a152 Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>

Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Ldm Public <ldmpub@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:40 +01:00
lilim
5f22f65e7b Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:37 +01:00
gub
d0f998bac3 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>

Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:34 +01:00
ButterflyOfFire
454790003f Translated using Weblate: French (fr) by ButterflyOfFire <ButterflyOfFire@protonmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:29 +01:00
Ldm Public
1b8063117e Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Ldm Public <ldmpub@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:26 +01:00
Deleted User
7b95ddc8ff Translated using Weblate: French (fr) by Deleted User <noreply+22825@weblate.org>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Deleted User <noreply+22825@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:22 +01:00
Besnik Bleta
386a619011 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.4% (607 of 623 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:19 +01:00
Translator
acb6758adb Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Translator <kvb@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:16 +01:00
gwenderer
c64a5c9896 Translated using Weblate: French (fr) by gwenderer <gwenael.derer@gmail.com>
Currently translated at 98.0% (611 of 623 strings)

Co-authored-by: gwenderer <gwenael.derer@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:13 +01:00
John Donne
bde26db340 Translated using Weblate: French (fr) by John Donne <akheron@zaclys.net>
Currently translated at 97.7% (609 of 623 strings)

Translated using Weblate: French (fr) by John Donne <akheron@zaclys.net>

Currently translated at 98.0% (611 of 623 strings)

Co-authored-by: John Donne <akheron@zaclys.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:08 +01:00
TopFox
130cf94940 Translated using Weblate: French (fr) by TopFox <Arnaud.Savary@etu.unige.ch>
Currently translated at 98.2% (612 of 623 strings)

Co-authored-by: TopFox <Arnaud.Savary@etu.unige.ch>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:05 +01:00
KissPandur
95f1e2957a Translated using Weblate: Hungarian (hu) by KissPandur <zoltankiss.web@gmail.com>
Currently translated at 62.4% (389 of 623 strings)

Co-authored-by: KissPandur <zoltankiss.web@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:02 +01:00
ssantos
09f631a2b7 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 99.8% (622 of 623 strings)

Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>

Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 99.8% (622 of 623 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 99.5% (620 of 623 strings)

Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>

Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 93.5% (583 of 623 strings)

Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>

Currently translated at 99.8% (622 of 623 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2023-02-19 22:14:00 +01:00
Licaon Kter
b769cf787d Translated using Weblate: Romanian (ro) by Licaon Kter <licaon.kter@protonmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Licaon Kter <licaon.kter@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2023-02-19 22:13:57 +01:00
Oğuz Ersen
d67e3d441a Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguz@ersen.moe>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2023-02-19 22:13:55 +01:00
Hans-Christoph Steiner
16cc863618 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.0.1

See merge request fdroid/fdroidserver!1306
2023-02-19 20:59:09 +00:00
fdroid-bot
dad004a7e4 gradle v8.0.1 2023-02-19 20:57:44 +00:00
Hans-Christoph Steiner
2f3e0b8fb7 Merge branch 'ipfscid' into 'master'
downgrade missing ipfs_cid WARNING to DEBUG

See merge request fdroid/fdroidserver!1307
2023-02-19 20:57:05 +00:00
Izzy
04dc297982 downgrade missing ipfs_cid WARNING to DEBUG 2023-02-19 18:49:24 +00:00
Hans-Christoph Steiner
10802ef00a Merge branch 'rm_failed_sigend' into 'master'
Cleanup upon failing sign_apk (Closes: #1085)

Closes #1085

See merge request fdroid/fdroidserver!1295
2023-02-19 15:02:52 +00:00
Hans-Christoph Steiner
f1f1a873ad gitlab-ci: bump RELEASE_COMMIT_ID to 2.2 beta
This avoid having to write a complicated regex for postbuild:
2023-02-19 15:48:16 +01:00
Hans-Christoph Steiner
58cfce106b add test_sign_apk_fail and test_sign_apk_corrupt 2023-02-19 13:39:48 +01:00
Jochen Sprickerhof
e243983ff8 Cleanup upon failing sign_apk (Closes: #1085) 2023-02-19 10:55:23 +01:00
Hans-Christoph Steiner
e03d71f6c3 Merge branch 'support-java-20' into 'master'
support Java 20, which is already in Debian/unstable, closes #1070

Closes #1070

See merge request fdroid/fdroidserver!1304
2023-02-17 15:48:51 +00:00
Hans-Christoph Steiner
f468270aa8
support Java 20, which is already in Debian/unstable, closes #1070 2023-02-17 16:35:20 +01:00
Jochen Sprickerhof
6c76b8ef87 Merge branch 'signindex-tests' into 'master'
signindex: add JSON check for entry.json

Closes #835

See merge request fdroid/fdroidserver!1303
2023-02-17 14:46:55 +00:00
Hans-Christoph Steiner
0c9f62a5fe signindex: add JSON check for entry.json
Ran this to generate/refresh the test index files:
`cd tests; ../fdroid update --nosign --pretty`

* converts config.py description to a single line, since the values are no
  longer stripped, so this give the same output.

closes #835
2023-02-17 14:34:53 +00:00
Hans-Christoph Steiner
6e2b4f65c2 Merge branch 'apksigcopier-1.1.1' into 'master'
update apksigcopier to upstream v1.1.1

See merge request fdroid/fdroidserver!1302
2023-02-17 13:20:40 +00:00
FC Stegerman
2e080c8170 make F-Droid-specific changes to apksigcopier.py 2023-02-17 13:08:23 +00:00
FC Stegerman
c68e1489bd import apksigcopier v1.1.1 2023-02-17 13:08:23 +00:00
Hans-Christoph Steiner
4de2e3cf04 Merge branch 'windows' into 'master'
gitlab-ci: only run Windows job in branches called "windows

See merge request fdroid/fdroidserver!1301
2023-02-17 09:34:54 +00:00
Hans-Christoph Steiner
5cebb839d4 gitlab-ci: only run Windows job in branches called "windows 2023-02-17 09:34:30 +00:00
Hans-Christoph Steiner
01bddc98f1 Merge branch 'python_dist' into 'master'
Fix l10n broken in venvs, stop packaging makebuildserver script

Closes #1014

See merge request fdroid/fdroidserver!1167
2023-02-16 21:21:38 +00:00
FestplattenSchnitzel
ac9b20f6ab gitlab-ci: check that localization works when installed with pip 2023-02-16 21:07:36 +00:00
FestplattenSchnitzel
beb49eea48 Stop packaging makebuildserver script
makebuildserver requires this repository to be cloned locally.
Fixes #1014.
2023-02-16 21:07:36 +00:00
FestplattenSchnitzel
ada36a3ee5 Fix l10n broken in venvs 2023-02-16 21:07:36 +00:00
Hans-Christoph Steiner
92556e4cd0 Merge branch 'v2_video' into 'master'
v2: move video to translated text (Closes: #1095)

Closes #1095

See merge request fdroid/fdroidserver!1293
2023-02-16 20:59:51 +00:00
Hans-Christoph Steiner
b697845bda add test case for index.package_metadata() 2023-02-16 21:45:39 +01:00
Jochen Sprickerhof
0f151a3779 v2: move video to translated text (Closes: #1095)
It contains a link to the actual video and can be translated.
2023-02-16 21:42:09 +01:00
Jochen Sprickerhof
b1ad5cd4fd Merge branch 'fix_path' into 'master'
common: support PosixPath in log message

See merge request fdroid/fdroidserver!1300
2023-02-16 20:09:56 +00:00
Jochen Sprickerhof
04230dc7c0
common: support PosixPath in log message 2023-02-16 15:17:14 +01:00
Jochen Sprickerhof
7e362a708c Merge branch 'fix_path' into 'master'
build: support PosixPath in log message (Closes #1096)

Closes #1096

See merge request fdroid/fdroidserver!1298
2023-02-16 13:48:24 +00:00
Jochen Sprickerhof
fef42dbc87
build: support PosixPath in log message (Closes: #1096) 2023-02-16 14:29:31 +01:00
Jochen Sprickerhof
c9095134cd Merge branch 'binary' into 'master'
Add build.binary

See merge request fdroid/fdroidserver!1291
2023-02-16 12:30:17 +00:00
linsui
58f167b7e5 Add build.binary 2023-02-16 20:16:52 +08:00
Jochen Sprickerhof
68e27c0a9b Merge branch 'postbuild' into 'master'
Add postbuild

Closes #1069

See merge request fdroid/fdroidserver!1281
2023-02-16 12:11:26 +00:00
linsui
33def096f5 Add postbuild 2023-02-16 12:11:26 +00:00
Hans-Christoph Steiner
2ffb70168a Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v8.0

See merge request fdroid/fdroidserver!1296
2023-02-16 09:05:47 +00:00
fdroid-bot
fd54633f52 gradle v8.0 2023-02-16 08:38:19 +00:00
Jochen Sprickerhof
dc9be512e2 Merge branch 'fix_path' into 'master'
Fix pathlib usage

See merge request fdroid/fdroidserver!1297
2023-02-16 08:37:35 +00:00
Jochen Sprickerhof
ecfbdef60f
Fix pathlib usage
Regression from 4a581bdf.
2023-02-16 09:23:07 +01:00
Jochen Sprickerhof
0e07dd0501 Merge branch 'sbr/python3.6' into 'master'
Remove path workarounds for old python versions

See merge request fdroid/fdroidserver!1276
2023-02-15 19:25:48 +00:00
Simon Brand
4a581bdfb6 Remove path workarounds for old python versions 2023-02-15 19:25:48 +00:00
Hans-Christoph Steiner
c5ba4bc848 Merge branch 'fix_vagrantfile' into 'master'
Set vm_provider in example Vagrantfile.yaml

See merge request fdroid/fdroidserver!1277
2023-02-08 21:17:23 +00:00
Jochen Sprickerhof
629b2650d0 makebuildserver: make sure config is a dict
yaml.safe_load returns None for an empty file.
2023-02-08 21:17:12 +00:00
Hans-Christoph Steiner
84dd97e007 Merge branch 'purge_travis_ci' into 'master'
Remove references to Travis CI, clean up README

See merge request fdroid/fdroidserver!1284
2023-02-08 21:03:17 +00:00
FestplattenSchnitzel
1074b5938d
README: Remove CI/CD status section 2023-02-08 21:49:03 +01:00
FestplattenSchnitzel
406652988a
Remove references to Travis CI
We do not use it any longer.
2023-02-08 21:48:45 +01:00
Hans-Christoph Steiner
375f68480c Merge branch 'fix_fedora_ci' into 'master'
CI: Add missing dependency on Fedora

See merge request fdroid/fdroidserver!1263
2023-02-08 17:34:01 +00:00
Jochen Sprickerhof
6118925387 Skip nightly test on Fedora with pip in $HOME 2023-02-08 18:32:13 +01:00
Hans-Christoph Steiner
b293252029 Merge branch 'rework_unittests' into 'master'
Rework unittests

See merge request fdroid/fdroidserver!1269
2023-02-08 17:29:01 +00:00
Jochen Sprickerhof
5715e377b0 nightly test: cleaup test directory 2023-02-08 18:14:38 +01:00
Jochen Sprickerhof
55c3a28568 run-tests: make mirror test independent of update test 2023-02-08 18:14:38 +01:00
Jochen Sprickerhof
a667074d89 run-tests: make scanner test independent on importer test 2023-02-08 18:14:38 +01:00
Jochen Sprickerhof
b1fca3f722 run-tests: always cleanup testfiles 2023-02-08 18:14:38 +01:00
Jochen Sprickerhof
6ba40b7349 common tests: use patch.dict for os.environ 2023-02-08 18:14:36 +01:00
Jochen Sprickerhof
d29a486e31 tests: use context manager and/or standard setup temp files 2023-02-08 18:12:35 +01:00
Jochen Sprickerhof
1eeb992118
Don't create unused testfiles directory 2023-02-06 14:52:35 +01:00
Jochen Sprickerhof
d5400549f6
update test: set update options 2023-02-06 14:52:35 +01:00
Jochen Sprickerhof
4a6ccae71a
install_ndk: cleanup tempdir 2023-02-06 14:52:32 +01:00
Hans-Christoph Steiner
b285603e43 Merge branch 'destroy_vm' into 'master'
build: close ssh_channel upon timeout

See merge request fdroid/fdroidserver!1287
2023-02-06 11:12:28 +00:00
Jochen Sprickerhof
a6700e65ed build: close ssh_channel upon timeout
The build can get stuck when running into the timeout and paramiko not
noticing it. This can be reproduced by setting a small build timeout for
an app. I tried setting set_keepalive() but it did not help. This
forcefully closes the ssh channel to the VM so the fdroid build will
continue. As we destroy the VM in the next step anyhow I think this is
fine.
2023-02-04 10:14:03 +00:00
Jochen Sprickerhof
5e08187567 build: Rename chan to ssh_channel 2023-02-04 10:14:03 +00:00
Hans-Christoph Steiner
45af14f9a0 Merge branch 'test' into 'master'
CI: fix permissions for git diff --cached

See merge request fdroid/fdroidserver!1292
2023-02-04 10:13:02 +00:00
Jochen Sprickerhof
702f84e920 CI: fix permissions for git diff --cached
fdroid build runs git diff --cached for git_repo.is_dirty(). This does
no longer work without these permissions.
2023-02-04 10:12:48 +00:00
Jochen Sprickerhof
6b9db76c8b Merge branch 'git-tag-docker-tag' into 'master'
gitlab-ci: sanitize git ref names for use as docker tags

See merge request fdroid/fdroidserver!1289
2023-02-03 09:50:43 +00:00
Hans-Christoph Steiner
98aa39a597 gitlab-ci: sanitize git ref names for use as docker tags
git ref names can contain many chars that are not allowed in docker tags.

https://docs.docker.com/engine/reference/commandline/tag/
A tag name must be valid ASCII and may contain lowercase and uppercase
letters, digits, underscores, periods and dashes. A tag name may not start
with a period or a dash and may contain a maximum of 128 characters.

https://gitlab.com/brandsimon/fdroidserver/-/jobs/3705004274
2023-02-03 09:50:31 +00:00
Hans-Christoph Steiner
0cdc2e3f4f Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1290
2023-02-02 20:08:56 +00:00
RainSlide
5c8ab55813 Translated using Weblate: Chinese (Simplified) (zh_Hans) by RainSlide <RainSlide@outlook.com>
Currently translated at 78.8% (491 of 623 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by RainSlide <RainSlide@outlook.com>

Currently translated at 77.2% (481 of 623 strings)

Co-authored-by: RainSlide <RainSlide@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Pixel-Tux
e3e64b8a42 Translated using Weblate: Italian (it) by Pixel-Tux <luis.pardus@gmail.com>
Currently translated at 99.0% (617 of 623 strings)

Translated using Weblate: Italian (it) by Pixel-Tux <luis.pardus@gmail.com>

Currently translated at 98.7% (615 of 623 strings)

Translated using Weblate: Italian (it) by Pixel-Tux <luis.pardus@gmail.com>

Currently translated at 97.5% (608 of 623 strings)

Co-authored-by: Pixel-Tux <luis.pardus@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Ihor Hordiichuk
bf12406b98 Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Sergii Horichenko
136c5bffc6 Translated using Weblate: Ukrainian (uk) by Sergii Horichenko <m@sgg.im>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Sergii Horichenko <m@sgg.im>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Eric
db74db3ccc Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <hamburger1024@duck.com>
Currently translated at 75.9% (473 of 623 strings)

Co-authored-by: Eric <hamburger1024@duck.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
快乐的老鼠宝宝
ca5f402733 Translated using Weblate: Chinese (Simplified) (zh_Hans) by 快乐的老鼠宝宝 <keaitianxinmail@qq.com>
Currently translated at 75.9% (473 of 623 strings)

Co-authored-by: 快乐的老鼠宝宝 <keaitianxinmail@qq.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
ZZY2357
adf039286c Translated using Weblate: Chinese (Simplified) (zh_Hans) by ZZY2357 <ZZY2357@outlook.com>
Currently translated at 75.9% (473 of 623 strings)

Co-authored-by: ZZY2357 <ZZY2357@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Dan
fd9911d41b Translated using Weblate: Ukrainian (uk) by Dan <denqwerta@gmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Dan <denqwerta@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
gallegonovato
b26942e0fd Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>
Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Spanish (es) by gallegonovato <fran-carro@hotmail.es>

Currently translated at 97.7% (609 of 623 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
nautilusx
46ccddfede Translated using Weblate: German (de) by nautilusx <translate@disroot.org>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: nautilusx <translate@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Xiang Heng Wei
da73550401 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>
Currently translated at 76.8% (479 of 623 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xiang Heng Wei <yylteam@hotmail.com>

Currently translated at 75.7% (472 of 623 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Xu ZhuoHan <yylteam@hotmail.com>

Currently translated at 74.9% (467 of 623 strings)

Co-authored-by: Xiang Heng Wei <yylteam@hotmail.com>
Co-authored-by: Xu ZhuoHan <yylteam@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
random r
dfe7e1fbd5 Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 96.7% (603 of 623 strings)

Co-authored-by: random r <epsilin@yopmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Fjuro
14c7b8e1b8 Translated using Weblate: Czech (cs) by Fjuro <ifjuro@proton.me>
Currently translated at 100.0% (623 of 623 strings)

Translated using Weblate: Czech (cs) by Fjuro <ifjuro@proton.me>

Currently translated at 98.7% (615 of 623 strings)

Co-authored-by: Fjuro <ifjuro@proton.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Agnieszka C
1f6d1feec9 Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Andrei Stepanov
c915c61ead Translated using Weblate: Russian (ru) by Andrei Stepanov <adem4ik@gmail.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Andrei Stepanov <adem4ik@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:06 +01:00
Ihor Hordiichuk
796f42fe1d Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (623 of 623 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:05 +01:00
Eric
306ff33800 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <hamburger1024@mailbox.org>
Currently translated at 69.8% (435 of 623 strings)

Co-authored-by: Eric <hamburger1024@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2023-02-02 17:36:05 +01:00
Hans-Christoph Steiner
7f1e96fe63 Merge branch 'fix-ci' into 'master'
fix CI

See merge request fdroid/fdroidserver!1288
2023-02-02 15:42:41 +00:00
Hans-Christoph Steiner
497fcfc848 silence new pylint checks that are too much for the current state
Ideally, these would be fixed.  But it'll be a project.

* C0201: Consider iterating the dictionary directly instead of calling .keys() (consider-iterating-dictionary)
* R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)
* R1720: Unnecessary "elif" after "raise", remove the leading "el" from "elif" (no-else-raise)
* R1720: Unnecessary "else" after "raise", remove the "else" and de-indent the code inside it (no-else-raise)
* R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
* R1723: Unnecessary "elif" after "break", remove the leading "el" from "elif" (no-else-break)
* R1724: Unnecessary "elif" after "continue", remove the leading "el" from "elif" (no-else-continue)
* R1735: Consider using '{}' instead of a call to 'dict'. (use-dict-literal)
* W0133: Exception statement has no effect (pointless-exception-statement)
* W0718: Catching too general exception Exception (broad-exception-caught)
* W0719: Raising too general exception: Exception (broad-exception-raised)
* W1510: 'subprocess.run' used without explicitly defining the value for 'check'. (subprocess-run-check)
2023-02-02 16:13:54 +01:00
Hans-Christoph Steiner
b152916b49 fix pylint: C1803: 'local_metadata_files != []' can be simplified to 'local_metadata_files' as an empty list is falsey (use-implicit-booleaness-not-comparison) 2023-02-02 16:02:49 +01:00
Hans-Christoph Steiner
75bf953c80 fix pylint: C0104: Disallowed name "bar" (disallowed-name) 2023-02-02 16:02:49 +01:00
Hans-Christoph Steiner
9d2cc1ecc5 fix pylint C1803: 'icons_src == {}' can be simplified to 'not icons_src' as an empty dict is falsey (use-implicit-booleaness-not-comparison) 2023-02-02 16:02:49 +01:00
Hans-Christoph Steiner
176301d831 fix pylint W0715: Exception arguments suggest string formatting might be intended (raising-format-tuple) 2023-02-02 15:49:20 +01:00
Hans-Christoph Steiner
156b3f91cc fix pylint W0404: Reimport 're' (imported line 21) (reimported) 2023-02-02 15:49:20 +01:00
Hans-Christoph Steiner
98769d8405 gitlab-ci: ignore setuptools DoS error from safety 2023-02-02 15:49:20 +01:00
Hans-Christoph Steiner
a27cf3d42d gitlab-ci: use black from Debian for a stable code format
This avoids surprise code format CI breakage when black pushes new rules:
https://gitlab.com/fdroid-bot/fdroidserver/-/jobs/3703868702
2023-02-02 15:49:19 +01:00
Hans-Christoph Steiner
e1d0ff175f Merge branch 'ndk-release-checksums.py' into 'master'
update NDK

See merge request fdroid/fdroidserver!1286
2023-02-02 14:00:49 +00:00
fdroid-bot
e71afa1299 Android NDK None (None) 2023-02-02 13:35:29 +00:00
Hans-Christoph Steiner
c28bb024af Merge branch 'destroy_vm' into 'master'
Distroy VM when running into timeout (Closes: #1094)

Closes #1094

See merge request fdroid/fdroidserver!1285
2023-02-02 13:34:49 +00:00
Jochen Sprickerhof
f8e3356365
Distroy VM when running into timeout (Closes: #1094)
halt results in an Traceback.
2023-02-02 10:03:34 +01:00
Hans-Christoph Steiner
282a7724ef Merge branch 'liberapay' into 'master'
remove liberapayID

Closes #1073

See merge request fdroid/fdroidserver!1266
2023-01-16 17:16:32 +00:00
linsui
5858d8fcb4 remove liberapayID 2023-01-16 17:02:56 +00:00
Jochen Sprickerhof
96d80fbd7c Merge branch 'git' into 'master'
Add codeberg.org

See merge request fdroid/fdroidserver!1280
2023-01-16 14:02:41 +00:00
linsui
a3f760f849 Add codeberg.org 2023-01-16 09:36:05 +00:00
Michael Pöhn
48e682bd80 Merge branch 'yaml_1.2' into 'master'
Use ruamel.yaml in metadata.py and metadata.TestCase

See merge request fdroid/fdroidserver!1238
2023-01-15 12:15:39 +00:00
FestplattenSchnitzel
aa71dd57f6
update.TestCase: Avoid creating metadata with duplicate keys 2023-01-15 12:52:41 +01:00
FestplattenSchnitzel
671a264dfe
Use ruamel.yaml in metadata.py and metadata.TestCase
This is to read metadata based on YAML 1.2 rather than 1.1.
2023-01-15 12:52:41 +01:00
Jochen Sprickerhof
8c10614bf9 Merge branch 'fix-name-int' into 'master'
index.make_v0: ensure name is a str

See merge request fdroid/fdroidserver!1279
2023-01-10 19:25:55 +00:00
FC Stegerman
fc8820ff8e
index.make_v0: ensure name is a str 2023-01-10 19:40:52 +01:00
Jochen Sprickerhof
5075586f7d Merge branch 'ci_doc_debian' into 'master'
CI: Use Debian packages for documenation build

See merge request fdroid/fdroidserver!1278
2023-01-05 18:23:46 +00:00
Jochen Sprickerhof
37dd416aeb
CI: Use Debian packages for documenation build 2023-01-05 19:19:28 +01:00
Jochen Sprickerhof
d3c51f3abd Merge branch 'fix-bullseye-blocklist' into 'master'
checkupdates: only use bullseye_blocklist when openjdk-11 is mentioned

Closes #1076

See merge request fdroid/fdroidserver!1273
2022-12-07 06:58:35 +00:00
FC Stegerman
cefcf432c3
checkupdates: only use bullseye_blocklist when openjdk-11 is mentioned 2022-12-07 03:37:55 +01:00
Jochen Sprickerhof
bc56704eb0 Merge branch 'checkupdates_block_jdk11' into 'master'
checkupdates: Block one more openjdk-11

See merge request fdroid/fdroidserver!1272
2022-12-06 09:07:23 +00:00
Jochen Sprickerhof
a739a262f2
checkupdates: Block one more openjdk-11
See:

e397da7962 (note_1197704481)
2022-12-06 10:06:47 +01:00
Jochen Sprickerhof
393301c9e3 Merge branch 'verify-apks-diff' into 'master'
verify_apks(): compare to unsigned APK if copying fails

See merge request fdroid/fdroidserver!1264
2022-12-01 13:49:53 +00:00
FC Stegerman
c81ad4485c verify_apks(): compare to unsigned APK if copying fails 2022-11-30 10:39:46 +00:00
Hans-Christoph Steiner
159ae4a163 Merge branch 'clean_submodules' into 'master'
clean_repos plugin: also clean submodules

See merge request fdroid/fdroidserver!1268
2022-11-29 10:30:48 +00:00
Jochen Sprickerhof
46e5fa3714 clean_repos plugin: also clean submodules 2022-11-29 10:30:10 +00:00
Hans-Christoph Steiner
07481953ae Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.6

See merge request fdroid/fdroidserver!1271
2022-11-29 10:29:36 +00:00
fdroid-bot
4574728bb4 gradle v7.6 2022-11-28 13:20:41 +00:00
Hans-Christoph Steiner
37ffdd9a2a Merge branch 'linsui-master-patch-50291' into 'master'
gradle 7.6

See merge request fdroid/fdroidserver!1270
2022-11-28 13:19:59 +00:00
linsui
e6bf930fd4 gradle 7.6 2022-11-28 10:13:18 +00:00
Hans-Christoph Steiner
e70ef18d52
examples/fdroid_clean_repos.py: fix typo
!1227
2022-11-22 20:47:09 +01:00
Hans-Christoph Steiner
052c753075 examples/fdroid_clean_repos.py: black code format
!1227
2022-11-22 20:43:19 +01:00
Hans-Christoph Steiner
d7d4c18502 Merge branch 'cleanup_repos' into 'master'
update: make sure VCSs are clean

See merge request fdroid/fdroidserver!1227
2022-11-22 19:37:23 +00:00
Jochen Sprickerhof
1015225a00 Add plugin to cleanup app VCSs 2022-11-22 19:36:33 +00:00
Jochen Sprickerhof
886394c9a4 Merge branch 'index-v2-nightly' into 'master'
nightly bug fixes and tests

See merge request fdroid/fdroidserver!1257
2022-11-16 21:26:40 +00:00
Hans-Christoph Steiner
09b0405eb0
gitlab-ci: apksigner from current build-tools in ubuntu_jammy_pip 2022-11-16 20:16:36 +01:00
Hans-Christoph Steiner
1a30766c24
deploy: GIT_DEPTH=1 so GitLab Pages job runs as quick as possible
* https://docs.gitlab.com/ee/ci/large_repositories/index.html#shallow-cloning
2022-11-16 20:16:34 +01:00
Hans-Christoph Steiner
947d94e0a9
deploy: support GitLab Job Artifacts as a mirror 2022-11-16 20:16:32 +01:00
Hans-Christoph Steiner
d0976a3684
deploy: check repo size before enabling GitLab Pages 2022-11-16 20:16:30 +01:00
Hans-Christoph Steiner
cdce0958f8
deploy: convert .gitlab-ci.yml generation to dict + yaml.dump() 2022-11-16 20:16:27 +01:00
Hans-Christoph Steiner
f24613b701
index: fix git-mirror size check for GitLab Pages
The test case had the wrong folder setup, this was confirmed on a production
repo setup.
2022-11-16 20:16:25 +01:00
Hans-Christoph Steiner
83335437b9
nightly: if repo is too large, set archive_older to 3
If the user has not manually set --archive-older, then this will auto-switch
it from 20 to 3 to shrink the repo down so it fits into GitLab Pages.
2022-11-16 20:16:23 +01:00
Hans-Christoph Steiner
c2567d71d1
nightly: fail if *-nightly git repo is not publicly available 2022-11-16 20:16:21 +01:00
Hans-Christoph Steiner
15bd7057f0 nightly: add tests 2022-11-16 16:50:14 +01:00
Hans-Christoph Steiner
9c0eaac121 nightly: convert to config.yml 2022-11-16 14:40:08 +01:00
Hans-Christoph Steiner
1c5506ae05 nightly: support OpenSSL 3.0 with Paramiko
OpenSSL 3.0 changed the default output format from PKCS#1 to PKCS#8,
which paramiko does not support.

https://www.openssl.org/docs/man3.0/man1/openssl-rsa.html#traditional
https://github.com/paramiko/paramiko/issues/1015
2022-11-16 14:40:08 +01:00
Hans-Christoph Steiner
bf945a3062 nightly: only write SSH key files if ~/.ssh exists on dev's machine 2022-11-16 14:40:08 +01:00
Hans-Christoph Steiner
553c9aa7e7 include tests/nightly.TestCase in dist tarball 2022-11-16 14:40:08 +01:00
Hans-Christoph Steiner
e1793226e0 Merge branch 'robust-vagrant' into 'master'
Make buildserver build more robust and debuggable

See merge request fdroid/fdroidserver!811
2022-11-16 11:50:04 +00:00
Adam Novak
a15fc28982 Point user to Vagrant log if build server failed to build 2022-11-16 12:22:40 +01:00
Hans-Christoph Steiner
df579b2ff6 Merge branch 'reduce_noise' into 'master'
Drop VCS version check on every build

See merge request fdroid/fdroidserver!1214
2022-11-16 10:56:47 +00:00
Jochen Sprickerhof
3eea5f7c09 Don't get_android_tools_version_log for non builds 2022-11-16 10:56:27 +00:00
Jochen Sprickerhof
2cbb5576c7 Drop VCS version check on every build
This was introduced in
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/391

I don't think it is needed anymore.

Also log appid:versionCode
2022-11-16 10:56:27 +00:00
Hans-Christoph Steiner
b54eb946f1 Merge branch 'java-security-tmpdir' into 'master'
verify_old_apk_signature(): use temp dir instead of $PWD/.java.security

See merge request fdroid/fdroidserver!1256
2022-11-15 19:58:57 +00:00
FC Stegerman
e58637374c
verify_deprecated_jar_signature(): use temp dir instead of $PWD/.java.security 2022-11-15 19:10:38 +01:00
Jochen Sprickerhof
88995f71d3 Merge branch 'stop-preinstalling-ndk' into 'master'
stop pre-installing the ndk

See merge request fdroid/fdroidserver!1255
2022-11-15 13:25:55 +00:00
Hans-Christoph Steiner
c1342ab9d6 stop pre-installing the ndk 2022-11-15 13:25:19 +00:00
Jochen Sprickerhof
366dd0e408 Merge branch 'index-v2.jar-is-not-valid' into 'master'
index-v2.jar is not a valid file, remove references

See merge request fdroid/fdroidserver!1261
2022-11-15 13:22:27 +00:00
Hans-Christoph Steiner
01f7dfd0b3 index-v2.jar is not a valid file, remove references
entry.jar is the signed file, it references index-v2.json.
2022-11-15 13:22:09 +00:00
Jochen Sprickerhof
002d9cf333 Merge branch 'archive' into 'master'
Set ArchivePolicy default value based on VercodeOperation

See merge request fdroid/fdroidserver!1237
2022-11-15 13:21:32 +00:00
linsui
d25995c084 Set ArchivePolicy based on VercodeOperation/signature 2022-11-15 18:50:16 +08:00
Hans-Christoph Steiner
9016bb4ca0 Merge branch 'scanner-signature-sources-config' into 'master'
🔍 add `scanner_signature_sources` config option

Closes #732

See merge request fdroid/fdroidserver!1218
2022-11-15 09:33:36 +00:00
Michael Pöhn
4ce2f291e3 remove --exodus cli option from scanner.py 2022-11-15 09:20:26 +00:00
Michael Pöhn
24d88705fa 🔍 add scanner_signature_sources config option
This adds the option to configure which set of signatures `fdroid
scanner` should use, by configuring it in `config.yml`. It allows
fetching signatures in our custom json format. It also adds 3 additional
sources: 'suss', 'exodus', 'etip'
2022-11-15 09:20:26 +00:00
Jochen Sprickerhof
46d077292c Merge branch 'reduce_status_json' into 'master'
status.json: drop logs of failed builds

See merge request fdroid/fdroidserver!1254
2022-11-15 08:25:05 +00:00
Jochen Sprickerhof
e0fa38bab3 status.json: drop logs of failed builds
Those are uploaded separately.
2022-11-15 08:12:51 +00:00
Jochen Sprickerhof
1562975bad Merge branch 'vm-cpu-memory-status' into 'master'
build: read VM CPUs/RAM from builder/Vagrantfile

See merge request fdroid/fdroidserver!1262
2022-11-15 08:11:45 +00:00
Hans-Christoph Steiner
bd51b2e99f build: read VM CPUs/RAM from builder/Vagrantfile
makebuildserver.config.py is no more, builder/Vagrantfile is now where the
CPU and memory is configured for the buildserver VM.  In fact, that was
always the actual place, the makebuildserver.config.py thing was just
confused.

This should have been part of !1222
2022-11-15 08:57:41 +01:00
Hans-Christoph Steiner
5ea8c7da45 Merge branch 'fix_new_jdk' into 'master'
Skip jarsigner test due to weak signatures

See merge request fdroid/fdroidserver!1239
2022-11-15 07:19:19 +00:00
Jochen Sprickerhof
0549535bab
signindex: fix buster workaround
Don't try to remove arg if the old args where used.
2022-11-14 17:59:56 +01:00
Jochen Sprickerhof
1bb963d768
jarsigner: allow weak signatures
openjdk-11 11.0.17 in Debian unstable fails to verify weak signatures:

jarsigner -verbose -strict -verify tests/signindex/guardianproject.jar

         131 Fri Dec 02 20:10:00 CET 2016 META-INF/MANIFEST.MF
         252 Fri Dec 02 20:10:04 CET 2016 META-INF/1.SF
        2299 Fri Dec 02 20:10:04 CET 2016 META-INF/1.RSA
           0 Fri Dec 02 20:09:58 CET 2016 META-INF/
 m  ?  48743 Fri Dec 02 20:09:58 CET 2016 index.xml

  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  ? = unsigned entry

- Signed by "EMAILADDRESS=root@guardianproject.info, CN=guardianproject.info, O=Guardian Project, OU=FDroid Repo, L=New York, ST=New York, C=US"
    Digest algorithm: SHA1 (disabled)
    Signature algorithm: SHA1withRSA (disabled), 4096-bit key

WARNING: The jar will be treated as unsigned, because it is signed with a weak algorithm that is now disabled by the security property:

  jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024, SHA1 denyAfter 2019-01-01, include jdk.disabled.namedCurves
2022-11-14 17:59:56 +01:00
Jochen Sprickerhof
d4b6e95c4e
init: use provided keyalias 2022-11-14 17:58:37 +01:00
Jochen Sprickerhof
24630dfe68
Drop old getsig.java test
getsig.java was replaced by a Python implementation in 6e2d0a9e (2014)
and the test was only there to compare the results for the transition.

Dropping this as it no longer works starting with 11.0.17+8.
2022-11-14 17:58:37 +01:00
Jochen Sprickerhof
beed746740
Replace custom code by verify_jar_signature() 2022-11-14 17:58:35 +01:00
Hans-Christoph Steiner
623c5b6613 Merge branch 'server_locale' into 'master'
Fix locale on buildserver to C.UTF-8

See merge request fdroid/fdroidserver!1259
2022-11-14 15:40:39 +00:00
Jochen Sprickerhof
5b7c186e4a
Fix locale on buildserver to C.UTF-8
Regression of 817a156ea.
2022-11-14 16:06:31 +01:00
Jochen Sprickerhof
5f891314a2 Merge branch 'apksigcopier-1.1.0' into 'master'
update apksigcopier to upstream v1.1.0 (which adds support for gradle-signed APKs)

Closes #1051

See merge request fdroid/fdroidserver!1249
2022-11-09 21:42:50 +00:00
FC Stegerman
ae23175a6b f-droid modifications: rm do_compare(), main(), ... 2022-11-09 21:42:24 +00:00
FC Stegerman
038697cba5 copy apksigcopier v1.1.0 2022-11-09 21:42:24 +00:00
Jochen Sprickerhof
c30340947a Merge branch 'delete-triple-redundant-img' into 'master'
makebuildserver: delete unused libvirt image after process is complete

See merge request fdroid/fdroidserver!1253
2022-11-09 21:42:07 +00:00
Hans-Christoph Steiner
e395cd4f79
makebuildserver: delete unused libvirt image after process is complete
This process creates three copies of the buildserver image, all of which
are large.  So deleting the unused one is quite helpful:

```
-rw-r--r-- 1 fdroid       fdroid       20G  8. Nov 15:22 /home/fdroid/.vagrant.d/boxes/buildserver/0/libvirt/box.img
-rw------- 1 root         root         19G  8. Nov 14:07 /var/lib/libvirt/images/buildserver_default.img
-rwxr--r-- 1 libvirt-qemu libvirt-qemu 20G  8. Nov 16:08 /var/lib/libvirt/images/buildserver_vagrant_box_image_0_box.img
```
2022-11-09 18:40:26 +01:00
Jochen Sprickerhof
17e30a306c Merge branch 'reduce_status_json' into 'master'
Drop successfulBuilds from build.json

See merge request fdroid/fdroidserver!1211
2022-11-07 07:44:52 +00:00
Jochen Sprickerhof
b73c4b9214 Drop successfulBuilds from build.json
This should reduce the file size from 34MB to 1MB and it is not used by
the monitor.
2022-11-07 07:30:45 +00:00
Jochen Sprickerhof
6d505af6e4 Merge branch 'update_check_data_ints' into 'master'
lint: UpdateCheckData regex must match integers

See merge request fdroid/fdroidserver!1252
2022-11-06 17:14:35 +00:00
Jochen Sprickerhof
dedce2f236
lint: AUM with UCM: HTTP must have a pattern
Closes: #1029
2022-11-05 21:15:00 +01:00
Jochen Sprickerhof
551fca21b3
lint: UpdateCheckData regex must match integers 2022-11-05 21:15:00 +01:00
Jochen Sprickerhof
e76aac414f Merge branch 'checkupdates_block_jdk11' into 'master'
Drop JDK 11 on checkupdates

See merge request fdroid/fdroidserver!1248
2022-11-04 15:39:19 +00:00
Jochen Sprickerhof
b8ea90f252 Drop JDK 11 on checkupdates 2022-11-04 15:38:41 +00:00
Hans-Christoph Steiner
6c845be6b9 Merge branch 'fix-Windows' into 'master'
gitlab-ci: fix Windows job by installing Python 3.10, which has wheels

See merge request fdroid/fdroidserver!1251
2022-11-04 12:34:43 +00:00
Hans-Christoph Steiner
034735a81d
gitlab-ci: fix Windows job by installing Python 3.10, which has wheels
It seems that 3.11 whl packages are not yet always available.  We have other
jobs for testing new Python versions.
2022-11-04 13:34:14 +01:00
Hans-Christoph Steiner
166c28a7e7 Merge branch 'finalize-Vagrantfile.yaml' into 'master'
makebuildserver: stop trying to write to Vagrantfile.yaml

See merge request fdroid/fdroidserver!1250
2022-11-04 10:47:30 +00:00
Hans-Christoph Steiner
6ec7e05c76
makebuildserver: stop trying to write to Vagrantfile.yaml
If Vagrantfile.yaml exists, makebuildserver should no longer try to write
to it.  It is now manully managed now that makebuildserver.config.py no
longer exists.  Also, now that the buildserver is smaller, the workflow is
to always destroy and recreate it rather than ever try to reprovision it.
2022-11-04 11:33:55 +01:00
Hans-Christoph Steiner
b709ce8255 Merge branch 'man_db' into 'master'
Disable man-db auto-update (as done by sbuild)

See merge request fdroid/fdroidserver!1232
2022-11-03 17:21:35 +00:00
Jochen Sprickerhof
a2050a72fa Disable man-db auto-update (as done by sbuild) 2022-11-03 17:21:16 +00:00
Hans-Christoph Steiner
422ce78656 Merge branch 'agp' into 'master'
* agp:
  8.0 Android Gradle Plugin is already listed
  update AGP/Gradle map

fdroid/fdroidserver!1236
2022-11-03 17:34:33 +01:00
Hans-Christoph Steiner
9509707df6
8.0 Android Gradle Plugin is already listed 2022-11-03 17:34:07 +01:00
linsui
29079a4423 update AGP/Gradle map 2022-11-03 16:30:30 +00:00
Michael Pöhn
f8395ffe71 Merge branch 'move-makebuildserver.config.py-to-Vagrantfile.yaml' into 'master'
buildserver: turn ./makebuildserver into a pure helper script, allow standalone vagrant operation

See merge request fdroid/fdroidserver!1222
2022-11-03 13:01:18 +00:00
Hans-Christoph Steiner
2bf706ebe6
buildserver: clean up dirs from purged packages 2022-11-03 13:27:20 +01:00
Hans-Christoph Steiner
d6008cdb2a
convert examples/makebuildserver.config.py to Vagrantfile.yaml
Also, tests/androguard_test.py was removed long ago
2022-11-03 13:27:18 +01:00
Hans-Christoph Steiner
abf535aabe
buildserver: move config to buildserver/Vagrantfile.yaml 2022-11-03 13:27:16 +01:00
Hans-Christoph Steiner
e2fcd633fc
buildserver: hard code basebox name and version
This is not user-configurable, so it should not be setup to be.  This
process is only tested on the one basebox, and devs can just edit
Vagrantfile directly to test other base boxes.

# Conflicts:
#	makebuildserver
2022-11-03 13:27:15 +01:00
Hans-Christoph Steiner
abdd02f33a
makebuildserver: move copy_caches_from_host to command line flag 2022-11-03 13:27:13 +01:00
Hans-Christoph Steiner
21ea1c1c89
makebuildserver: purge apt_package_cache feature
This is unmaintained, lightly used, a tangled mess, and can be replaced by
things like the vagrant-cachier plugin or #418
2022-11-03 13:27:11 +01:00
Michael Pöhn
52849deea0 Merge branch 'set_e' into 'master'
Run shell scripts with -e (Closes: #1035)

Closes #1035

See merge request fdroid/fdroidserver!1185
2022-11-03 12:26:06 +00:00
Jochen Sprickerhof
557fe87d44 Run shell scripts with -e (Closes: #1035)
Make sudo, init prebuild, build and Prepare fields lists and only
concatenate them with '; ' before execution. This allows arbitrary
commands inside the fileds (even && and ';') as we don't need to split
the commands again for rewritemeta.
2022-11-03 12:25:31 +00:00
Michael Pöhn
49d8ba3b9b Merge branch 'fix-buildserver' into 'master'
buildserver: clean up secondary libvirt box image after rebuild

See merge request fdroid/fdroidserver!1247
2022-11-03 12:17:08 +00:00
Hans-Christoph Steiner
6c5ffdc428
buildserver: clean up secondary libvirt box image after rebuild
Boxes are stored in two places when using vagrant-libvirt:

 1. `vagrant box add` -> ~/.vagrant.d/boxes/buildserver/0/libvirt/
 2. `vagrant up` -> /var/lib/libvirt/images/buildserver_vagrant_box_image_0_box.img

If the second box is not cleaned up, then `fdroid build` will continue
to use the one from the second location, thereby ignoring the updated
one at the first location.  This keeps the second one around until the
new box is ready in case `fdroid build` is using it while this script
is running.
2022-11-03 12:58:58 +01:00
Jochen Sprickerhof
938b324e4d Merge branch 'btlog-index-v2' into 'master'
binary transparency log improvements

See merge request fdroid/fdroidserver!1245
2022-11-02 19:24:38 +00:00
Hans-Christoph Steiner
890513fcba index: standardized AntiFeature variable names
This is the only occurance of "anti_features".
2022-11-01 09:54:06 +01:00
Hans-Christoph Steiner
886712026d index: Anti-Features should always be a sorted set
There are diffs in the index caused by unstable order:
* 184cdd9c65 (572d84bb16becb794e10614840972554f333c66e_169259_169353)
* 184cdd9c65 (24c372740761176e67461dbc9136a799b15cfdbf_204154_204185)
2022-11-01 09:53:09 +01:00
Hans-Christoph Steiner
cd0c049b03 btlog: include index-v2 files 2022-11-01 08:47:48 +01:00
Jochen Sprickerhof
eb79769b37 Merge branch 'handle-default-txt-in-fdroid-metadata' into 'master'
handle default.txt changelog in fdroid metadata/

See merge request fdroid/fdroidserver!1243
2022-10-31 12:13:44 +00:00
Hans-Christoph Steiner
ca13325913
gitlab-ci: simplify ubuntu_jammy_pip job, babel is not needed
Babel runs on install now, before it was used to pre-generated the
compiled gettext files.
2022-10-31 12:56:32 +01:00
Hans-Christoph Steiner
ffc3fbe288
handle default.txt changelog in fdroid metadata/
fixup !1240
2022-10-31 12:56:30 +01:00
Hans-Christoph Steiner
10c1089eba Merge branch '1240-fixups' into 'master'
!1240 fixups

See merge request fdroid/fdroidserver!1242
2022-10-31 10:06:49 +00:00
Hans-Christoph Steiner
97f3e78fa8 fixup from 8b484b37bd in !1240 2022-10-31 10:56:02 +01:00
Hans-Christoph Steiner
99e0c28d37 run black on tests/updates.TestCase to fix lint failure 2022-10-31 10:19:43 +01:00
Hans-Christoph Steiner
e799f32d71 set black to format to py38 to support Debian/bullseye package
Debian/bullseye (stable) includes black v20.8b1, which does not yet know
about the py39 target-version.
2022-10-31 10:19:43 +01:00
Hans-Christoph Steiner
ef292d8d6d Merge branch 'obfusk-master-patch-68185' into 'master'
gradlew-fdroid: use curl --retry 3 --retry-all-errors

Closes #1063

See merge request fdroid/fdroidserver!1241
2022-10-31 08:45:55 +00:00
FC Stegerman
f149b8fbe1 gradlew-fdroid: use curl --retry 3 --retry-all-errors 2022-10-31 08:45:41 +00:00
Hans-Christoph Steiner
027a7fb208
Merge branch 'absurdity' into 'master'
* absurdity:
  add tests for Fastlane changelogs including default.txt
  use default.txt as fallback changelog when inserting fastlane metadata

see fdroid/fdroidserver!1240
2022-10-31 09:42:56 +01:00
Hans-Christoph Steiner
8b484b37bd
add tests for Fastlane changelogs including default.txt 2022-10-31 09:42:19 +01:00
Ashutosh Gangwar
afec880c81
use default.txt as fallback changelog when inserting fastlane metadata 2022-10-30 19:07:52 +05:30
Jochen Sprickerhof
a17627bffa Merge branch 'volist' into 'master'
change VercodeOperation to TYPE_LIST

See merge request fdroid/fdroidserver!1233
2022-10-29 06:41:40 +00:00
linsui
618e2c7d72 change VercodeOperation to TYPE_LIST 2022-10-27 19:11:37 +08:00
Jochen Sprickerhof
747fa13591 Merge branch 'licaon-kter-master-patch-87038' into 'master'
buildserver: strip extraneous packages installed by Vagrant base box

See merge request fdroid/fdroidserver!1228
2022-10-25 18:23:06 +00:00
Hans-Christoph Steiner
7976ecc12a buildserver: mark fdroidserver deps as manual
This lets build steps use `apt-get autoremove` and still have a working
fdroidserver.
2022-10-25 19:48:27 +02:00
Hans-Christoph Steiner
817a156ea5 buildserver: strip extraneous packages installed in Vagrant base box
The official Debian Vagrant box seems to be a "batteries included" kind of
thing.  The buildserver should be as small as possible, so this removes all
the extraneous packages I could find in the Vagrant basebox.
2022-10-25 19:47:31 +02:00
Hans-Christoph Steiner
fdeab70c03 Merge branch 'fix_int_field_0' into 'master'
Support 0 as versionCode

See merge request fdroid/fdroidserver!1231
2022-10-25 11:40:15 +00:00
Jochen Sprickerhof
b86d815743
Support 0 as versionCode
See: !1230
2022-10-25 12:55:44 +02:00
Jochen Sprickerhof
8533c9cb4b Merge branch 'fix_ipfs_test' into 'master'
Fix ipfs test config

See merge request fdroid/fdroidserver!1226
2022-10-24 09:58:05 +00:00
Jochen Sprickerhof
5e1bdfc278
Fix ipfs test config 2022-10-24 11:43:47 +02:00
Jochen Sprickerhof
7bd7e5c0db Merge branch 'python_3.9' into 'master'
Require Python 3.9

Closes #1038

See merge request fdroid/fdroidserver!1224
2022-10-24 09:18:04 +00:00
FestplattenSchnitzel
625dc11930 Require Python 3.9 2022-10-24 09:17:27 +00:00
Jochen Sprickerhof
ecaf1fc770 Merge branch 'download-retries' into 'master'
net.download_file(): retry on errors

Closes #1058

See merge request fdroid/fdroidserver!1225
2022-10-24 09:11:49 +00:00
FC Stegerman
d1ddd525c1
net.download_file(): retry on errors 2022-10-22 23:15:13 +02:00
Hans-Christoph Steiner
c61c9f3895 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.5.1

See merge request fdroid/fdroidserver!1223
2022-10-20 16:16:04 +00:00
fdroid-bot
d19d34d944 gradle v7.5.1 2022-10-20 16:03:14 +00:00
Hans-Christoph Steiner
b2a96662b6 Merge branch 'fix-vagrant-package' into 'master'
buildserver: fix `vagrant package` step

Closes #990

See merge request fdroid/fdroidserver!1220
2022-10-20 16:02:31 +00:00
Hans-Christoph Steiner
1dd480405e
buildserver: let vagrant package handle insecure private key
This script was overwriting the provisioning that `vagrant package` does
already, and breaking `vagrant ssh`.  It should have been removed in !1099

closes #990
    fdroid-bootstrap-buildserver#12
    !1012
    !1099
c6f5956537
2022-10-20 17:42:53 +02:00
Hans-Christoph Steiner
1e2e82fbde
makebuildserver: use HTTPS in default debian apt source 2022-10-20 17:42:50 +02:00
Hans-Christoph Steiner
cdee2caa03 Merge branch 'post-bullseye-ci-updates' into 'master'
gitlab-ci: port ubuntu_bionic_pip to Ubuntu/jammy

See merge request fdroid/fdroidserver!1221
2022-10-20 15:36:18 +00:00
Hans-Christoph Steiner
2b5c35829f tests/run-tests: fix "fatal: transport 'file' not allowed"
https://gitlab.com/eighthave/fdroidserver/-/jobs/3202418899
2022-10-20 17:21:43 +02:00
Hans-Christoph Steiner
2bde06a60f gitlab-ci: port ubuntu_bionic_pip to Ubuntu/jammy
This job is here to test using fdroidserver with only depends from pip
and sdkmanager (e.g. not apt-get).  Production is now on bullseye #1038
2022-10-19 14:10:46 +02:00
Hans-Christoph Steiner
eafa7f5e70 gitlab-ci: delete buster_backports job, prod signing is on bullseye
Via private email with @CiaranG
2022-10-19 14:06:59 +02:00
Hans-Christoph Steiner
81f02b8279 gitlab-ci: fix apt.conf syntax for Acquire::Retries 2022-10-19 13:56:28 +02:00
Jochen Sprickerhof
6071ae8f38 Merge branch 'multi' into 'master'
Support autoupdate multi build blocks

See merge request fdroid/fdroidserver!1169
2022-10-16 08:13:02 +00:00
linsui
68b58c043f Change VercodeOperation to list
... so that we can calculate multiple version codes to support multi-arch autoupdate
2022-10-15 17:19:49 +08:00
linsui
0d39169840 checkupdates.TestCase: remove indentation
These assert functions doesn't need to be in the mock context.
2022-10-15 16:09:19 +08:00
Jochen Sprickerhof
e62a2a86fc Merge branch 'vercode' into 'master'
make versionCode an integer

Closes #332

See merge request fdroid/fdroidserver!1176
2022-10-14 09:02:12 +00:00
linsui
5a28f20301 make versionCode/build.timeout an integer
Co-authored-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
2022-10-14 08:42:26 +00:00
linsui
6f73a87eb1 fix typo: Build -> Builds 2022-10-14 08:42:26 +00:00
Michael Pöhn
44eab1d5d2 Merge branch 'use-vagrant-package' into 'master'
makebuildserver: use `vagrant package` and purge custom code

Closes #990

See merge request fdroid/fdroidserver!1099
2022-10-13 14:10:55 +00:00
Hans-Christoph Steiner
9089750277 buildserver: show informative message if Vagrant is not configed 2022-10-13 13:56:56 +00:00
Hans-Christoph Steiner
b4d25d2834 makebuildserver: use vagrant package; purge custom code
Years ago, vagrant-libvirt did not implement the `vagrant package` command
that we needed, and there were no Ruby people around to implement it for us.
So we hacked a custom version in our Python wrapper.  Now, vagrant-libvirt
v0.7.0 does implement it, so this switches things to just using
`vagrant package`
2022-10-13 13:56:56 +00:00
Hans-Christoph Steiner
380403cb54 Merge branch 'status_json_earlier' into 'master'
Sync status json after every build

See merge request fdroid/fdroidserver!1215
2022-10-13 11:20:25 +00:00
Jochen Sprickerhof
9c0d50a9b2 Sync status json after every build
dfdd2913 the logic to only write the status json upon build but before
the build happens. This makes sure that it is written after a
successful build or exception.
2022-10-13 11:20:15 +00:00
Hans-Christoph Steiner
cd8ded730a Merge branch 'fix-scanner-config-loading' into 'master'
scanner: fix loading config.yml

See merge request fdroid/fdroidserver!1216
2022-10-13 11:12:05 +00:00
Michael Pöhn
06b8150922 scanner: fix loading config.yml
With my last merge request I accidentally intoduced a bug where
scanner.py stopped loading 'config.yml' because the helper functions
from common.py get called in the wrong places. This change fixes this
issue.
2022-10-13 10:53:25 +02:00
Jochen Sprickerhof
c1b665e3f9 Merge branch 'install-buildserver-with-fdroid-sdkmanager' into 'master'
buildserver: install default SDK packages using fdroid/sdkmanager

Closes #927

See merge request fdroid/fdroidserver!1212
2022-10-12 19:13:07 +00:00
Hans-Christoph Steiner
bdc10caa57 add missing build-tools and platforms 2022-10-12 20:57:55 +02:00
Hans-Christoph Steiner
daa5ad152e buildserver: install default SDK packages using fdroid/sdkmanager
fdroid/sdkmanager provides a root of trust to verify all the packages it
downloads, so it fully replaces what makebuildserver was doing.

closes #927
2022-10-12 20:57:55 +02:00
Hans-Christoph Steiner
e4f1066bb1 stop installing ancient plaforms: 2.1 (7), 2.2 (8), 2.3 (9)
fdroid/sdkmanager has bugs with some of these, and some of these have been
taken down. https://dl.google.com/android/repository/android-2.3_r01-linux.zip
gives a 404.
2022-10-12 20:57:55 +02:00
Hans-Christoph Steiner
1d710947b9 buildserver: stop installing 'android;m2repository' by default
It is a huge package, it is rarely used, its not supported by
fdroid/sdkmanager yet, and it is a pain to manage the install.  If this
breaks any app builds, the package can be installed as part of the build
metadata.
2022-10-12 20:57:55 +02:00
Hans-Christoph Steiner
41266f2ac3 Merge branch 'buildserver-docker-apt-mark-manual' into 'master'
Dockerfile: apt-mark manual fdroidserver dependencies

See merge request fdroid/fdroidserver!1213
2022-10-12 18:57:38 +00:00
Jochen Sprickerhof
300278e7c2 remove transitional apt-transport-https package 2022-10-12 18:57:23 +00:00
Hans-Christoph Steiner
fd9b911a42 Dockerfile: apt-mark manual fdroidserver dependencies
Then apt-get does not warn about unneeded deps that could be autoremoved.
2022-10-12 18:57:23 +00:00
Hans-Christoph Steiner
7a40e5f6d5 Merge branch 'status_only_on_build' into 'master'
Write build/status.json only on build

See merge request fdroid/fdroidserver!1210
2022-10-12 16:17:38 +00:00
Jochen Sprickerhof
dfdd29131f
Write build/running.json only on build
This should reduce the runtime.

Also test if it was written.
2022-10-12 15:25:17 +02:00
Jochen Sprickerhof
b3f0f6f77e Merge branch 'pow' into 'master'
Allow pow in VercodeOperation (Closes: #1021)

Closes #1021

See merge request fdroid/fdroidserver!1158
2022-10-12 09:04:59 +00:00
Jochen Sprickerhof
8244ffa0ff Allow pow in VercodeOperation (Closes: #1021) 2022-10-12 08:51:17 +00:00
Jochen Sprickerhof
79be3c1e5d Merge branch 'fix-ipfs_cid-detection' into 'master'
fix ipfs_cid detection logic

See merge request fdroid/fdroidserver!1209
2022-10-12 06:54:02 +00:00
Hans-Christoph Steiner
ade0122d47
fix ipfs_cid detection logic
@obfusk caught this.

I messed up in 02a91cba66 from !1202
2022-10-11 23:31:08 +02:00
Hans-Christoph Steiner
0c8e0abf28 Merge branch 'grab-bag-o-six' into 'master'
Grab bag o' six

See merge request fdroid/fdroidserver!1202
2022-10-11 14:51:55 +00:00
Hans-Christoph Steiner
f97dc0d010
version 2.2 alpha 0 2022-10-11 16:36:13 +02:00
Hans-Christoph Steiner
353ee84a6f
test that get_apk_id throws exceptions (issuebot#60) 2022-10-11 16:36:11 +02:00
Hans-Christoph Steiner
828eb938c3
gradlew-fdroid: Gradle Android Plugin 7.3 needs Gradle 7.4 2022-10-11 16:36:09 +02:00
Hans-Christoph Steiner
02a91cba66
update: only show missing ipfs_cid warning once. 2022-10-11 16:36:08 +02:00
Hans-Christoph Steiner
29838a8bae gitlab-ci: update alpine to supported version 2022-10-11 16:27:05 +02:00
Hans-Christoph Steiner
766ce52ebe
Merge branch 'hgsvn' into 'master
* mergeme:
  buildserver: fix apksigner install
  Pre-install git-svn and mercurial

fdroid/fdroidserver!1206
2022-10-11 16:24:10 +02:00
Hans-Christoph Steiner
759fa3b40a
buildserver: fix apksigner install
Adding /bullseye-backports confuses things apparently.  Without it, apt
will look in bullseye-backports automatically, including for deps.  But it
will not look for deps in bullseye-backports if /bullseye-backports is used.

!1205
2022-10-11 16:23:45 +02:00
linsui
47cbc47346 Pre-install git-svn and mercurial 2022-10-11 13:31:51 +00:00
Jochen Sprickerhof
60be04336f Merge branch 'buildserver-needs-apksigner' into 'master'
buildserver: include apksigner for Binaries: verification

See merge request fdroid/fdroidserver!1205
2022-10-11 12:04:20 +00:00
Hans-Christoph Steiner
b58eaa224b buildserver: include apksigner for Binaries: verification
Verification of Binaries: happens in the buildserver VM first, so it needs
a matching version of apksigner as the rest of the process.  This fixes:
https://gitlab.com/fdroid/fdroidserver/-/jobs/3154772374
2022-10-11 12:03:55 +00:00
Hans-Christoph Steiner
d33907606e
gitlab-ci: install sdkmanager from bullseye-backports 2022-10-11 13:57:38 +02:00
Jochen Sprickerhof
c6f83a58f2 Merge branch 'mvn' into 'master'
remove MVN3

See merge request fdroid/fdroidserver!1203
2022-10-11 11:26:09 +00:00
linsui
e90f03a494 remove MVN3 2022-10-11 09:58:35 +00:00
Hans-Christoph Steiner
98437d88d0 Merge branch 'keep-fdroidserver-dependencies' into 'master'
buildserver: prevent fdroidserver deps from being purged in Docker

See merge request fdroid/fdroidserver!1204
2022-10-11 08:57:08 +00:00
Hans-Christoph Steiner
e192eb4a32
buildserver: prevent fdroidserver deps from being purged in Docker 2022-10-11 10:52:54 +02:00
Hans-Christoph Steiner
b4720d9201
gitlab-ci: fix reversed logic in docker push
I got it backwards in 66d8b783f0 from !1183
2022-10-11 09:53:42 +02:00
Hans-Christoph Steiner
b0124aca1a Merge branch 'upgrade_buildserver_vm' into 'master'
Upgrade Buildserver VM to latest Debian (Bullseye)

See merge request fdroid/fdroidserver!1012
2022-10-11 07:38:44 +00:00
Hans-Christoph Steiner
4e839ac63b switch to latest vagrant boxes 2022-10-10 21:22:59 +02:00
Hans-Christoph Steiner
a0ea27632e buildserver: use HTTPS for security.debian.org
It is now officially supported:
https://guardianproject.info/2021/12/08/debian-over-https/
2022-10-10 21:22:59 +02:00
Hans-Christoph Steiner
4eb189ad2e gitlab-ci: plugin_fetchsrclibs runs in same base OS as fdroiddata 2022-10-10 21:22:59 +02:00
Hans-Christoph Steiner
c6f5956537 install Vagrant insecure_private_key into buildserver box
Vagrant uses the "insecure private key" to establish the first SSH
connection to a new VM based on a clean public box.  In theory, the
`vagrant package` command should do that automatically.  This process
is still using custom code instead of `vagrant package`, hence this
script.

This public key can be generated on any Vagrant install using:
  ssh-keygen -y -f  ~/.vagrant.d/insecure_private_key

https://www.vagrantup.com/docs/vagrantfile/ssh_settings#config-ssh-private_key_path
fdroid-bootstrap-buildserver#12
!1012
!1099
2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
046d3c8dcf Use ssh_config.d 2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
c208582e75 Drop old java_paths 2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
9ddf38b69a Drop vagrant ssh config
Not needed and breaks login with debian/bullseye64 image.
2022-10-10 21:22:59 +02:00
Hans-Christoph Steiner
dbaa3f6ec2 Stop installing ConstraintLayout
sdkmanager does not work anymore with Java 11 and these can be installed in
the app's build metadata.
2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
f03e812a13 Drop obsolete apt-transport-https 2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
d762f423ce Install patch and rsync (required by fdroidserver) 2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
b4f8ab289d Use yaml.safe_* 2022-10-10 21:22:59 +02:00
Jochen Sprickerhof
cb2c3a34bb remove hack to disable GNOME.Accessibility for minimal deps
This is commented out by default on all OpenJDK packages since Java 8.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1012?diff_id=263085985#note_726457435

root@sid:/# grep Accessibility /etc/java-*-openjdk/accessibility.properties
/etc/java-11-openjdk/accessibility.properties:#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
/etc/java-17-openjdk/accessibility.properties:#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
/etc/java-18-openjdk/accessibility.properties:#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
/etc/java-8-openjdk/accessibility.properties:assistive_technologies=org.GNOME.Accessibility.AtkWrapper
2022-10-10 21:22:59 +02:00
FestplattenSchnitzel
be5aefd3ee Install required packages for fdroidserver automatically 2022-10-10 21:22:59 +02:00
FestplattenSchnitzel
cc641b5470 Stop adding i386 architecture to dpkg 2022-10-10 21:22:59 +02:00
FestplattenSchnitzel
df46eb86c3 Upgrade Buildserver VM
Use Vagrant boxes built with cloud-team/debian-vagrant-images instead of fdroid/basebox,
Use Debian Bullseye (11) instead of Debian Stretch (9)
2022-10-10 21:22:59 +02:00
Hans-Christoph Steiner
7accb96b9e Merge branch 'unified-scanner-signatures' into 'master'
cached scanner signatures

Closes #1008

See merge request fdroid/fdroidserver!1198
2022-10-06 14:09:49 +00:00
Hans-Christoph Steiner
9ccf583061 Apply 3 suggestion(s) to 2 file(s) 2022-10-06 13:55:38 +00:00
Michael Pöhn
e967fc61cf scanner: add regression tests for signautre load logic 2022-10-06 14:50:30 +02:00
Michael Pöhn
d815a64fdb scanner: filter urlopen schemes, mute bandit 2022-10-06 12:09:07 +02:00
Michael Pöhn
b7233dfb2e ignore cache write test case on older python versions 2022-10-06 12:09:07 +02:00
Michael Pöhn
59b1899d79 scanner: switch form iso8601 to unix timestamp for python3.5 support 2022-10-06 12:09:07 +02:00
Michael Pöhn
9560ed955c avoid running into native-date object issue
Seem I ran into this issue: https://bugs.python.org/issue47228  This
change tries to fix it by using utcnow insteas of astimezone.
2022-10-06 12:09:07 +02:00
Michael Pöhn
7933623e93 fix pydocstyle lint errors 2022-10-06 12:09:07 +02:00
Michael Pöhn
036b788424 move suss defaults into scanner.py
As discussed with _hc, we're going to keep the default values for
SUSS inside the python code for now. To avoid compilcated packaging
issues. Once fdroidserver does not have to support python verison older
than 3.7 we can utilize to `importlib.resources` for shipping these
defaults as separate file.
2022-10-06 12:09:07 +02:00
Michael Pöhn
0921863fa6 scanner: update suss defaults after removal of allowlisted feature 2022-10-06 12:09:07 +02:00
Michael Pöhn
6899c22f48 scanner: remove allowlisted from scan_source 2022-10-06 12:09:06 +02:00
Michael Pöhn
a8bcaa3d70 scanner: implement caching rules for suss 2022-10-06 12:09:06 +02:00
Michael Pöhn
bfcc30b854 add --refresh to scanner 2022-10-06 12:09:06 +02:00
Michael Pöhn
4a38908bd7 make cachedir subdirectories pick their place correctly based on parent folder 2022-10-06 12:09:06 +02:00
Michael Pöhn
1e6694112a rename to suss 2022-10-06 12:09:06 +02:00
Michael Pöhn
dc1a2db3f4 scanner: use Path.resovle instead of undocumented absolute() 2022-10-06 12:09:06 +02:00
Michael Pöhn
c9b59b525d fix timestamp check; remove dead code 2022-10-06 12:09:05 +02:00
Michael Pöhn
c10633eac5 convert fdroid scanner --exodus to SignatureDataController 2022-10-06 12:08:26 +02:00
Michael Pöhn
d5ef1b2e95 add --clear-cache option to scanner 2022-10-06 12:08:26 +02:00
Michael Pöhn
e4b54fe4a7 move NON_FREE_GRADLE_LINES to signature definition files 2022-10-06 12:08:26 +02:00
Michael Pöhn
9c5b35742d use ScannerTool for basic cacheing and scanning 2022-10-06 12:08:26 +02:00
Michael Pöhn
f56b1f3012 basic downloading for scan_binary signatures 2022-10-06 12:08:23 +02:00
Jochen Sprickerhof
82355b8559 Merge branch 'linsui-master-patch-90027' into 'master'
fix typo

See merge request fdroid/fdroidserver!1201
2022-10-05 06:15:53 +00:00
linsui
5354661fb4 fix typo 2022-10-05 06:15:53 +00:00
Hans-Christoph Steiner
cfd426cc1f Merge branch 'scan_more_binary' into 'master'
Support more file types in get_embedded_classes

Closes #999

See merge request fdroid/fdroidserver!1123
2022-09-30 18:09:32 +00:00
Hans-Christoph Steiner
3de6063a01 scanner: open DEX/ZIP by file magic; throw errors on bad filenames 2022-09-30 17:56:15 +00:00
Hans-Christoph Steiner
aa190d532f scanner.TestCase: manually convert to black code format
I manually changed some code structures to give a decent code format.
2022-09-30 17:56:15 +00:00
Jochen Sprickerhof
4197455436 Support more file types in get_embedded_classes
Closes: #999
2022-09-30 17:56:15 +00:00
Hans-Christoph Steiner
6a4b7ba4c1 Merge branch 'pyproject.toml' into 'master'
Move lint tools configuration to pyproject.toml

See merge request fdroid/fdroidserver!1196
2022-09-30 17:55:42 +00:00
FestplattenSchnitzel
e4d16ec1e8 Move lint tools configuration to pyproject.toml
This commit removes the mypy CI job, since there are no or few type
hints in the codebase and it failed on unrelated changes in the past.
It might be reintroduced when type hints get added.
2022-09-30 17:53:31 +00:00
Hans-Christoph Steiner
42cb31039e Merge branch 'fix_status_deploy' into 'master'
Sync all status files

See merge request fdroid/fdroidserver!1199
2022-09-29 17:54:22 +00:00
Jochen Sprickerhof
96f8284a50
Sync all status files 2022-09-29 19:41:12 +02:00
Hans-Christoph Steiner
244273e58e Merge branch 'clojars' into 'master'
scanner: allow repo.clojars.org

See merge request fdroid/fdroidserver!1197
2022-09-26 18:58:28 +00:00
linsui
ec69be04ce scanner: allow repo.clojars.org 2022-09-26 18:58:15 +00:00
Hans-Christoph Steiner
bd6689a75d Merge branch 'editorconfig' into 'master'
Add .editorconfig

See merge request fdroid/fdroidserver!1194
2022-09-20 15:12:15 +00:00
FestplattenSchnitzel
ecc9ad0e8c Add .editorconfig
See https://editorconfig.org/
2022-09-20 14:08:04 +00:00
Hans-Christoph Steiner
e239a600a3 Merge branch 'fix_v4_signing' into 'master'
Work around old apksigner on f-droid.org publish server

See merge request fdroid/fdroidserver!1192
2022-09-20 13:58:42 +00:00
Jochen Sprickerhof
cf228d35a3 Work around old apksigner on f-droid.org publish server 2022-09-20 13:58:41 +00:00
Michael Pöhn
2b5ac31bf8 Merge branch 'test_getref' into 'master'
Add test for git getref

Closes #1040

See merge request fdroid/fdroidserver!1191
2022-09-15 11:48:00 +00:00
Jochen Sprickerhof
f96f247095
Add test for git getref 2022-09-15 13:32:11 +02:00
Michael Pöhn
603c8c5cd4 Merge branch 'fix_getref' into 'master'
Use old python-git exception API for getref

See merge request fdroid/fdroidserver!1190
2022-09-15 08:35:10 +00:00
Jochen Sprickerhof
0f48294a6e
Use old python-git exception API for getref
The is_valid_object method is not even in Debian bullseye.
2022-09-15 07:44:02 +02:00
Michael Pöhn
2aebc48a65 Merge branch 'linsui-master-patch-61703' into 'master'
scanner: add some rules

See merge request fdroid/fdroidserver!1150
2022-09-14 15:02:38 +00:00
linsui
ac96e43e13 scanner: add some rules 2022-09-14 15:02:37 +00:00
Jochen Sprickerhof
0a157d3f17 Merge branch 'fix_check_updates_expected' into 'master'
[lint] Fix comparisons in check_updates_expected

See merge request fdroid/fdroidserver!1188
2022-09-14 10:10:34 +00:00
FestplattenSchnitzel
580ce85412 [lint] Fix comparisons in check_updates_expected 2022-09-14 10:10:20 +00:00
Jochen Sprickerhof
7d94055830 Merge branch 'Adding-IPFS-CID-to_Index' into 'master'
Addition of IPFS CID onto Index-v2.json file

Closes #976

See merge request fdroid/fdroidserver!1154
2022-09-14 09:28:28 +00:00
pmmayero
0ad45a94a8 Addition of IPFS CIDv1 to Index
IPFS CIDv1 is only generated for APKs and "repo files"
2022-09-14 09:28:02 +00:00
Michael Pöhn
5e31f23a96 Merge branch 'fix_getref' into 'master'
git.getref: use python-git

See merge request fdroid/fdroidserver!1186
2022-09-14 09:25:28 +00:00
Jochen Sprickerhof
7b31535c25 git.getref: use python-git
Fixes a "warning: refname is ambiguous." problem:

$ git clone https://gitlab.com/joshua.tee/wx.git
$ cd wx
$ git rev-parse 55699
warning: refname '55699' is ambiguous.

8760bb0ce7 (note_1090707468)
2022-09-14 09:12:02 +00:00
Jochen Sprickerhof
7aa4b2678b Merge branch 'check_no_updates_expected' into 'master'
[lint] Complain if checking for updates makes no sense

See merge request fdroid/fdroidserver!1187
2022-09-12 13:51:44 +00:00
FestplattenSchnitzel
d32e53798d
[lint] Check if checking for updates makes no sense 2022-09-12 12:27:38 +02:00
Hans-Christoph Steiner
a3b7ba4eed Merge branch 'dump_internal_metadata_format' into 'master'
Cleanup tests/dump_internal_metadata_format.py

See merge request fdroid/fdroidserver!1184
2022-09-08 19:54:20 +00:00
Jochen Sprickerhof
483d6da51c
Cleanup tests/dump_internal_metadata_format.py
- Update usage documentation.
- Use argparse.
- Simplify config handling (similar to readmeta.py).
- Drop code for fdroidserver before 0.7.0.
- Reformat with black.
2022-09-08 21:40:26 +02:00
Jochen Sprickerhof
8eea3a6822 Merge branch 'three-commits-for-things' into 'master'
four random fixes

See merge request fdroid/fdroidserver!1183
2022-09-08 17:19:16 +00:00
Hans-Christoph Steiner
66d8b783f0 gitlab-ci: only display message if not running docker push 2022-09-08 18:55:32 +02:00
Hans-Christoph Steiner
53a507d7c4 buildserver: default to HTTPS for apt sources
Debian Docker images will soon default to HTTPS for apt sources, so force
it now:
https://github.com/debuerreotype/docker-debian-artifacts/issues/15
2022-09-08 18:55:17 +02:00
Hans-Christoph Steiner
b854f3bab7 update: fully isolate testInsertStoreMetadata test
The test was failing due to something on my local filesystem, this
runs the test in a new dir every time.
2022-09-08 18:45:30 +02:00
Hans-Christoph Steiner
e79585b0c0 index: remove unused, confusing args to file_entry() 2022-09-08 18:13:26 +02:00
Hans-Christoph Steiner
21c4c118a1 Merge branch 'ci_bump_release' into 'master'
CI: Bump RELEASE_COMMIT_ID for new release

See merge request fdroid/fdroidserver!1181
2022-09-08 16:13:07 +00:00
Jochen Sprickerhof
da9a12bf5a
CI: Bump RELEASE_COMMIT_ID for new release
Drop old sed hacks.
2022-09-08 17:58:59 +02:00
Jochen Sprickerhof
707753a289 Merge branch 'opt-in-docker-push' into 'master'
gitlab-ci: make push in "docker" job opt-in

See merge request fdroid/fdroidserver!1182
2022-09-08 15:58:39 +00:00
Hans-Christoph Steiner
2d5d98fe32 gitlab-ci: stop tags/branches overwriting buildserver docker image
https://gitlab.com/fdroid/fdroidserver/-/jobs/2988110595
https://gitlab.com/eighthave/fdroidserver/-/jobs/2997738047
2022-09-08 17:51:23 +02:00
Hans-Christoph Steiner
dbe4af7951 gitlab-ci: make push in "docker" job opt-in
gitlab.com has added pretty small quotas to free tier accounts, and this
job pushes a docker image that is nearly 1GB.  And those rarely get used,
so this makes it opt in via a variable that can be set when manually
running a job, or globally in the "CI/CD Variables" Settings.
2022-09-08 11:28:59 +02:00
Hans-Christoph Steiner
4fc9c309c1
make -C locale/ update 2022-09-06 22:28:02 +02:00
Hans-Christoph Steiner
54e84d8770 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1180
2022-09-06 14:53:31 +00:00
Hans-Christoph Steiner
78c552aa0a Translated using Weblate: Chinese (Traditional) (zh_Hant) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 76.3% (467 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
2022-09-06 16:38:23 +02:00
Hans-Christoph Steiner
56e5846dd6 Translated using Weblate: Tibetan (bo) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 61.7% (378 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/
2022-09-06 16:38:10 +02:00
Yang Yulin
8d73bb45ea Translated using Weblate: Chinese (Simplified) (zh_Hans) by Yang Yulin <yylteam@hotmail.com>
Currently translated at 70.4% (431 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
linsui
25a5754c3c Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>
Currently translated at 70.4% (431 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
Yang Yulin
c94a9894cc Translated using Weblate: Chinese (Simplified) (zh_Hans) by Yang Yulin <yylteam@icloud.com>
Currently translated at 67.3% (412 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
Yang Yulin
5497f6e4dd Translated using Weblate: Chinese (Simplified) (zh_Hans) by Yang Yulin <yylteam@icloud.com>
Currently translated at 63.7% (390 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
yangyangdaji
51c730f8e5 Translated using Weblate: Chinese (Simplified) (zh_Hans) by yangyangdaji <1504305527@qq.com>
Currently translated at 61.4% (376 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
Yang Yulin
1fe5d140d3 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Yang Yulin <yylteam@icloud.com>
Currently translated at 61.1% (374 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
JY3
776019964b Translated using Weblate: Chinese (Simplified) (zh_Hans) by JY3 <GeeyunJY3@gmail.com>
Currently translated at 60.6% (371 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
Yang Yulin
977a2661a9 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Yang Yulin <yylteam@icloud.com>
Currently translated at 60.6% (371 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
YangYulin
9816b42373 Translated using Weblate: Chinese (Simplified) (zh_Hans) by YangYulin <yylteam@icloud.com>
Currently translated at 58.0% (355 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
YangYulin
d84b2da77c Translated using Weblate: Chinese (Simplified) (zh_Hans) by YangYulin <yylteam@icloud.com>
Currently translated at 56.3% (345 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
YangYulin
db5fa45728 Translated using Weblate: Chinese (Simplified) (zh_Hans) by YangYulin <yylteam@icloud.com>
Currently translated at 54.7% (335 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
linsui
cf59b2a6d6 Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>
Currently translated at 54.4% (333 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
linsui
831918d8bb Translated using Weblate: Chinese (Simplified) (zh_Hans) by linsui <linsui@inbox.lv>
Currently translated at 53.5% (328 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
Eric
558d94c87b Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <alchemillatruth@purelymail.com>
Currently translated at 48.2% (295 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
Trey Yang
41265994e4 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Trey Yang <stevsfy@gmail.com>
Currently translated at 48.0% (294 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
JY3
6f742fa5cc Translated using Weblate: Chinese (Simplified) (zh_Hans) by JY3 <GeeyunJY3@gmail.com>
Currently translated at 44.4% (272 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-09-06 16:37:42 +02:00
shenzhui007
96935e26d5 Translated using Weblate: Chinese (Simplified) (zh_Hans) by shenzhui007 <12231252@bjtu.edu.cn>
Currently translated at 44.4% (272 of 612 strings)

Co-authored-by: shenzhui007 <12231252@bjtu.edu.cn>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-09-06 16:37:42 +02:00
JY3
9557a0ba15 Translated using Weblate: Chinese (Simplified) (zh_Hans) by JY3 <GeeyunJY3@gmail.com>
Currently translated at 44.1% (270 of 612 strings)

Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-09-06 16:37:42 +02:00
Simona Iacob
34d97a6dab Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Simona Iacob <s@zp1.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2022-09-06 16:36:03 +02:00
Hans-Christoph Steiner
2beec6b524 Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 94.2% (577 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
2022-09-06 16:35:35 +02:00
SC
3d1b18d65b Translated using Weblate: Portuguese (pt) by SC <lalocas@protonmail.com>
Currently translated at 100.0% (612 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2022-09-06 16:35:35 +02:00
Flavio F. M
498255b79d Translated using Weblate: Portuguese (Brazil) (pt_BR) by Flavio F. M. <flavius_androiduser@protonmail.com>
Currently translated at 100.0% (612 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
2022-09-06 16:35:35 +02:00
ssantos
480feed204 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 98.3% (602 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2022-09-06 16:35:35 +02:00
SC
4c9a58fdac Translated using Weblate: Portuguese (pt) by SC <lalocas@protonmail.com>
Currently translated at 98.2% (601 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2022-09-06 16:35:35 +02:00
ssantos
9c1975d765 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 98.2% (601 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
2022-09-06 16:35:35 +02:00
Flavio F. M
af98452e69 Translated using Weblate: Portuguese (Brazil) (pt_BR) by Flavio F. M. <flavius_androiduser@protonmail.com>
Currently translated at 97.3% (596 of 612 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by Flavio F. M. <flavius_androiduser@protonmail.com>

Currently translated at 96.5% (591 of 612 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by Flavio F. M. <flavius_androiduser@protonmail.com>

Currently translated at 94.4% (578 of 612 strings)

Co-authored-by: Flavio F. M <flavius_androiduser@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2022-09-06 16:35:35 +02:00
Hans-Christoph Steiner
4ec45c4f0f Translated using Weblate: Norwegian Bokmål (nb_NO) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 59.9% (367 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
2022-09-06 16:34:37 +02:00
Hans-Christoph Steiner
b85caf26f2 Translated using Weblate: Korean (ko) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 36.6% (224 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/
2022-09-06 16:34:15 +02:00
Antonello Pirina
2972605314 Translated using Weblate: Italian (it) by Antonello Pirina <fardeledge@tutanota.com>
Currently translated at 98.0% (600 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2022-09-06 16:33:54 +02:00
random r
e00538a3fa Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 97.7% (598 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2022-09-06 16:33:54 +02:00
random r
5e93bfd14b Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 97.3% (596 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2022-09-06 16:33:54 +02:00
Frankie McEyes
9d4caeefaf Translated using Weblate: Italian (it) by Frankie McEyes <mceyes@protonmail.com>
Currently translated at 95.9% (587 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
2022-09-06 16:33:54 +02:00
Hans-Christoph Steiner
e94a4e7477 Translated using Weblate: Hungarian (hu) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 63.2% (387 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/
2022-09-06 16:33:35 +02:00
Ldm Public
e8e6227752 Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
Translator
9dd7064eaa Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 100.0% (612 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
Ldm Public
87cbd7c19c Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 100.0% (612 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
Ldm Public
92baf98724 Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 99.1% (607 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
booteille
79547d5131 Translated using Weblate: French (fr) by booteille <booteille@protonmail.com>
Currently translated at 99.1% (607 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
Translator
0b2aa3eb69 Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 99.1% (607 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
Translator
8287e260ee Translated using Weblate: French (fr) by Translator <kvb@tuta.io>
Currently translated at 97.7% (598 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
translator
020bf8c7c6 Translated using Weblate: French (fr) by translator <kvb@tuta.io>
Currently translated at 97.3% (596 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
Julien Maulny
801b5b4512 Translated using Weblate: French (fr) by Julien Maulny <julien.maulny@protonmail.com>
Currently translated at 96.5% (591 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
translator
8ddc1a52ae Translated using Weblate: French (fr) by translator <kvb@tuta.io>
Currently translated at 95.2% (583 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
2022-09-06 16:33:16 +02:00
ButterflyOfFire
ae81c369d4 Translated using Weblate: French (fr) by ButterflyOfFire <ButterflyOfFire@protonmail.com>
Currently translated at 94.6% (579 of 612 strings)

Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-09-06 16:33:16 +02:00
Hans-Christoph Steiner
f883c1d8e0 Translated using Weblate: Spanish (es) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 99.1% (607 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2022-09-06 16:32:44 +02:00
Iago
ad4cb37bdb Translated using Weblate: Spanish (es) by Iago <translate@delthia.com>
Currently translated at 99.1% (607 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2022-09-06 16:32:44 +02:00
Jaime Marquínez Ferrándiz
5a77a08a0a Translated using Weblate: Spanish (es) by Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net>
Currently translated at 99.1% (607 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2022-09-06 16:32:44 +02:00
Iago
dacffbad00 Translated using Weblate: Spanish (es) by Iago <translate@delthia.com>
Currently translated at 98.3% (602 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2022-09-06 16:32:44 +02:00
Iago
f00fa6a36a Translated using Weblate: Spanish (es) by Iago <iagrivmoa@gmail.com>
Currently translated at 96.5% (591 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2022-09-06 16:32:44 +02:00
Iago
fc4c87e4d6 Translated using Weblate: Spanish (es) by Iago <iagrivmoa@gmail.com>
Currently translated at 95.0% (582 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
2022-09-06 16:32:44 +02:00
nautilusx
460d50fc3e Translated using Weblate: German (de) by nautilusx <translate@disroot.org>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: nautilusx <translate@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2022-09-06 16:09:57 +02:00
ssantos
4d77d170f1 Translated using Weblate: German (de) by ssantos <ssantos@web.de>
Currently translated at 99.5% (609 of 612 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2022-09-06 16:09:57 +02:00
C. Rüdinger
df54a01e17 Translated using Weblate: German (de) by C. Rüdinger <Mail-an-CR@web.de>
Currently translated at 98.6% (604 of 612 strings)

Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2022-09-06 16:09:57 +02:00
Hans-Christoph Steiner
3f6a780723 enable Czech as official language 2022-09-06 16:07:59 +02:00
Fjuro
7a243c1770 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 100.0% (612 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
d8a1e9fdc0 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 83.6% (512 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
0446dd8f11 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 66.0% (404 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
a9ea04380a Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 61.9% (379 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
718e405627 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 54.9% (336 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
b419ca882f Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 54.7% (335 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
17059ae78a Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 41.1% (252 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Filip Klopec
2e8c04115b Translated using Weblate: Czech (cs) by Filip Klopec <filipklopec@gmail.com>
Currently translated at 37.4% (229 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
0ddb947db2 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 36.9% (226 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
09fcd99d08 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 36.9% (226 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
810bf46534 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 34.6% (212 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
3a8248c8b1 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 16.3% (100 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Fjuro
5c7ecd0520 Translated using Weblate: Czech (cs) by Fjuro <fjuro@seznam.cz>
Currently translated at 15.0% (92 of 612 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-09-06 16:07:40 +02:00
Hans-Christoph Steiner
8ef43dee0b Deleted translation using Weblate: English (Middle) (enm)
Deleted translation using Weblate: English (Old) (ang)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
2022-09-06 16:06:59 +02:00
Hans-Christoph Steiner
bb7f80b1e1 sort MANIFEST.in 2022-09-06 16:05:48 +02:00
Hans-Christoph Steiner
57c8dddead Merge branch 'timestamp' into 'master'
Fix added type

Closes #1012

See merge request fdroid/fdroidserver!1152
2022-09-06 08:38:02 +00:00
Jochen Sprickerhof
8f24cae3be Fix added type
The added time should be a datetime, not a time.struct_time.

Regression of 290b9050
Closes: #1012
2022-09-05 20:36:41 +00:00
Hans-Christoph Steiner
6394ededa1 Merge branch 'fix_pylint' into 'master'
Fix pylint

See merge request fdroid/fdroidserver!1179
2022-09-05 17:54:38 +00:00
Jochen Sprickerhof
5b79e7aea8
Fix trailing whitespace 2022-09-05 17:50:13 +02:00
Jochen Sprickerhof
c89a9f0e8b
Add timeout argument to requests.(get,post) 2022-09-05 17:50:10 +02:00
Jochen Sprickerhof
cf0100cf11
Merge comparisons with 'in' 2022-09-05 17:14:51 +02:00
Jochen Sprickerhof
f4739ef3c0 Merge branch 'nightly-update-raw-urls' into 'master'
nightly: update Raw URLs to fix breakage and avoid redirects

See merge request fdroid/fdroidserver!1163
2022-08-26 07:18:19 +00:00
Hans-Christoph Steiner
c6cf0468ed nightly: update Raw URLs to fix breakage and avoid redirects 2022-08-26 07:18:19 +00:00
Hans-Christoph Steiner
b352e9a9cc
gitlab-ci: fix Windows job after import rename !1142 2022-08-25 11:10:45 +02:00
Hans-Christoph Steiner
271e0ab232 Merge branch 'status_at_end' into 'master'
Also write status.json when command finished

See merge request fdroid/fdroidserver!1172
2022-08-25 08:54:07 +00:00
Jochen Sprickerhof
153f136e79 Also write status.json when command finished 2022-08-25 08:53:47 +00:00
Hans-Christoph Steiner
10528b832a Merge branch 'remove_import_hack' into 'master'
[import] Rename to import_subcommand internally

See merge request fdroid/fdroidserver!1142
2022-08-24 20:35:42 +00:00
FestplattenSchnitzel
7c89e923f6 Move methods specific to import to it's module 2022-08-24 22:21:37 +02:00
FestplattenSchnitzel
7b7f863c65 [import] Rename to import_subcommand internally
This enables normal import of the module without the need for
workarounds.
2022-08-24 22:21:35 +02:00
Hans-Christoph Steiner
2eb56ae8d4 Merge branch 'linsui-master-patch-66779' into 'master'
scanner: also scan classpath

See merge request fdroid/fdroidserver!1148
2022-08-24 19:49:43 +00:00
linsui
832ed18fca scanner: also scan classpath 2022-08-24 21:34:55 +02:00
Hans-Christoph Steiner
1a71f352cf Merge branch 'sinasdk' into 'master'
scanner: add sinaweibosdk, umeng and exoplayer cast extension

See merge request fdroid/fdroidserver!1147
2022-08-24 19:15:05 +00:00
linsui
b2eb189a3b Apply 1 suggestion(s) to 1 file(s) 2022-08-24 19:14:45 +00:00
linsui
82525dbc4e Apply 1 suggestion(s) to 1 file(s) 2022-08-24 19:14:45 +00:00
linsui
ae79e8b967 scanner: add sinaweibosdk 2022-08-24 19:14:45 +00:00
Hans-Christoph Steiner
114fee3bfd Merge branch 'fix-ci-plugin_fetchsrclibs' into 'master'
gitlab-ci: paramiko from Debian to avoid crypto libs from source

See merge request fdroid/fdroidserver!1175
2022-08-24 19:14:39 +00:00
Hans-Christoph Steiner
22ce23ebe0 gitlab-ci: paramiko from Debian to avoid crypto libs from source
Before it was cryptography, now bcrypt requires a Rust compiler:
https://gitlab.com/fdroid/fdroidserver/-/jobs/2929483724
2022-08-24 19:53:54 +02:00
Hans-Christoph Steiner
30284ed31c Merge branch 'fix-verify-reporting' into 'master'
verify: fix generating JSON reports, as used in verification.f-droid.org

See merge request fdroid/fdroidserver!1168
2022-08-24 17:31:07 +00:00
Hans-Christoph Steiner
ed3622ffff
convert verify.py and verify.TestCase to black code format 2022-08-24 19:16:36 +02:00
Hans-Christoph Steiner
9e58fc8cda
verify: normalize dicts via JSON for reliable comparisons
13016c5d63 in !602 used a set to prevent
duplicate entries, but that worked poorly because it required lots of
data wrapping.  Instead, just normalize to JSON, then equality is easy.
2022-08-24 19:16:33 +02:00
Jochen Sprickerhof
a1286209ad Merge branch 'sortxml' into 'master'
Sort the xml file pathes for consistent result

See merge request fdroid/fdroidserver!1174
2022-08-24 13:51:47 +00:00
linsui
43ea0c35d8 Sort the xml file pathes for consistent result 2022-08-24 13:51:31 +00:00
Hans-Christoph Steiner
dbf667d1f5 Merge branch 'ndk-release-checksums.py' into 'master'
update NDK

See merge request fdroid/fdroidserver!1173
2022-08-24 11:21:11 +00:00
fdroid-bot
53c6dffbce Android NDK None (None) 2022-08-24 11:07:33 +00:00
Jochen Sprickerhof
dea188a790 Merge branch 'checku' into 'master'
Fix tag match

See merge request fdroid/fdroidserver!1072
2022-08-24 11:06:54 +00:00
linsui
516a0c2ce8 Fix tag match with GitPython 2022-08-24 10:50:09 +00:00
Jochen Sprickerhof
737ad53d3c Merge branch 'nopath' into 'master'
Show all unused scanner path at once

See merge request fdroid/fdroidserver!1171
2022-08-23 13:16:15 +00:00
linsui
cf7eb913d9 Show all unused scanner path at once 2022-08-19 18:01:31 +08:00
Jochen Sprickerhof
abd9faf275 Merge branch 'fix_var' into 'master'
Fix variable in exception

See merge request fdroid/fdroidserver!1170
2022-08-17 10:46:41 +00:00
Jochen Sprickerhof
6ce271ac15
Fix variable in exception 2022-08-17 12:33:02 +02:00
Jochen Sprickerhof
f830390873 Merge branch 'stop-checking-build-tools-existence' into 'master'
stop checking existence for build-tools, platform-tools, tools

See merge request fdroid/fdroidserver!1165
2022-08-17 07:59:37 +00:00
proletarius101
8267fb2caf stop checking existence for build-tools, platform-tools, tools 2022-08-17 07:59:36 +00:00
Hans-Christoph Steiner
e7a7f12cae Merge branch 'ktsmaven' into 'master'
scanner: fix maven url check for kts files

See merge request fdroid/fdroidserver!1162
2022-08-08 16:06:54 +00:00
linsui
f99dbec012 scanner: fix maven url check for kts files 2022-08-08 15:52:47 +00:00
Hans-Christoph Steiner
07713af425 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.5.1

See merge request fdroid/fdroidserver!1166
2022-08-08 15:51:16 +00:00
fdroid-bot
e207f45cb6 gradle v7.5.1 2022-08-08 15:37:07 +00:00
Hans-Christoph Steiner
353999146c Merge branch 'licaon-kter-master-patch-51501' into 'master'
Update approved official SPDX license tags

See merge request fdroid/fdroidserver!1164
2022-08-08 15:36:24 +00:00
Licaon_Kter
543c9fc77f Update approved official SPDX license tags 2022-08-04 10:45:41 +00:00
Jochen Sprickerhof
e7e8ad163b Merge branch 'flake8_E275' into 'master'
Fix flake8 E275 missing whitespace after keyword

See merge request fdroid/fdroidserver!1161
2022-07-31 08:02:05 +00:00
Jochen Sprickerhof
eb79522a36 Fix flake8 E275 missing whitespace after keyword 2022-07-31 09:48:14 +02:00
Jochen Sprickerhof
42ef7c3406 Merge branch 'defused_exception' into 'master'
Catch DefusedXmlException (as ValueError)

See merge request fdroid/fdroidserver!1157
2022-07-31 06:53:43 +00:00
Jochen Sprickerhof
7822db2881 Catch DefusedXmlException (as ValueError)
defusedxml can't handle the nbsp in the strings.xml (etree can).
2022-07-25 09:30:25 +02:00
Jochen Sprickerhof
7e1d974351 Reduce try/except block 2022-07-25 08:51:47 +02:00
Michael Pöhn
1151ba298f Merge branch 'exodus_scanner_logging' into 'master'
scan_binary: Log matched class

See merge request fdroid/fdroidserver!1156
2022-07-19 17:12:58 +00:00
Jochen Sprickerhof
f8452c4f0c scan_binary: Log matched class 2022-07-18 15:12:43 +02:00
Michael Pöhn
ffdd038cfa Merge branch 'finish-exodus-scanner' into 'master'
Add tests for fdroid scanner code

Closes #806, #1008, and #566

See merge request fdroid/fdroidserver!1155
2022-07-17 14:07:44 +00:00
Michael Pöhn
ab579be6b5 add some basic tests for scanner.main 2022-07-17 15:52:52 +02:00
Michael Pöhn
42d9ac446c get tests working on ci 2022-07-17 15:50:07 +02:00
Michael Pöhn
66adf4c508 add .ropeproject/ to .gitignore 2022-07-17 15:50:07 +02:00
Michael Pöhn
1c2b084410 🔧 improve scanner.scan_apk tests
Refactor test function it a TestCase and split into separate test cases.
Fix and improve tests for scanning apks with embedded apks.
2022-07-17 15:50:07 +02:00
Michael Pöhn
07a366a4d6 add tests for scanner.load_exodus_trackers_signatures 2022-07-17 15:50:07 +02:00
Michael Pöhn
544772d3ab add missing "or" to scanner cli synopsis 2022-07-17 15:50:07 +02:00
Michael Pöhn
a1677b5cb0 add test case for _exodus_compile_signatures 2022-07-17 15:50:07 +02:00
Michael Pöhn
94c9f0bef9 Merge branch 'exodus_scanner' into 'master'
Integrate Exodus

Closes #806, #1008, and #566

See merge request fdroid/fdroidserver!1137
2022-07-17 12:24:46 +00:00
Jochen Sprickerhof
3bd09ef7f4 Integrate Exodus (Closes: #566, #1008)
Code taken from:

https://github.com/Exodus-Privacy/exodus-core/blob/v1/exodus_core/analysis/static_analysis.py
2022-07-17 12:09:03 +00:00
Jochen Sprickerhof
ea9299f216 Use binary scanner with fdroid scanner path/to.apk
Closes: #806
2022-07-17 12:09:03 +00:00
Hans-Christoph Steiner
dc723e7108 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.5

See merge request fdroid/fdroidserver!1153
2022-07-14 23:26:54 +00:00
fdroid-bot
848e29294c gradle v7.5 2022-07-14 23:10:37 +00:00
Hans-Christoph Steiner
3b1ab74354
gitlab-ci: 'Safety' now needs git to run
Unhandled exception happened: [Errno 2] No such file or directory: 'git'
https://gitlab.com/fdroid/fdroidserver/-/jobs/2724632572
2022-07-14 16:09:28 -07:00
Hans-Christoph Steiner
33f3b5d7a4 Merge branch 'linsui-master-patch-07322' into 'master'
NDK r25

See merge request fdroid/fdroidserver!1151
2022-07-14 21:54:20 +00:00
linsui
534c170615 NDK r25 2022-07-14 06:35:55 +00:00
Hans-Christoph Steiner
15a562e8b9 Merge branch 'ndk' into 'master'
Update preinstalled NDK to r23c

See merge request fdroid/fdroidserver!1145
2022-06-14 11:03:43 +00:00
linsui
5472cf88b8 Update preinstalled NDK to r23c 2022-06-14 11:03:42 +00:00
Jochen Sprickerhof
6f8afd340d Merge branch 'fix-ci-post-1134' into 'master'
fix CI jobs post !1134

See merge request fdroid/fdroidserver!1144
2022-06-10 11:01:45 +00:00
Hans-Christoph Steiner
e2d9dedbb1 build: add test to ensure the flags are passed to the buildserver
!1141
2022-06-08 21:15:51 +02:00
Hans-Christoph Steiner
2bf6848391 test_find_apksigner_system_package_android_home if build_tools is new enough 2022-06-08 20:39:44 +02:00
Hans-Christoph Steiner
f04af445dd gitlab-ci: upgrade 'servergitmirrors' job to Debian/bullseye-backports
apksigner is now a requirement !1134
2022-06-08 20:39:44 +02:00
Hans-Christoph Steiner
09e2c37404 gitlab-ci: port fedora job to fdroid/sdkmanager and Java 17
This is also needed to support _apksigner_ as in !1134
2022-06-08 19:37:29 +02:00
Hans-Christoph Steiner
39c1b11a14 Merge branch 'apksigner-entry-jar' into 'master'
use apksigner to sign index-v2 with modern, supported algorithms

Closes #1005

See merge request fdroid/fdroidserver!1134
2022-06-08 13:41:42 +00:00
Hans-Christoph Steiner
fe22958476
run-tests: skip tests that require apksigner when running on Java8
The buildserver VM has not been upgraded yet to bullseye, so it is still on
Debian/stretch.  The buildserver VM does not need to run `fdroid update`,
`fdroid signindex`, etc. so this new apksigner requirement should not
affect app builds even though they are stuck on Debian/stretch.
2022-06-07 16:56:25 +02:00
Hans-Christoph Steiner
3182b77d18
use apksigner to sign index-v2 with modern, supported algorithms
The current signing method uses apksigner to sign the JAR so that it
will automatically select algorithms that are compatible with Android
SDK 23, which added the most recent algorithms:
https://developer.android.com/reference/java/security/Signature

This signing method uses then inherits the default signing algothim
settings, since Java and Android both maintain those.  That helps
avoid a repeat of being stuck on an old signing algorithm.  That means
specifically that this call to apksigner does not specify any of the
algorithms.

The old indexes must be signed by SHA1withRSA otherwise they will no
longer be compatible with old Androids.

apksigner 30.0.0+ is available in Debian/bullseye, Debian/buster-backports,
Ubuntu 21.10, and Ubuntu 20.04 from the fdroid PPA.  Here's a quick way to
test:

for f in `ls -1 /opt/android-sdk/build-tools/*/apksigner | sort ` /usr/bin/apksigner; do printf "$f : "; $f sign --v4-signing-enabled false; done

closes #1005
2022-06-07 16:56:23 +02:00
Hans-Christoph Steiner
07a6ad6c1e Merge branch 'archive_sigs' into 'master'
Archive _src.tar.gz.asc not .log.gz.asc

See merge request fdroid/fdroidserver!1143
2022-06-07 11:37:54 +00:00
Jochen Sprickerhof
e6c875b77e Archive _src.tar.gz.asc not .log.gz.asc 2022-06-07 11:37:29 +00:00
Hans-Christoph Steiner
759fafd3ff Merge branch 'fix_nosign' into 'master'
Fix --nosign semantics

See merge request fdroid/fdroidserver!1125
2022-06-07 11:36:23 +00:00
Hans-Christoph Steiner
7544761e86
index: add test for --nosign config and file generation 2022-06-07 13:22:06 +02:00
Jochen Sprickerhof
9933f54093 Fix --nosign semantics
This reverts parts of 197ca7e36 as it never triggered the
FDroidException as 'keystore' not in common.config is always False.
2022-06-07 13:22:02 +02:00
Hans-Christoph Steiner
c3243c2cdf Merge branch 'index-v2' into 'master'
Updates for index-v2

See merge request fdroid/fdroidserver!1140
2022-06-07 10:52:12 +00:00
Jochen Sprickerhof
1073dd57f7 Make webBaseUrl configurable 2022-06-04 11:56:04 +02:00
Jochen Sprickerhof
72e3d07acb Simplify primary mirror logic
Assume repo_url/archive_url to be valid URL and mark it as a primary
mirror.
2022-06-04 11:56:04 +02:00
Hans-Christoph Steiner
dc971b39ee Merge branch 'scan_binary_server' into 'master'
Pass --scan-binary to build server

See merge request fdroid/fdroidserver!1141
2022-06-03 14:39:13 +00:00
Jochen Sprickerhof
edc9390628 Pass --scan-binary to build server 2022-06-03 14:27:58 +00:00
Hans-Christoph Steiner
0d1df0564f Merge branch 'archive_sigs' into 'master'
Archive .idsig and .log.gz.asc files as well

See merge request fdroid/fdroidserver!1138
2022-06-03 11:06:44 +00:00
Jochen Sprickerhof
8a2f013508 Archive .idsig and .log.gz.asc files as well 2022-06-03 10:56:22 +00:00
Hans-Christoph Steiner
94faece5ba Merge branch 'fix_pylint' into 'master'
explicitly re-raising exceptions

See merge request fdroid/fdroidserver!1139
2022-06-03 10:53:33 +00:00
Jochen Sprickerhof
4ce79a7eaa explicitly re-raising exceptions
To fix pylint.
2022-06-01 22:52:22 +02:00
Jochen Sprickerhof
2d0645c1c4 Merge branch 'get_apk_id_api_call' into 'master'
allow common.get_apk_id() to be used in the API

See merge request fdroid/fdroidserver!1118
2022-05-31 09:43:51 +00:00
Hans-Christoph Steiner
c6dcc82ca4 allow common.get_apk_id() to be used in the API
If a project uses fdroidserver as a library, then just calls
common.get_apk_id(), it will now work.  Before, that project would have had
to include something like `common.config = {}` to avoid a stacktrace.
2022-05-26 22:18:21 +02:00
Hans-Christoph Steiner
9605d4ecad Merge branch 'fix_issue_1006' into 'master'
[import] Fix crash when no Gradle subdir is found

Closes #1006

See merge request fdroid/fdroidserver!1136
2022-05-26 18:45:54 +00:00
FestplattenSchnitzel
5951a6c2b1 [import] Fix crash when no Gradle subdir is found 2022-05-26 17:59:41 +00:00
Hans-Christoph Steiner
fa14a0005d Merge branch 'ndk-release-checksums.py' into 'master'
update NDK

See merge request fdroid/fdroidserver!1135
2022-05-26 15:11:48 +00:00
fdroid-bot
762c945c42 Android NDK None (None) 2022-05-26 15:10:14 +00:00
Hans-Christoph Steiner
f83003eecf Merge branch 'agp' into 'master'
AGP 7.2.0 requires gradle 7.3.3

See merge request fdroid/fdroidserver!1131
2022-05-26 15:09:03 +00:00
linsui
b75a34241f Apply 2 suggestion(s) to 1 file(s) 2022-05-26 15:08:33 +00:00
linsui
2c1659935a AGP 7.2.0 requires gradle 7.3.3 2022-05-26 15:08:33 +00:00
Hans-Christoph Steiner
bc81237d0c Merge branch 'smartcardoptions-parsing' into 'master'
Fix parsing of smartcardoptions config

See merge request fdroid/fdroidserver!1106
2022-05-26 15:06:01 +00:00
Hans-Christoph Steiner
2639909f90 add test cases for parsing smartcardoptions config field 2022-05-26 16:49:43 +02:00
Danilo Bargen
a4d0698628 Fix parsing of smartcardoptions config
With the previous code, a trailing newline would result in an empty
space being part of the list. When this is passed to keytool, it fails
with "Illegal option: ".

Instead of doing overly complicated regex based string substitution
followed by parametrized splitting, we can simply use `.split()`
without any parameters, and Python will automatically strip any
whitespace.
2022-05-26 16:47:33 +02:00
Jochen Sprickerhof
05e6c293c0 Merge branch 'v2-btlog-sign' into 'master'
update signing and btlog for index-v2

Closes #1005

See merge request fdroid/fdroidserver!1133
2022-05-24 20:28:25 +00:00
Hans-Christoph Steiner
cbd4828561 include index-v2 in signindex tests 2022-05-24 11:35:46 +02:00
Hans-Christoph Steiner
5448fa2a2d
update: hide confusing androguard warning that is irrelevant here
This is related to androguard features that fdroidserver does not use:
WARNING: Requested API level 31 is larger than maximum we have, returning API level 28 instead.
2022-05-23 23:17:42 +02:00
Hans-Christoph Steiner
4ce3da476d
btlog: run black to format code 2022-05-23 23:17:40 +02:00
Hans-Christoph Steiner
7be0ec3572
btlog: include index-v2.json entry.json and entry.jar 2022-05-23 23:17:37 +02:00
Hans-Christoph Steiner
dc3175cc06 Merge branch 'deploy-index-v2' into 'master'
deploy: handle index-v2 files on two pass sync methods

See merge request fdroid/fdroidserver!1132
2022-05-23 13:51:11 +00:00
Hans-Christoph Steiner
2448f070e9 fix tests and docstring error 2022-05-23 15:34:30 +02:00
Hans-Christoph Steiner
293975d081
refactor comment into docstring for update_serverwebroot 2022-05-23 14:41:37 +02:00
Hans-Christoph Steiner
053a64718a
deploy: handle index-v2 files on two pass sync methods
When using rsync or s3cmd, the upload is done in multiple passes. This
reduces the chance of interfering with an existing client-server
interaction.

- rsync: In the first pass, upload without the index files and delay
  the deletion as much as possible.  That keeps the repo functional
  while this update is running.  Then second pass uploads the index
  files.

- s3cmd: In the first pass, only new files are uploaded.  In the
  second pass, changed files are uploaded, overwriting what is on the
  server.  On the third/last pass, the indexes are uploaded, and any
  removed files are deleted from the server.  The last pass is the
  only pass to use a full MD5 checksum of all files to detect changes.
2022-05-23 14:41:34 +02:00
Jochen Sprickerhof
39329b289b Merge branch 'run-tests-in-buildserver' into 'master'
gitlab-ci: run test suite in the buildserver environment

See merge request fdroid/fdroidserver!1129
2022-05-23 12:29:36 +00:00
Hans-Christoph Steiner
e6944ea4c2
gitlab-ci: run test suite in the buildserver environment
Run the whole test suite in an environment that is like the
buildserver guest VM.  This installs python3-babel because that is
only used by the test suite, and not needed in the buildserver.

Some extra packages are required for this test run that are not
provided by the buildserver since they are not needed there:

 * gnupg-agent for the full signing setup
 * python3-babel for compiling localization files
 * python3-clint for fancy progress bars for users

fdroid/ci-images-base is deprecated and archived.
2022-05-23 14:12:06 +02:00
Hans-Christoph Steiner
9eeabddcf0 Merge branch 'skip_apk' into 'master'
Don't include disabled apks in the index

Closes #1002

See merge request fdroid/fdroidserver!1126
2022-05-23 12:05:40 +00:00
Jochen Sprickerhof
b07d23ff5c Don't include disabled apks in the index
This needs a rerun of `fdroid update --clean`.

In case a build is disabled delete_disabled_builds takes care of
deleting it from the repo. But this only works if the apk follows the
normal name pattern. Otherwise it will stay in the folder and be picked
up by process_apks and added to the index.

Closes: #1002
2022-05-23 11:47:53 +00:00
Hans-Christoph Steiner
40f761c482 Merge branch 'index_v2' into 'master'
Index v2

See merge request fdroid/fdroidserver!1092
2022-05-23 10:39:17 +00:00
Jochen Sprickerhof
d70e5c2cd9 Index v2 2022-05-23 10:39:17 +00:00
Hans-Christoph Steiner
45e79b1223 Merge branch 'linsui-master-patch-66548' into 'master'
scanner: add me.pushy

See merge request fdroid/fdroidserver!1130
2022-05-23 07:30:14 +00:00
linsui
13534bf02e scanner: add me.pushy 2022-05-21 12:25:11 +00:00
Jochen Sprickerhof
4babf6fce9 Merge branch 'run-tests-in-buildserver' into 'master'
scanner: include dexdump in buildserver for APK analysis

See merge request fdroid/fdroidserver!1127
2022-05-20 13:30:14 +00:00
Hans-Christoph Steiner
6ef60f0d6b
scanner: include dexdump in buildserver for APK analysis
This scanner feature is not yet ready for the production buildserver but it
is already useful in CI.
2022-05-19 15:45:26 +02:00
Hans-Christoph Steiner
ddcbe23f9e Merge branch 'keep-index-v1.json' into 'master'
signindex: do not remove index-v1.json after signing

Closes #969

See merge request fdroid/fdroidserver!1124
2022-05-17 13:56:32 +00:00
Hans-Christoph Steiner
73c31e6e63
signindex: do not remove index-v1.json after signing
With ~index-v2, the model is changing to offer the plain JSON file for easy
consumption.  Then gpgsign will also provide a detached PGP signature for
systems that would rather verify based on PGP signatures than JAR signatures.

!1080
closes #969
2022-05-17 15:38:06 +02:00
Hans-Christoph Steiner
8f6bc1114a Merge branch 'duplicate_permissions' into 'master'
Fix and merge androguard_test into update.TestCase

See merge request fdroid/fdroidserver!1121
2022-05-10 14:58:11 +00:00
Jochen Sprickerhof
08e3e445fb Merge androguard_test into update.TestCase 2022-05-10 14:40:03 +00:00
Jochen Sprickerhof
e82888837e Fix androguard_test
- SdkToolsPopen expects a list.
- info.guardianproject.urzip.apk is not in the repo.
- scan_apk_aapt was removed in 08931f45 so define output.
2022-05-10 14:40:03 +00:00
Jochen Sprickerhof
1b67af4367 Merge branch 'net-download-file' into 'master'
net: improve parsing filenames from URL

See merge request fdroid/fdroidserver!1122
2022-05-10 11:54:26 +00:00
Hans-Christoph Steiner
107593d3ba net: improve parsing filenames from URL
This is more relevant to issuebot than fdroidserver, but it can't hurt here
also.
2022-05-09 20:59:15 +02:00
Jochen Sprickerhof
f8789f2997 Merge branch 'nonfree' into 'master'
scanner: add kotlinx-coroutines-play-services

See merge request fdroid/fdroidserver!1120
2022-05-08 09:33:35 +00:00
linsui
df1e0e30d5 fix tests 2022-05-07 02:17:26 +00:00
linsui
c16d170f12 scanner: add kotlinx-coroutines-play-services 2022-05-07 01:49:56 +00:00
Jochen Sprickerhof
f4771da597 Merge branch 'kts' into 'master'
scanner: scan gradle.kts

See merge request fdroid/fdroidserver!1119
2022-05-06 19:21:51 +00:00
linsui
90bc8e1e8f scan gradle.kts 2022-05-07 00:43:55 +08:00
Jochen Sprickerhof
0aca165b4e Merge branch 'nonfreelib' into 'master'
scanner: add more nonfree libs

See merge request fdroid/fdroidserver!1116
2022-05-06 10:38:37 +00:00
linsui
4f04bd9200 Update scanner.py 2022-05-05 03:39:49 +00:00
Jochen Sprickerhof
7fabbc9cad Merge branch 'gitlab-ci-fix-job-post-dexdump' into 'master'
gitlab-ci: fix debian_testing and ubuntu_lts_ppa jobs

See merge request fdroid/fdroidserver!1115
2022-05-04 15:05:26 +00:00
Hans-Christoph Steiner
cea192b9fb
gitlab-ci: fix debian_testing and ubuntu_lts_ppa jobs
!1110
These setups did not have dexdump at all.
2022-05-03 22:05:39 +02:00
Hans-Christoph Steiner
1ae6e4e254 Merge branch 'dexdump_nooutput' into 'master'
Silence dexdump output in build --verbose

See merge request fdroid/fdroidserver!1114
2022-05-03 17:57:43 +00:00
Jochen Sprickerhof
50e680be93 Silence dexdump output in build --verbose 2022-05-03 18:30:02 +02:00
Hans-Christoph Steiner
6318bf0f5d Merge branch 'scanner_dexdump' into 'master'
[scanner] replace apkanalyzer by dexdump

See merge request fdroid/fdroidserver!1110
2022-05-03 15:18:21 +00:00
Jochen Sprickerhof
c80fdd5ce8 Handle BadZipFile 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
925cdbe542 Improve recursion warning, thx Hans! 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
94ccd022c4 Add apk.embedded_1.apk test 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
9eaab6050e Fix variable name 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
91320fa10e Rework code 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
7ec3905734 Log zip recursion limit 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
5fc88431f8 Simplify code 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
d0d56173c9 Support nested apks 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
635f12e438 Use latest build-tools version 2022-05-03 14:59:52 +00:00
Jochen Sprickerhof
9c8e128064 [scanner] replace apkanalyzer by dexdump 2022-05-03 14:59:52 +00:00
Hans-Christoph Steiner
23d9f0ed50
mirror-to-mirror.sh: replace mirror.f-droid.org with ftp.agdsn.de
* ftp.agdsn.de is a new official mirror that receives push updates.
* mirror.f-droid.org is no more, it is now a DNS round robin redirector.

admin#247
admin#298

[skip ci]
2022-05-02 14:21:35 +02:00
Hans-Christoph Steiner
cfeeaff4c7 Merge branch 'updatedefaultndks' into 'master'
remove old LTS NDK and only pre-install current LTS

See merge request fdroid/fdroidserver!1098
2022-04-26 08:48:29 +00:00
Hans-Christoph Steiner
189ff9cd7b
build: improve error message when NDK SHA-256 does not match 2022-04-26 10:25:34 +02:00
Licaon_Kter
e678df14ce
buildserver: remove old LTS NDK and only pre-install current LTS 2022-04-26 10:25:31 +02:00
Hans-Christoph Steiner
2d3618b8ee Merge branch 'check_signindex' into 'master'
Test index before signing

See merge request fdroid/fdroidserver!1101
2022-04-25 20:55:43 +00:00
Hans-Christoph Steiner
9f477dee56
signindex: added simple test case 2022-04-25 22:38:34 +02:00
Jochen Sprickerhof
d05bcafe14 Test index before signing 2022-04-25 22:26:59 +02:00
Jochen Sprickerhof
14beedd6e8 Merge branch 'pwd-path-fix' into 'master'
Avoid zero-length prefixes in PATH

See merge request fdroid/fdroidserver!1113
2022-04-25 13:25:25 +00:00
Sergey Bobrenok
46f4205fff Avoid zero-length prefixes in PATH
A zero-length prefix in PATH is a legacy feature that indicates the
current working directory.

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03

Found in ru.nsu.bobrofon.easysshfs, see:
https://gitlab.com/fdroid/fdroiddata/-/merge_requests/10953#note_921802636
2022-04-24 16:33:33 +03:00
Hans-Christoph Steiner
694050e561 Merge branch 'bump_fdroid_build' into 'master'
[CI] Bump client build to fix CI failure

See merge request fdroid/fdroidserver!1112
2022-04-22 12:44:02 +00:00
Jochen Sprickerhof
483bbecf3e [CI] Bump client build to fix CI failure 2022-04-22 14:26:55 +02:00
Jochen Sprickerhof
764887ea48 Merge branch 'disable-flutter-analytics-in-buildserver' into 'master'
buildserver: disable flutter dev/build analytics globally

See merge request fdroid/fdroidserver!1109
2022-04-22 05:51:16 +00:00
Hans-Christoph Steiner
c6fddebecd buildserver: disable flutter dev/build analytics globally
The Flutter dev tools includes opt-out analytics, with a config option to
opt out.  We can at least try to disable them in the buildserver. That
config option is unfortunately not even guaranteed to work:
https://github.com/flutter/flutter/issues/19304
https://github.com/flutter/flutter/issues/45369

issuebot#21
issuebot!49
https://github.com/flutter/flutter/issues/73657
2022-04-21 15:38:48 +02:00
Hans-Christoph Steiner
5448327277 Merge branch 'copy_scanner' into 'master'
[scanner] Deep copy json structs (Closes: #985)

Closes #985

See merge request fdroid/fdroidserver!1102
2022-04-21 12:58:35 +00:00
Jochen Sprickerhof
253f2e5fef [scanner] Deep copy json structs (Closes: #985)
The lists in the DEFAULT_JSON_PER_BUILD where only initialized and thus
shared between builds resulting in accumulating the entries over all
versions. As per 2f5d780c4 DEFAULT_JSON_PER_BUILD is used as an API, so
use deepcopy to work around it.
2022-04-21 12:58:07 +00:00
Hans-Christoph Steiner
cc59aa9e9f Merge branch 'repo_url' into 'master'
Add check for repo/archive_url

See merge request fdroid/fdroidserver!1108
2022-04-21 10:12:34 +00:00
Jochen Sprickerhof
5f3eb601df Add check for repo/archive_url 2022-04-21 11:16:14 +02:00
Hans-Christoph Steiner
f4cb3bbfb4 Merge branch 'tag-buildserver-image-as-stretch' into 'master'
gitlab-ci: tag docker buildserver image with "stretch"

See merge request fdroid/fdroidserver!1107
2022-04-20 13:31:41 +00:00
Hans-Christoph Steiner
65cd3e3b0a
gitlab-ci: tag docker buildserver image with "stretch"
This should make the migration to bullseye easier because we'll have a
fallback stretch image available as needed.

!1012
2022-04-20 15:14:36 +02:00
Hans-Christoph Steiner
3027dc014e
gitlab-ci: fix sudo test in "fdroid build" job 2022-04-18 14:48:16 +02:00
Hans-Christoph Steiner
8223b5b3ed Merge branch 'CI_build_image' into 'master'
CI: Use buildserver image from fdroidserver

See merge request fdroid/fdroidserver!1086
2022-04-18 12:01:19 +00:00
FestplattenSchnitzel
9721b60d7c
Use buildserver image from fdroidserver
This is derived from the "fdroid build" job in fdroiddata
2022-04-18 13:46:10 +02:00
Jochen Sprickerhof
68b3627a90 Merge branch 'update_unknown' into 'master'
[checkupdates] move gradle var check to parser

Closes #751

See merge request fdroid/fdroidserver!1105
2022-04-18 09:37:13 +00:00
Jochen Sprickerhof
c19f46b706 [checkupdates] move gradle var check to parser
3638acddc added a check if the version name string is actually a
unresolved gradle variable. This moves the check into the
common.parse_androidmanifests() as it is the only where the it could
happen. This also resolves the case where checkupdates returns
"Unknown".

Closes: #751
2022-04-14 17:47:44 +02:00
Jochen Sprickerhof
ea567b0b5a Merge branch 'licaon-kter-master-patch-01504' into 'master'
Import - some fixes for flutter apps

Closes #988 and #987

See merge request fdroid/fdroidserver!1103
2022-04-14 09:37:41 +00:00
Licaon_Kter
1df6b1db90 Import - some fixes for flutter apps 2022-04-12 10:08:13 +00:00
Jochen Sprickerhof
0fa4d64609 Merge branch 'package_namespace' into 'master'
Consider namespace for applicationId

See merge request fdroid/fdroidserver!1100
2022-04-10 18:18:54 +00:00
Jochen Sprickerhof
b6ea0d6acd Consider namespace for applicationId
> If the application ID is not explicitly defined using the
> applicationId property, it automatically takes on the same value as
> the namespace.

https://developer.android.com/studio/build/configure-app-module

Found in com.amanoteam.unalix, see:

https://gitlab.com/fdroid/fdroiddata/-/merge_requests/10895#note_907080341
2022-04-10 09:27:17 +02:00
Sylvia van Os
620c06c377 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.4.2

See merge request fdroid/fdroidserver!1097
2022-04-02 16:05:17 +00:00
fdroid-bot
6b28ce8b32 gradle v7.4.2 2022-04-01 13:02:45 +00:00
Hans-Christoph Steiner
1d98b224e0 Merge branch 'fix_pylint' into 'master'
Fix pylint warnings

See merge request fdroid/fdroidserver!1096
2022-04-01 13:02:02 +00:00
Jochen Sprickerhof
a872d8688d Fix pylint warnings 2022-03-29 15:53:45 +02:00
Hans-Christoph Steiner
ff44488a42 Merge branch 'licaon-kter-master-patch-01751' into 'master'
Add NDK24

See merge request fdroid/fdroidserver!1093
2022-03-23 12:30:29 +00:00
Licaon_Kter
287fe1fb16 Add NDK24 2022-03-23 12:30:28 +00:00
Hans-Christoph Steiner
66d0da3a11 Merge branch 'junrar' into 'master'
Add junrar to blocklist

See merge request fdroid/fdroidserver!1091
2022-03-15 12:07:31 +00:00
linsui
849e671353 Add junrar to blocklist 2022-03-15 12:06:42 +00:00
Hans-Christoph Steiner
14f8e81019 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.4.1

See merge request fdroid/fdroidserver!1089
2022-03-15 12:03:35 +00:00
fdroid-bot
bbb9242428 gradle v7.4.1 2022-03-13 08:50:50 +00:00
Jochen Sprickerhof
a2df6037a3 Merge branch 'handle_xml_ParseError' into 'master'
Handle XML parser errors

See merge request fdroid/fdroidserver!1090
2022-03-13 08:50:13 +00:00
Jochen Sprickerhof
17c7c3948c Handle XML parser errors
Found in checkupdates of com.dar.nclientv2.
2022-03-11 09:03:03 +01:00
Jochen Sprickerhof
c0b9dbddb6 Merge branch 'checkupdates_submodules' into 'master'
[checkupdates] update submodules according to tag

See merge request fdroid/fdroidserver!1088
2022-03-10 12:07:11 +00:00
Jochen Sprickerhof
0c390c943d [checkupdates] update submodules according to tag
In case the version information is inside a submodule we need to
checkout the submodule at the version of the tag we test.

Found with org.courville.nova.

Closes: #622
2022-03-10 12:49:03 +01:00
Hans-Christoph Steiner
f368bd4106 Merge branch 'triple-t-flutter' into 'master'
Add support for Triple-T metadata in Flutter projects

Closes #975

See merge request fdroid/fdroidserver!1087
2022-03-09 12:24:33 +00:00
Simon Ser
757e30ad85 Add test case for Triple-T metadata in a Flutter project 2022-03-07 12:40:37 +01:00
Simon Ser
fdc88650eb Add support for Triple-T metadata in Flutter projects
Closes: https://gitlab.com/fdroid/fdroidserver/-/issues/975
2022-03-06 18:24:45 +01:00
Hans-Christoph Steiner
0212f2c41f Merge branch 'AGP' into 'master'
Fix Gradle version for AGP

See merge request fdroid/fdroidserver!1083
2022-03-02 13:18:12 +00:00
linsui
47ce37888b Fix Gradle version for AGP 2022-03-02 13:17:26 +00:00
Chirayu Desai
a4a6a02d4b Merge branch 'revert_fileextension' into 'master'
Fix detection of binary files without extension

See merge request fdroid/fdroidserver!1085
2022-03-02 09:37:55 +00:00
Jochen Sprickerhof
8fb37445f2 Fix detection of binary files without extension
Regression of fb61168c.
2022-03-02 10:21:20 +01:00
Hans-Christoph Steiner
31d3ac3d79 Merge branch 'CI_docker' into 'master'
Fix CI for users with uppercase letters in username

See merge request fdroid/fdroidserver!1081
2022-02-27 11:55:33 +00:00
FestplattenSchnitzel
14ab546365
Fix CI for users with uppercase letters in username 2022-02-26 18:15:58 +01:00
Hans-Christoph Steiner
d566628ad8
version 2.1 2022-02-22 23:19:19 +01:00
Hans-Christoph Steiner
5bf2c89957
list .po files in the manifest, not .mo !1014 #934 2022-02-22 23:19:17 +01:00
Hans-Christoph Steiner
72c749959a Merge branch 'gpgsign-index-v1' into 'master'
publish index-v1.json and include a gpg signature

See merge request fdroid/fdroidserver!1080
2022-02-22 22:17:42 +00:00
Hans-Christoph Steiner
707cd7addb
publish index-v1.json and include a gpg signature
This gives a more flexible and direct way for many clients to consume the
index file. #969
2022-02-22 22:58:09 +01:00
Hans-Christoph Steiner
8e02c52a45 Merge branch 'nightly-fix-resign' into 'master'
nightly: stop stripping APKs before signing, apksigner handles that

See merge request fdroid/fdroidserver!1078
2022-02-22 21:46:29 +00:00
Hans-Christoph Steiner
e38f7dad68
locale: fix corrupt python formats 2022-02-22 22:29:13 +01:00
Hans-Christoph Steiner
d1fd58681e
nightly: stop stripping APKs before signing, apksigner does it
* https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1033#note_742563869
* https://github.com/wardvl/f-droid-nightly-action/issues/3
2022-02-22 22:29:09 +01:00
Hans-Christoph Steiner
01d1869d59
nightly: fix "deploy key URL" that is printed to log output
GitLab now uses the "/-/" form as the canonical.
2022-02-22 13:34:01 +01:00
Hans-Christoph Steiner
2198811672 Merge branch 'gradlew-fdroid' into 'master'
update required gradle versions for Android Gradle Plugin

See merge request fdroid/fdroidserver!1076
2022-02-22 09:02:55 +00:00
Hans-Christoph Steiner
addc32e4ec update required gradle versions for Android Gradle Plugin
https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle
2022-02-22 08:46:04 +00:00
Hans-Christoph Steiner
972393fdad Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1079
2022-02-22 08:40:23 +00:00
nautilusx
8451a0b9f7 Translated using Weblate: German (de) by nautilusx <translate@disroot.org>
Currently translated at 97.3% (596 of 612 strings)

Translated using Weblate: German (de) by nautilusx <translate@disroot.org>

Currently translated at 95.7% (586 of 612 strings)

Co-authored-by: nautilusx <translate@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Andrey
92c2717d1d Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Allan Nordhøy
f03f0515c6 Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 59.6% (365 of 612 strings)

Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>

Currently translated at 58.3% (357 of 612 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Eric
b7a9a7be85 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <alchemillatruth@purelymail.com>
Currently translated at 44.1% (270 of 612 strings)

Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Agnieszka C
58370dbdc4 Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Ihor Hordiichuk
2123623ae7 Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (612 of 612 strings)

Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>

Currently translated at 98.5% (603 of 612 strings)

Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>

Currently translated at 94.2% (577 of 612 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
marzzzello
a1c56b6686 Translated using Weblate: German (de) by marzzzello <anmeldezeugs@top-email.net>
Currently translated at 97.3% (596 of 612 strings)

Translated using Weblate: German (de) by marzzzello <anmeldezeugs@top-email.net>

Currently translated at 95.7% (586 of 612 strings)

Translated using Weblate: German (de) by marzzzello <anmeldezeugs@top-email.net>

Currently translated at 95.2% (583 of 612 strings)

Co-authored-by: marzzzello <anmeldezeugs@top-email.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Oğuz Ersen
8b4aa4685c Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (612 of 612 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Besnik Bleta
3309cb495a Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.7% (563 of 576 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2022-02-22 09:25:31 +01:00
Hans-Christoph Steiner
5eda215d81 Merge branch 'remove-compile_catalog' into 'master'
stop compiling locale files for the sdist tarballs

See merge request fdroid/fdroidserver!1077
2022-02-16 07:40:58 +00:00
Hans-Christoph Steiner
36a7b83be1
version 2.1b0 2022-02-15 23:45:22 +01:00
Hans-Christoph Steiner
421e07db12
stop compiling locale files for the sdist tarballs
!1014 #934
2022-02-15 23:45:21 +01:00
Hans-Christoph Steiner
04242f162b
add Romanian locale 2022-02-15 23:45:18 +01:00
Hans-Christoph Steiner
5ec952ab8a Merge branch 'fix/use_date_from_apk' into 'master'
Fix --use-date-from-apk flag

Closes #947

See merge request fdroid/fdroidserver!1067
2022-02-15 22:39:08 +00:00
Sylvia van Os
1f75090fa2 Fix --use-date-from-apk flag 2022-02-15 22:39:08 +00:00
Hans-Christoph Steiner
e845bfc28b Merge branch 'feature/scanner_so' into 'master'
Also detect versioned so files

See merge request fdroid/fdroidserver!1071
2022-02-15 22:36:44 +00:00
Sylvia van Os
fb61168c38 Also detect versioned so files 2022-02-15 22:36:44 +00:00
Hans-Christoph Steiner
b3e126a3ba
make -C locale update 2022-02-15 20:06:57 +01:00
Hans-Christoph Steiner
d059b2039c Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!1075
2022-02-15 16:06:42 +00:00
Petr Novák
3d67e4f073 Translated using Weblate: Czech (cs) by Petr Novák <nit.monkey@gmail.com>
Currently translated at 8.5% (49 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
2022-02-15 16:49:43 +01:00
Allan Nordhøy
1dc82f56af Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 59.2% (341 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
2022-02-15 16:49:43 +01:00
Agnieszka C
53f43fe232 Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (576 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2022-02-15 16:49:43 +01:00
Kristoffer Grundström
b4692d2618 Translated using Weblate: Swedish (sv) by Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Currently translated at 11.8% (68 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
2022-02-15 16:49:43 +01:00
JY3
96b233b58b Translated using Weblate: Chinese (Simplified) (zh_Hans) by JY3 <GeeyunJY3@gmail.com>
Currently translated at 45.4% (262 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-02-15 16:49:43 +01:00
Agnieszka C
c71a56b03a Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (576 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2022-02-15 16:49:43 +01:00
Agnieszka C
b4105b037a Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (576 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2022-02-15 16:49:43 +01:00
Agnieszka C
3cf9d3103f Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (576 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
2022-02-15 16:49:43 +01:00
Eric
52bb905ff5 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 45.4% (262 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
2022-02-15 16:49:43 +01:00
Licaon Kter
157468570f Translated using Weblate: Romanian (ro) by Licaon Kter <licaon.kter@protonmail.com>
Currently translated at 100.0% (576 of 576 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
2022-02-15 16:49:43 +01:00
Liu Wenyuan
7c849a2701 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Liu Wenyuan <15816141883@163.com>
Currently translated at 44.6% (257 of 576 strings)

Co-authored-by: Liu Wenyuan <15816141883@163.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
translator
daec62f57c Translated using Weblate: French (fr) by translator <yasinoc375@advew.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: translator <yasinoc375@advew.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
lilim
eff8d26019 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Allan Nordhøy
8e251e234f Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 59.0% (340 of 576 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Kaantaja
4cf2cdcec6 Translated using Weblate: Finnish (fi) by Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>
Currently translated at 0.1% (1 of 576 strings)

Co-authored-by: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fi/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
ssantos
5652f30520 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Joel A
5b0e5a5f28 Translated using Weblate: Swedish (sv) by Joel A <joeax910@student.liu.se>
Currently translated at 8.8% (51 of 576 strings)

Co-authored-by: Joel A <joeax910@student.liu.se>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Danial Behzadi
a3a20337ea Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 4.1% (24 of 576 strings)

Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>

Currently translated at 4.1% (24 of 576 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
privacysimp
4f74fc8a62 Translated using Weblate: Dutch (nl) by privacysimp <contributions.pqy8k@aleeas.com>
Currently translated at 3.4% (20 of 576 strings)

Co-authored-by: privacysimp <contributions.pqy8k@aleeas.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nl/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
translator
c8da25b4ff Translated using Weblate: French (fr) by translator <yasinoc375@advew.com>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: French (fr) by translator <yasinoc375@advew.com>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: translator <yasinoc375@advew.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
hilariousperson
b5dcd3e916 Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Simona Iacob
5014da84c3 Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Simona Iacob <s@zp1.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Myeongjin Lee
473063a7cb Translated using Weblate: Korean (ko) by Myeongjin Lee <aranet100@gmail.com>
Currently translated at 38.7% (223 of 576 strings)

Translated using Weblate: Korean (ko) by Myeongjin Lee <aranet100@gmail.com>

Currently translated at 36.2% (209 of 576 strings)

Co-authored-by: Myeongjin Lee <aranet100@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Agnieszka C
a3710fe265 Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Polish (pl) by Agnieszka C <aga_04@o2.pl>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
yahoo~~
e674acbec1 Translated using Weblate: Chinese (Simplified) (zh_Hans) by yahoo~~ <xll520yzl@gmail.com>
Currently translated at 41.4% (239 of 576 strings)

Co-authored-by: yahoo~~ <xll520yzl@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
lilim
2bfc566206 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 99.4% (573 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Jaxom
b8d0bc50dd Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 99.4% (573 of 576 strings)

Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>

Currently translated at 98.6% (568 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
lilim
c9fc162d6e Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 98.6% (568 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Jaxom
c54775ef48 Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 98.2% (566 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
lilim
53018a1b4a Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 98.2% (566 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Jaxom
25c8ad5d6b Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 97.7% (563 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
lilim
6077b07617 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 97.7% (563 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Jaxom
b98a341b5d Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 97.5% (562 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
lilim
86161f1efc Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 97.5% (562 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:43 +01:00
Jaxom
db9f69a130 Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 96.1% (554 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
e8a645c4b6 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 96.1% (554 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Jaxom
bd72a98c94 Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 95.4% (550 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
ButterflyOfFire
47b732635d Translated using Weblate: French (fr) by ButterflyOfFire <ButterflyOfFire@protonmail.com>
Currently translated at 95.4% (550 of 576 strings)

Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
aa876d2c14 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 95.4% (550 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Jaxom
2e6fbad2af Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 94.9% (547 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
50604e6e6e Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 94.9% (547 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Jaxom
34f498896a Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 94.7% (546 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
bd6dcd405b Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 94.7% (546 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
bd2cce972d Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 94.7% (546 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Jaxom
58f5a2fc24 Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 94.0% (542 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
5abbc70351 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 94.0% (542 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
hilariousperson
fdc9eb1925 Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 93.9% (541 of 576 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
booteille
fad47948b8 Translated using Weblate: French (fr) by booteille <booteille@protonmail.com>
Currently translated at 93.9% (541 of 576 strings)

Co-authored-by: booteille <booteille@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Jaxom
41dcb59c4e Translated using Weblate: French (fr) by Jaxom <jaxom+weblate@tchack.xyz>
Currently translated at 93.9% (541 of 576 strings)

Co-authored-by: Jaxom <jaxom+weblate@tchack.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
ac5b117b12 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 93.9% (541 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Чтабс
a508636fe2 Translated using Weblate: Russian (ru) by Чтабс <chtabs2k19@gmail.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Чтабс <chtabs2k19@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Orhan
b600a8cfd4 Translated using Weblate: Turkish (tr) by Orhan <orya@pm.me>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Orhan <orya@pm.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Vancha March
2cf5c883d5 Translated using Weblate: Frisian (fy) by Vancha March <tjipkevdh@gmail.com>
Currently translated at 3.6% (21 of 576 strings)

Added translation using Weblate: Frisian (fy) by Vancha March <tjipkevdh@gmail.com>

Co-authored-by: Vancha March <tjipkevdh@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fy/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
whenwesober
872d2434e0 Translated using Weblate: Indonesian (id) by whenwesober <naomi16i_1298q@cikuh.com>
Currently translated at 13.7% (79 of 576 strings)

Co-authored-by: whenwesober <naomi16i_1298q@cikuh.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Eric
772ee56888 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 40.6% (234 of 576 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>

Currently translated at 40.4% (233 of 576 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>

Currently translated at 40.4% (233 of 576 strings)

Co-authored-by: Eric <spice2wolf@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
ZZY2357
729e14bf63 Translated using Weblate: Chinese (Simplified) (zh_Hans) by ZZY2357 <ZZY2357@outlook.com>
Currently translated at 40.4% (233 of 576 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by ZZY2357 <ZZY2357@outlook.com>

Currently translated at 39.7% (229 of 576 strings)

Co-authored-by: ZZY2357 <ZZY2357@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Balázs Meskó
c264f8e04e Translated using Weblate: Hungarian (hu) by Balázs Meskó <meskobalazs@mailbox.org>
Currently translated at 67.0% (386 of 576 strings)

Translated using Weblate: Hungarian (hu) by Balázs Meskó <meskobalazs@mailbox.org>

Currently translated at 39.4% (227 of 576 strings)

Translated using Weblate: Hungarian (hu) by Balázs Meskó <meskobalazs@mailbox.org>

Currently translated at 37.8% (218 of 576 strings)

Translated using Weblate: Hungarian (hu) by Balázs Meskó <meskobalazs@mailbox.org>

Currently translated at 22.5% (130 of 576 strings)

Translated using Weblate: Hungarian (hu) by Balázs Meskó <meskobalazs@mailbox.org>

Currently translated at 14.7% (85 of 576 strings)

Co-authored-by: Balázs Meskó <meskobalazs@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Stiffen
010d318ab4 Translated using Weblate: Chinese (Traditional) (zh_Hant) by Stiffen <wchen01@fisher.edu>
Currently translated at 81.0% (467 of 576 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Stiffen <wchen01@fisher.edu>

Currently translated at 81.7% (471 of 576 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Stiffen <wchen01@fisher.edu>

Currently translated at 81.7% (471 of 576 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Stiffen <wchen01@fisher.edu>

Currently translated at 81.4% (469 of 576 strings)

Co-authored-by: Stiffen <wchen01@fisher.edu>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
ifurther
c0deb87379 Translated using Weblate: Chinese (Traditional) (zh_Hant) by ifurther <i.further.5.4@gmail.com>
Currently translated at 81.2% (468 of 576 strings)

Co-authored-by: ifurther <i.further.5.4@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
mondstern
6851907fbc Translated using Weblate: Norwegian Bokmål (nb_NO) by mondstern <mondstern@snopyta.org>
Currently translated at 59.0% (340 of 576 strings)

Co-authored-by: mondstern <mondstern@snopyta.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Allan Nordhøy
6bea5cd6ed Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 58.5% (337 of 576 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Germe the fur star
af3ae8a4a3 Translated using Weblate: Spanish (Argentina) (es_AR) by Germe the fur star <FOSSgerme.deb@tuta.io>
Currently translated at 20.4% (118 of 576 strings)

Translated using Weblate: Spanish (es) by Germe the fur star <FOSSgerme.deb@tuta.io>

Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Spanish (Argentina) (es_AR) by Germe the fur star <FOSSgerme.deb@tuta.io>

Currently translated at 20.1% (116 of 576 strings)

Co-authored-by: Germe the fur star <FOSSgerme.deb@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Liu Tao
ee242f2149 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Liu Tao <lyuutau@outlook.com>
Currently translated at 39.0% (225 of 576 strings)

Co-authored-by: Liu Tao <lyuutau@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
04850ace3b Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 91.4% (527 of 576 strings)

Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>

Currently translated at 90.4% (521 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
136465f533 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 90.4% (521 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
4e2df60122 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 90.2% (520 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
ce9a82655e Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 90.2% (520 of 576 strings)

Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>

Currently translated at 89.9% (518 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
23c4b592e1 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 89.7% (517 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
b10e80c341 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 89.7% (517 of 576 strings)

Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>

Currently translated at 89.5% (516 of 576 strings)

Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>

Currently translated at 89.4% (515 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
13d220ffd4 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 89.2% (514 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
fc28ead082 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 89.2% (514 of 576 strings)

Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>

Currently translated at 88.8% (512 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
bbeeaab4ff Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 88.8% (512 of 576 strings)

Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>

Currently translated at 88.0% (507 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
eb3eb5a339 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 88.0% (507 of 576 strings)

Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>

Currently translated at 87.8% (506 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
lilim
5d52d2ee13 Translated using Weblate: French (fr) by lilim <lionel@les-miquelots.net>
Currently translated at 87.6% (505 of 576 strings)

Co-authored-by: lilim <lionel@les-miquelots.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
hilariousperson
dbac5ec5c7 Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 87.6% (505 of 576 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
signz signotorez
c8bbbaae11 Translated using Weblate: Indonesian (id) by signz signotorez <signotorez@gmail.com>
Currently translated at 13.5% (78 of 576 strings)

Co-authored-by: signz signotorez <signotorez@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Reza Almanda
4737784e53 Translated using Weblate: Indonesian (id) by Reza Almanda <rezaalmanda27@gmail.com>
Currently translated at 13.5% (78 of 576 strings)

Co-authored-by: Reza Almanda <rezaalmanda27@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
世界
2ae2aed6f3 Translated using Weblate: Chinese (Simplified) (zh_Hans) by 世界 <i@nekox.me>
Currently translated at 37.8% (218 of 576 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by 世界 <i@nekox.me>

Currently translated at 37.8% (218 of 576 strings)

Co-authored-by: 世界 <i@nekox.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Michalis
de66c06bc8 Translated using Weblate: Greek (el) by Michalis <michalisntovas@yahoo.gr>
Currently translated at 13.5% (78 of 576 strings)

Co-authored-by: Michalis <michalisntovas@yahoo.gr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/el/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Liu Tao
01d3476d89 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Liu Tao <lyuutau@outlook.com>
Currently translated at 35.5% (205 of 576 strings)

Co-authored-by: Liu Tao <lyuutau@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Oymate
44489553eb Translated using Weblate: Bengali (bn) by Oymate <dhruboadittya96@gmail.com>
Currently translated at 3.4% (20 of 576 strings)

Co-authored-by: Oymate <dhruboadittya96@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bn/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Gavy
bbc4e2eca0 Translated using Weblate: French (fr) by Gavy <gavy@protonmail.com>
Currently translated at 87.1% (502 of 576 strings)

Co-authored-by: Gavy <gavy@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
gub
ca57bf1b0e Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 87.1% (502 of 576 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2022-02-15 16:49:42 +01:00
Hans-Christoph Steiner
786ee0eabf Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.4

See merge request fdroid/fdroidserver!1074
2022-02-15 11:29:28 +00:00
fdroid-bot
93836f3af8 gradle v7.4 2022-02-15 10:31:09 +00:00
Hans-Christoph Steiner
8093ede8c7 Merge branch 'ndk' into 'master'
update preinstalled ndk to r23

See merge request fdroid/fdroidserver!1027
2022-02-15 10:30:30 +00:00
linsui
3f62e0ebde update preinstalled ndk to r23b 2022-02-10 16:47:03 +08:00
Michael Pöhn
39a25fc191 Merge branch 'fix-ci-servergitmirrors' into 'master'
gitlab-ci: fix servergitmirrors by using Debian packages

See merge request fdroid/fdroidserver!1073
2022-02-03 15:58:44 +00:00
Hans-Christoph Steiner
55b3905951 gitlab-ci: fix servergitmirrors by using Debian packages
this is like:
* ca5ebcb30f
* 972bfe346f
* 23bd62c31c
* !1035
* !1034
* !1029
* !1028
2022-02-03 16:41:57 +01:00
Michael Pöhn
0452d6591d Merge branch 'basic-buildserver-docker-image' into 'master'
basic buildserver docker image

See merge request fdroid/fdroidserver!1069
2022-01-13 21:13:15 +00:00
Hans-Christoph Steiner
ca5ebcb30f
gitlab-ci: fix plugin_fetchsrclibs by using Debian packages
* https://gitlab.com/eighthave/fdroidserver/-/jobs/1961701458

Collecting pynacl>=1.0.1 (from paramiko->fdroidserver==2.1a0)
  Downloading https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz (3.4MB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'error'
  Complete output from command /builds/eighthave/fdroidserver/env/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-xokvr6uk --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=40.8.0 wheel "cffi>=1.4.1; python_implementation != 'PyPy'":
  Collecting setuptools>=40.8.0
    Using cached https://files.pythonhosted.org/packages/eb/53/0dd4c7960579da8be13fa9b2c2591643d37f323e3d79f8bc8b1b6c8e6217/setuptools-60.5.0-py3-none-any.whl
  Collecting wheel
    Using cached https://files.pythonhosted.org/packages/27/d6/003e593296a85fd6ed616ed962795b2f87709c3eee2bca4f6d0fe55c6d00/wheel-0.37.1-py2.py3-none-any.whl
  Collecting cffi>=1.4.1
    Downloading https://files.pythonhosted.org/packages/00/9e/92de7e1217ccc3d5f352ba21e52398372525765b2e0c4530e6eb2ba9282a/cffi-1.15.0.tar.gz (484kB)
  Collecting pycparser (from cffi>=1.4.1)
    Downloading https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl (118kB)
  Building wheels for collected packages: cffi
    Running setup.py bdist_wheel for cffi: started
    Running setup.py bdist_wheel for cffi: finished with status 'error'
    Complete output from command /builds/eighthave/fdroidserver/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-djg9jc8p/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-d1knhl7l --python-tag cp37:
    unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
    unable to execute 'x86_64-linux-gnu-gcc': No such file or directory

        No working compiler found, or bogus compiler options passed to
        the compiler from Python's standard "distutils" module.  See
        the error messages above.  Likely, the problem is not related
        to CFFI but generic to the setup.py of any Python package that
        tries to compile C code.  (Hints: on OS/X 10.8, for errors about
        -mno-fused-madd see http://stackoverflow.com/questions/22313407/
        Otherwise, see https://wiki.python.org/moin/CompLangPython or
        the IRC channel #python on irc.libera.chat.)

        Trying to continue anyway.  If you are trying to install CFFI from
        a build done in a different context, you can ignore this warning.

    running bdist_wheel
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.7
    creating build/lib.linux-x86_64-3.7/cffi
    copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/lock.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/recompiler.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/__init__.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/cparser.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/verifier.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/api.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/commontypes.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/error.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/model.py -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/_embedding.h -> build/lib.linux-x86_64-3.7/cffi
    copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.7/cffi
    running build_ext
    building '_cffi_backend' extension
    creating build/temp.linux-x86_64-3.7
    creating build/temp.linux-x86_64-3.7/c
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/ffi -I/usr/include/libffi -I/builds/eighthave/fdroidserver/env/include -I/usr/include/python3.7m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.7/c/_cffi_backend.o
    unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    ----------------------------------------
    Failed building wheel for cffi
    Running setup.py clean for cffi
  Failed to build cffi
  Installing collected packages: setuptools, wheel, pycparser, cffi
    Running setup.py install for cffi: started
      Running setup.py install for cffi: finished with status 'error'
      Complete output from command /builds/eighthave/fdroidserver/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-djg9jc8p/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ek80c81s/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-xokvr6uk --compile --install-headers /builds/eighthave/fdroidserver/env/include/site/python3.7/cffi:
      unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
      unable to execute 'x86_64-linux-gnu-gcc': No such file or directory

          No working compiler found, or bogus compiler options passed to
          the compiler from Python's standard "distutils" module.  See
          the error messages above.  Likely, the problem is not related
          to CFFI but generic to the setup.py of any Python package that
          tries to compile C code.  (Hints: on OS/X 10.8, for errors about
          -mno-fused-madd see http://stackoverflow.com/questions/22313407/
          Otherwise, see https://wiki.python.org/moin/CompLangPython or
          the IRC channel #python on irc.libera.chat.)

          Trying to continue anyway.  If you are trying to install CFFI from
          a build done in a different context, you can ignore this warning.

      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.7
      creating build/lib.linux-x86_64-3.7/cffi
      copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/lock.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/recompiler.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/__init__.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/cparser.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/verifier.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/api.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/commontypes.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/error.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/model.py -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/_embedding.h -> build/lib.linux-x86_64-3.7/cffi
      copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.7/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-x86_64-3.7
      creating build/temp.linux-x86_64-3.7/c
      x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/ffi -I/usr/include/libffi -I/builds/eighthave/fdroidserver/env/include -I/usr/include/python3.7m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.7/c/_cffi_backend.o
      unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
      error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

      ----------------------------------------
  Command "/builds/eighthave/fdroidserver/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-djg9jc8p/cffi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ek80c81s/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-xokvr6uk --compile --install-headers /builds/eighthave/fdroidserver/env/include/site/python3.7/cffi" failed with error code 1 in /tmp/pip-install-djg9jc8p/cffi/

  ----------------------------------------
Command "/builds/eighthave/fdroidserver/env/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-xokvr6uk --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=40.8.0 wheel "cffi>=1.4.1; python_implementation != 'PyPy'"" failed with error code 1 in None
2022-01-13 21:22:25 +01:00
Hans-Christoph Steiner
5d09e70330
buildserver: give names to all provisioners 2022-01-13 21:22:23 +01:00
Hans-Christoph Steiner
97553c516f
provision-android-ndk: let script work when no NDKs will be installed
The other form of find gave:

# find $NDK_BASE -type f -executable -print0 | xargs -0 chmod a+x
chmod: missing operand after ‘a+x’
Try 'chmod --help' for more information.
2022-01-13 21:22:21 +01:00
Hans-Christoph Steiner
5514000376
buildserver: include packages in Dockerfile that Vagrant boxes have
The goal is to have the Docker base image and the Vagrant base box have the
same setup.
2022-01-13 21:22:20 +01:00
Hans-Christoph Steiner
7535d75b40
buildserver: run provision scripts in Dockerfile
fdroidserver#119
2022-01-13 21:22:15 +01:00
Hans-Christoph Steiner
839f5b109a
gitlab-ci: publish buildserver image to Docker Registry 2022-01-13 21:21:26 +01:00
Hans-Christoph Steiner
f20d3d249a
add Dockerfile to build a docker buildserver image
This is just the first step to getting full Docker support for everywhere
the buildserver is used.  This will at least let us replace the hacks that
are separately maintained in fdroid/ci-images-base and
fdroid/ci-images-client.
2022-01-13 21:21:17 +01:00
Hans-Christoph Steiner
4e310e3a59
buildserver: setup-env-vars: add var for ~vagrant for CI jobs
The CI jobs need to do a little setup based on the 'vagrant' user's $HOME.
2022-01-11 11:23:44 +01:00
Hans-Christoph Steiner
57447f18e1
buildserver: move buildserverid to provisioner
In order to support Docker, this should be able to operate without ssh,
e.g. using vagrant-communicator-docker.  This removes the buildserverid
hack and makes it a provisioner shell script.
2022-01-11 11:23:36 +01:00
Hans-Christoph Steiner
a375bae3c9 Merge branch 'fix_open_mr' into 'master'
Only ignore opening a second MR

See merge request fdroid/fdroidserver!1068
2021-12-30 19:40:22 +00:00
Jochen Sprickerhof
b73663967b Only ignore opening a second MR 2021-12-30 19:23:05 +00:00
Hans-Christoph Steiner
3720afbe5b Merge branch 'fix_open_mr' into 'master'
Don't open second MR for gradle (Closes: #914)

Closes #914

See merge request fdroid/fdroidserver!1066
2021-12-30 18:35:06 +00:00
Jochen Sprickerhof
be7e59e71a Add typing information for mypy 2021-12-30 11:17:57 +01:00
Jochen Sprickerhof
460dffe82b Don't open second MR for gradle (Closes: #914)
Traceback (most recent call last):
  File "/builds/fdroid/fdroidserver/./tests/gradle-release-checksums.py", line 130, in <module>
    mr = project.mergerequests.create({
  File "/usr/lib/python3/dist-packages/gitlab/exceptions.py", line 281, in wrapped_f
    raise error(e.error_message, e.response_code, e.response_body) from e
gitlab.exceptions.GitlabCreateError: 409: ['Another open merge request already exists for this source branch: !1064']
2021-12-30 10:00:46 +01:00
Izzy
5f43fdccd4 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.3.3

See merge request fdroid/fdroidserver!1062
2021-12-25 16:54:07 +00:00
fdroid-bot
56740af3ef gradle v7.3.3 2021-12-23 22:14:18 +00:00
Hans-Christoph Steiner
1388c2d987 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.3.2

See merge request fdroid/fdroidserver!1061
2021-12-23 22:13:39 +00:00
fdroid-bot
1bf39d46e2 gradle v7.3.2 2021-12-16 21:56:33 +00:00
Hans-Christoph Steiner
04a45ae745 Merge branch 'fix_pip_git_installation' into 'master'
Build translation files on install instead of distributing them in sdist

Closes #934

See merge request fdroid/fdroidserver!1014
2021-12-16 21:55:53 +00:00
FestplattenSchnitzel
565d9e4994
Format setup.py with Black 2021-12-16 20:34:38 +01:00
FestplattenSchnitzel
23a4135ccd
Compile translation files on install
Solution based on https://stackoverflow.com/questions/40051076/compile-translation-files-when-calling-setup-py-install
2021-12-16 20:13:24 +01:00
Michael Pöhn
dccfc2f712 Merge branch 'windows-install-fix' into 'master'
Add console_scripts to create .exe file during installation on Windows

See merge request fdroid/fdroidserver!1048
2021-12-09 11:24:58 +00:00
Hans-Christoph Steiner
c900d4a883
remove 'fdroid' from MANIFEST.in 2021-12-09 12:06:53 +01:00
Sergey Zolotarev
bd1f82fac5 Add console_scripts to create .exe file during installation on Windows 2021-12-09 11:02:00 +00:00
Jochen Sprickerhof
4dd9c488d3 Merge branch 'three-little-fixes' into 'master'
three little fixes

See merge request fdroid/fdroidserver!1052
2021-12-07 09:37:54 +00:00
Hans-Christoph Steiner
c54f9ea4ca mirror: make _run_wget() return to the dir it started in
This kind of function should not change the working environment, especially
since so much of the fdroidserver code assumes the current working directory
is the root of an fdroid repo.

It is used in fdroidserver/mirror.py with absolute paths always, so it
shouldn't change any existing use.  I found this issue by using it in a
plugin.
2021-12-07 10:24:27 +01:00
Hans-Christoph Steiner
319bf47a6b enable intel-android-extra-license on buildserver, it is DFSG-free
It is a BSD-3-clause:
38f9564932/android/repository/addon.xml (L568)
2021-12-07 10:24:27 +01:00
Hans-Christoph Steiner
778e600269 gitlab-ci: enable pyjks in lint_mypy job now that it is in backports 2021-12-07 10:24:27 +01:00
Jochen Sprickerhof
b6b3c9272b Merge branch 'fixes/sha256-sum-verify' into 'master'
Fix verify.py use sha256sum from common

See merge request fdroid/fdroidserver!1059
2021-12-06 08:48:53 +00:00
Romain Lebbadi-Breteau
b2eca0fc3b
remove useless import in verify.py 2021-12-04 18:26:26 -05:00
Romain Lebbadi-Breteau
3576d025fe
fix verify.py use sha256sum from common 2021-12-04 18:14:21 -05:00
Hans-Christoph Steiner
b281c4ec82 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.3.1

See merge request fdroid/fdroidserver!1056
2021-12-03 10:22:09 +00:00
fdroid-bot
6db38f3904 gradle v7.3.1 2021-12-03 10:08:22 +00:00
Hans-Christoph Steiner
0fb772fb8c Merge branch 'fix_ndk_not_found' into 'master'
Raise exception if the given NDK was not found

See merge request fdroid/fdroidserver!1054
2021-12-03 10:07:43 +00:00
Jochen Sprickerhof
2933880590 Raise exception if the given NDK was not found
Seen in

https://monitor.f-droid.org/builds/log/io.nekohasekai.sagernet/635#site-footer
2021-12-01 07:45:03 +01:00
Jochen Sprickerhof
60cf72a462 Merge branch 'fix-subdir-regex' into 'master'
Fix subproject regex to allow subdir without colon

See merge request fdroid/fdroidserver!1047
2021-11-30 08:28:17 +00:00
jugendhacker
b236773455 Fix subproject regex to allow subdir without colon 2021-11-30 08:28:17 +00:00
Hans-Christoph Steiner
455b9f7a04 Merge branch 'r23b' into 'master'
add ndk r23b

See merge request fdroid/fdroidserver!1049
2021-11-29 11:46:45 +00:00
linsui
9b0ef544bb add ndk r23b 2021-11-29 11:28:43 +00:00
Hans-Christoph Steiner
a391ac0d0f Merge branch 'fix_human_size' into 'master'
Parse single digit sizes

Closes #946

See merge request fdroid/fdroidserver!1050
2021-11-29 11:20:39 +00:00
Jochen Sprickerhof
a5deaa80d8 Parse single digit sizes
Closes: #946
2021-11-27 21:44:47 +01:00
Hans-Christoph Steiner
cd69692424 Merge branch 'TheLastProject-master-patch-73771' into 'master'
Add NSFW to allowed anti-features

See merge request fdroid/fdroidserver!1000
2021-11-25 13:25:24 +00:00
Sylvia van Os
3779481519 Renamed to NSFW as per https://gitlab.com/fdroid/admin/-/issues/252 2021-11-25 13:10:29 +00:00
Sylvia van Os
ec194ef6e6 Add AdultContent to allowed anti-features 2021-11-25 13:10:29 +00:00
Hans-Christoph Steiner
62e63b600b Merge branch 'drop_wiki' into 'master'
Drop code for the old wiki

See merge request fdroid/fdroidserver!1043
2021-11-24 17:29:57 +00:00
Jochen Sprickerhof
36a7847525 Suppress --wiki in fdroid build
This was already done for fdroid update in 00c2cc969.
2021-11-24 18:16:07 +01:00
Jochen Sprickerhof
32d2330bb5 Always write VM status
Before this the status.json only contained VM information with
fdroid build --wiki --server, after this a fdroid build --server is
enough.
2021-11-24 18:16:07 +01:00
Jochen Sprickerhof
b6f1f4231a Drop code for the old wiki 2021-11-24 18:16:07 +01:00
Hans-Christoph Steiner
6952a23c47 Merge branch 'Add-github-actions' into 'master'
Added Github actions/workflow to the nightly CI

See merge request fdroid/fdroidserver!1032
2021-11-24 07:54:57 +00:00
Ward Vanlerberghe
1c65fd8496 Added Github actions/workflow to the nightly CI 2021-11-24 07:54:57 +00:00
Hans-Christoph Steiner
1031106dee Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.3

See merge request fdroid/fdroidserver!1046
2021-11-22 13:46:10 +00:00
fdroid-bot
9a68c4aefc gradle v7.3 2021-11-22 07:57:10 +00:00
Hans-Christoph Steiner
823a7c6aae Merge branch 'fix_new_html5lib' into 'master'
Simplify index.html for new html5lib

See merge request fdroid/fdroidserver!1044
2021-11-22 07:56:30 +00:00
Jochen Sprickerhof
656c707636 Simplify index.html for new html5lib
Newer html5lib (used in html5print in the test_make_website) strip the
empty value, as it is valid html.
2021-11-19 18:34:23 +01:00
Jochen Sprickerhof
80e608a119 Merge branch 'fix_ci' into 'master'
[CI] install python3-matplotlib from apt

See merge request fdroid/fdroidserver!1045
2021-11-19 17:30:54 +00:00
Jochen Sprickerhof
6756f842e4 [CI] install python3-matplotlib from apt 2021-11-19 18:17:36 +01:00
Hans-Christoph Steiner
5aa12ea50a Merge branch 'fix_ssh' into 'master'
Add newline in ssh_config

See merge request fdroid/fdroidserver!1039
2021-11-04 09:29:27 +00:00
Jochen Sprickerhof
ae9a1df1aa Add newline in ssh_config
Otherwise both options end on the same line and are not used.
2021-11-04 09:10:57 +00:00
Hans-Christoph Steiner
c26345214f Merge branch 'ndk-unzip' into 'master'
NDK-Install: handle symbolic links correctly

See merge request fdroid/fdroidserver!1023
2021-11-03 08:30:33 +00:00
Gaurav Ujjwal
aead3310bd NDK Install: Handle symlinks present in NDK zip 2021-11-03 08:13:21 +00:00
Jochen Sprickerhof
b12ece1eba Merge branch 'ci' into 'master'
[CI] install python3-pil from apt in servergitmirrors

See merge request fdroid/fdroidserver!1035
2021-10-23 13:15:21 +00:00
Jochen Sprickerhof
46abffa0fa [CI] install python3-pil from apt in servergitmirrors
New version would need to be compiled, otherwise.
2021-10-23 15:02:57 +02:00
Jochen Sprickerhof
1033d6e163 Merge branch 'dry_run' into 'master'
Improve rewritemeta --help

See merge request fdroid/fdroidserver!1034
2021-10-23 12:45:57 +00:00
Jochen Sprickerhof
b8285ebd0e [CI] Install python3-pil from apt
New version would need to be compiled, otherwise.
2021-10-23 14:33:06 +02:00
Jochen Sprickerhof
e5dcf532b4 Improve rewritemeta --help 2021-10-23 14:08:07 +02:00
Jochen Sprickerhof
e036f31613 Merge branch 'git_prune' into 'master'
git prune branches in case of failure

See merge request fdroid/fdroidserver!1026
2021-10-14 12:42:38 +00:00
Jochen Sprickerhof
fa3cceb8e8 git prune branches in case of failure
git branches can be namespaces like directories on a filesystem and are
represented like that. Due to that there can't be a branch with the same
name as a namespace, i.e. foo and foo/bar.
If upstream moves from a branch to namespace, we need to prune the old
branch before fetching the new one.
This broke organic maps:

From https://github.com/organicmaps/organicmaps
 * [new branch]            android/huawei       -> origin/android/huawei
error: cannot lock ref 'refs/remotes/origin/fixes/all': 'refs/remotes/origin/fixes' exists; cannot create 'refs/remotes/origin/fixes/all'
 ! [new branch]            fixes/all            -> origin/fixes/all  (unable to update local ref)
   e2ac324b95..320a1db39b  master               -> origin/master
 * [new tag]               2021.10.09-2-android -> 2021.10.09-2-android
error: some local refs could not be updated; try running
 'git remote prune origin' to remove any old, conflicting branches
2021-10-14 12:42:29 +00:00
Jochen Sprickerhof
e8b7a648b7 Merge branch 'fix_ci' into 'master'
Fix servergitmirrors ci

See merge request fdroid/fdroidserver!1029
2021-10-14 12:42:13 +00:00
Jochen Sprickerhof
972bfe346f Fix servergitmirrors ci 2021-10-14 14:40:31 +02:00
Jochen Sprickerhof
724153a587 Merge branch 'tweak_logging' into 'master'
[checkupdates] Tweak logging

See merge request fdroid/fdroidserver!1025
2021-10-14 12:23:26 +00:00
Jochen Sprickerhof
45a20ab365 [checkupdates] Tweak logging
- Increase severity of version mismatch.
- Don't log that the process is done.
2021-10-14 12:11:01 +00:00
Hans-Christoph Steiner
78eb2d94c4 Merge branch 'ignore_windows_ci' into 'master'
Ignore failing Windows CI

See merge request fdroid/fdroidserver!1028
2021-10-14 12:09:44 +00:00
Jochen Sprickerhof
23bd62c31c [CI] fetchsrclibs use apt cffi 2021-10-14 13:55:51 +02:00
Jochen Sprickerhof
60532f0912 Ignore failing Windows CI 2021-10-14 13:40:19 +02:00
Jochen Sprickerhof
8a089691ea Merge branch 'genodeftest-master-patch-82391' into 'master'
Doc: Clarify wording example for config.yml

See merge request fdroid/fdroidserver!1024
2021-10-13 13:44:27 +00:00
Christian Stadelmann
a0a86aa5ec Clarify wording example for config.yml
Note: The old wording was applicable to the python version of this config file only.
2021-10-02 08:13:48 +00:00
Hans-Christoph Steiner
bd079c9311 Merge branch 'NoahAndrews-master-patch-97157' into 'master'
Handle error when parsing WebView icon

Closes #903

See merge request fdroid/fdroidserver!1018
2021-10-01 15:01:21 +00:00
Noah Andrews
75989ff59a
Handle error when parsing WebView icon
Fixes #903
2021-10-01 16:44:28 +02:00
Hans-Christoph Steiner
da10acfe2c
update: add test with APK for icon_id related exceptions 2021-10-01 16:44:14 +02:00
Hans-Christoph Steiner
80d238180b Merge branch 'obfusk-master-patch-85387' into 'master'
scanner: add com.google.mlkit to NON_FREE_GRADLE_LINES

See merge request fdroid/fdroidserver!1021
2021-10-01 13:11:16 +00:00
Felix C. Stegerman
dbfbc4163c scanner: add com.google.mlkit to NON_FREE_GRADLE_LINES 2021-10-01 13:10:45 +00:00
Felix C. Stegerman
5b86242dde Merge branch 'triple-t-flavours' into 'master'
copy_triple_t_store_metadata(): handle subdir + flavor

Closes fdroiddata#2487

See merge request fdroid/fdroidserver!1022
2021-09-29 21:53:26 +00:00
Felix C. Stegerman
c2ed538ea4 copy_triple_t_store_metadata(): handle subdir + flavor 2021-09-29 21:36:11 +00:00
Hans-Christoph Steiner
311e6a14f1 Merge branch 'black' into 'master'
Add CI job "black" for code format checks

See merge request fdroid/fdroidserver!998
2021-09-29 18:00:06 +00:00
FestplattenSchnitzel
ef20e1b329 Add CI job "black" for code format checks
The CI job will fail, if a file needs to be reformatted.
Only files already well formatted will be checked at the moment.
2021-09-25 15:45:37 +00:00
Hans-Christoph Steiner
c71c2465d3
tests: silence the linters 2021-09-20 10:51:54 +02:00
Hans-Christoph Steiner
cc666907a3
Merge 'fix-ndk-long-form-version' into 'master'
* fix-ndk-long-form-version:
  test whether NDK version parsing is working properly
  Fix invalid key error due to NDK versions in "revision" form  (e.g. 21.4.7075529)

fdroid/fdroidserver!1020
2021-09-20 10:20:07 +02:00
Hans-Christoph Steiner
d6fd165444 test whether NDK version parsing is working properly 2021-09-20 10:18:16 +02:00
Gaurav Ujjwal
07856dc0e0 Fix invalid key error due to NDK versions in "revision" form (e.g. 21.4.7075529)
First element in the 'NDKS' array does not have 'revision'  key, which results in 'KeyError' when accessed through subscript operator.
2021-09-19 09:44:37 +00:00
Hans-Christoph Steiner
714ab5622e Merge branch 'new-primary-mirror' into 'master'
mirror-to-mirror.sh: also sync to plug-mirror.rcac.purdue.edu

See merge request fdroid/fdroidserver!1017
2021-09-16 08:15:34 +00:00
Hans-Christoph Steiner
adbd7ba757
mirror-to-mirror.sh: also sync to plug-mirror.rcac.purdue.edu
This is the deployed script for pushing to the primary mirrors.  It starts
with the 'repo' section and runs all the rsyncs in parallel to each primary
mirror.  Once the 'repo' syncs are done, it does the same process for the
'archive' syncs. This adds a new primary push mirror at PLUG. #163

!800 !792
[skip ci]
2021-09-16 10:11:27 +02:00
Hans-Christoph Steiner
5b9fd12150 Merge branch 'fix_ci' into 'master'
Fix get_dir_size call

See merge request fdroid/fdroidserver!1015
2021-09-13 11:35:55 +00:00
Hans-Christoph Steiner
8ea154c125 fix IndexTest.test_gitlab_get_mirror_service_urls
This makes it actually call the method rather than mocking it.
2021-09-13 13:18:21 +02:00
Jochen Sprickerhof
0783f97bed Fix get_dir_size call
Regression of 7987c746.
2021-09-13 11:16:16 +00:00
Hans-Christoph Steiner
04ac629bd2 Merge branch 'obfusk-master-patch-89864' into 'master'
find_sdk_tools_cmd(): s/found/not found/ in error message

See merge request fdroid/fdroidserver!1016
2021-09-13 10:49:33 +00:00
Felix C. Stegerman
6bd8470d55 find_sdk_tools_cmd(): s/found/not found/ in error message 2021-09-12 22:40:50 +00:00
Jochen Sprickerhof
4ef8d1340f Merge branch 'submodules-on-host' into 'master'
build: run vcs.initsubmodules() on host as well

See merge request fdroid/fdroidserver!994
2021-09-11 15:46:56 +00:00
Felix C. Stegerman
53ff7de445 build: run vcs.initsubmodules() on host as well
otherwise, e.g. triple-t metadata in a submodule will not be available
on the host and thus not be used at all
2021-09-11 15:31:27 +00:00
Jochen Sprickerhof
07ddb8a6db Merge branch 'gitlab-pages-fix' into 'master'
index: do not include GitLab Pages mirror if it can't be deployed

See merge request fdroid/fdroidserver!1005
2021-09-11 15:31:12 +00:00
Hans-Christoph Steiner
7987c746de index: do not include GitLab Pages mirror if it can't be deployed
GitLab Pages sites are limited to 1GB on gitlab.com, so the CI/CD job will
fail if the repo is bigger than that.  It should not be included as a
mirror in that case.

https://docs.gitlab.com/ee/user/gitlab_com/#gitlab-pages
2021-09-11 15:30:55 +00:00
Jochen Sprickerhof
eb2fdc5a58 Merge branch 'fix_stretch_ruamel' into 'master'
Support ruamel from Debian stretch

See merge request fdroid/fdroidserver!996
2021-09-11 09:32:05 +00:00
Jochen Sprickerhof
28098c32e3 Support ruamel from Debian stretch 2021-09-11 09:16:15 +00:00
Jochen Sprickerhof
52eeb21763 Merge branch 'verbose_build' into 'master'
Provide verbose output with --verbose

Closes #882

See merge request fdroid/fdroidserver!1013
2021-09-10 17:01:00 +00:00
Jochen Sprickerhof
2b41dffcb2 Provide verbose output with --verbose
23b0b6bc added logging in case of an FDroidException on the build
server. This broke the log of apps that fail to build.

Prior to 23b0b6bc a failing build in the VM triggered a BuildException
on the server side but the build output was written to the log in the
finally part of build_server(). After 23b0b6bc the finally part writs
the build as well but the BuildException is caught in main() and the
build log is overwritten with the empty exception content. This patch
always adds the build log to the exception so it is written to the log.

Closes: #882
2021-09-10 14:10:46 +02:00
Hans-Christoph Steiner
63eaa5469c Merge branch 'missing_logs' into 'master'
Deploy build error log in case of an exception

See merge request fdroid/fdroidserver!1007
2021-08-27 20:09:12 +00:00
Jochen Sprickerhof
72df2639a2 Log traceback with exception 2021-08-27 13:29:07 +02:00
Jochen Sprickerhof
23b0b6bcaf Deploy build error log in case of an exception
This happened with us.spotco.fennec_dos_2912000 where no build log was
saved in the repo but the wiki has an error text. The error text was:

"Command '['rsync', '--recursive', '--perms', '--links', '--quiet', '--rsh=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=FATAL -o IdentitiesOnly=yes -o PasswordAuthentication=no -p 2222 -i /home/fbuild/.vagrant.d/boxes/buildserver/0/virtualbox/vagrant_private_key', 'build/srclib/MozFennec', 'vagrant@127.0.0.1:/home/vagrant/build/srclib']' returned non-zero exit status 255."

Which is generated by the rsync subprocess call in build_server(). I
assume that it threw an Exception (not an FdroidException, because the
string "Build completed at" is not in the wiki site) that was caught in
main().
2021-08-27 08:05:28 +02:00
Jochen Sprickerhof
7c88bb09a5 Merge branch 'fix-backports' into 'master'
[buildserver] run update again after upgrade

See merge request fdroid/fdroidserver!1006
2021-08-25 12:59:17 +00:00
Felix C. Stegerman
779a592ea0
[buildserver] run update again after upgrade 2021-08-25 14:51:20 +02:00
Jochen Sprickerhof
e80269fb48 Merge branch 'dpkg_confdef' into 'master'
[makebuildserver] run dpkg with --force-confdef

See merge request fdroid/fdroidserver!1004
2021-08-24 07:16:16 +00:00
Jochen Sprickerhof
e1a67c9d97 [makebuildserver] run dpkg with --force-confdef
There has been a whitespace change in the accessibility.properties
configuration file as part of the openjdk-8-jre-headless
8u302-b08-1~deb9u1 version. As we modified the file, this broke
makebuildserver, asking for confirmation.
2021-08-23 22:48:14 +02:00
Hans-Christoph Steiner
4088c3a9ec Merge branch 'readme' into 'master'
Update README.md

See merge request fdroid/fdroidserver!997
2021-08-23 11:47:45 +00:00
FestplattenSchnitzel
83e16422a5 Update README.md
Add F-Droid icon, redesign, misc fixes
2021-08-23 11:44:48 +00:00
Hans-Christoph Steiner
e77e110a64 Merge branch 'using_defaults' into 'master'
Remove waring about no config file

See merge request fdroid/fdroidserver!999
2021-08-23 11:42:19 +00:00
Jochen Sprickerhof
b62124853a Remove waring about no config file
fdroid works fine without a config so there is no reason to warn about
it.
2021-08-23 11:41:44 +00:00
Hans-Christoph Steiner
4cf48cc9c4 Merge branch 'ndk-release-checksums.py' into 'master'
update NDK

See merge request fdroid/fdroidserver!1003
2021-08-23 11:02:17 +00:00
fdroid-bot
54bc6f05de Android NDK None (None) 2021-08-23 10:48:53 +00:00
Hans-Christoph Steiner
9b0de17807 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.2

See merge request fdroid/fdroidserver!1002
2021-08-23 10:48:14 +00:00
fdroid-bot
51d161d69a gradle v7.2 2021-08-21 19:29:30 +00:00
Jochen Sprickerhof
ab785c5ccd Merge branch 'checkupdates_warn_tag' into 'master'
[checkupdates] Warn if no version in latest tag

See merge request fdroid/fdroidserver!1001
2021-08-21 19:28:54 +00:00
Jochen Sprickerhof
fde48a1e77 [checkupdates] Warn if no version in latest tag 2021-08-21 08:23:27 +02:00
Hans-Christoph Steiner
5e35c20d5d Merge branch 'fix-issuebot-48' into 'master'
import: fix error when using python3-git from stretch

Closes #48 and issuebot#48

See merge request fdroid/fdroidserver!993
2021-08-10 07:58:12 +00:00
Hans-Christoph Steiner
3283ce2510
import: fix error when using python3-git from stretch
closes https://gitlab.com/fdroid/issuebot/-/issues/48#note_646592031
closes issuebot#48
2021-08-09 16:27:56 +02:00
Hans-Christoph Steiner
c4d3e075cb Merge branch 'fix_update' into 'master'
Don't fail fdroid update on empty repository

See merge request fdroid/fdroidserver!990
2021-08-05 16:18:22 +00:00
Jochen Sprickerhof
cacbe88b8c Don't fail fdroid update on empty repository
Steps to reproduce:

$ git init
$ fdroid update --create-key
2021-08-05 16:05:28 +00:00
Chirayu Desai
bbda73f6c7 Merge branch 'AllowedSigningKeys' into 'master'
add AllowedSigningKeys metadata for enforcing APK signatures

See merge request fdroid/fdroidserver!984
2021-08-05 15:35:09 +00:00
Hans-Christoph Steiner
a56d377c9e
update: modernize options handling in tests
This moves everything to the Options class, and resets the options between
test runs.
2021-08-05 16:44:40 +02:00
Hans-Christoph Steiner
3b95d3de64
update: AllowedAPKSigningKeys metadata to enforce APK signers
This field lets you specify which signing certificates should be
trusted for APKs in a binary repo.
2021-08-05 16:43:48 +02:00
Hans-Christoph Steiner
074ea8cae3
metadata: remove unused fields and types
BuildVersion and UseBuilt were only ever used in the .txt format, which is
gone.
2021-08-05 14:24:45 +02:00
Hans-Christoph Steiner
0d555a2fe2 Merge branch 'fix-triple-t-some-more' into 'master'
fix copy_triple_t_store_metadata()

See merge request fdroid/fdroidserver!992
2021-08-05 09:30:37 +00:00
Felix C. Stegerman
d518971204
add test_insert_triple_t_anysoftkeyboard() 2021-08-04 17:33:38 +02:00
Felix C. Stegerman
ee18afe8dd
copy_triple_t_store_metadata(): also look in $subdir/*/src/*/play 2021-08-04 00:12:17 +02:00
Felix C. Stegerman
4c4a283ae2
update test_insert_triple_t_multiple_metadata() test data 2021-08-03 20:53:56 +02:00
Felix C. Stegerman
ac2b5cb7de
fix copy_triple_t_store_metadata() 2021-08-03 20:25:23 +02:00
Jochen Sprickerhof
884870e74e Merge branch 'ci_fix' into 'master'
Fix CheckupdatesTest

See merge request fdroid/fdroidserver!988
2021-07-29 10:06:25 +00:00
Jochen Sprickerhof
121e06e4b7 Fix CheckupdatesTest 2021-07-29 11:52:22 +02:00
Jochen Sprickerhof
badc40b816 Merge branch 'checkupdates_disabled' into 'master'
[checkupdates] Don't fail for disabled apps

See merge request fdroid/fdroidserver!987
2021-07-29 09:49:11 +00:00
Jochen Sprickerhof
16f8d50194 [checkupdates] make no version information an error 2021-07-29 11:38:15 +02:00
Jochen Sprickerhof
58dcb4c2a0 [checkupdates] Don't fail for disabled apps 2021-07-29 11:37:34 +02:00
Jochen Sprickerhof
93bf481f8b Merge branch 'checkupdates_exit_code' into 'master'
[checkupdates] Cleanup code

See merge request fdroid/fdroidserver!986
2021-07-28 21:02:44 +00:00
Jochen Sprickerhof
44a0e7e74f [checkupdates] Simplify logic in check_http 2021-07-28 00:09:40 +02:00
Jochen Sprickerhof
8f836b3b01 [checkupdates] Move log messages into method 2021-07-28 00:09:40 +02:00
Jochen Sprickerhof
ae98844943 [checkupdates] Raise exception instead of returning an error 2021-07-28 00:09:40 +02:00
Jochen Sprickerhof
6f7a1ecf01 [checkupdates] Don't catch exceptions
Basically moves all code one level up.
2021-07-28 00:09:40 +02:00
Jochen Sprickerhof
a2db8f4a62 [checkupdates] Exit 1 in case of errors 2021-07-28 00:09:40 +02:00
Hans-Christoph Steiner
e19a66bec6 Merge branch 'checkupdates_flavours' into 'master'
Support multiple flavours in parse_androidmanifests

See merge request fdroid/fdroidserver!985
2021-07-27 15:49:18 +00:00
Jochen Sprickerhof
331b4830dd Support multiple flavours in parse_androidmanifests
Previously only the last flavour was checked.
2021-07-24 21:20:19 +02:00
Hans-Christoph Steiner
1ad0e7689a Merge branch 'sdk31' into 'master'
Add build-tools;31.0.0 and platforms;android-31

See merge request fdroid/fdroidserver!983
2021-07-22 15:18:35 +00:00
linsui
576ca7ad13 Add build-tools;31.0.0 and platforms;android-31 2021-07-22 19:26:32 +08:00
Hans-Christoph Steiner
62149e294c Merge branch 'apkFlavor' into 'master'
New com.jens.automation2 test case

See merge request fdroid/fdroidserver!880
2021-07-06 08:44:10 +00:00
Pierre Rudloff
c227fedb97 Add new test case to manifest 2021-07-06 08:30:08 +00:00
Pierre Rudloff
d04c3f65c2 New com.jens.automation2 test case 2021-07-06 08:30:08 +00:00
Hans-Christoph Steiner
5e5a9b36ec Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.1.1

See merge request fdroid/fdroidserver!982
2021-07-05 17:18:22 +00:00
fdroid-bot
f8f03420ba gradle v7.1.1 2021-07-05 17:04:16 +00:00
Hans-Christoph Steiner
3627a98dca Merge branch 'obfusk-master-patch-63762' into 'master'
fix copy_triple_t_store_metadata() w/ multiple apps in same repo

See merge request fdroid/fdroidserver!981
2021-07-05 17:03:29 +00:00
Felix C. Stegerman
73f28a611c
add test_insert_triple_t_multiple_metadata() 2021-07-03 21:20:18 +02:00
Felix C. Stegerman
051905620d fix copy_triple_t_store_metadata() w/ multiple apps in same repo 2021-07-02 14:34:34 +00:00
Hans-Christoph Steiner
fa4fdd0773
version 2.1a0 2021-07-01 17:21:35 +02:00
Hans-Christoph Steiner
74cb0e3d59
update CHANGELOG 2021-07-01 17:21:26 +02:00
Jochen Sprickerhof
7872a3c8aa Merge branch 'random-fixes-on-my-machine' into 'master'
Random fixes on my machine

See merge request fdroid/fdroidserver!979
2021-07-01 12:59:30 +00:00
Hans-Christoph Steiner
7ed75abc2f
gitlab-ci: use CVC for fdroid build job for more reliably runs 2021-07-01 14:45:39 +02:00
Hans-Christoph Steiner
40c77892a2
do not crash when config.yml is 0 bytes or empty of data 2021-07-01 14:45:35 +02:00
Hans-Christoph Steiner
5267699d81
index: make download_repo_index() handle common URL mistakes 2021-07-01 14:43:58 +02:00
Hans-Christoph Steiner
a71409815e
bash-completion: complete *.apk files for fdroid signatures 2021-07-01 14:43:54 +02:00
Hans-Christoph Steiner
da48e44e56 Merge branch 'weblate' into 'master'
weblate

See merge request fdroid/fdroidserver!980
2021-07-01 10:32:29 +00:00
DankXylese
f60f73f4a0 Translated using Weblate: Ukrainian (uk) by DankXylese <dankxylese@slapmywang.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: DankXylese <dankxylese@slapmywang.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Ihor Hordiichuk
4df75655f8 Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Tymofij Lytvynenko
15234c77d2 Translated using Weblate: Ukrainian (uk) by Tymofij Lytvynenko <till.svit@gmail.com>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Ukrainian (uk) by Tymofij Lytvynenko <till.svit@gmail.com>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Tymofij Lytvynenko <till.svit@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
mondstern
7c037cffcf Translated using Weblate: Spanish (es) by mondstern <mondstern@snopyta.org>
Currently translated at 99.1% (571 of 576 strings)

Translated using Weblate: Czech (cs) by mondstern <mondstern@snopyta.org>

Currently translated at 8.3% (48 of 576 strings)

Translated using Weblate: Czech (cs) by mondstern <mondstern@snopyta.org>

Currently translated at 7.2% (42 of 576 strings)

Translated using Weblate: Italian (it) by mondstern <mondstern@snopyta.org>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: mondstern <mondstern@snopyta.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Andrey
07a3ddad5f Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Чтабс
de37dc27f8 Translated using Weblate: Russian (ru) by Чтабс <chtabs2k19@gmail.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Чтабс <chtabs2k19@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
S3aBreeze
69ffe638f0 Translated using Weblate: Russian (ru) by S3aBreeze <paperwork@evilcorp.ltd>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: S3aBreeze <paperwork@evilcorp.ltd>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Simona Iacob
95ef78b693 Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Romanian (ro) by Simona Iacob <s@zp1.net>

Currently translated at 64.2% (370 of 576 strings)

Co-authored-by: Simona Iacob <s@zp1.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Christian Eichert
a787147f3c Translated using Weblate: Romanian (ro) by Christian Eichert <c@zp1.net>
Currently translated at 11.6% (67 of 576 strings)

Translated using Weblate: Romanian (ro) by Christian Eichert <c@zp1.net>

Currently translated at 9.0% (52 of 576 strings)

Translated using Weblate: Romanian (ro) by Christian Eichert <c@zp1.net>

Currently translated at 8.8% (51 of 576 strings)

Translated using Weblate: Romanian (ro) by Christian Eichert <c@zp1.net>

Currently translated at 5.7% (33 of 576 strings)

Translated using Weblate: Romanian (ro) by Christian Eichert <c@zp1.net>

Currently translated at 5.3% (31 of 576 strings)

Translated using Weblate: Romanian (ro) by Christian Eichert <c@zp1.net>

Currently translated at 5.0% (29 of 576 strings)

Co-authored-by: Christian Eichert <c@zp1.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
ssantos
5b7e79f3d5 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Eduardo Rodrigues
75a9723061 Translated using Weblate: Portuguese (pt) by Eduardo Rodrigues <edu.rodrigues2580@gmail.com>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by Eduardo Rodrigues <edu.rodrigues2580@gmail.com>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Eduardo Rodrigues <edu.rodrigues2580@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
WaldiS
d13c69c5d1 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
x
2703023bea Translated using Weblate: Italian (it) by x <hardwired1.0@protonmail.com>
Currently translated at 71.5% (412 of 576 strings)

Co-authored-by: x <hardwired1.0@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
mondstern
e5ca5a5075 Translated using Weblate: Italian (it) by mondstern <mondstern@snopyta.org>
Currently translated at 71.5% (412 of 576 strings)

Co-authored-by: mondstern <mondstern@snopyta.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
IvanDan
52566818d6 Translated using Weblate: Italian (it) by IvanDan <ivandanza@gmail.com>
Currently translated at 64.4% (371 of 576 strings)

Co-authored-by: IvanDan <ivandanza@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
VfBFan
c08d47c3cc Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Follpvosten
85aed2ca67 Translated using Weblate: German (de) by Follpvosten <wolfi@karpador.xyz>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Follpvosten <wolfi@karpador.xyz>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Roman Leo
916a0fd063 Translated using Weblate: German (de) by Roman Leo <roman.leo@gmx.de>
Currently translated at 99.8% (575 of 576 strings)

Co-authored-by: Roman Leo <roman.leo@gmx.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
TobiGr
5b70b65d85 Translated using Weblate: German (de) by TobiGr <tobigr@mail.de>
Currently translated at 99.8% (575 of 576 strings)

Co-authored-by: TobiGr <tobigr@mail.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
forght
6ba354fefa Translated using Weblate: German (de) by forght <forght@posteo.de>
Currently translated at 98.9% (570 of 576 strings)

Co-authored-by: forght <forght@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
VfBFan
94c6072058 Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 98.9% (570 of 576 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Ceeee
c9ce31e416 Translated using Weblate: German (de) by Ceeee <marius.romanus@gmx.de>
Currently translated at 98.9% (570 of 576 strings)

Co-authored-by: Ceeee <marius.romanus@gmx.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
TobiGr
9a5aedf5f2 Translated using Weblate: German (de) by TobiGr <tobigr@mail.de>
Currently translated at 99.8% (575 of 576 strings)

Co-authored-by: TobiGr <tobigr@mail.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
VfBFan
f8cf7c4095 Translated using Weblate: German (de) by VfBFan <drop0815@posteo.de>
Currently translated at 99.8% (575 of 576 strings)

Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
C. Rüdinger
32ccb81252 Translated using Weblate: German (de) by C. Rüdinger <Mail-an-CR@web.de>
Currently translated at 99.8% (575 of 576 strings)

Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
Ceeee
a4152e9b9d Translated using Weblate: German (de) by Ceeee <marius.romanus@gmx.de>
Currently translated at 99.8% (575 of 576 strings)

Co-authored-by: Ceeee <marius.romanus@gmx.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:17:28 +02:00
fossdd
e4345ade14 Translated using Weblate: German (de) by fossdd <fossdd@tutanota.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: fossdd <fossdd@tutanota.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
TobiGr
9b76a2a0a6 Translated using Weblate: German (de) by TobiGr <tobigr@mail.de>
Currently translated at 99.6% (574 of 576 strings)

Co-authored-by: TobiGr <tobigr@mail.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
FW
25474016b1 Translated using Weblate: German (de) by FW <weblate.scordium@slmail.me>
Currently translated at 99.6% (574 of 576 strings)

Co-authored-by: FW <weblate.scordium@slmail.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
TobiGr
f99d464a00 Translated using Weblate: German (de) by TobiGr <tobigr@mail.de>
Currently translated at 96.8% (558 of 576 strings)

Co-authored-by: TobiGr <tobigr@mail.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
FW
de7ffcbe1d Translated using Weblate: German (de) by FW <weblate.scordium@slmail.me>
Currently translated at 96.7% (557 of 576 strings)

Translated using Weblate: German (de) by FW <weblate.scordium@slmail.me>

Currently translated at 95.8% (552 of 576 strings)

Translated using Weblate: German (de) by FW <weblate.scordium@slmail.me>

Currently translated at 95.4% (550 of 576 strings)

Co-authored-by: FW <weblate.scordium@slmail.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
forght
29048fdeec Translated using Weblate: German (de) by forght <forght@posteo.de>
Currently translated at 95.4% (550 of 576 strings)

Co-authored-by: forght <forght@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
Besnik Bleta
a148592243 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.7% (563 of 576 strings)

Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>

Currently translated at 96.5% (556 of 576 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2021-07-01 12:16:50 +02:00
Jochen Sprickerhof
7101cc863a Merge branch 'obfusk-master-patch-58664' into 'master'
has_known_vulnerability(): check .so files with version in filename

Closes #915

See merge request fdroid/fdroidserver!977
2021-06-28 18:53:49 +00:00
Felix C. Stegerman
28740ee036 has_known_vulnerability(): check .so files with version in filename 2021-06-28 18:53:22 +00:00
Jochen Sprickerhof
e90212fb3a Merge branch 'partial-black-reformat' into 'master'
run black to reformat code that does not have WIP merge requests

See merge request fdroid/fdroidserver!978
2021-06-28 18:52:39 +00:00
Hans-Christoph Steiner
307cf8958c
run black to reformat code that does not have WIP merge requests 2021-06-28 18:57:56 +02:00
Jochen Sprickerhof
2e6cad57aa Merge branch 'checkupdates_submodule' into 'master'
[checkupdates] Ignore broken submodule

See merge request fdroid/fdroidserver!976
2021-06-26 07:10:12 +00:00
Jochen Sprickerhof
70a11b3d79 Ignore ~/.gitconfig in tests and drop version test
git version 2.3 was released in 2015.
2021-06-25 13:22:58 +02:00
Jochen Sprickerhof
674786db96 [checkupdates] Ignore broken submodule
In case the app repository has a broken submodule, checkupdates failed
and did not search for any version updates. Ignoring the error let's us
at least find new version in the main repo (which is probably the right
place anyhow) and thus an improvement.
2021-06-25 12:15:41 +02:00
Hans-Christoph Steiner
ecc21489d4
fix pydocstyle 2021-06-25 12:11:50 +02:00
Hans-Christoph Steiner
3e7ce8ce31
merge scan_apk doc string updates 2021-06-25 09:28:48 +02:00
Hans-Christoph Steiner
578ff7069f Merge branch 'master' into 'docs-numpy'
# Conflicts:
#   fdroidserver/update.py
2021-06-25 07:25:10 +00:00
Hans-Christoph Steiner
a8847207aa Merge branch 'scan_apk' into 'master'
add require_signature param to scan_apk

See merge request fdroid/fdroidserver!973
2021-06-25 07:11:53 +00:00
linsui
03c3e45116 add require_signature param to scan_apk 2021-06-25 07:10:18 +00:00
Jochen Sprickerhof
acb123e9f6 Merge branch 'two-fixes' into 'master'
Two fixes

See merge request fdroid/fdroidserver!975
2021-06-25 06:27:34 +00:00
Benedikt Brückmann
675d034ac7 Fix errors from merge and review 2021-06-25 06:42:17 +02:00
Benedikt Brückmann
3d85b91dc4 rewrite docstrings to match numpy style guide 2021-06-25 06:28:47 +02:00
Benedikt Brückmann
9038161b70 apply numpy docstyle 2021-06-25 06:28:47 +02:00
Benedikt Brückmann
01b9fb1549 Fix pep8 whitespace errors 2021-06-25 06:28:47 +02:00
Benedikt Brückmann
1e943a22df rewrite docstrings to match numpy style guide 2021-06-25 06:28:47 +02:00
Benedikt Brückmann
d168b9c05b rewrite docstrings to match numpy style guide 2021-06-25 06:28:43 +02:00
Hans-Christoph Steiner
5e1c322f27
this codebase has started to use things introduced in Python 3.5 2021-06-24 21:34:36 +02:00
Hans-Christoph Steiner
9500b9d2e9
gradle-release-checksums.py: check for GitLab token before committing 2021-06-24 21:34:34 +02:00
Hans-Christoph Steiner
660520e3e1
gitlab-ci: switch ubuntu_lts_ppa job to keyserver.ubuntu.com
fixes:

Executing: /tmp/apt-key-gpghome.ZwePp5ymqm/gpg.1.sh --keyserver hkp://pool.sks-keyservers.net --recv-key 9AAC253193B65D4DF1D0A13EEC4632C79C5E0151
gpg: keyserver receive failed: No name

https://gitlab.com/fdroid/fdroidserver/-/jobs/1374517971
2021-06-24 21:34:29 +02:00
Jochen Sprickerhof
ecadad63f1 Merge branch 'get_release_filename' into 'master'
fix invalid extension of output apk

Closes fdroiddata#2410

See merge request fdroid/fdroidserver!969
2021-06-24 13:42:28 +00:00
linsui
763a2ee80d fix invalid extension of output apk 2021-06-24 13:42:10 +00:00
Hans-Christoph Steiner
ab0fe06343 Merge branch 'format' into 'master'
Make lint work with black

See merge request fdroid/fdroidserver!971
2021-06-24 12:29:02 +00:00
linsui
33137a8516 ignore E203 for black 2021-06-24 12:15:01 +00:00
linsui
e0461ca1bf Make lint max-line-length to 88 for black 2021-06-24 12:15:01 +00:00
linsui
736f244634 fix vscode setting 2021-06-24 12:15:01 +00:00
Jochen Sprickerhof
958fd17232 Merge branch 'version_unknown' into 'master'
[checkupdates] Use tag if version is 'Unknown'

See merge request fdroid/fdroidserver!970
2021-06-20 08:41:58 +00:00
Jochen Sprickerhof
b49c3741bd [checkupdates] Use tag if version is 'Unknown'
Regression from cd405cc9.
Parse_androidmanifests() can return 'Unknown' or 'Ignore' if it did not
find a version name. The check_tags() always returned the tag and
checkupdates_app() replaced the version by the tag in the 'Unknown'
case. Since cd405cc9 the tag is the hash and so the version would become
the hash as well. This patch moves the 'Unknown' check directly after
the Parse_androidmanifests().
2021-06-20 08:49:49 +02:00
Jochen Sprickerhof
63444f8654 Merge branch 'allowlist-blocklist' into 'master'
switch to allow/block list terminology throughout code base

See merge request fdroid/fdroidserver!964
2021-06-18 18:27:45 +00:00
Hans-Christoph Steiner
78d37bb13b switch to allow/block list terminology throughout code base
allowlist and blocklist are much clearer terms with no cultural baggage.
This changes all "whitelist" references to "allowlist", and all "blacklist"
references to "blocklist".
2021-06-18 18:26:50 +00:00
Hans-Christoph Steiner
8667073188 Merge branch 'port-to-windows' into 'master'
some fixes to help port to Windows

See merge request fdroid/fdroidserver!678
2021-06-18 09:26:16 +00:00
Hans-Christoph Steiner
fc989d94b3
gitlab-ci: add Windows job 2021-06-18 11:12:27 +02:00
Hans-Christoph Steiner
1300771bad
'import resource' only where its used, Windows does not have it 2021-06-18 11:12:25 +02:00
Hans-Christoph Steiner
36849b2fba
skip tests on Windows that need bash 2021-06-18 11:12:22 +02:00
Hans-Christoph Steiner
1f5534d060
require config.yml use UTF-8 as encoding
config.yml requires ASCII or UTF-8 encoding because this code does not
auto-detect the file's encoding.  That is left up to the YAML library.
YAML allows ASCII, UTF-8, UTF-16, and UTF-32 encodings.  Since it is a
good idea to manage config.yml (WITHOUT PASSWORDS!) in git, it makes
sense to use a globally standard encoding.
2021-06-18 11:12:20 +02:00
Hans-Christoph Steiner
48c4354629
always open Android source files as UTF-8
Android Studio recommends "you use UTF-8 encoding whenever possible",
so this code assumes the files use UTF-8.  UTF-8 is also the default
encoding on GNU/Linux and macOS.
https://sites.google.com/a/android.com/tools/knownissues/encoding

Windows will probably default to UTF16, since that's the native
encoding for files.  So forcing things to use UTF-8 should help
compatibility.
2021-06-18 11:12:18 +02:00
Gerhard Olsson
0c31c4a5ab
win fixes 2021-06-18 10:30:59 +02:00
Hans-Christoph Steiner
1e1f0db347
stats/known_apks.txt must be in UTF-8 format on all platforms 2021-06-18 10:30:57 +02:00
Hans-Christoph Steiner
a6d35a7ee1
metadata: always open metadata files as UTF-8
Windows seems to require this, otherwise this happens:

Traceback (most recent call last):

  File "tests/update.TestCase", line 737, in test_translate_per_build_anti_features

    apps = fdroidserver.metadata.read_metadata(xref=True)

  File "C:\Users\travis\build\fdroidtravis\fdroidserver\fdroidserver\metadata.py", line 813, in read_metadata

    app = parse_metadata(metadatapath, appid in check_vcs, refresh)

  File "C:\Users\travis\build\fdroidtravis\fdroidserver\fdroidserver\metadata.py", line 1023, in parse_metadata

    parse_yaml_metadata(mf, app)

  File "C:\Users\travis\build\fdroidtravis\fdroidserver\fdroidserver\metadata.py", line 1073, in parse_yaml_metadata

    yamldata = yaml.safe_load(mf)

  File "C:\python37\lib\site-packages\yaml\__init__.py", line 162, in safe_load

    return load(stream, SafeLoader)

  File "C:\python37\lib\site-packages\yaml\__init__.py", line 112, in load

    loader = Loader(stream)

  File "C:\python37\lib\site-packages\yaml\loader.py", line 34, in __init__

    Reader.__init__(self, stream)

  File "C:\python37\lib\site-packages\yaml\reader.py", line 85, in __init__

    self.determine_encoding()

  File "C:\python37\lib\site-packages\yaml\reader.py", line 124, in determine_encoding

    self.update_raw()

  File "C:\python37\lib\site-packages\yaml\reader.py", line 178, in update_raw

    data = self.stream.read(size)

  File "C:\python37\lib\encodings\cp1252.py", line 23, in decode

    return codecs.charmap_decode(input,self.errors,decoding_table)[0]

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 37: character maps to <undefined>
2021-06-18 10:30:55 +02:00
Hans-Christoph Steiner
c12007c260
publish: use platform-neutral newlines 2021-06-18 10:30:52 +02:00
Hans-Christoph Steiner
4514983e58
fix typo 2021-06-18 10:30:50 +02:00
Hans-Christoph Steiner
1abbc9732e
metadata: add test_build_ndk_path 2021-06-18 10:30:44 +02:00
Hans-Christoph Steiner
1236f89896 Merge branch 'vscode' into 'master'
add vscode settings

Closes #909

See merge request fdroid/fdroidserver!965
2021-06-18 06:51:30 +00:00
linsui
466c8a44d7 add vscode settings 2021-06-18 06:50:50 +00:00
Jochen Sprickerhof
0ea4839fbb Merge branch 'billing' into 'master'
NON_FREE_GRADLE_LINES: add com.android.billingclient

See merge request fdroid/fdroidserver!958
2021-06-17 11:53:18 +00:00
linsui
7c831c11dd NON_FREE_GRADLE_LINES: add com.android.billingclient 2021-06-17 11:53:03 +00:00
Jochen Sprickerhof
f44bd8d928 Merge branch 'test_version_update' into 'master'
[checkupdates] Only update if version code is grater

See merge request fdroid/fdroidserver!963
2021-06-17 11:52:48 +00:00
Jochen Sprickerhof
39c55d799b [checkupdates] Only update if version code is grater
Don't change the current versions in case there is an error in the check_* methods or upstream screwed up.
2021-06-17 11:52:37 +00:00
Jochen Sprickerhof
37e3142610 Merge branch 'checkupdates_use_hash' into 'master'
Use hash of tag when adding new version

See merge request fdroid/fdroidserver!956
2021-06-17 11:51:28 +00:00
Jochen Sprickerhof
cd405cc93e Use hash of tag when adding new version
Also extend getref with a refname parameter and implement it for
vcs_git.
2021-06-17 11:51:18 +00:00
Jochen Sprickerhof
35cf7f289e Merge branch 'fix_gotorevisionx' into 'master'
Ignore git submodule failure in gotorevisionx

See merge request fdroid/fdroidserver!955
2021-06-16 09:02:02 +00:00
Jochen Sprickerhof
3809b4d424 Ignore git submodule failure in gotorevisionx
gotorevisionx tries to clean up the git repo before checking out a new
revision. In b848b99ba this was changed to reset and clean any submodule
as well. In case upstream has a broken submodule configuration this
could fail and we can't checkout the new revision. As we are doing a
reset and clean after checking out the new revision anyhow, this change
ignores submodule errors before the checkout and only makes sure that
the main repo is reset and clean.

This broke checkupdates for apps where old versions had broken
submodules. It checkout out the old version and got stuck, not able to
checkout any other version.
2021-06-15 20:39:18 +02:00
Jochen Sprickerhof
02a63a2ec0 Merge branch 'emtpy_checkupdatedata' into 'master'
[checkupdates] UpdateCheckData tag for verocode if no regex

See merge request fdroid/fdroidserver!962
2021-06-15 18:21:53 +00:00
Jochen Sprickerhof
cebdcdd67c [checkupdates] UpdateCheckData tag for verocode if no regex
Use the tag as the version code if no regex was specified. This allows:

UpdateCheckData: '|||'

meaning the tag should be used for version code and name.
2021-06-15 19:27:29 +02:00
Hans-Christoph Steiner
0c484f927e Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.1

See merge request fdroid/fdroidserver!959
2021-06-15 10:45:52 +00:00
fdroid-bot
da820ace2e gradle v7.1 2021-06-15 06:54:38 +00:00
Jochen Sprickerhof
188e163b1a Merge branch 'tag_sort_version' into 'master'
latesttags revert to git log and fix comma handling

See merge request fdroid/fdroidserver!960
2021-06-15 06:53:58 +00:00
Jochen Sprickerhof
4e97b58d8c latesttags revert to git log and fix comma handling
2de34312 tried to fix the comma handling by relying on git tag --sort.
This did not work out so this reverts to the method used before.
2021-06-15 08:39:59 +02:00
Jochen Sprickerhof
09987f1fc7 Merge branch 'git_latesttags' into 'master'
Use git tag in latesttags

See merge request fdroid/fdroidserver!954
2021-06-14 18:56:59 +00:00
Jochen Sprickerhof
2de3431296 Use git tag in latesttags 2021-06-14 18:56:59 +00:00
Hans-Christoph Steiner
89762f4d48 Merge branch 'fix_flavour' into 'master'
Fix matching substring flavour detection

Closes #899 and #912

See merge request fdroid/fdroidserver!957
2021-06-14 12:49:45 +00:00
Jochen Sprickerhof
1e6de7eb34 Support '{' in extra line in parse_androidmanifests
If the flavour group starts in a separate line don't count it as a
second group.

Closes: #899
2021-06-13 07:23:42 +02:00
Jochen Sprickerhof
0fefecde1e Fix matching substring flavour detection
com.github.jameshnsears.quoteunquote defines flavours 'fdroid' and
'fdroidS'. The old code used flavour in line, which matches both and the
wrong one was selected.

Closes: #912
2021-06-13 00:09:02 +02:00
Hans-Christoph Steiner
a21c2c5ff1 Merge branch 'fix_pathlib' into 'master'
[lint] convert path to Path first

See merge request fdroid/fdroidserver!953
2021-06-09 17:08:47 +00:00
Jochen Sprickerhof
46ebdd701a [lint] convert path to Path first
Fixes a lot of undetected extlibs.
Regression of 6bafb036.
2021-06-09 17:49:59 +02:00
Jochen Sprickerhof
14cfa11b68 Merge branch 'tag_UpdateCheckData' into 'master'
[checkupdates] UpdateCheckData use tag as default version

See merge request fdroid/fdroidserver!949
2021-06-09 12:20:15 +00:00
Jochen Sprickerhof
bdec7d8652 [checkupdates] UpdateCheckData use tag by default
Use the tag as version, if no version file was specified:

UpdateCheckData: app/build.gradle|versionCode\s(\d+)||

Extract version from tag, if a regex was specified:

UpdateCheckData: app/build.gradle|versionCode\s(\d+)||Android-([\d.]+)

Use the tag for both if no file was specified:

UpdateCheckData: |\+(\d+)||Android-([\d.]+)
2021-06-09 14:02:02 +02:00
Hans-Christoph Steiner
b7a4883c09 Merge branch 'fix_versioncode_regex' into 'master'
Don't allow '_' in first place of version code

See merge request fdroid/fdroidserver!950
2021-06-09 11:16:32 +00:00
Jochen Sprickerhof
a9a336a12b Don't allow '_' in first place of version code
Fixes a regression of 2cb0ff45. Example:

versionCode project.versionCode_plus

931b0a3087/app/build.gradle (L38)
2021-06-09 11:04:25 +00:00
Hans-Christoph Steiner
a946ae2b44 Merge branch 'as_posix' into 'master'
use .as_posix() to convert to posix path str

See merge request fdroid/fdroidserver!946
2021-06-09 11:03:04 +00:00
linsui
bf9cbc87a9 use .as_posix() 2021-06-09 10:51:28 +00:00
Hans-Christoph Steiner
86b053291d Merge branch 'mypy-from-debian' into 'master'
gitlab-ci: use mypy from Debian/bullseye to prevent random breakage

See merge request fdroid/fdroidserver!952
2021-06-09 10:51:12 +00:00
Hans-Christoph Steiner
ac86a2af89
gitlab-ci: use mypy from Debian/bullseye to prevent random breakage
mypy 0.901 was released and everything broke:
https://gitlab.com/linsui/fdroidserver/-/jobs/1330206567

My point is to reduce the number of false job fails like this one. We
have a lot of checkers running, I really think they need to prove they are
adding value before we invest any time maintaining them. mypy is still
"wait and see" in terms of the adding any value.

!951
2021-06-09 12:35:50 +02:00
Hans-Christoph Steiner
bcd3e89614
gitlab-ci: fix whitespace 2021-06-09 12:25:00 +02:00
Jochen Sprickerhof
799ceda731 Merge branch 'fix_UpdateCheckData' into 'master'
[checkupdates] UpdateCheckData warn if file was not found

See merge request fdroid/fdroidserver!948
2021-06-09 10:09:45 +00:00
Jochen Sprickerhof
69a0a7da39 [checkupdates] UpdateCheckData warn if file was not found
Instead of throwing an exception.
2021-06-09 11:52:11 +02:00
Hans-Christoph Steiner
2bdd569eb0 Merge branch 'lint' into 'master'
lint.py: use pathlib and support Windows

See merge request fdroid/fdroidserver!947
2021-06-09 08:53:38 +00:00
linsui
6bafb036ee lint.py: use pathlib and support Windows 2021-06-09 15:46:52 +08:00
Hans-Christoph Steiner
8b17fbf703 Merge branch 'metadata' into 'master'
metadata.py: use pathlib and support Windows

See merge request fdroid/fdroidserver!939
2021-06-08 15:02:54 +00:00
Hans-Christoph Steiner
490f578d1c remove redundant call to Path() 2021-06-08 16:50:48 +02:00
linsui
8f21f1e510 metadata.py/rewritemeta.py: use pathlib and support Windows 2021-06-08 21:31:55 +08:00
Hans-Christoph Steiner
5635815898 Merge branch 'import' into 'master'
import: use pathlib and support Windows

See merge request fdroid/fdroidserver!938
2021-06-08 11:10:17 +00:00
linsui
d6eece6395 import.py: use pathlib and support Windows 2021-06-08 18:33:22 +08:00
Jochen Sprickerhof
7ddcbb3e80 Merge branch 'lint_tag_UpdateCheckData' into 'master'
[lint] only check for https with UpdateCheckMode HTTP

See merge request fdroid/fdroidserver!944
2021-06-07 17:07:43 +00:00
Jochen Sprickerhof
49248ba3a9 [lint] only check for https with UpdateCheckMode HTTP
With 133b626b UpdateCheckMode is now also allowed with Tags but it uses
the files from the local repo.
2021-06-07 18:55:42 +02:00
Jochen Sprickerhof
b6233fa2ce Merge branch 'fix_check_tags' into 'master'
[checkupdates] handle non matching regex

See merge request fdroid/fdroidserver!943
2021-06-07 16:12:19 +00:00
Jochen Sprickerhof
a74922f56e [checkupdates] handle non matching regex 2021-06-07 17:59:43 +02:00
Jochen Sprickerhof
15a15420f7 Merge branch 'pathlib' into 'master'
fix tests for !935

See merge request fdroid/fdroidserver!942
2021-06-07 15:45:34 +00:00
linsui
84b74d481e fix tests for !935 2021-06-07 15:33:57 +00:00
Jochen Sprickerhof
3acaa7ede5 Merge branch 'pathlib' into 'master'
checkupdates.py: use pathlib and support Windows

See merge request fdroid/fdroidserver!935
2021-06-07 13:38:21 +00:00
linsui
92ec6265a3 checkupdates.py: use pathlib and support Windows 2021-06-07 21:02:03 +08:00
Jochen Sprickerhof
023319efbb Merge branch 'tag_UpdateCheckData' into 'master'
Tag update check data

See merge request fdroid/fdroidserver!937
2021-06-07 12:00:22 +00:00
Jochen Sprickerhof
ed2da42eff Support hex in versionCode with UCM RepoManifest
Same a b83c3c9e.
2021-06-07 13:47:18 +02:00
Jochen Sprickerhof
133b626b22 Support UpdateCheckData in check_tags 2021-06-07 13:47:18 +02:00
Jochen Sprickerhof
ba2b236e7b Drop unused package id check 2021-06-07 13:47:18 +02:00
Hans-Christoph Steiner
d05ff9db1d
easy changes to black code format in test cases
This does not change areas of code that should be manually reformatted.
2021-06-07 11:53:58 +02:00
Hans-Christoph Steiner
d95a3029a8 Merge branch 'master' into 'master'
tests/ndk-release-checksums.py: fix parsing of NDK r10e

See merge request fdroid/fdroidserver!941
2021-06-07 08:10:43 +00:00
Hans-Christoph Steiner
cb09a16133
tests/ndk-release-checksums.py: fix parsing of NDK r10e
This wasn't finding r10e properly, so it would submit merge requests
to remove r10e from _fdroidserver_.

* !940
* !930
2021-06-07 09:58:12 +02:00
Hans-Christoph Steiner
d060a8c691 Merge branch 'yashpalgoyal1304-master-patch-36117' into 'master'
Added missing linebreak

See merge request fdroid/fdroidserver!936
2021-06-07 07:37:46 +00:00
Teen
faa15f336c Added missing linebreak 2021-06-04 17:29:56 +00:00
Hans-Christoph Steiner
2a259552d3 Merge branch 'master' into 'master'
fix broken NDK extraction routine to correctly name resulting dir

See merge request fdroid/fdroidserver!934
2021-06-01 12:46:45 +00:00
Hans-Christoph Steiner
28a4f9481a
provision-android-ndk: do all configuration via args
This makes it so it is easy to reuse this script in other contexts, like
in Docker, GitLab CI, etc.
2021-06-01 14:33:41 +02:00
Hans-Christoph Steiner
d6c8ecc3bc
fix broken NDK extraction routine to correctly name resulting dir
If there were other NDKs installed, this just tried to rename the first
installed NDK.  Now it tries to rename all NDKs that are not named after
the NDK version.

!926
!927
2021-06-01 14:33:39 +02:00
Jochen Sprickerhof
bf4feab877 Merge branch 'mode_version' into 'master'
Support AutoUpdateMode: Version without pattern

See merge request fdroid/fdroidserver!931
2021-06-01 12:11:09 +00:00
Jochen Sprickerhof
185da60d93 Support AutoUpdateMode: Version without pattern
Since 24dd6740 UpdateCheckMode: Tags uses the found tag instead of
regenerating it from the AutoUpdateMode pattern making the pattern
superfluous. This adds support for dropping the pattern and a test case.
2021-06-01 13:59:49 +02:00
Hans-Christoph Steiner
4c339b4ef4 Merge branch 'fix_tests' into 'master'
Fix ruamel round_trip_dump will be removed

See merge request fdroid/fdroidserver!932
2021-06-01 11:57:36 +00:00
Jochen Sprickerhof
19e1e5f438 Fix ruamel round_trip_dump will be removed
https://sourceforge.net/p/ruamel-yaml/code/ci/4b91cd7e820baf97d8d28b1dcf77979530d43c3c/#diff-1
2021-05-30 12:41:20 +02:00
Hans-Christoph Steiner
a6210dd7b4 Merge branch 'basebox-0.6.1' into 'master'
add checksums for basebox 0.6.1

See merge request fdroid/fdroidserver!928
2021-05-28 09:07:22 +00:00
Michael Pöhn
af088c9c91 add checksums for basebox 0.6.1 2021-05-28 08:55:43 +00:00
Hans-Christoph Steiner
0f3c91555e Merge branch 'master' into 'master'
NDK fixups

See merge request fdroid/fdroidserver!929
2021-05-28 08:54:30 +00:00
Hans-Christoph Steiner
52ac0f0176 ndk-release-checksums.py: fix crash, there is no version here 2021-05-28 10:32:09 +02:00
Hans-Christoph Steiner
153b5d4392
stop modifying default_config when running fill_config_defaults()
dicts and lists are passed by reference in assignments, so this needs to
copy them instead.
2021-05-28 10:24:58 +02:00
Hans-Christoph Steiner
45bd89b3a2
build: missing NDK is now a warning not a critical error 2021-05-28 10:24:56 +02:00
Hans-Christoph Steiner
adafd4560c
provision-android-sdk: ensure ANDROID_HOME parent dir is accessible by all
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/926#note_586778883
2021-05-28 10:24:55 +02:00
Hans-Christoph Steiner
6eb895a700
makebuilserver: only install most recent two releases 2021-05-28 10:24:53 +02:00
Hans-Christoph Steiner
22c83c9142 Merge branch 'modernize-ndk-handling' into 'master'
buildserver: standardize SDK install location /opt/android-sdk

Closes #902

See merge request fdroid/fdroidserver!927
2021-05-28 07:35:38 +00:00
Hans-Christoph Steiner
09fa49a7a3
make get_android_tools_versions() search ndk_paths from config 2021-05-28 09:13:38 +02:00
Hans-Christoph Steiner
7a1d236c8d
only support zipballs in NDK provisioning
Since I discovered there is an r10e zipball, this can now get all NDKs
in zipball form.
fdroid/android-sdk-transparency-log@447fea86e7

closes #902
2021-05-28 09:13:36 +02:00
Hans-Christoph Steiner
9f77044d0d
auto-detect NDKs installed in standard paths
'ndk_paths' will be automatically filled out from well known sources
like $ANDROID_HOME/ndk-bundle and $ANDROID_HOME/ndk/*.  If a required
version is missing in the buildserver VM, it will be automatically
downloaded and installed into the standard $ANDROID_HOME/ndk/
directory.  Manually setting it here will override the auto-detected
values.  The keys can either be the "release" (e.g. r21e) or the
"revision" (e.g. 21.4.7075529).

https://developer.android.com/studio/projects/configure-agp-ndk#agp_version_41
* sdkmanager installs "ndk;12.3.4567890" into $ANDROID_SDK_ROOT/ndk/
* sdkmanager installs "ndk-bundle" into $ANDROID_SDK_ROOT/ndk-bundle/
2021-05-28 09:13:34 +02:00
Hans-Christoph Steiner
4686c06f62 metadata: allow ndk: to be str or list of release or revision
There are two version numbers used for NDKs: the "release" and the
"revision".  The "release" is used in the download URL and zipball and the
"revision" is used in the source.properties and the gradle ndkVersion field.

Also, there are some builds which need multiple NDKs installed, so this
makes it possible to have a list of release/revision entries in build.ndk.
This does not yet add full support since _fdroidserver/build.py_ will also
need changes.
2021-05-28 09:13:27 +02:00
Hans-Christoph Steiner
096532dddb Merge branch 'standardize-sdk-ndk-paths' into 'master'
buildserver: standardize SDK and NDK install locations

See merge request fdroid/fdroidserver!926
2021-05-28 06:57:44 +00:00
Hans-Christoph Steiner
93145a43fb buildserver: use standardized paths for the NDKs
This should help with reproducibility since some tools like Python still
include the build paths in the binaries.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/919#note_578180986

The default ANDROID_SDK_ROOT base dir of /opt/android-sdk is hard-coded in
buildserver/Vagrantfile.  The $ANDROID_HOME/ndk subdir is where Android
Studio will install the NDK into versioned subdirs.
https://developer.android.com/studio/projects/configure-agp-ndk#agp_version_41
2021-05-26 09:21:52 +02:00
Hans-Christoph Steiner
bb77d7a6d2 buildserver: standardize SDK install location /opt/android-sdk
_/opt/android-sdk_ was chosen for a number of reasons:
* _/opt_ is [standardized][1] for packages like the Android SDK, which has its own directory layout.
* _android-sdk_ is used rather than the upstream directory name from the ZIP (e.g. _android-sdk-linux_) so that the path is the same on all platforms.
* On platforms without official _/opt_ support ([macOS][2], [Windows][3], [FreeBSD][4], etc.), it does not conflict with any existing system directory.

[1]: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s13.html
[2]: https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW7
[3]: https://en.wikipedia.org/wiki/Directory_structure#Windows_10
[4]: https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&format=html
2021-05-25 17:30:32 +02:00
Hans-Christoph Steiner
07da062a34 buildserver: fix ssh BatchMode config 2021-05-25 17:21:26 +02:00
Hans-Christoph Steiner
be9036b1f1 Merge branch 'auto-install-ndk' into 'master'
auto-download missing NDKs if they're known and can be verified

Closes #369 and #717

See merge request fdroid/fdroidserver!919
2021-05-25 15:12:03 +00:00
Hans-Christoph Steiner
9d44fa7919
gitlab-ci: auto-generate merge request when NDK release found
Following the pattern of the gradle bot, this will check the transparency
log for any new NDK release.  If there are any, it will make a merge
request from @fdroid-bot.
2021-05-25 17:06:30 +02:00
Hans-Christoph Steiner
ec2cace222
buildserver: trim pre-installed NDK list down to the bare minimum
This keeps the Long Term Support release and the latest release installed.
r10e was kept in because it needs a special extraction method, since it is
a .bin file, not a .zip.  r12b is kept in because it is the old default.
Here is a survey of the NDK versions used in the most recent Builds entry
in each app that uses the NDK:

{'r10e': 6,
 'r12b': 93,
 'r13b': 4,
 'r14b': 5,
 'r15c': 7,
 'r16b': 14,
 'r17b': 4,
 'r17c': 7,
 'r18b': 9,
 'r19c': 17,
 'r20': 1,
 'r20b': 22,
 'r21': 3,
 'r21d': 56,
 'r21e': 65,
 'r22': 9,
 'r22b': 15,
 'r9b': 1}

#517


import glob
import os
import yaml

try:
    from yaml import CSafeLoader as SafeLoader
except ImportError:
    from yaml import SafeLoader

ndks = dict()
for f in glob.glob('metadata/*.yml'):
    with open(f) as fp:
        app = yaml.load(fp, Loader=SafeLoader)
        if app.get('Disable'):
            continue
        build = app.get('Builds', [])[-1]
        if build.get('disabled'):
            continue
        ndk = build.get('ndk')
        if ndk and ndk[1] == '9':
            print(f, build)
        elif ndk and int(ndk[2:3]) < 18:
            print(f, build)
        if ndk:
            print(f, ndk)
            if ndk not in ndks:
                ndks[ndk] = 0
            ndks[ndk] += 1

import pprint

pprint.pprint(ndks)
2021-05-25 17:06:28 +02:00
Hans-Christoph Steiner
9fc2a23713
build: remove default NDK, closes #717 2021-05-25 17:06:26 +02:00
Hans-Christoph Steiner
69fcd6a024
build: auto-download missing NDKS if they're known and can be verified
refs #517 #717
2021-05-25 17:06:24 +02:00
Hans-Christoph Steiner
7a7ecbf9dc
move sha256sum() and sha256base64() to common 2021-05-25 17:06:23 +02:00
Hans-Christoph Steiner
0fbd04f1c2
remove redundant imports and pointless code 2021-05-25 17:06:19 +02:00
Hans-Christoph Steiner
95af082082 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.0.2

See merge request fdroid/fdroidserver!924
2021-05-17 17:11:02 +00:00
fdroid-bot
927aa95cd8 gradle v7.0.2 2021-05-17 16:59:55 +00:00
Hans-Christoph Steiner
e4a7726033 gitlab-ci: fix archlinux docker image 2021-05-13 17:20:41 +02:00
Hans-Christoph Steiner
72cef85201 Merge branch 'fix_autoname' into 'master'
Don't return Gradle variables as string

See merge request fdroid/fdroidserver!909
2021-05-13 13:05:17 +00:00
Jochen Sprickerhof
84b6617faf Don't return Gradle variables as string
This is used in checkupdates and currently sets the AutoName to
something like ${displayName}:

4ae415f73c
2021-05-13 12:53:19 +00:00
Hans-Christoph Steiner
a1dfd69392 Merge branch 'disabled_needsupdated' into 'master'
[status_json] Don't list disabled builds as needs updated

Closes #898

See merge request fdroid/fdroidserver!917
2021-05-13 12:42:46 +00:00
Jochen Sprickerhof
31c0078b53 [status_json] Add list of archivePolicy0 2021-05-13 12:30:53 +00:00
Jochen Sprickerhof
33fa918a69 [status_json] Don't list disabled builds as needs updated
Closes: #898
2021-05-13 12:30:53 +00:00
Hans-Christoph Steiner
1bad5b5c6c Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.0.1

See merge request fdroid/fdroidserver!918
2021-05-13 12:13:33 +00:00
fdroid-bot
e0f825d636 gradle v7.0.1 2021-05-13 12:02:17 +00:00
Hans-Christoph Steiner
01947e0c30 Merge branch 'disabled_logs' into 'master'
Don't remove logs of disabled builds

See merge request fdroid/fdroidserver!907
2021-05-13 12:01:34 +00:00
Jochen Sprickerhof
22c32752de Don't remove logs of disabled builds
We need them to debug problems.
2021-05-13 11:49:55 +00:00
Hans-Christoph Steiner
58ff81e7b5 Merge branch 'sphinx' into 'master'
set up docs based on docstrings and publish HTML versions

See merge request fdroid/fdroidserver!911
2021-05-10 14:34:59 +00:00
Benedikt Brückmann
6791c3a550 Only publish pages on default branch 2021-05-10 14:31:51 +00:00
Benedikt Brückmann
245aeec972 Publish docu to GL Pages 2021-05-10 14:31:51 +00:00
Benedikt Brückmann
bdcd843d75 Publish docu to GL Pages 2021-05-10 14:31:51 +00:00
Benedikt Brückmann
47cd1dd055 Add missing index.rst 2021-05-10 14:31:51 +00:00
Benedikt Brückmann
a15581faa9 Draft: set up docs based on docstrings and publish HTML versions 2021-05-10 14:31:51 +00:00
Hans-Christoph Steiner
022d0796d8 gitlab-ci: use latest alpine/bandit to fix CVE flagged by safety 2021-05-10 16:05:59 +02:00
fdroid-bot
2b21584b35 gradle v7.0 2021-05-10 06:48:16 +00:00
Jochen Sprickerhof
3c7a135c20 Merge branch 'fix-year-in-changelog' into 'master'
Fix: Changelog.md dates incorrect year

Closes #896

See merge request fdroid/fdroidserver!910
2021-05-10 06:47:32 +00:00
Benedikt Brückmann
b220ddc555 Fix: Changelog.md dates incorrect year
closes fdroid/fdroidserver#896
2021-05-03 09:59:29 +02:00
Jochen Sprickerhof
a99bebbb5e Merge branch 'keep-failed-build-in-test-mode' into 'master'
`fdroid build --test` keeps unsigned APKs in tmp/ that fail to reproduce

See merge request fdroid/fdroidserver!904
2021-04-16 08:18:47 +00:00
Hans-Christoph Steiner
0b0bc803b7 build: --test now keeps unsigned APKs in tmp/ that fail to reproduce
Before, whenever an unsigned APK failed to reproduce, it was just deleted.
That makes debugging hard.  This makes it keep the unsigned APK, which is
written in tmp/ when using --test.

@jspricke this is related to !864
2021-04-16 09:46:23 +02:00
Hans-Christoph Steiner
6097caef91
build: fix typo in regex for Binaries: verification 2021-04-16 09:40:21 +02:00
Hans-Christoph Steiner
3d69e767d8
common: test abs and rel paths in get_all_gradle_and_manifests() 2021-04-16 09:40:19 +02:00
Hans-Christoph Steiner
634864f206
gitlab-ci: document jobs 2021-04-16 09:40:12 +02:00
Hans-Christoph Steiner
184d2f97d2
jenkins-build-all: stop deleting previous builds results 2021-04-15 16:52:54 +02:00
Hans-Christoph Steiner
760fdf3bd2
jenkins-build-all: fix failure when trying to rm a dir
+ for f in metadata/*/signatures/*
++++ dirname metadata/de.schildbach.wallet/signatures/370
+++ dirname metadata/de.schildbach.wallet/signatures
++ basename metadata/de.schildbach.wallet
Wed 14 Apr 2021 11:50:34 PM UTC - cleanup in progress...
Wed 14 Apr 2021 11:50:34 PM UTC - cleanup done.
+ appid=de.schildbach.wallet
++ basename metadata/de.schildbach.wallet/signatures/370
+ versionCode=370
+ rm -f repo/de.schildbach.wallet_427.apk repo/de.schildbach.wallet_427.apk.asc repo/de.schildbach.wallet_427.log.gz repo/de.schildbach.wallet_test repo/de.schildbach.wallet_test_427.apk repo/de.schildbach.wallet_test_427.apk.asc repo/de.schildbach.wallet_test_427.log.gz 'archive/de.schildbach.wallet_*' 'unsigned/de.schildbach.wallet_*'
rm: cannot remove 'repo/de.schildbach.wallet_test': Is a directory
2021-04-15 09:22:11 +02:00
Jochen Sprickerhof
f149be7296 Merge branch 'bump_metadata' into 'master'
Bump METADATA_VERSION for apksigner transition

See merge request fdroid/fdroidserver!905
2021-04-14 22:21:16 +00:00
Jochen Sprickerhof
f01a3caf77 Bump METADATA_VERSION for apksigner transition
We switched to apksigner in 50f0534d but old apks where still verified
with jarsigner (or an old apksigner version). Bumping the
METADATA_VERSION to force a rebuild of apkcache.
Hopefully this resolves de.chagemann.regexcrossword getting the
KnownVuln, DisabledAlgorithm tags.
2021-04-14 22:08:26 +00:00
Jochen Sprickerhof
e2214ebc4b Merge branch 'fix-metadata_find_signing_files' into 'master'
fix metadata_find_signing_files()

See merge request fdroid/fdroidserver!906
2021-04-14 22:04:46 +00:00
Felix C. Stegerman
b08d54cb90
fix metadata_find_signing_files() 2021-04-14 23:52:13 +02:00
Hans-Christoph Steiner
c43581eb82
Merge branch 'apksigcopier' into 'master'
* origin/master:
  gitlab-ci: prevent dualing linters: pyflakes vs mypy
  jenkins-build-all: refocus on building reproducible apps first
  publish: rename vars to match naming in JAR Signature docs
  common.py: update copyrights
  apksigcopier: remove exclude_all_meta logic
  apksigcopier: purge main() to avoid confusion
  force apksigcopier "AUTO"  to select sigs by available files
  publish: add test for reproduble builds with signatures
  vendor & use apksigcopier v0.4.0-12-g93d8e14
  use subclass hack for better ZIP cloning

fdroid/fdroidserver!893
2021-04-14 23:28:07 +02:00
Hans-Christoph Steiner
5346ea3c19 gitlab-ci: prevent dualing linters: pyflakes vs mypy
* pyflakes says: "typing.Dict' imported but unused"
* mypy says: "Name 'Dict' is not defined"
2021-04-14 23:18:05 +02:00
Hans-Christoph Steiner
0c807275a2 jenkins-build-all: refocus on building reproducible apps first
This also deletes the reproducible APKs each time to test that they are
still being built reproducibly.

!893
fdroidserver#891
2021-04-14 23:01:47 +02:00
Hans-Christoph Steiner
2946c90dd4 publish: rename vars to match naming in JAR Signature docs
https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html

closes #892
2021-04-14 23:01:47 +02:00
Hans-Christoph Steiner
416790306f common.py: update copyrights 2021-04-14 23:01:47 +02:00
Hans-Christoph Steiner
4308a48717 apksigcopier: remove exclude_all_meta logic
This option is unneeded and unused in fdroidserver, and confusing.

https://github.com/obfusk/apksigcopier/pull/36

# Conflicts:
#	fdroidserver/apksigcopier.py
#	fdroidserver/common.py
2021-04-14 23:01:47 +02:00
Hans-Christoph Steiner
f5792d4f49 apksigcopier: purge main() to avoid confusion 2021-04-14 23:01:47 +02:00
Hans-Christoph Steiner
d28c1c0441 force apksigcopier "AUTO" to select sigs by available files 2021-04-14 23:01:47 +02:00
Hans-Christoph Steiner
44d481768f publish: add test for reproduble builds with signatures 2021-04-14 23:01:47 +02:00
Felix C. Stegerman
202fd8b25a
vendor & use apksigcopier v0.4.0-12-g93d8e14 2021-04-14 21:06:20 +02:00
Felix C. Stegerman
67a0f3ae5b
use subclass hack for better ZIP cloning
See https://bugs.python.org/issue43547 for more info on the details.

thanks to @obfusk for the technique
2021-04-14 15:17:56 +02:00
Hans-Christoph Steiner
3d6345a595 Merge branch 'fetchsrclibs' into 'master'
fetchsrclibs: disable preparation

Closes #888

See merge request fdroid/fdroidserver!903
2021-04-12 20:32:47 +00:00
FestplattenSchnitzel
e6c186c566
fetchsrclibs: disable preparation 2021-04-12 22:11:07 +02:00
Hans-Christoph Steiner
edc8c88223 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v7.0

See merge request fdroid/fdroidserver!902
2021-04-12 17:36:40 +00:00
fdroid-bot
0298eef46f gradle v7.0 2021-04-12 07:15:28 +00:00
Hans-Christoph Steiner
b9435d3113
Merge 'obfusk-master-patch-83286' into 'master'
* read_pkg_args:
  common: add test case for read_pkg_args()
  read_pkg_args(): allow appid_vercode.apk in addition to appid:vercode

fdroid/fdroidserver!901
2021-04-12 09:13:19 +02:00
Hans-Christoph Steiner
cff575f402 common: add test case for read_pkg_args() 2021-04-12 09:11:58 +02:00
Felix C. Stegerman
0a4995cd3b read_pkg_args(): allow appid_vercode.apk in addition to appid:vercode 2021-04-10 07:18:28 +00:00
Hans-Christoph Steiner
67757a3978 Merge branch 'obfusk-master-patch-46047' into 'master'
check for invalid appids passed to commands

See merge request fdroid/fdroidserver!894
2021-04-08 20:15:06 +00:00
Felix C. Stegerman
3e557a1a8a
check for invalid appids passed to commands 2021-04-08 10:31:33 +02:00
Hans-Christoph Steiner
380f3b2e9f Merge branch 'fix/checkupdateCommit' into 'master'
Use tag if known

See merge request fdroid/fdroidserver!872
2021-04-07 09:53:42 +00:00
Sylvia van Os
24dd6740e1 Use tag if known
This ensures that we actually use the tag someone created when a new tag
is detected.
2021-04-07 09:41:03 +00:00
Hans-Christoph Steiner
234dc9b402 Merge branch 'ndk-r22b' into 'master'
makebuildserver: upgrade NDK r22 to r22b

See merge request fdroid/fdroidserver!899
2021-04-07 09:38:17 +00:00
relan
6d9410597b Upgrade NDK r22 to r22b 2021-04-07 12:12:04 +03:00
Hans-Christoph Steiner
38c18d42f8 Merge branch 'log_vcs_exception' into 'master'
Create log file for VCSException

See merge request fdroid/fdroidserver!895
2021-04-06 12:57:39 +00:00
Jochen Sprickerhof
df3b6ea65c Create log file for VCSException
In case there is a VCS error (git tag not found), create a log file in
the F-Droid repo so it is shown on the monitor (currently 404).
2021-04-06 12:45:41 +00:00
Hans-Christoph Steiner
81fb9d4d63 Merge branch 'disabled_failed' into 'master'
Excluded disabled metadata in failedBuilds

See merge request fdroid/fdroidserver!897
2021-04-06 09:56:39 +00:00
Jochen Sprickerhof
49a593ac5f Excluded disabled metadata in failedBuilds 2021-04-06 09:44:11 +00:00
Hans-Christoph Steiner
1b7f9d86b6 Merge branch 'fix-gitlab-url' into 'master'
gitlab-ci: fix broken download link for fdroiddata tarball

See merge request fdroid/fdroidserver!898
2021-04-06 08:54:07 +00:00
Hans-Christoph Steiner
9f60516fcb gitlab-ci: fix broken download link for fdroiddata tarball
fdroiddata!8730
fdroiddata!8732
rfp@f49178ea0aed808607f8d6d753285b101e53f0be
2021-04-06 10:41:59 +02:00
Hans-Christoph Steiner
cf1fa84c77
gitlab-ci: rm HTML index gen test from job, fails on stretch
```console
  Downloading https://files.pythonhosted.org/packages/61/cf/0d6598b1ceb463a46b75a716fbb23d2d5ccc5738aba8ddceeec3fa59997f/slimit-0.8.1.zip (88kB)
Collecting tinycss2>=0.4 (from html5print->fdroidserver==2.1a0.dev0)
  Downloading https://files.pythonhosted.org/packages/65/f7/63bf697a7c7257d304269b49f1be3dfe429856889e93963d6f5790d77d82/tinycss2-1.1.0-py3-none-any.whl
tinycss2 requires Python '>=3.6' but the running Python is 3.5.3
```
2021-04-06 10:23:17 +02:00
Hans-Christoph Steiner
2e1d11242e Merge branch 'mypy' into 'master'
Add a mypy run to the pipeline

See merge request fdroid/fdroidserver!884
2021-04-02 09:54:32 +00:00
Benedikt Brückmann
8f0712e89b Add a mypy run to the pipeline 2021-04-02 08:57:56 +00:00
Hans-Christoph Steiner
7e60acb259 Merge branch 'fix-fetchlibs-common-config-is-None' into 'master'
Fix common.config is None in fetchlibs

Closes #881

See merge request fdroid/fdroidserver!892
2021-04-01 10:32:52 +00:00
proletarius101
c70cc33d1d Fix common.config is None in fetchlibs 2021-03-26 14:52:29 +00:00
Hans-Christoph Steiner
20c299358d gitlab-ci: modernize ubuntu_lts_ppa job using updates to PPA
The PPA now provides apksigner that does not need binfmt, and defusedxml is
a hard Depends:.
2021-03-24 11:20:00 +01:00
Hans-Christoph Steiner
b5485ded64
skip test_find_apksigner_system_package_android_home if no apksigner 2021-03-23 23:29:50 +01:00
Hans-Christoph Steiner
d106f9988e Merge branch 'master' into 'master'
bug fix collection

See merge request fdroid/fdroidserver!890
2021-03-23 20:41:16 +00:00
Hans-Christoph Steiner
f811d44f06 jenkins-build-all: use $WORKSPACE var to find correct file to modify 2021-03-23 21:01:56 +01:00
Hans-Christoph Steiner
b69b95103e add complete tests for finding apksigner; fix minor detection bug
find_apksigner() was preferring the oldest valid version rather than the
newest.
2021-03-23 21:01:53 +01:00
Hans-Christoph Steiner
9135dfbeed verify: include diffoscope setup info in output JSON 2021-03-23 11:01:40 +01:00
Hans-Christoph Steiner
8b393189c1 include /etc/issue.net in status JSON to identify the base system 2021-03-23 11:01:40 +01:00
Hans-Christoph Steiner
ee84eb762c buildserver: SharedFoldersEnableSymlinksCreate: false 2021-03-23 11:01:40 +01:00
Hans-Christoph Steiner
4a8f3ebf55
jenkins-build-all: force-limit fdroid build to 6 hours
The jenkins admins have requested that the jobs have much shorter run
times.  Otherwise they will just force restart jenkins or reboot the box
when updates come, without waiting for the jobs to finish.
2021-03-23 10:44:47 +01:00
Hans-Christoph Steiner
6daf9197c2
jenkins-test: remove checkupdates; jenkins admins need short jobs 2021-03-23 10:44:30 +01:00
Hans-Christoph Steiner
2b6d9c185e Merge branch 'apksigner-first' into 'master'
switch to using apksigner by default, as much as possible

Closes #880 and admin#202

See merge request fdroid/fdroidserver!889
2021-03-22 22:55:40 +00:00
Hans-Christoph Steiner
67e65ce2ea purge complete-ci-tests, those are better covered in .gitlab-ci.yml 2021-03-22 23:36:04 +01:00
Hans-Christoph Steiner
93ca13fa16 run-tests: remove broken test that never ran due to a syntax error 2021-03-22 22:31:29 +01:00
Hans-Christoph Steiner
7ec2a8ebb3 add apksigner, jarsigner, and keytool to relevant status JSON 2021-03-22 22:31:29 +01:00
Hans-Christoph Steiner
903a7396b1 switch to preferring apksigner, requiring for fdroid publish 2021-03-22 22:30:49 +01:00
Hans-Christoph Steiner
8a9852209b update: do not die when androguard files to extract icon
https://jenkins.debian.net/job/reproducible_fdroid_test/422
https://jenkins.debian.net/job/reproducible_fdroid_test/423

```
Traceback (most recent call last):
  File "../fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/__main__.py", line 227, in main
    raise e
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/__main__.py", line 208, in main
    mod.main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2316, in main
    apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks, options.use_date_from_apk)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1746, in process_apks
    use_date_from_apk, ada, True)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1619, in process_apk
    apk = scan_apk(apkfile)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1385, in scan_apk
    scan_apk_androguard(apk, apk_file)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1527, in scan_apk_androguard
    resource_id = arsc.get_id(apk['packageName'], icon_id)
  File "/usr/lib/python3/dist-packages/androguard/core/bytecodes/axml/__init__.py", line 1668, in get_id
    self._analyse()
  File "/usr/lib/python3/dist-packages/androguard/core/bytecodes/axml/__init__.py", line 1321, in _analyse
    ate = self.packages[package_name][nb + 3 + nb_i]
IndexError: list index out of range

```
2021-03-22 18:16:34 +01:00
Hans-Christoph Steiner
50f0534d87 publish: always use apksigner to sign APKs, closes #880 2021-03-22 18:16:34 +01:00
Hans-Christoph Steiner
08cde5c2e6 code formatting: black --skip-string-normalization --line-length 100 2021-03-22 18:16:34 +01:00
Hans-Christoph Steiner
7f458f8f8c Merge branch 'vercode_bracket' into 'master'
Support versionCode in brackets

Closes fdroiddata#2338

See merge request fdroid/fdroidserver!888
2021-03-22 16:55:42 +00:00
Jochen Sprickerhof
ea9f917ddc Support versionCode and versionName in brackets
Example: versionCode(29)
https://github.com/florisboard/florisboard/blob/v0.3.9/app/build.gradle.kts#L24
2021-03-19 13:58:02 +01:00
Hans-Christoph Steiner
6ba647baec Merge branch 'fix-update-py-triple-t' into 'master'
update: take build subdir into account when looking for triple-t data

Closes fdroiddata#2295

See merge request fdroid/fdroidserver!883
2021-03-17 13:40:53 +00:00
Christian Beier
553daf8552 update: take build subdir into account when looking for triple-t data
Implemented as a fallback solution when parsing settings.gradle
and globbing the build dir with "'*', 'src', '*', 'play'" did not
yield results.

Before, the logic would not find triple-t metadata in projects where
settings.gradle is in a subdirectory or 'src' is found at a directory
depth != 2.

Closes fdroid/fdroiddata#2295
2021-03-17 13:19:44 +00:00
Hans-Christoph Steiner
dbf80ad771
metadata: remove git repo handling from metadata parsing
This is a vestige of implementing builds from a .fdroid.yml file directly
in the app's source repo.  It was never fully complete and seems to not be
used in any apps in fdroiddata.  This makes `fdroid build --all` runs much
faster since it does not need to do any git handling for apps that do not
have any new builds to run.

4e8e29794
948689281
a4e431080
e37be9b06
e775d330c
2021-03-17 13:44:24 +01:00
Hans-Christoph Steiner
598c87c78f set development version
https://www.python.org/dev/peps/pep-0440/#developmental-releases
2021-03-17 11:53:04 +01:00
Sylvia van Os
d5a3182ce9 Merge branch 'bug-fixes' into 'master'
status JSON and --scan-binary should not exit with error when apkanalyzer fails

Closes #825

See merge request fdroid/fdroidserver!886
2021-03-15 10:33:31 +00:00
Hans-Christoph Steiner
78842e9cc2 scanner: should not exit with error when apkanalyzer fails
apkanalyzer produces useful output when it can run, but it does not
support all recent JDK versions, and also some DEX versions, so this
cannot count on it to always produce useful output or even to run
without exiting with an error.

211dd65ff0 was based on false
assumptions that apkanalyzer can always produce output.

fdroiddata!8585
fdroiddata!8584
2021-03-15 10:54:29 +01:00
Hans-Christoph Steiner
fc368dc291 makebuildserver: print message before rsyncing caches
This process can take a very long time if the caches are large, so at least
print something about what it is doing.
2021-03-15 10:29:08 +01:00
Hans-Christoph Steiner
5695993521 build: include useful successful build IDs in status JSON, closes #825 2021-03-11 18:52:31 +01:00
Hans-Christoph Steiner
a3d828ea48
update CHANGELOG 2021-03-11 08:43:57 +01:00
Hans-Christoph Steiner
cc3b88ab30 gradlew-fdroid: use gradle zipballs from local cachedir, if present 2021-03-11 08:40:34 +01:00
Hans-Christoph Steiner
4b05854ffc buildserver: only install the latest gradle version
gradle checksums are now handled by gradlew-fdroid

refs #370 #517 #737
2021-03-11 08:40:34 +01:00
Hans-Christoph Steiner
e6f5e68e02 Merge branch 'ndk21e' into 'master'
Add NDK 21e

Closes #875

See merge request fdroid/fdroidserver!882
2021-03-11 07:38:17 +00:00
Licaon_Kter
d683a40f96 Add NDK 21e 2021-03-10 16:36:14 +02:00
Hans-Christoph Steiner
757d423c07 Merge branch 'obfusk-master-patch-10564' into 'master'
use vagrantfile instead of 'builder/Vagrantfile' in get_clean_builder()

See merge request fdroid/fdroidserver!881
2021-03-10 09:34:34 +00:00
Felix C. Stegerman
259ca51001 use vagrantfile instead of 'builder/Vagrantfile' in get_clean_builder() 2021-03-10 09:12:52 +00:00
Hans-Christoph Steiner
77c0c8bc5a Merge branch 'bug-fix-grab-bag' into 'master'
bug fix grab bag; and, complete 'build' JSON status

Closes #344

See merge request fdroid/fdroidserver!875
2021-03-09 20:33:20 +00:00
Hans-Christoph Steiner
65836d9e9b run-tests: fix local_copy_dir test, it broke when /tmp/fdroid existed 2021-03-09 17:55:10 +01:00
Hans-Christoph Steiner
8bb2c7d4b1 metadata: stop setting up source repo when running lint/rewritemeta
broken in 54e8867a7e
2021-03-09 17:55:07 +01:00
Hans-Christoph Steiner
211dd65ff0 scanner: show error if scan_binary fails to run apkanalyzer 2021-03-09 15:55:45 +01:00
Hans-Christoph Steiner
649347dcd4 common: properly parse version from NDK's source.properties 2021-03-09 15:55:45 +01:00
Hans-Christoph Steiner
6a875a1821 update: stop extracting and storing XML icons, they're useless
APKs that only have XML icons in them should include an icon.png in the
metadata or fastlane/triple-t

closes #344
2021-03-09 15:40:30 +01:00
Hans-Christoph Steiner
e6b499a56b ignore repo/archive index HTML and related files in test repo 2021-03-09 15:40:30 +01:00
Hans-Christoph Steiner
850e244526 index: rename vars to match the dict key 'signer'
'sig' matches the old deprecated entry for the signer fingerprint that
uses the custom fingerprint algorithm.
2021-03-09 15:40:30 +01:00
Hans-Christoph Steiner
544a45c16a index: raise error rather than crash on bad repo file
If a non-APK is added with the appid/packageName that matches some APKs, it
should through an error.

Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/home/hans/code/fdroid/server/fdroidserver/__main__.py", line 211, in main
    mod.main()
  File "/home/hans/code/fdroid/server/fdroidserver/update.py", line 2343, in main
    index.make(apps, sortedids, apks, repodirs[0], False)
  File "/home/hans/code/fdroid/server/fdroidserver/index.py", line 142, in make
    fdroid_signing_key_fingerprints)
  File "/home/hans/code/fdroid/server/fdroidserver/index.py", line 166, in make_v1
    v1_sort_packages(packages, fdroid_signing_key_fingerprints)
  File "/home/hans/code/fdroid/server/fdroidserver/index.py", line 292, in v1_sort_packages
    packages.sort(key=v1_sort_keys)
  File "/home/hans/code/fdroid/server/fdroidserver/index.py", line 288, in v1_sort_keys
    .format(apkfilename=package['apkName']))
fdroidserver.exception.FDroidException: at.roteskreuz.stopcorona_8.jobf does not have a valid signature!
2021-03-09 15:40:30 +01:00
Hans-Christoph Steiner
b5c941938a update: reuse local_copy_dir to provide auto-copying with --nosign
When using `fdroid update --nosign` in combo with `fdroid signindex`, the
unsigned index files have to be copied to a thumb drive or something in
order to be brought to the offline signing server.  This reuses the config
option local_copy_dir as the destination for those unsigned index files.
2021-03-09 15:40:30 +01:00
Hans-Christoph Steiner
a2f0356d84 build: include all wiki data in the JSON status output 2021-03-09 15:40:30 +01:00
Hans-Christoph Steiner
c1b83c24d1 Merge branch 'obfusk-master-patch-47191' into 'master'
fix "vritualbox" typo in BASEBOX_CHECKSUMS

See merge request fdroid/fdroidserver!879
2021-03-09 13:03:35 +00:00
Felix C. Stegerman
7fa7270589 fix "vritualbox" typo in BASEBOX_CHECKSUMS 2021-03-09 12:42:43 +00:00
Hans-Christoph Steiner
e2467a2e02 Merge branch 'build-72h' into 'master'
build: set overall timeout to 72 hours

See merge request fdroid/fdroidserver!878
2021-03-08 13:37:13 +00:00
relan
56b84251f6 build: set overall timeout to 72 hours
Some builds are pending for weeks now because of the global time limit.
Give them a chance to be built.
2021-03-08 11:41:30 +03:00
Sylvia van Os
fc3906aad3 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v6.8.3

See merge request fdroid/fdroidserver!874
2021-03-01 21:54:56 +00:00
fdroid-bot
898b5dbb4a gradle v6.8.3 2021-03-01 21:34:31 +00:00
Hans-Christoph Steiner
834307a9f6 Merge branch 'monitor_version' into 'master'
Add needsUpdate and noUpdateCheck to update.json

See merge request fdroid/fdroidserver!870
2021-02-12 11:24:14 +00:00
Jochen Sprickerhof
933eea149a Add needsUpdate and noUpdateCheck to update.json
As done in update_wiki.
2021-02-12 11:04:24 +00:00
Hans-Christoph Steiner
cb5ebfc8f0 Merge branch 'publish_unsigned' into 'master'
Publish unsigned builds

See merge request fdroid/fdroidserver!864
2021-02-12 10:40:18 +00:00
Jochen Sprickerhof
7f2cbd1876 Fix serverwebroot test 2021-02-12 10:20:30 +00:00
Jochen Sprickerhof
33bff6b298 Publish unsigned builds
This should make debugging reproducible builds easier.
2021-02-12 10:20:30 +00:00
Hans-Christoph Steiner
0d836751e5
code format cleanup 2021-02-12 10:58:07 +01:00
Hans-Christoph Steiner
007c62065d
pylint flags "_" as bad variable name, its the gettext function
Throughout the fdroidserver code base, "_()" is used for localizing
strings.  So it should not be used as an ignored variable name.  Those
should be called "_ignored".
2021-02-12 10:56:31 +01:00
Ciaran Gultnieks
fb877c8b81 Merge branch 'licaon-kter-master-patch-25160' into 'master'
Add python3-qrcode to buildserver

See merge request fdroid/fdroidserver!871
2021-02-12 09:48:11 +00:00
Licaon_Kter
5396b79da7 Fix after https://gitlab.com/fdroid/fdroidserver/-/merge_requests/853 2021-02-12 09:14:27 +00:00
Ciaran Gultnieks
a36572dd98 Merge branch 'fix-contact-website.txt' into 'master'
update: handle large, corrupt, or inaccessible fastlane/triple-t files

See merge request fdroid/fdroidserver!869
2021-02-11 21:38:37 +00:00
Hans-Christoph Steiner
525dcb8f98 update: handle large, corrupt, or inaccessible fastlane/triple-t files
```
Traceback (most recent call last):
  File "../fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/__main__.py", line 227, in main
    raise e
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/__main__.py", line 208, in main
    mod.main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2340, in main
    repoapps = prepare_apps(apps, apks, repodirs[0])
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2176, in prepare_apps
    copy_triple_t_store_metadata(apps_with_packages)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1076, in copy_triple_t_store_metadata
    _set_author_entry(app, 'authorWebSite', os.path.join(root, f))
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 784, in _set_author_entry
    with open(f, errors='replace') as fp:
FileNotFoundError: [Errno 2] No such file or directory: 'build/player.efis.cfd/pfd/src/main/play/contact-website.txt'
```
2021-02-11 17:42:13 +01:00
Hans-Christoph Steiner
14e9bffedb Merge branch 'fossdd-spdx-revert-removing-licenses' into 'master'
Revert removing Licenses

See merge request fdroid/fdroidserver!868
2021-02-10 20:09:01 +00:00
fossdd
bcdefccb31 Revert removing Licenses 2021-02-10 19:10:14 +00:00
Hans-Christoph Steiner
d75ba81be0
gitlab-ci: arch job needs to build python-cryptography 2021-02-09 09:26:07 +01:00
Hans-Christoph Steiner
267d7a4eac Merge branch 'fossdd-update-spdx' into 'master'
Update SPDX License List

See merge request fdroid/fdroidserver!867
2021-02-08 21:42:30 +00:00
fossdd
8371a2e07a Update SPDX License List 2021-02-08 15:14:28 +00:00
Hans-Christoph Steiner
0a4c5afd52 Merge branch 'generate-index' into 'master'
Generate index.html and qrcode.png

Closes #688

See merge request fdroid/fdroidserver!853
2021-02-08 14:30:40 +00:00
Benedikt Brückmann
9c609aa361 Fix copy-paste error 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
23931e6818 Install [test] dependencies when running complete-ci-tests 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
b1bde9e407 * Skip tidy check if html5print is not available
* install test dependencies on arch
2021-02-08 12:25:02 +01:00
Benedikt Brückmann
d5a90ed60e add html5print as test dependency 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
022d73b3b6 Add HTML/CSS tidy test
and tidy up the content
2021-02-08 12:25:02 +01:00
Benedikt Brückmann
0936051c7b Fix pep8 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
96854be84a Only overwrite index.html/css files which were created by fdroid update
Further changes:
* use real value for icon instead of hard coded value
* Move qrcode.make() to top
* fix identation of css file generation
2021-02-08 12:25:02 +01:00
Benedikt Brückmann
8d51566a70 * Change image name
* add fingerprint
2021-02-08 12:25:02 +01:00
Benedikt Brückmann
4d464051ff Fix pycodestlye errors 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
997f5d267b Properly add css 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
44ee531426 Add QR code and css 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
788333991d move code to own method 2021-02-08 12:25:02 +01:00
Benedikt Brückmann
12682f063d First draft of index.html generation 2021-02-08 12:25:02 +01:00
Hans-Christoph Steiner
7c5672a47a Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v6.8.2

See merge request fdroid/fdroidserver!866
2021-02-08 11:00:34 +00:00
fdroid-bot
59a4ec79b3 gradle v6.8.2 2021-02-08 10:42:22 +00:00
Hans-Christoph Steiner
c887c14be1 gitlab-ci: use python3-cryptography to avoid building rust sources 2021-02-08 11:40:41 +01:00
Hans-Christoph Steiner
3d536d4515
gitlab-ci: use python3-cryptography to avoid building rust sources 2021-02-08 10:59:48 +01:00
Hans-Christoph Steiner
fc7f9204b6 checkupdates: set User-Agent to make gitlab.com happy
closes #863
2021-02-02 21:37:53 +01:00
Hans-Christoph Steiner
682761e75d
setup changelog and version for development 2021-02-02 13:54:22 +01:00
Hans-Christoph Steiner
f3097e142d fix broken GitLab CI badge on README 2021-02-02 11:37:00 +01:00
Hans-Christoph Steiner
57017fa373 Merge branch 'transparency_once' into 'master'
Run push_binary_transparency only once

See merge request fdroid/fdroidserver!865
2021-02-02 09:53:52 +00:00
Jochen Sprickerhof
2103569958 Run push_binary_transparency only once 2021-02-02 09:07:28 +01:00
Hans-Christoph Steiner
fa186c40c4 version 2.0 2021-02-01 22:50:36 +01:00
Hans-Christoph Steiner
65ef6f33e3 make -C locale/ update 2021-02-01 22:50:03 +01:00
Golubev Alexander
e67cb8a1fa Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2021-02-01 22:44:33 +01:00
Peter J. Mello
58d23d17e6 Translated using Weblate: Portuguese (pt) by Peter J. Mello <admin@petermello.net>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by Peter J. Mello <admin@petermello.net>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Peter J. Mello <admin@petermello.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2021-02-01 22:44:33 +01:00
Eric
acba6b4a88 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 34.7% (200 of 576 strings)

Co-authored-by: Eric <spice2wolf@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2021-02-01 22:44:33 +01:00
Oğuz Ersen
8fcbfd1403 Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2021-02-01 22:44:33 +01:00
WaldiS
81ef8055de Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2021-02-01 22:44:33 +01:00
Ihor Hordiichuk
382fba151e Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (576 of 576 strings)

Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>

Currently translated at 100.0% (576 of 576 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-02-01 22:44:33 +01:00
Hans-Christoph Steiner
31c29f2fb3 support official ANDROID_SDK_ROOT env var when running CLI tools
ANDROID_HOME is deprecated:
https://developer.android.com/studio/command-line/variables#android_sdk_root

!816 #547
2021-01-29 16:34:36 +01:00
Hans-Christoph Steiner
4900c426e9 locale: remove "obsolete" translations from .po files 2021-01-29 16:20:42 +01:00
Hans-Christoph Steiner
19e2ea8adf locale: remove duplicate strings as part of the update 2021-01-29 16:13:52 +01:00
Hans-Christoph Steiner
3e7c55d91d purge all references to dscanner 2021-01-29 15:40:59 +01:00
Hans-Christoph Steiner
63be6f6347 standardize naming in strings and comments on all caps APK 2021-01-29 15:40:59 +01:00
Hans-Christoph Steiner
97d5933a05 change config.py to config.yml everywhere it is needed 2021-01-29 13:24:17 +01:00
Hans-Christoph Steiner
f48ea06adb add final release language list 2021-01-29 13:22:34 +01:00
Isrg Rajan
a10e55e40f Translated using Weblate: Hindi (hi) by Isrg Rajan <isrgrajan@outlook.com>
Currently translated at 2.5% (15 of 588 strings)

Added translation using Weblate: Hindi (hi) by Isrg Rajan <isrgrajan@outlook.com>

Co-authored-by: Isrg Rajan <isrgrajan@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hi/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
Aled Powell
a334f24a7b Translated using Weblate: Welsh (cy) by Aled Powell <aled@aledpowell.cymru>
Currently translated at 6.4% (38 of 588 strings)

Translated using Weblate: Welsh (cy) by Aled Powell <aled@aledpowell.cymru>

Currently translated at 5.1% (30 of 588 strings)

Translated using Weblate: Welsh (cy) by Aled Powell <aled@aledpowell.cymru>

Currently translated at 3.7% (22 of 588 strings)

Added translation using Weblate: Welsh (cy) by Aled Powell <aled@aledpowell.cymru>

Co-authored-by: Aled Powell <aled@aledpowell.cymru>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/cy/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
Elias Mårtenson
7794f9a645 Translated using Weblate: Swedish (sv) by Elias Mårtenson <elias@dhsdevelopments.com>
Currently translated at 8.1% (48 of 588 strings)

Co-authored-by: Elias Mårtenson <elias@dhsdevelopments.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
jace
5f48626fd9 Added translation using Weblate: English (Middle) (enm) by jace <jace4411@outlook.com>
Co-authored-by: jace <jace4411@outlook.com>
2021-01-29 13:04:07 +01:00
Lilian Sosa
cc159b57b6 Translated using Weblate: Spanish (Argentina) (es_AR) by Lilian Sosa <liliancsosa@gmail.com>
Currently translated at 20.0% (118 of 588 strings)

Translated using Weblate: Spanish (Argentina) (es_AR) by Lilian Sosa <liliancsosa@gmail.com>

Currently translated at 17.8% (105 of 588 strings)

Co-authored-by: Lilian Sosa <liliancsosa@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
Oymate
dc114f6c6d Translated using Weblate: Bengali (bn) by Oymate <dhruboadittya96@gmail.com>
Currently translated at 3.0% (18 of 588 strings)

Translated using Weblate: Bengali (bn) by Oymate <dhruboadittya96@gmail.com>

Currently translated at 1.1% (7 of 588 strings)

Co-authored-by: Oymate <dhruboadittya96@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bn/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
Francesco Esposito
48a20801af Translated using Weblate: Italian (it) by Francesco Esposito <email@francescoesposito.org>
Currently translated at 65.1% (383 of 588 strings)

Co-authored-by: Francesco Esposito <email@francescoesposito.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
Daniel Șerbănescu
b04b59dfc5 Translated using Weblate: Romanian (ro) by Daniel Șerbănescu <daniel@serbanescu.dk>
Currently translated at 2.8% (17 of 588 strings)

Added translation using Weblate: Romanian (ro) by Daniel Șerbănescu <daniel@serbanescu.dk>

Co-authored-by: Daniel Șerbănescu <daniel@serbanescu.dk>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/
Translation: F-Droid/F-Droid Server
2021-01-29 13:04:07 +01:00
Besnik Bleta
2a21de2b39 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 96.0% (565 of 588 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:27 +01:00
Hans-Christoph Steiner
e6bcafdb51 fixed checks in Weblate
Translated using Weblate: Albanian (sq) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 95.0% (559 of 588 strings)

Translated using Weblate: Polish (pl) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 99.6% (586 of 588 strings)

Translated using Weblate: Korean (ko) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 35.3% (208 of 588 strings)

Translated using Weblate: French (fr) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 87.9% (517 of 588 strings)

Translated using Weblate: Spanish (es) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 99.8% (587 of 588 strings)

Translated using Weblate: Chinese (Simplified) (zh_Hans) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 36.2% (213 of 588 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 80.9% (476 of 588 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:15 +01:00
Ihor Hordiichuk
6616b1cec2 Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (588 of 588 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:15 +01:00
hilariousperson
5d61429d1f Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 87.9% (517 of 588 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:15 +01:00
gub
79e641a535 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 87.9% (517 of 588 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:15 +01:00
Vincent Finance
c1a08e4ba6 Translated using Weblate: French (fr) by Vincent Finance <linuxmario@linuxmario.net>
Currently translated at 87.9% (517 of 588 strings)

Co-authored-by: Vincent Finance <linuxmario@linuxmario.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:15 +01:00
WaldiS
d630fac735 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 99.4% (585 of 588 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 99.4% (585 of 588 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:15 +01:00
Adolfo Jayme Barrientos
5c33010997 Translated using Weblate: Spanish (es) by Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Currently translated at 99.8% (587 of 588 strings)

Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
TobiGr
9dbf53aede Translated using Weblate: German (de) by TobiGr <tobigr@mail.de>
Currently translated at 95.2% (560 of 588 strings)

Co-authored-by: TobiGr <tobigr@mail.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
forght
2590691c8a Translated using Weblate: German (de) by forght <forght@posteo.de>
Currently translated at 92.0% (541 of 588 strings)

Co-authored-by: forght <forght@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
ssantos
52a817c0af Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (588 of 588 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (588 of 588 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
nautilusx
abd25fdbb6 Translated using Weblate: German (de) by nautilusx <translate@disroot.org>
Currently translated at 91.3% (537 of 588 strings)

Co-authored-by: nautilusx <translate@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Aleph Null
5a4824927b Translated using Weblate: German (de) by Aleph Null <atzeje@web.de>
Currently translated at 91.3% (537 of 588 strings)

Co-authored-by: Aleph Null <atzeje@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
ButterflyOfFire
9caebf1123 Translated using Weblate: French (fr) by ButterflyOfFire <ButterflyOfFire@protonmail.com>
Currently translated at 86.0% (506 of 588 strings)

Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
gub
b1745598f2 Translated using Weblate: French (fr) by gub <gub.gub@laposte.net>
Currently translated at 86.0% (506 of 588 strings)

Co-authored-by: gub <gub.gub@laposte.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Adrien le Maire
7cb148a5aa Translated using Weblate: French (fr) by Adrien le Maire <adrien@alemaire.be>
Currently translated at 85.0% (500 of 588 strings)

Co-authored-by: Adrien le Maire <adrien@alemaire.be>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
hilariousperson
f7e13957f2 Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 85.0% (500 of 588 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Madeorsk
d36dcdfb67 Translated using Weblate: French (fr) by Madeorsk <madeorsk@protonmail.com>
Currently translated at 85.0% (500 of 588 strings)

Co-authored-by: Madeorsk <madeorsk@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Fioddor Superconcentrado
a9d45671c7 Translated using Weblate: Spanish (es) by Fioddor Superconcentrado <fioddor@gmail.com>
Currently translated at 99.8% (587 of 588 strings)

Co-authored-by: Fioddor Superconcentrado <fioddor@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Eric
dcf035bb0b Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 36.0% (212 of 588 strings)

Co-authored-by: Eric <spice2wolf@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
R_SACI
c8d1ffa9ea Translated using Weblate: Kabyle (kab) by R_SACI <rgebbid@gmail.com>
Currently translated at 12.0% (71 of 588 strings)

Translated using Weblate: Kabyle (kab) by R_SACI <rgebbid@gmail.com>

Currently translated at 9.6% (57 of 588 strings)

Co-authored-by: R_SACI <rgebbid@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/kab/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
cheese1
b9d737aa5e Translated using Weblate: German (de) by cheese1 <cheese@nosuchhost.net>
Currently translated at 90.4% (532 of 588 strings)

Co-authored-by: cheese1 <cheese@nosuchhost.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Carlos
8828fbd18a Translated using Weblate: Chinese (Simplified) (zh_Hans) by Carlos <linghao.zhang@protonmail.com>
Currently translated at 34.5% (203 of 588 strings)

Co-authored-by: Carlos <linghao.zhang@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Éfrit
bc52f9fd34 Translated using Weblate: French (fr) by Éfrit <efrit@posteo.net>
Currently translated at 82.9% (488 of 588 strings)

Translated using Weblate: French (fr) by Éfrit <efrit@posteo.net>

Currently translated at 82.9% (488 of 588 strings)

Co-authored-by: Éfrit <efrit@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
hilariousperson
83e1d88e83 Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 82.9% (488 of 588 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Éfrit
ba7e31628c Translated using Weblate: French (fr) by Éfrit <efrit@posteo.net>
Currently translated at 82.8% (487 of 588 strings)

Co-authored-by: Éfrit <efrit@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
hilariousperson
65c202870d Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 82.8% (487 of 588 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
DGO
ac05799dff Translated using Weblate: French (fr) by DGO <d@geon.fr>
Currently translated at 81.4% (479 of 588 strings)

Co-authored-by: DGO <d@geon.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
hilariousperson
059e298e97 Translated using Weblate: French (fr) by hilariousperson <gobelpepite+github@gmail.com>
Currently translated at 81.4% (479 of 588 strings)

Co-authored-by: hilariousperson <gobelpepite+github@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Éfrit
7885c2a2c9 Translated using Weblate: French (fr) by Éfrit <efrit@posteo.net>
Currently translated at 81.4% (479 of 588 strings)

Co-authored-by: Éfrit <efrit@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2021-01-29 12:44:14 +01:00
Hosted Weblate
c10918c1e3
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2021-01-29 11:51:59 +01:00
Coding Otaku
165ceaa345
Translated using Weblate: Malayalam (ml) by Coding Otaku <contact@codingotaku.com>
Currently translated at 0.0% (0 of 573 strings)

Co-authored-by: Coding Otaku <contact@codingotaku.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/
Translation: F-Droid/F-Droid Server
2021-01-29 11:51:59 +01:00
mondstern
f7480316df
Translated using Weblate: Polish (pl) by mondstern <mondstern@snopyta.org>
Currently translated at 95.6% (548 of 573 strings)

Co-authored-by: mondstern <mondstern@snopyta.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2021-01-29 11:51:58 +01:00
Hans-Christoph Steiner
5cd9a8e396
tests: make init apksigner test use existing test keystore
This test does not need to generate a keystore, so using the existing one
reduces the run time from 4 seconds to 0.040 seconds.  Also, if makes this
mystery error on macOS go away:

```
Traceback (most recent call last):
  File "/Users/travis/build/fdroidtravis/fdroidserver/tests/init.TestCase", line 66, in test_main_in_empty_dir
    fdroidserver.init.main()
  File "/Users/travis/build/fdroidtravis/fdroidserver/fdroidserver/init.py", line 231, in main
    common.genkeystore(c)
  File "/Users/travis/build/fdroidtravis/fdroidserver/fdroidserver/common.py", line 3434, in genkeystore
    cmd = [config['keytool'], '-genkey',
KeyError: 'keytool'

```
2021-01-29 09:06:21 +01:00
Hans-Christoph Steiner
5edb5d354a Merge branch 'two-fixes' into 'master'
two fixes around the signing process

See merge request fdroid/fdroidserver!863
2021-01-28 21:45:14 +00:00
Hans-Christoph Steiner
e4087f1798 gitlab-ci: hide massively verbose messages from sdkmanager 2021-01-28 22:25:33 +01:00
Hans-Christoph Steiner
32a0c61010 init: enable apksigner by default if it is found 2021-01-28 22:25:33 +01:00
Hans-Christoph Steiner
197ca7e36f update: warn with --nosign if keystore/repo_pubkey are not present
This should also make it easier to use index.make() as an API function
since this changes whether the instance var exists before checking the
value.
2021-01-28 22:25:33 +01:00
Hans-Christoph Steiner
303c6aa247 Merge branch 'gradle-release-checksums.py' into 'master'
update to gradle v6.8.1

See merge request fdroid/fdroidserver!861
2021-01-28 21:24:38 +00:00
fdroid-bot
d89dea63c3 gradle v6.8.1 2021-01-25 10:36:37 +00:00
Hans-Christoph Steiner
dedc47a3a8 Merge branch 'fixup-gradle-release-checksums' into 'master'
Fixup gradle release checksums

See merge request fdroid/fdroidserver!860
2021-01-25 10:35:34 +00:00
Hans-Christoph Steiner
87477cd910
gitlab-ci: gradle job needs git history to find what changed 2021-01-25 11:05:22 +01:00
Hans-Christoph Steiner
0af157244a
gradle-release-checksums: runs after commits push to fdroid/fdroidserver 2021-01-25 11:05:20 +01:00
Hans-Christoph Steiner
669ce10d9a
enable complete lint/CI checking on gradle-release-checksums.py 2021-01-25 11:05:16 +01:00
Hans-Christoph Steiner
2efab0f8ec Merge branch 'gradle-fdroid-bot' into 'master'
fdroid-bot creates merge requests for gradle updates

See merge request fdroid/fdroidserver!859
2021-01-24 23:46:35 +00:00
Hans-Christoph Steiner
d133b38f22 fdroid-bot creates merge request when new gradle versions are found 2021-01-25 00:26:14 +01:00
Hans-Christoph Steiner
eec0d3a336 gitlab-ci: gradle job generates required changes for new versions 2021-01-24 16:58:38 +01:00
Hans-Christoph Steiner
b8cd4396f4 Merge branch 'no-error-without-examples-dir' into 'master'
overhaul repo_icon so there is no error if examples/ dir cannot be found, e.g. with `fdroid init`

See merge request fdroid/fdroidserver!854
2021-01-24 08:48:48 +00:00
Hans-Christoph Steiner
f527b17715 sync repo examples with defaults and comment out example repo settings
!359
2021-01-24 09:26:11 +01:00
Hans-Christoph Steiner
aebf70a763 tests: run pip tests using fdroid that pip installed 2021-01-23 20:13:17 +01:00
Hans-Christoph Steiner
f6b5f74ec6 gitlab-ci: drop support for Ubuntu/xenial, test on bionic now
xenial will become obsolete in April
2021-01-23 13:36:23 +01:00
Hans-Christoph Steiner
5ae2703477 init: no error if examples/ dir cannot be found; overhaul repo_icon
There are so many possible installation paths for Python modules, it has
been very hard to even find and test them all.  This adds a fallback option
if the examples dir cannot be found.  A repo can work without an icon or
the example config.py.

This removes the fake assumption that the icon can be a full path in the
config.py.  While the path was being properly passed through to the index
file, the file was never copied properly into place nor rsynced to the web
server.
2021-01-18 14:07:20 +01:00
Hans-Christoph Steiner
b655d20d6b
locale/pick-complete-translations.py: run sort without shell
Static code analyzers flag such things as security errors.
2021-01-16 22:01:56 +01:00
Hans-Christoph Steiner
a304ae95fa
version 2.0b1 2021-01-16 21:57:02 +01:00
Hans-Christoph Steiner
a8feeee1c5 Merge 'update_manifest' into 'master'
* update_manifest:
  Fix checks in Weblate by Hans-Christoph Steiner <hans@guardianproject.info>
  Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
  script to set the completed locales based on Weblate data
  Add missing test files

fdroid/fdroidserver!851
2021-01-16 21:53:39 +01:00
Hans-Christoph Steiner
8c9b2d9862 Fix checks in Weblate by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 97.2% (557 of 573 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2021-01-16 21:53:09 +01:00
Besnik Bleta
d8f32b5c80 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.2% (557 of 573 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2021-01-16 21:53:09 +01:00
Hans-Christoph Steiner
5837c36219 script to set the completed locales based on Weblate data 2021-01-16 21:53:05 +01:00
Jochen Sprickerhof
527b1caa90 Add missing test files 2021-01-16 10:40:40 +01:00
Hans-Christoph Steiner
ca8f19ed99 Merge branch 'test_tar' into 'master'
Run test from sdist source

See merge request fdroid/fdroidserver!852
2021-01-16 09:19:24 +00:00
Jochen Sprickerhof
7cf64ea48f Run test from sdist source 2021-01-15 19:57:32 +01:00
Hans-Christoph Steiner
41709c142f
version 2.0b0
(2.0b is not valid)
2021-01-15 16:37:05 +01:00
Hans-Christoph Steiner
776ff8c596 Merge branch 'finalize-2.0b-release' into 'master'
Finalize 2.0b release

See merge request fdroid/fdroidserver!850
2021-01-15 14:53:13 +00:00
Hans-Christoph Steiner
c8f21bf0e0 add some example plugins for repo key extraction and migration 2021-01-15 15:25:50 +01:00
Hans-Christoph Steiner
d16ccc6d6c version 2.0b 2021-01-15 15:11:50 +01:00
Hans-Christoph Steiner
097b77ee2b update CHANGELOG
https://gitlab.com/fdroid/fdroidserver/-/milestones/10
2021-01-15 15:11:26 +01:00
Hans-Christoph Steiner
94cb19f571 set METADATA_VERSION to 20000 to leave room for 1.1.x changes 2021-01-15 14:33:21 +01:00
Golubev Alexander
5d75d4491f Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (588 of 588 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2021-01-15 14:29:27 +01:00
Ihor Hordiichuk
47f4b3509e Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (588 of 588 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-01-15 14:29:16 +01:00
Rafael Fontenelle
d9545973c3 Translated using Weblate: Portuguese (Brazil) (pt_BR) by Rafael Fontenelle <rafaelff@gnome.org>
Currently translated at 100.0% (588 of 588 strings)

Co-authored-by: Rafael Fontenelle <rafaelff@gnome.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2021-01-15 14:28:52 +01:00
Oğuz Ersen
69dbb83bc3 Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (588 of 588 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2021-01-15 14:28:37 +01:00
Hans-Christoph Steiner
6ec23388ce Merge branch 'autoname-only-in-checkupdates' into 'master'
AutoName: only in checkupdates

Closes #654

See merge request fdroid/fdroidserver!759
2021-01-15 13:24:19 +00:00
Hans-Christoph Steiner
fff59e5197 only use AutoName: in checkupdates
AutoName: is only needed for the commit messages generated by checkupdates,
and it makes the logic for localized names confusing.

closes #654
refs #304
2021-01-14 20:36:09 +01:00
Hans-Christoph Steiner
0f6b638986 common.get_app_display_name() for finding app names 2021-01-14 20:34:15 +01:00
Hans-Christoph Steiner
c7fcfe3bfa update: fix setting current_version_file for make_current_version_link
Before, it would never set current_version_file to the current APK since it
first set current_version_code, then tested against CurrentVersionCode. So
if there is only a single APK and its the CurrentVersionCode, then
current_version_file would not get set.

refs #772
2021-01-14 17:09:44 +01:00
Hans-Christoph Steiner
0a1793ab7f update: write out cache as soon as possible
When working or testing with large APK collections, oftentimes it can take
hours to scan all the APKs.  If there is a failure before the apkcache is
written out, then all that work is lost since no cache is written out. This
moves the final cache writing before writing the index and knownapks to
make it more likely that the apkcache is successfully written.
2021-01-14 17:09:44 +01:00
Hans-Christoph Steiner
b5c8ecd3da Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!849
2021-01-14 14:58:43 +00:00
Hans-Christoph Steiner
4d14179732 make -C locale/ clean update 2021-01-14 14:56:20 +01:00
Besnik Bleta
f24eae0f6f Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 96.8% (555 of 573 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:46 +01:00
Michal L
b0ef3c4006 Translated using Weblate: Polish (pl) by Michal L <michalrmsmi@wp.pl>
Currently translated at 91.6% (525 of 573 strings)

Co-authored-by: Michal L <michalrmsmi@wp.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:46 +01:00
Jennifer Kitts
7086a6ce4f Added translation using Weblate: English (Old) (ang) by Jennifer Kitts <kittsjennifer44@gmail.com>
Co-authored-by: Jennifer Kitts <kittsjennifer44@gmail.com>
2021-01-14 14:52:46 +01:00
Predatorix Phoenix
33d762607a Translated using Weblate: German (de) by Predatorix Phoenix <predatorix@web.de>
Currently translated at 91.4% (524 of 573 strings)

Co-authored-by: Predatorix Phoenix <predatorix@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:46 +01:00
random r
4087990125 Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 62.1% (356 of 573 strings)

Co-authored-by: random r <epsilin@yopmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:46 +01:00
fresh
38d368d7df Translated using Weblate: Greek (el) by fresh <fresh190@protonmail.com>
Currently translated at 5.5% (32 of 573 strings)

Translated using Weblate: Greek (el) by fresh <fresh190@protonmail.com>

Currently translated at 5.0% (29 of 573 strings)

Co-authored-by: fresh <fresh190@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/el/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:46 +01:00
Gontzal Manuel Pujana Onaindia
984f827eb3 Added translation using Weblate: Basque (eu) by Gontzal Manuel Pujana Onaindia <thadahdenyse@gmail.com>
Co-authored-by: Gontzal Manuel Pujana Onaindia <thadahdenyse@gmail.com>
2021-01-14 14:52:46 +01:00
THANOS SIOURDAKIS
02203ce02e Added translation using Weblate: Greek (el) by THANOS SIOURDAKIS <siourdakisthanos@gmail.com>
Co-authored-by: THANOS SIOURDAKIS <siourdakisthanos@gmail.com>
2021-01-14 14:52:46 +01:00
melusine
c4131d4429 Translated using Weblate: German (de) by melusine <melusine@mailbox.org>
Currently translated at 86.9% (498 of 573 strings)

Co-authored-by: melusine <melusine@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:46 +01:00
Eduardo Rodrigues
305ef53ec9 Translated using Weblate: Spanish (Argentina) (es_AR) by Eduardo Rodrigues <edu.rodrigues2580@gmail.com>
Currently translated at 18.3% (105 of 573 strings)

Co-authored-by: Eduardo Rodrigues <edu.rodrigues2580@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
A
84027d6d94 Added translation using Weblate: Finnish (fi) by A <ville.mourujarvi@hostedweblate.mail.kapsi.fi>
Co-authored-by: A <ville.mourujarvi@hostedweblate.mail.kapsi.fi>
2021-01-14 14:52:45 +01:00
Golubev Alexander
3b7736df6c Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (573 of 573 strings)

Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>

Currently translated at 93.8% (538 of 573 strings)

Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>

Currently translated at 88.6% (508 of 573 strings)

Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>

Currently translated at 87.7% (503 of 573 strings)

Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>

Currently translated at 84.8% (486 of 573 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
Ihor Hordiichuk
f3dea070a7 Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (573 of 573 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
Francesco Saltori
268746896b Translated using Weblate: Italian (it) by Francesco Saltori <francescosaltori@gmail.com>
Currently translated at 60.0% (344 of 573 strings)

Co-authored-by: Francesco Saltori <francescosaltori@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
WaldiS
09c5ac9db5 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 91.2% (523 of 573 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 90.2% (517 of 573 strings)

Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>

Currently translated at 90.0% (516 of 573 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
x
c5abf33210 Translated using Weblate: Italian (it) by x <hardwired1.0@protonmail.com>
Currently translated at 60.0% (344 of 573 strings)

Translated using Weblate: Italian (it) by x <hardwired1.0@protonmail.com>

Currently translated at 42.2% (242 of 573 strings)

Translated using Weblate: Italian (it) by x <hardwired1.0@protonmail.com>

Currently translated at 40.3% (231 of 573 strings)

Co-authored-by: x <hardwired1.0@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
Hans-Christoph Steiner
3ed8f5b505 Translated using Weblate: Italian (it) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 40.3% (231 of 573 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
x
6dd86c5ec2 Translated using Weblate: Italian (it) by x <hardwired1.0@protonmail.com>
Currently translated at 38.5% (221 of 573 strings)

Co-authored-by: x <hardwired1.0@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
Hakim Oubouali
bfa49e9217 Translated using Weblate: Central Atlas Tamazight (tzm) by Hakim Oubouali <hakim.oubouali.skr@gmail.com>
Currently translated at 0.6% (4 of 573 strings)

Co-authored-by: Hakim Oubouali <hakim.oubouali.skr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tzm/
Translation: F-Droid/F-Droid Server
2021-01-14 14:52:45 +01:00
Hans-Christoph Steiner
08a1bd39d6 Merge branch 'fetchsrclibs' into 'master'
make fetchsrclibs plugin work without any Android SDK; add test

See merge request fdroid/fdroidserver!848
2021-01-14 13:52:39 +00:00
Hans-Christoph Steiner
40197295ae gitlab-ci: remove refs: section to hopefully get reliable job starts
"fdroid build" and "plugin_fetchsrclibs" totally failed to run here:
https://gitlab.com/eighthave/fdroidserver/-/pipelines/240160903
2021-01-11 22:13:51 +01:00
Hans-Christoph Steiner
d36f71e048 make config optional when using common.set_FDroidPopen_env()
common.set_FDroidPopen_env() is used to call git and other tools that
are not part of the Android SDK nor require Java, so the items that
are being set from the config are optional.  This lets plugins do
quite a bit without ever setting up a config.
2021-01-11 20:58:50 +01:00
Hans-Christoph Steiner
4b7d29097d gitlab-ci: new job to test plugins API + fdroid fetchsrclibs 2021-01-11 20:58:50 +01:00
Hans-Christoph Steiner
9552d3ed2e Merge branch 'gradle68' into 'master'
Gradle 6.8

See merge request fdroid/fdroidserver!847
2021-01-11 16:08:35 +00:00
Hans-Christoph Steiner
f3a5987677 Merge branch 'scanner' into 'master'
Add androidx.work:work-gcm to non-free dependencies

See merge request fdroid/fdroidserver!846
2021-01-11 12:20:07 +00:00
Licaon_Kter
67ae164293 Gradle 6.8 2021-01-11 14:10:52 +02:00
mimi89999
01699db376
Add androidx.work:work-gcm to non-free dependencies 2021-01-11 10:44:48 +01:00
Hans-Christoph Steiner
d5464fab34
release 2.0a5 2021-01-07 17:12:06 +01:00
Hans-Christoph Steiner
81b55e0d8f
tests: use wc -m to support BSD and macOS 2021-01-07 17:09:44 +01:00
Hans-Christoph Steiner
16d3f89b5c
travis-ci: Calling brew cask install is disabled! Use brew install [--cask] instead 2021-01-06 09:12:03 +01:00
Hans-Christoph Steiner
e878c6f902 Merge branch 'test_strip_path' into 'master'
Ignore src/test only in path_in_build_dir

See merge request fdroid/fdroidserver!845
2021-01-05 06:33:04 +00:00
Jochen Sprickerhof
a9c380b2b8 Ignore src/test only in path_in_build_dir
Found while debugging Debian autopkgtests.
2021-01-04 21:20:31 +01:00
Hans-Christoph Steiner
c1186f1b45 Merge branch 'playcore' into 'master'
add Google Play Core to non-free/proprietary dependencies

See merge request fdroid/fdroidserver!844
2021-01-04 17:35:07 +00:00
Izzy
434a23f822
add Google Play Core to non-free/proprietary dependencies 2021-01-04 17:39:57 +01:00
Hans-Christoph Steiner
1e4697cef9
Merge 'missing_manifest' into master
* origin/missing_manifest:
  add missing test files
  Drop deleted files from MANIFEST.in
  Sort MANIFEST.in
  Add missing test files for scanner

fdroid/fdroidserver!842
2021-01-04 16:45:09 +01:00
Jochen Sprickerhof
0e312a928b add missing test files
sorted using UNIX `sort`

https://gitlab.com/fdroid/fdroidserver/-/merge_requests/842#note_476969121
2021-01-04 16:24:55 +01:00
Jochen Sprickerhof
ffcf9e7a64 Drop deleted files from MANIFEST.in 2021-01-03 09:04:48 +01:00
Jochen Sprickerhof
e789dc4554 Sort MANIFEST.in 2021-01-03 09:04:13 +01:00
Jochen Sprickerhof
30f1f15814 Add missing test files for scanner 2021-01-03 09:04:04 +01:00
Hans-Christoph Steiner
7b94303760 Merge branch 'master' into 'master'
Update NDK to r22 and add buildtools 30.0.3

See merge request fdroid/fdroidserver!840
2020-12-28 15:52:41 +00:00
TacoTheDank
c88a3f56a1 Update NDK to r22 and add buildtools 30.0.3 2020-12-26 19:51:22 -05:00
Hans-Christoph Steiner
330ca2319c
example plugin for fetching srclibs
This is used in _fdroiddata_'s `fdroid build` CI job, and _issuebot_.
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.

This is moved from _fdroiddata_ where it was _tools/fdroid_fetchsrclibs.py_.
2020-12-22 16:59:02 +01:00
Hans-Christoph Steiner
03aba988b2 Merge branch 'api-fixes' into 'master'
API fixes to work with plain dicts read by any YAML parser

Closes #851

See merge request fdroid/fdroidserver!838
2020-12-15 16:26:36 +00:00
Hans-Christoph Steiner
21b0a6b463 gitlab-ci: update metadata_v0 test for parsing change
`Builds:` is directly in the .yml metadata, and the internal representation
now uses the same "Builds" name.  Reading in .txt metadata files used the
name "builds" for that.  So this test now uses "Builds" as canonical.
2020-12-15 08:55:05 +01:00
Hans-Christoph Steiner
0b879f18e5 use dict syntax for app instances to allow API usage with plain dicts
Since metadata files are now YAML, programs should be able to just read in
the .yml files, then use them with fdroidserver methods without having to
know about the App class.  The App class just provides syntactic sugar by
allowing dict keys to be accessed as attributes.
2020-12-15 08:55:05 +01:00
Hans-Christoph Steiner
e93acf7964 metadata: work with dicts generated by standard YAML parsers
Now that the mismatch between 'builds' and 'Builds' has been fixed, it is
now possible to read metadata/*.yml files with a standard YAML parser like
PyYAML, then output them using `metadata.write_metadata()`.  Other API
functions in fdroidserver should also work in this case.

I did this as I was working on fdroiddata!7860
2020-12-15 08:55:05 +01:00
Hans-Christoph Steiner
bf25b4ca03 eliminate app.builds everywhere, it should be app['Builds']
The .txt format was the last place where the lowercase "builds" was used,
this converts references everywhere to be "Builds".  This makes it possible
to load metadata YAML files with any YAML parser, then have it possible to
use fdroidserver methods on that data, like metadata.write_metadata().

The test files in tests/metadata/dump/*.yaml were manually edited by cutting
the builds: block and putting it the sort order for Builds: so the contents
should be unchanged.

```
sed -i \
 -e 's/app\.builds/app.get('Builds', \[\])/g' \
 -e "s/app\.get(Builds, \[\]) =/app\['Builds'] =/g" \
 -e "s/app\.get(Builds, \[\]) =/app\['Builds'] =/g" \
 -e "s/app\.get(Builds, \[\])/app.get('Builds', \[\])/g" \
 -e "s/app\.get('Builds', \[\])\.append/app\['Builds'\].append/g" \
 -e "s/app\['builds'\]/app.get('Builds', [])/g" \
 */*.*
```
2020-12-15 08:55:05 +01:00
Hans-Christoph Steiner
877779195f Merge branch 'logging-and-two-bug-fixes' into 'master'
Logging and two bug fixes

Closes #851

See merge request fdroid/fdroidserver!837
2020-12-15 07:53:52 +00:00
Hans-Christoph Steiner
cfec25d33a update: tame androguard debug logs when --verbose is set 2020-12-15 08:30:48 +01:00
Hans-Christoph Steiner
40cd51ed59 build: include commit ID in build log 2020-12-15 08:30:48 +01:00
Hans-Christoph Steiner
fb628c2cb2 include modified and untracked files in status JSON
Ideally, an fdroid repo should be running from a clean git repo, so that
all changes are tracked in git.  This change is useful in seeing which
changes and/or files are not in git.  If there are modified files, the
dirty flag will be set, so this info can help debugging that.
2020-12-15 08:30:48 +01:00
Hans-Christoph Steiner
384922118f index: sanitize fingerprint arg, extract_pubkey() returns with spaces
The key fingerprint should be only hex digits, everything else can be
discarded.  That makes it easy to use this function various fingerprint
formats, including the common, human-readable forms spaces between pairs or
quartets.
2020-12-15 08:30:48 +01:00
Hans-Christoph Steiner
d9171f11e0 update: improve logging when exiting due to bad APK file
closes #851
2020-12-15 08:30:48 +01:00
Hans-Christoph Steiner
ba854cbc0f index: fix GitLab Raw URLs with gitlab.com and recent versions
GitLab seems to be moving to always having "-" as the first path segment in
all the project URLs.  So the URL without a "-" is now a redirect.
2020-12-15 08:30:48 +01:00
Hans-Christoph Steiner
531c36f310
fix typo in ac3eb0e641 2020-12-14 23:08:32 +01:00
Hans-Christoph Steiner
d1a47e58c3
release v2.0.a4 2020-12-14 20:34:28 +01:00
Hans-Christoph Steiner
ac3eb0e641 tests: fix mirror test setup on macOS
I guess macOS has an ancient version of bash which does not include
support for $RANDOM
2020-12-14 20:33:28 +01:00
Hans-Christoph Steiner
50c98b2f30 Merge branch 'fdroid-build-job' into 'master'
GitLab CI job to test `fdroid build`

See merge request fdroid/fdroidserver!839
2020-12-14 19:31:24 +00:00
Hans-Christoph Steiner
8329be2d22 gitlab-ci: make fdroid build job actually build apps 2020-12-10 10:54:47 +01:00
Hans-Christoph Steiner
9cfd12f9ed tests: include test http.server.log in the test's tmp dir 2020-12-10 10:45:28 +01:00
Hans-Christoph Steiner
54e8867a7e
fix read_metadata in fdroid build
Broken in fdroid/fdroidserver!828
2020-12-09 22:29:51 +01:00
Hans-Christoph Steiner
ac5ed93428 Merge branch 'purge-description-formatting' into 'master'
Purge description formatting

Closes #845 and #678

See merge request fdroid/fdroidserver!828
2020-12-09 18:28:08 +00:00
Hans-Christoph Steiner
adcb484927 Merge branch 'find_sdk' into 'master'
Find sdk

See merge request fdroid/fdroidserver!836
2020-12-09 16:57:23 +00:00
Jochen Sprickerhof
66d0e6b1f9 find_sdk_tools_cmd always raise exception if not found
test_sdk_exists() succeeds on an empty directory so it does not give any
new information. Contrary, test_sdk_exists() succeeds on an empty
directory, so find_sdk_tools_cmd() returned None even though the tools
where not found, before.
2020-12-09 17:37:02 +01:00
Hans-Christoph Steiner
129438fd30 make read_metadata only parse files actually used by lint/rewritemeta
Now that the description formatting is removed, there is no need to load
all of the app metadata before operating on a single one.  This change
makes lint and rewritemeta only load the metadata for the apps it is actually
operating on.  Before, it would always load all metadata files.  #845

closes #678
2020-12-08 09:37:49 +01:00
Hans-Christoph Steiner
c98b15e72a purge code that modifies the repo descriptions
YAML now provides nice ways of handling blocks of text, including removing
indents and newlines.  Remove the custom hack.
2020-12-08 09:37:49 +01:00
Hans-Christoph Steiner
828d6015ef purge code that modifies the app description, including linkifying
closes #845
2020-12-08 09:37:49 +01:00
Jochen Sprickerhof
5df13bcb8c Catch exception when testing find_sdk_tools_cmd
In 1c7df94e find_sdk_tools_cmd was changed to throw an FDroidException
when the sdk tools where not found instead of returning None.
2020-12-05 14:29:45 +01:00
Hans-Christoph Steiner
15a6e2d3a0 gitlab-ci: switch archived ci-images-server to ci-images-base
ci-images-server was created separately from ci-images-base back in the day
when we had to support Debian/stretch without stretch-backports.  Those
days are gone now, so ci-images-server has been archived and should no
longer be used.
2020-12-04 11:25:02 +01:00
Hans-Christoph Steiner
ed0102754a gitlab-ci: remove rules:, they create weird "pipelines" 2020-12-04 11:23:22 +01:00
Hans-Christoph Steiner
e8395b5fe9
release v2.0a3
somehow I messed up and uploaded 2.0a2 that was incomplete, so now 2.0a3
2020-12-03 22:17:07 +01:00
Hans-Christoph Steiner
126b85972d
release v2.0a2 2020-12-03 21:48:43 +01:00
Hans-Christoph Steiner
4b9297dfa6 gitlab-ci: only run arch/pip job on final merged commits
Each of these takes a while to run, and this one rarely catches
issues separately from the main jobs.
2020-12-03 21:48:37 +01:00
Hans-Christoph Steiner
cc5c52791f use smallest possible valid .obf.zip file in tests
Virgin-islands-british_centralamerica_2.obf.zip is 1MB, while
Norway_bouvet_europe_2.obf.zip is 12KB.  This file gets copied a lot in the
test runs so it adds up fast.
2020-12-03 21:48:37 +01:00
Hans-Christoph Steiner
77db3ea709 mirror: if index is verified, save a copy in the local mirror 2020-12-03 21:48:37 +01:00
Hans-Christoph Steiner
00f5ff8762 gitlab-ci: remove workaround, Debian's apksigner now works w/o binfmt 2020-12-03 16:21:08 +01:00
Hans-Christoph Steiner
381190faad Merge branch 'pip_install_test' into 'master'
Pip install test

See merge request fdroid/fdroidserver!833
2020-12-03 13:41:55 +00:00
Jochen Sprickerhof
4b2e323899 Install more test files 2020-12-03 13:34:42 +01:00
Jochen Sprickerhof
df160170ca Run test on sdist 2020-12-03 13:34:42 +01:00
Hans-Christoph Steiner
2a265cbc0b Merge branch 'build_tools_tests' into 'master'
Build tools tests

See merge request fdroid/fdroidserver!834
2020-11-30 08:39:20 +00:00
Marcus
02b3024767 Merge branch 'fix_type_error' into 'master'
Fix type error

See merge request fdroid/fdroidserver!835
2020-11-29 18:27:41 +00:00
Jochen Sprickerhof
25b1f3fe8c Ignore non version number entries in build_tools_path
LooseVersion('debian') stay a string and results in a type error.
2020-11-29 19:04:35 +01:00
Jochen Sprickerhof
4d78d79280 Revert "Ignore non version number entries in build_tools_path"
This reverts commit 5c36f84430.
2020-11-29 19:04:12 +01:00
Jochen Sprickerhof
ce10fcb759 Check if build_tools path exists before listdir 2020-11-29 10:06:39 +01:00
Hans-Christoph Steiner
1c7df94e76 purge unneeded 'build_tools' config option
Back when fdroidserver was built around aapt, that was needed to
guarantee that a compatible version of aapt was used. Now, aapt is
only optionally used for getting the APK ID, so this was just
complicating maintenance.
2020-11-29 10:06:39 +01:00
Jochen Sprickerhof
1e8093ff6e Revert "find_sdk_tools_cmd returns non if aapt is not found"
This reverts commit 66414a9fc7.
2020-11-29 10:06:39 +01:00
Hans-Christoph Steiner
2cca336a29
add gradle 6.7.1 2020-11-27 11:35:18 +01:00
Hans-Christoph Steiner
1a736c2314 Merge branch 'versionCode_underscore' into 'master'
Support underscore (_) in versionCode

See merge request fdroid/fdroidserver!830
2020-11-27 10:30:44 +00:00
Hans-Christoph Steiner
7f1aef0105 Merge branch 'missing_aapt' into 'master'
Fix tests

See merge request fdroid/fdroidserver!831
2020-11-27 09:57:49 +00:00
Jochen Sprickerhof
5c36f84430 Ignore non version number entries in build_tools_path 2020-11-26 23:31:20 +01:00
Jochen Sprickerhof
60748acb9d Add missing test files 2020-11-26 23:31:20 +01:00
Jochen Sprickerhof
66414a9fc7 find_sdk_tools_cmd returns non if aapt is not found 2020-11-26 22:52:52 +01:00
Jochen Sprickerhof
2cb0ff4578 Support underscore (_) in versionCode
Example:

https://github.com/ubergeek42/weechat-android/blob/v1.3.1/app/build.gradle.kts#L67
2020-11-26 21:03:51 +01:00
Hans-Christoph Steiner
393f88b41e
second alpha 2.0 release 2.0a1 2020-11-25 17:45:00 +01:00
Alvaro
fda56302a3 Translated using Weblate: Spanish (es) by Alvaro <alvaro@null.net>
Currently translated at 55.6% (319 of 573 strings)

Co-authored-by: Alvaro <alvaro@null.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2020-11-25 17:43:04 +01:00
Roman
5eb5a65c19 Translated using Weblate: Russian (ru) by Roman <WT_Roma@mail.ru>
Currently translated at 84.4% (484 of 573 strings)

Co-authored-by: Roman <WT_Roma@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-11-25 17:43:04 +01:00
Besnik Bleta
9c72e6f1a8 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 96.8% (555 of 573 strings)

Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>

Currently translated at 80.8% (463 of 573 strings)

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translation: F-Droid/F-Droid Server
2020-11-25 17:43:04 +01:00
Hans-Christoph Steiner
a6c3598466 Translated using Weblate: Albanian (sq) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 80.1% (459 of 573 strings)

Translated using Weblate: Hungarian (hu) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 13.7% (79 of 573 strings)

Translated using Weblate: Swedish (sv) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 7.5% (43 of 573 strings)

Translated using Weblate: Russian (ru) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 84.2% (483 of 573 strings)

Translated using Weblate: Korean (ko) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 36.1% (207 of 573 strings)

Translated using Weblate: Tibetan (bo) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 67.8% (389 of 573 strings)

Translated using Weblate: German (de) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 86.0% (493 of 573 strings)

Translated using Weblate: Spanish (es) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 55.4% (318 of 573 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 82.7% (474 of 573 strings)

Translated using Weblate: Spanish (Argentina) (es_AR) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 14.4% (83 of 573 strings)

Translated using Weblate: Albanian (sq) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 80.1% (459 of 573 strings)

Translated using Weblate: Tibetan (bo) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 67.7% (388 of 573 strings)

Translated using Weblate: German (de) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 85.8% (492 of 573 strings)

Translated using Weblate: Spanish (es) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 55.3% (317 of 573 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 82.5% (473 of 573 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sv/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2020-11-25 17:43:04 +01:00
The Cats
96faaf7d18 Translated using Weblate: Portuguese (Brazil) (pt_BR) by The Cats <philosoph@snopyta.org>
Currently translated at 100.0% (573 of 573 strings)

Co-authored-by: The Cats <philosoph@snopyta.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-11-25 17:43:04 +01:00
NightFeather
6d4527186a Translated using Weblate: Chinese (Traditional) (zh_Hant) by NightFeather <ss900328@gmail.com>
Currently translated at 82.3% (472 of 573 strings)

Co-authored-by: NightFeather <ss900328@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2020-11-25 17:43:04 +01:00
Michal L
50a240c0ec
Translated using Weblate: Polish (pl) by Michal L <michalrmsmi@wp.pl>
Currently translated at 89.7% (514 of 573 strings)

Translated using Weblate: Polish (pl) by Michal L <michalrmsmi@wp.pl>

Currently translated at 89.5% (513 of 573 strings)

Translated using Weblate: Polish (pl) by Michal L <michalrmsmi@wp.pl>

Currently translated at 86.5% (496 of 573 strings)

Co-authored-by: Michal L <michalrmsmi@wp.pl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2020-11-25 17:40:48 +01:00
ssantos
9b0537514e
Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (573 of 573 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (573 of 573 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2020-11-25 17:40:47 +01:00
Ihor Hordiichuk
b660f32bf5
Translated using Weblate: Ukrainian (uk) by Ihor Hordiichuk <igor_ck@outlook.com>
Currently translated at 100.0% (573 of 573 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2020-11-25 17:40:47 +01:00
Oğuz Ersen
277994b31d
Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (573 of 573 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2020-11-25 17:40:46 +01:00
Hans-Christoph Steiner
fadbe30d81 Merge branch 'install_apk' into 'master'
Add missing test apk

See merge request fdroid/fdroidserver!829
2020-11-25 16:30:01 +00:00
Jochen Sprickerhof
d44f35bd25 Add missing test apk 2020-11-25 14:11:46 +01:00
Hans-Christoph Steiner
0f48a052cc Merge branch 'fix-crash-with-config-yml' into 'master'
fix stacktrace crash when env vars are badly set in config.yml

See merge request fdroid/fdroidserver!827
2020-11-12 16:49:35 +00:00
Hans-Christoph Steiner
d530733290 fix stacktrace crash when env vars are badly set in config.yml
This was trying to delete from a dict that was being iterated through.
Python doesn't like that!
2020-11-12 17:00:03 +01:00
Hans-Christoph Steiner
80891be139 Merge branch 'more-api-fixes' into 'master'
do not assume `app` is an App instance, support API usage

See merge request fdroid/fdroidserver!826
2020-11-10 16:44:49 +00:00
Hans-Christoph Steiner
9442a9e614 do not assume app is an App instance, support API usage
When using fdroidserver methods as an API, the full setup might not
have taken place.  `app` instances can always just be a dict, the App
class is mostly just a typing shortcut.  This is incremental, it only
affects a couple of functions in fdroidserver/update.py.
2020-11-10 17:02:15 +01:00
Hans-Christoph Steiner
a1df5ef86a gitlab-ci: try rules:changes: to limit "fdroiddata fdroid build" runs
https://docs.gitlab.com/ee/ci/yaml/#using-onlychanges-with-pipelines-for-merge-requests
2020-11-10 17:00:58 +01:00
Hans-Christoph Steiner
767573f2ec
init: fix init with Debian Android SDK packages
If the auto-detected SDK path passes test_sdk_exists(), then just use
it without prompting.

fixes !821
2020-11-10 10:20:43 +01:00
Hans-Christoph Steiner
85fa53008c Merge branch '92lleo-master-patch-52783' into 'master'
Add platform 30

See merge request fdroid/fdroidserver!825
2020-11-09 19:08:40 +00:00
Hans-Christoph Steiner
10d5aa6bc4
gitlab-ci: test 'fdroid build' CI job setup 2020-11-09 14:55:09 +01:00
Hans-Christoph Steiner
e927ed02a8
provision-apt-get-install: fix gpg from stretch-backports-sloppy
!822

The gpg dependencies are complicated.  The previous setup was always
failing with:
The following information may help to resolve the situation:
The following packages have unmet dependencies:
 gpg : Depends: gpgconf (= 2.2.20-1~bpo9+1)
       Depends: libassuan0 (>= 2.5.0) but 2.4.3-2 is to be installed
       Depends: libgpg-error0 (>= 1.35) but 1.26-2 is to be installed

Thanks to @izzysoft to spotting this.
2020-11-09 14:37:55 +01:00
Leonhard Künzler
ce46978099 Add platform 30 2020-11-09 11:23:40 +01:00
Michael Pöhn
196dc75481 Merge branch 'yaml-config' into 'master'
move config.py to config.yml

See merge request fdroid/fdroidserver!571
2020-11-05 23:00:32 +00:00
Michael Pöhn
51a099cb3d Merge branch 'gpgaptfix' into 'master'
Use newer gpg from sloppy

See merge request fdroid/fdroidserver!822
2020-11-04 15:22:39 +00:00
Michael Pöhn
9f11495934 Merge branch 'purge-aapt' into 'master'
purge aapt requirements and elevate apksigner

Closes #627

See merge request fdroid/fdroidserver!821
2020-11-04 15:18:40 +00:00
Hans-Christoph Steiner
975fb5b224 Merge branch 'fix-fedora-test' into 'master'
gitlab-ci: fix fedora test failing on Python setup

See merge request fdroid/fdroidserver!823
2020-11-02 15:06:49 +00:00
Hans-Christoph Steiner
b2b6e62b8d gitlab-ci: fix fedora test failing on Python setup
Avoid having to compile matplotlib and its C dependencies.
2020-11-02 15:38:46 +01:00
licaon-kter
2fc0178972 Use newer gpg from sloppy 2020-11-01 14:02:48 +02:00
Hans-Christoph Steiner
ece901fb7c Merge branch 'destroy' into 'master'
build: destroy vm after each build

See merge request fdroid/fdroidserver!814
2020-10-31 10:37:42 +00:00
mimi89999
5485869e3f
build: destroy vm after each build 2020-10-31 10:55:14 +01:00
Hans-Christoph Steiner
f430c58d01 make examples/template.yml pass yamllint 2020-10-23 14:20:49 +02:00
Hans-Christoph Steiner
a9fdb5b401 init: switch to config.yml as the default format 2020-10-23 14:20:49 +02:00
Hans-Christoph Steiner
4bbbf35511 support both config.py and config.yml in common.write_to_config() 2020-10-23 14:18:55 +02:00
Hans-Christoph Steiner
2d115135f7 support env vars in config.yml: awsaccesskeyid: {env: AWS_KEY} 2020-10-23 14:18:55 +02:00
Hans-Christoph Steiner
d3d48dba5e add config.yml as default config file format
None of the config options in config.py require Python code.  YAML is a
common config data format, and it is also used for build metadata.  It is
also much safer to use since it can be pure data, without anything
executable in it.  This also reduces the attack surface of the fdroid
process by eliminating a guaranteed place to write to get code executed.
With config.py, any exploit that can get local write access can turn that
into execute access by writing to the config.py, then cleaning up after
itself once it has what it needs.  Switching to YAML removes that vector
entirely.

Also, this removes the config_file argument.  It is not used in either
fdroidserver or repomaker.  Also, it probably wouldn't work since so
much of the code assumes that the current working dir is the root of the
repo.
2020-10-23 14:18:55 +02:00
Hans-Christoph Steiner
fd41b70e27 purge common.use_androguard, it is now used by default
Up until now, the buildserver has not included androguard.  Since a
good version of androguard (v3.3.3+) is included in stretch-backports
and the buildserver is already setup to use stretch-backports, this
sets up the buildserver with androguard.

closes #627
2020-10-22 11:58:55 +02:00
Hans-Christoph Steiner
aa80662642 init: enable apksigner by default so v2/v3 APK signatures validate
Ultimately we want to get to using apksigner by default everywhere,
this gets us closer to that by setting up all new repos to use
apksigner by default in the config.py
2020-10-22 09:53:51 +02:00
Hans-Christoph Steiner
989159ef09 require build-tools that fully supports apksigner 2020-10-22 09:53:51 +02:00
Hans-Christoph Steiner
501a33f117 remove unused helper function 2020-10-22 09:53:51 +02:00
Hans-Christoph Steiner
08931f4524 purge update.scan_apk_aapt()
androguard v3.3.3+ properly extracts the app name, so this adds the
names to the tests.
2020-10-22 09:53:51 +02:00
Hans-Christoph Steiner
8fd7dcd425 always use androguard version of common.get_apk_id() first
This removes the need for common.use_androguard()
2020-10-22 09:51:12 +02:00
Hans-Christoph Steiner
27b90a13bf remove aapt version of common.is_apk_and_debuggable() 2020-10-22 09:51:12 +02:00
Hans-Christoph Steiner
b5cd850abe apksigner search should use MINIMUM_APKSIGNER_BUILD_TOOLS_VERSION 2020-10-22 09:51:12 +02:00
Hans-Christoph Steiner
48e11ea3f1 run-tests: exit with error if no test APKs are found
There must be at least one APK available for this test suite to work, for
example, this test:

grep -F '<application id=' repo/index.xml

This can't be easily implemented using an env vir beccause the while
loop is running in a pipe, so a different process.
copy_apks_into_repo is used with throwaway tmp dirs, so the stamp file
should work well.
2020-10-22 09:51:12 +02:00
Hans-Christoph Steiner
3e35b2dd27
make -C locale update 2020-10-21 18:05:32 +02:00
Michael Pöhn
c63c4b3deb Merge remote-tracking branch 'eighthave/rename-server-to-deploy' 2020-10-21 15:02:17 +02:00
Hans-Christoph Steiner
3eba5de218 Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!820
2020-10-21 10:21:24 +00:00
Hans-Christoph Steiner
17f6a778ba deploy: move server.py to deploy.py and remove aliases
closes #832
2020-10-21 11:38:49 +02:00
Hans-Christoph Steiner
8daf273843 server: purge fdroid server init command, it is totally unneeded
The existing rsync command used to deploy via SSH will create all the dirs
that `fdroid server init` does.
2020-10-21 10:29:21 +02:00
Hakim Oubouali
73a6a9c046 Added translation using Weblate: Central Atlas Tamazight (tzm) by Hakim Oubouali <hakim.oubouali.skr@gmail.com>
Co-authored-by: Hakim Oubouali <hakim.oubouali.skr@gmail.com>
2020-10-20 23:18:11 +02:00
IvanDan
f7f65e26c3 Translated using Weblate: Italian (it) by IvanDan <ivandanza@gmail.com>
Currently translated at 34.9% (199 of 569 strings)

Co-authored-by: IvanDan <ivandanza@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
marzzzello
45959775b3 Translated using Weblate: German (de) by marzzzello <anmeldezeugs@top-email.net>
Currently translated at 86.2% (491 of 569 strings)

Co-authored-by: marzzzello <anmeldezeugs@top-email.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
WaldiS
4e0b0f63e9 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 84.5% (481 of 569 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
random r
60ca80ff4e Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 34.6% (197 of 569 strings)

Co-authored-by: random r <epsilin@yopmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
ssantos
4a8db4e283 Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (569 of 569 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (569 of 569 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Renaud Perrai
eb21b17959 Translated using Weblate: French (fr) by Renaud Perrai <contact@renaudperrai.fr>
Currently translated at 70.8% (403 of 569 strings)

Translated using Weblate: French (fr) by Renaud Perrai <contact@renaudperrai.fr>

Currently translated at 69.5% (396 of 569 strings)

Co-authored-by: Renaud Perrai <contact@renaudperrai.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Allan Nordhøy
47ad13e6e5 Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 60.1% (342 of 569 strings)

Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>

Currently translated at 60.1% (342 of 569 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
ihor_ck
790c385f9a Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>
Currently translated at 100.0% (569 of 569 strings)

Co-authored-by: ihor_ck <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Eric
46e0ef09c1 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 33.7% (192 of 569 strings)

Co-authored-by: Eric <spice2wolf@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Oğuz Ersen
406a0ce8bc Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (569 of 569 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Hosted Weblate
86932dbc21 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
WaldiS
11469bf951 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 85.6% (484 of 565 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Yldun
742b4c4f46 Translated using Weblate: French (fr) by Yldun <contact@norcet.info>
Currently translated at 70.0% (396 of 565 strings)

Co-authored-by: Yldun <contact@norcet.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Alexandre Hô
f477fc88bd Translated using Weblate: French (fr) by Alexandre Hô <xandrex_weblate@m4x.org>
Currently translated at 70.0% (396 of 565 strings)

Co-authored-by: Alexandre Hô <xandrex_weblate@m4x.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Coucouf
aede496fbe Translated using Weblate: French (fr) by Coucouf <coucouf@coucouf.fr>
Currently translated at 70.0% (396 of 565 strings)

Co-authored-by: Coucouf <coucouf@coucouf.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Kahina Messaoudi
9db20b4734 Translated using Weblate: Kabyle (kab) by Kahina Messaoudi <messaoudikahina02@gmail.com>
Currently translated at 9.7% (55 of 565 strings)

Co-authored-by: Kahina Messaoudi <messaoudikahina02@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/kab/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Mostafa Ahangarha
f7ceb2b989 Translated using Weblate: Persian (fa) by Mostafa Ahangarha <ahangarha@gmail.com>
Currently translated at 4.0% (23 of 565 strings)

Co-authored-by: Mostafa Ahangarha <ahangarha@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
André Marcelo Alvarenga
092f441647 Translated using Weblate: Portuguese (Brazil) (pt_BR) by André Marcelo Alvarenga <andrealvarenga@gmx.net>
Currently translated at 100.0% (565 of 565 strings)

Co-authored-by: André Marcelo Alvarenga <andrealvarenga@gmx.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Boris Timofeev
f198f16985 Translated using Weblate: Russian (ru) by Boris Timofeev <mashin87@gmail.com>
Currently translated at 86.3% (488 of 565 strings)

Co-authored-by: Boris Timofeev <mashin87@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
signz signotorez
83eb9bf36f Translated using Weblate: Indonesian (id) by signz signotorez <signotorez@gmail.com>
Currently translated at 10.6% (60 of 565 strings)

Added translation using Weblate: Indonesian (id) by signz signotorez <signotorez@gmail.com>

Co-authored-by: signz signotorez <signotorez@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/id/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Allan Nordhøy
b1bf7d3062 Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 59.8% (338 of 565 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
ssantos
7168d985fd Translated using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>
Currently translated at 100.0% (565 of 565 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (565 of 565 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by ssantos <ssantos@web.de>

Currently translated at 100.0% (565 of 565 strings)

Added translation using Weblate: Portuguese (pt) by ssantos <ssantos@web.de>

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 89.2% (504 of 565 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Wellington Terumi Uemura
9285f072c0 Translated using Weblate: Portuguese (Brazil) (pt_BR) by Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Currently translated at 100.0% (565 of 565 strings)

Co-authored-by: Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Jo
f10bda4e6e Translated using Weblate: Spanish (es) by Jo <joaquinfc@protonmail.com>
Currently translated at 56.6% (320 of 565 strings)

Co-authored-by: Jo <joaquinfc@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
Eric
534cb2106d Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 33.6% (190 of 565 strings)

Co-authored-by: Eric <spice2wolf@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:11 +02:00
ihor_ck
8ee6ed5c46 Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>
Currently translated at 100.0% (565 of 565 strings)

Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>

Currently translated at 93.4% (528 of 565 strings)

Co-authored-by: ihor_ck <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:10 +02:00
melusine
d49dacc924 Translated using Weblate: German (de) by melusine <melusine@mailbox.org>
Currently translated at 86.5% (489 of 565 strings)

Translated using Weblate: German (de) by melusine <melusine@mailbox.org>

Currently translated at 85.6% (484 of 565 strings)

Co-authored-by: melusine <melusine@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:10 +02:00
Rafael Fontenelle
48fa684d64 Translated using Weblate: Portuguese (Brazil) (pt_BR) by Rafael Fontenelle <rafaelff@gnome.org>
Currently translated at 93.2% (527 of 565 strings)

Co-authored-by: Rafael Fontenelle <rafaelff@gnome.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:10 +02:00
Oğuz Ersen
5cf54fe50f Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (565 of 565 strings)

Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>

Currently translated at 89.3% (505 of 565 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:10 +02:00
Bart Groeneveld
2fba27ab92 Translated using Weblate: Dutch (nl) by Bart Groeneveld <avi@bartavi.nl>
Currently translated at 3.3% (19 of 565 strings)

Added translation using Weblate: Dutch (nl) by Bart Groeneveld <avi@bartavi.nl>

Co-authored-by: Bart Groeneveld <avi@bartavi.nl>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nl/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:10 +02:00
Massimiliano Caniparoli
a16ca66abf Translated using Weblate: Italian (it) by Massimiliano Caniparoli <massic80@gmail.com>
Currently translated at 34.3% (194 of 565 strings)

Co-authored-by: Massimiliano Caniparoli <massic80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2020-10-20 23:18:10 +02:00
Michael Pöhn
b00fd56cdf Merge branch 'accepted_formats' into 'master'
accepted_formats has been removed from fdroidserver (only yml remains anyway)

See merge request fdroid/fdroidserver!818
2020-10-20 21:17:53 +00:00
Izzy
a216c0487e
accepted_formats has been removed from fdroidserver (only yml remains anyway) 2020-10-20 22:55:52 +02:00
Michael Pöhn
cb52a8ed3b Merge branch 'apksigv4' into 'master'
don't include .idsig files into the index

See merge request fdroid/fdroidserver!817
2020-10-17 08:58:12 +00:00
Marcus Hoffmann
03b1adbe2b don't include .idsig files into the index
.idsig files contain an apksig v4 (https://source.android.com/security/apksigning/v4)
new versions of apksigner make this signature by default and it ends up
in /repo. Without this patch it would be included into the index as a
file to be downloaded by users. F-Droid Client crashes when it
encounters such an apk entry.

It's fine to have these signature files in the repo though, maybe
fdroidclient can make use of them at some point in the future (they are
intended to support streaming app installations).
2020-10-16 22:50:29 +02:00
Marcus Hoffmann
8c32cd2b43 AGP 4.1 requires gradle 6.5 2020-10-16 14:27:47 +02:00
Marcus Hoffmann
7fbf08fbbe add gradle 6.7 2020-10-14 22:41:27 +02:00
Michael Pöhn
e63eb7cd2f Merge branch '2.0-deprecations' into 'master'
2.0 deprecations in `fdroid update`

See merge request fdroid/fdroidserver!813
2020-10-14 13:14:49 +00:00
Hans-Christoph Steiner
b72fb25453 Merge branch 'framagit' into 'master'
add framagit.org to known git repo locations

See merge request fdroid/fdroidserver!815
2020-10-14 09:28:47 +00:00
Izzy
261a5cca44
add framagit.org to known git repo locations 2020-10-13 17:07:37 +02:00
Hans-Christoph Steiner
7f53e52aee Merge branch 'vagrant-dbg' into 'master'
log vm status when vagrant up fails

See merge request fdroid/fdroidserver!809
2020-10-08 15:24:12 +00:00
Michael Pöhn
daadcdd12a log vm status when vagrant up fails 2020-10-08 16:37:25 +02:00
Hans-Christoph Steiner
ae3c9c0552 change make_current_version_link to default to False
This is semi-broken and barely used, it should be off by default for 2.0.
2020-10-08 08:10:36 +02:00
Hans-Christoph Steiner
00c2cc969a update: deprecate --wiki option, the wiki is going away 2020-10-08 08:10:36 +02:00
Hans-Christoph Steiner
75cdb1fd97 update: remove -b / --buildreport which has done nothing since 2013
The functionality was removed in 48296df5b0
2020-10-08 08:10:36 +02:00
Hans-Christoph Steiner
2952e74b71 Merge branch 'repomaker-api-fixes' into 'master'
repomaker/issuebot API fixes

See merge request fdroid/fdroidserver!807
2020-10-08 06:06:20 +00:00
Hans-Christoph Steiner
602cf30c1e update: fix bug where only last appid was added to antiFeatures status
appid will never be present in `antiFeatures[af]`, so the entry was being
reinitalized each time.
2020-10-07 18:57:59 +02:00
Hans-Christoph Steiner
05cd8c6810 scanner: expose "usual suspects" patterns for use in an API 2020-10-07 18:56:17 +02:00
Hans-Christoph Steiner
3c64996089 update: test if options is instantated before using attributes
This makes it possible to use process_apks(), get_cache(), and anything
calling disabled_algorithms_allowed() as an API without having to set
options up beforehand.
2020-10-07 18:56:17 +02:00
Hans-Christoph Steiner
790b5a2888 update: use "app" as dict not App instance in apply_info_from_latest_apk
This allows update.apply_info_from_latest_apk() to be used as part of the
API.  This way "app" can be a dict or an App instance.
2020-10-07 18:56:17 +02:00
Hans-Christoph Steiner
283f10dec1 index: generate repo icon if missing, and add tests 2020-10-07 18:56:17 +02:00
Hans-Christoph Steiner
7adba093e4 Merge branch 'keytool_smartcardoptions' into 'master'
fix keytool not working with default smartcardoptions

See merge request fdroid/fdroidserver!812
2020-10-07 16:53:49 +00:00
Michael Pöhn
fe61d7a575 Merge branch 'translation-updates' into 'master'
clean up help and logging

See merge request fdroid/fdroidserver!810
2020-10-07 16:52:47 +00:00
Marcus Hoffmann
0d5fde334d fix keytool not working with default smartcardoptions
This broke in 74af61f255.
Keytool has still a different opinion from both apksigner and jarsigner
about the providerName argument. apksigner doesn't support it at all,
jarsigner ignores it but keytool fails without it. :-/

So we add it back to the default argument list but filter it out before
calling apksigner.
2020-10-07 16:12:21 +02:00
Hans-Christoph Steiner
fede58a710 use ArgumentParser's own "usage" line in help output 2020-10-01 23:01:55 +02:00
Hans-Christoph Steiner
b23cf9f8ad use YAML names for referring to metadata fields in messages 2020-10-01 23:01:55 +02:00
Hans-Christoph Steiner
5e1377c77a standardize on "Application ID" in UI text 2020-10-01 23:01:55 +02:00
Hans-Christoph Steiner
9c852d4e8d
first alpha 2.0 release 2.0a0 2020-10-01 22:59:40 +02:00
Hans-Christoph Steiner
4d972ea615
travis-ci: update jobs to run on current and oldest supported macOS 2020-10-01 22:59:38 +02:00
Hans-Christoph Steiner
9f394ead4b
fix test suite for non-GNU: remove GNUisms
* date --date= does not exist on BSD
2020-10-01 22:59:35 +02:00
Hans-Christoph Steiner
ba5136b684 Merge branch 'mirror-script-update' into 'master'
mirror-to-mirror.sh: also sync to ftp.lysator.liu.se, in parallel

See merge request fdroid/fdroidserver!800
2020-10-01 20:58:25 +00:00
Hans-Christoph Steiner
465ec2e84e
mirror-to-mirror.sh: also sync to ftp.lysator.liu.se, in parallel
This is the deployed script for pushing to the primary mirrors.  It starts
with the 'repo' section and runs all the rsyncs in parallel to each primary
mirror.  Once the 'repo' syncs are done, it does the same process for the
'archive' syncs.

[skip ci]
2020-10-01 14:49:04 +02:00
Hans-Christoph Steiner
e7edd96a02
gitlab-ci: use Alpine 3.11 for lint_format_safety_bandit_checks
This should provide a current version of pip to make safety stop
complaining.

3.12/3.11 breaks bandit, probably because of Python 3.8
2020-10-01 13:21:47 +02:00
Hans-Christoph Steiner
64e170b591
make -C locale update 2020-10-01 12:34:49 +02:00
riveravaldez
e1d3de71cf Translated using Weblate: Spanish (Argentina) (es_AR) by riveravaldez <riveravaldezmail@gmail.com>
Currently translated at 17.4% (83 of 477 strings)

Co-authored-by: riveravaldez <riveravaldezmail@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/
Translation: F-Droid/F-Droid Server
2020-10-01 12:34:03 +02:00
Hans-Christoph Steiner
7aab560622 Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!808
2020-10-01 10:30:55 +00:00
Hans-Christoph Steiner
abc6d5339e
fix failing checks in Weblate
Translated using Weblate: Norwegian Bokmål (nb_NO) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 66.8% (319 of 477 strings)

Translated using Weblate: French (fr) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 74.4% (355 of 477 strings)

Translated using Weblate: Kabyle (kab) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 4.4% (21 of 477 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Portuguese (Brazil) (pt_BR) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Chinese (Traditional) (zh_Hant) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/kab/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2020-10-01 11:04:24 +02:00
Fynn Godau
9c5cd28ea6 Translated using Weblate: German (de) by Fynn Godau <fynngodau@mailbox.org>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Fynn Godau <fynngodau@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
IvanDan
569e33bc2a Translated using Weblate: Italian (it) by IvanDan <ivandanza@gmail.com>
Currently translated at 39.6% (189 of 477 strings)

Co-authored-by: IvanDan <ivandanza@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Hinaloe
4343dbb90a Translated using Weblate: Japanese (ja) by Hinaloe <hina@hinaloe.net>
Currently translated at 1.6% (8 of 477 strings)

Co-authored-by: Hinaloe <hina@hinaloe.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ja/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Allan Nordhøy
976cd0aa03 Translated using Weblate: Norwegian Bokmål (nb_NO) by Allan Nordhøy <epost@anotheragency.no>
Currently translated at 66.6% (318 of 477 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Juraj Liso
51a449e71e Added translation using Weblate: Slovak (sk) by Juraj Liso <lisojuraj@gmail.com>
Co-authored-by: Juraj Liso <lisojuraj@gmail.com>
2020-10-01 11:03:49 +02:00
ssantos
18c19d578d Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>
Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Portuguese (Portugal) (pt_PT) by ssantos <ssantos@web.de>

Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Luca Zambarda
befece948e Translated using Weblate: Italian (it) by Luca Zambarda <luke.zambarda@gmail.com>
Currently translated at 36.8% (176 of 477 strings)

Co-authored-by: Luca Zambarda <luke.zambarda@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Eric
82c69afce3 Translated using Weblate: Chinese (Simplified) (zh_Hans) by Eric <spice2wolf@gmail.com>
Currently translated at 37.1% (177 of 477 strings)

Co-authored-by: Eric <spice2wolf@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
rational
6652692298 Translated using Weblate: French (fr) by rational <rationaldecay@gmail.com>
Currently translated at 74.4% (355 of 477 strings)

Co-authored-by: rational <rationaldecay@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Renaud Perrai
9409cee0ee Translated using Weblate: French (fr) by Renaud Perrai <renaud.perrai@protonmail.com>
Currently translated at 74.4% (355 of 477 strings)

Translated using Weblate: French (fr) by Renaud Perrai <renaud.perrai@protonmail.com>

Currently translated at 73.5% (351 of 477 strings)

Co-authored-by: Renaud Perrai <renaud.perrai@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
DGO
2907eb2cdf Translated using Weblate: French (fr) by DGO <d@geon.fr>
Currently translated at 73.5% (351 of 477 strings)

Co-authored-by: DGO <d@geon.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
gardenapple
05477dcb3c Translated using Weblate: Russian (ru) by gardenapple <gardenapple@posteo.net>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: gardenapple <gardenapple@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Yannick A
bd7d29cea1 Translated using Weblate: French (fr) by Yannick A. <yannick.armand@protonmail.com>
Currently translated at 72.3% (345 of 477 strings)

Translated using Weblate: French (fr) by Yannick A. <yannick.armand@protonmail.com>

Currently translated at 72.1% (344 of 477 strings)

Co-authored-by: Yannick A <yannick.armand@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
DGO
cdaf19d4c8 Translated using Weblate: French (fr) by DGO <d@geon.fr>
Currently translated at 72.1% (344 of 477 strings)

Co-authored-by: DGO <d@geon.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
taiyuan
1de8cab935 Translated using Weblate: Chinese (Simplified) (zh_Hans) by taiyuan <1006333969@qq.com>
Currently translated at 31.6% (151 of 477 strings)

Co-authored-by: taiyuan <1006333969@qq.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
WaldiS
84559c0572 Translated using Weblate: Polish (pl) by WaldiS <sto@tutanota.de>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: WaldiS <sto@tutanota.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Maximiliano Castañón
4ab7087d91 Translated using Weblate: Spanish (es) by Maximiliano Castañón <maximi89@gmail.com>
Currently translated at 66.8% (319 of 477 strings)

Co-authored-by: Maximiliano Castañón <maximi89@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Jeff Huang
7ec51a250d Translated using Weblate: Chinese (Traditional) (zh_Hant) by Jeff Huang <s8321414@gmail.com>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Jeff Huang <s8321414@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Jose
a6ad0c239b Translated using Weblate: French (fr) by Jose <mail.jose.n@gmail.com>
Currently translated at 70.6% (337 of 477 strings)

Co-authored-by: Jose <mail.jose.n@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Trey Yang
8b7fa48dee Translated using Weblate: Chinese (Simplified) (zh_Hans) by Trey Yang <stevsfy@gmail.com>
Currently translated at 31.6% (151 of 477 strings)

Co-authored-by: Trey Yang <stevsfy@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Lucas Brizzi
2660585695 Translated using Weblate: French (fr) by Lucas Brizzi <lucas.brizzi@hotmail.fr>
Currently translated at 70.4% (336 of 477 strings)

Co-authored-by: Lucas Brizzi <lucas.brizzi@hotmail.fr>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Wellington Terumi Uemura
73c9506230 Translated using Weblate: Portuguese (Brazil) (pt_BR) by Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
André Marcelo Alvarenga
40dc54506d Translated using Weblate: Portuguese (Brazil) (pt_BR) by André Marcelo Alvarenga <andrealvarenga@gmx.net>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: André Marcelo Alvarenga <andrealvarenga@gmx.net>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
ihor_ck
6ccaa209cd Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>
Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>

Currently translated at 46.7% (223 of 477 strings)

Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>

Currently translated at 41.0% (196 of 477 strings)

Translated using Weblate: Ukrainian (uk) by ihor_ck <igor_ck@outlook.com>

Currently translated at 41.0% (196 of 477 strings)

Co-authored-by: ihor_ck <igor_ck@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Virgile L
c80a5fb1b1 Translated using Weblate: French (fr) by Virgile L. <virgilelefevre313@gmail.com>
Currently translated at 69.6% (332 of 477 strings)

Co-authored-by: Virgile L <virgilelefevre313@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Manuela Silva
66bbe51a4d Translated using Weblate: Portuguese (Portugal) (pt_PT) by Manuela Silva <mmsrs@sky.com>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Manuela Silva <mmsrs@sky.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Nathan
a5ae4f4a66 Translated using Weblate: French (fr) by Nathan <bonnemainsnathan@gmail.com>
Currently translated at 69.1% (330 of 477 strings)

Co-authored-by: Nathan <bonnemainsnathan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Hans-Christoph Steiner
81a4e103b5 Translated using Weblate: Spanish (Argentina) (es_AR) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 16.5% (79 of 477 strings)

Translated using Weblate: Spanish (Mexico) (es_MX) by Hans-Christoph Steiner <hans@guardianproject.info>

Currently translated at 6.0% (29 of 477 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_MX/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Jeannette L
4e2844629c Translated using Weblate: French (fr) by Jeannette L <j.lavoie@net-c.ca>
Currently translated at 68.7% (328 of 477 strings)

Co-authored-by: Jeannette L <j.lavoie@net-c.ca>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Leviatansan21
99822a2b4f Translated using Weblate: Spanish (Mexico) (es_MX) by Leviatansan21 <jorgeivanponcehernandez@yahoo.co.jp>
Currently translated at 6.0% (29 of 477 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/es_MX/

Added translation using Weblate: Spanish (Mexico) (es_MX) by Leviatansan21 <jorgeivanponcehernandez@yahoo.co.jp>

Co-authored-by: Leviatansan21 <jorgeivanponcehernandez@yahoo.co.jp>
2020-10-01 11:03:49 +02:00
Besnik Bleta
e203cad567 Translated using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>
Currently translated at 97.0% (463 of 477 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/

Added translation using Weblate: Albanian (sq) by Besnik Bleta <besnik@programeshqip.org>

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
2020-10-01 11:03:49 +02:00
ERDwaYbR
d359ee3ad2 Translated using Weblate: Chinese (Simplified) (zh_Hans) by ERDwaYbR <weblate.uu@vvvvv5.uu.me>
Currently translated at 20.7% (99 of 477 strings)

Co-authored-by: ERDwaYbR <weblate.uu@vvvvv5.uu.me>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Hans-Christoph Steiner
08b44c5009 Translated using Weblate: French (fr) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 68.3% (326 of 477 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Julien Gontier
ad6f2b255d Translated using Weblate: French (fr) by Julien Gontier <emeuraudeman@protonmail.com>
Currently translated at 68.3% (326 of 477 strings)

Co-authored-by: Julien Gontier <emeuraudeman@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
random r
6b2b088665 Translated using Weblate: Italian (it) by random r <epsilin@yopmail.com>
Currently translated at 35.4% (169 of 477 strings)

Co-authored-by: random r <epsilin@yopmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Golubev Alexander
ce14b7a4a2 Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
anonymous
ddb10b3400 Translated using Weblate: French (fr) by anonymous <noreply@weblate.org>
Currently translated at 60.5% (289 of 477 strings)

Co-authored-by: anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Julien Gontier
2f255fc999 Translated using Weblate: French (fr) by Julien Gontier <emeuraudeman@protonmail.com>
Currently translated at 60.5% (289 of 477 strings)

Co-authored-by: Julien Gontier <emeuraudeman@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Andrey
8d29dbd819 Translated using Weblate: Russian (ru) by Andrey <andrey@mailbox.org>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Andrey <andrey@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
anonymous
41ea5eba15 Translated using Weblate: French (fr) by anonymous <noreply@weblate.org>
Currently translated at 52.4% (250 of 477 strings)

Co-authored-by: anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Julien Gontier
cf7c905cc1 Translated using Weblate: French (fr) by Julien Gontier <emeuraudeman@protonmail.com>
Currently translated at 52.4% (250 of 477 strings)

Co-authored-by: Julien Gontier <emeuraudeman@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Balázs Meskó
e45ccb9f24 Translated using Weblate: Hungarian (hu) by Balázs Meskó <meskobalazs@mailbox.org>
Currently translated at 16.3% (78 of 477 strings)

Co-authored-by: Balázs Meskó <meskobalazs@mailbox.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Hans-Christoph Steiner
4921003ddd Translated using Weblate: Ukrainian (uk) by Hans-Christoph Steiner <hans@guardianproject.info>
Currently translated at 40.8% (195 of 477 strings)

Co-authored-by: Hans-Christoph Steiner <hans@guardianproject.info>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Oğuz Ersen
8322126c9f Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>
Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>

Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>

Currently translated at 100.0% (477 of 477 strings)

Translated using Weblate: Turkish (tr) by Oğuz Ersen <oguzersen@protonmail.com>

Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Golubev Alexander
d0dc564423 Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
anonymous
abc3d740e9 Translated using Weblate: Russian (ru) by anonymous <noreply@weblate.org>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: anonymous <noreply@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Mingun
18380eeff8 Translated using Weblate: Russian (ru) by Mingun <Alexander_Sergey@mail.ru>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Mingun <Alexander_Sergey@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Golubev Alexander
92f5a3106d Translated using Weblate: Russian (ru) by Golubev Alexander <fatzer2@gmail.com>
Currently translated at 98.1% (468 of 477 strings)

Co-authored-by: Golubev Alexander <fatzer2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Wellington Terumi Uemura
dfb4776f41 Translated using Weblate: Portuguese (Brazil) (pt_BR) by Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Oliver
e02d015da9 Translated using Weblate: German (de) by Oliver <websites@posteo.de>
Currently translated at 100.0% (477 of 477 strings)

Co-authored-by: Oliver <websites@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/
Translation: F-Droid/F-Droid Server
2020-10-01 11:03:49 +02:00
Marcus
b5ce285f9f Merge branch '697-verify-reproducible-apks-with-jarsigner' into 'master'
Use jarsigner to verify reproducible APKs

Closes #697

See merge request fdroid/fdroidserver!804
2020-09-29 12:18:57 +00:00
akwizgran
896ffed703 Use jarsigner to verify reproducible APKs 2020-09-29 12:18:56 +00:00
Hans-Christoph Steiner
c58fae8c6f Merge branch 'buildserver_dependencies' into 'master'
add now required packages to buildserver installation

See merge request fdroid/fdroidserver!806
2020-09-29 11:46:49 +00:00
Marcus Hoffmann
ba28d631b7 add now required packages to buildserver installation
Dependencies introduced in ffdroid/fdroidserver!798
2020-09-27 12:47:03 +02:00
Hans-Christoph Steiner
3c19490b34
jenkins-test: support default keystore.p12 2020-09-24 17:44:40 +02:00
Hans-Christoph Steiner
94dc6b46c1
update CHANGELOG with PKCS12 keystore changes 2020-09-24 17:43:59 +02:00
Michael Pöhn
1baa5fd895 Merge branch 'signing-2.0-fixes-with-build-tweaks' into 'master'
Signing 2.0 fixes with build tweaks

See merge request fdroid/fdroidserver!801
2020-09-23 15:03:30 +00:00
Hans-Christoph Steiner
d6d5ad6b7c Merge branch 'public-api' into 'master'
expose public api in fdroidserver module

Closes #831

See merge request fdroid/fdroidserver!798
2020-09-23 14:57:47 +00:00
Hans-Christoph Steiner
29965a1598 Merge branch 'metadata-refactoring' into 'master'
refactor metadata.warn_or_exception to private func

See merge request fdroid/fdroidserver!796
2020-09-23 14:57:28 +00:00
Hans-Christoph Steiner
8c1cf724e1 init: force keystore to PKCS12 format
Java 8 supports PKCS12, Java 9+ uses PKCS12 by default, which should have
a .p12 file extension.  `fdroid init` has always just added .jks which is
the old default format.

* https://docs.oracle.com/en/java/javase/12/tools/keytool.html#GUID-5990A2E4-78E3-47B7-AE75-6D1826259549__GUID-A8B9E662-C1C2-4A0E-9307-A8464F0E95D4
* https://openjdk.java.net/jeps/229
2020-09-23 16:40:37 +02:00
Hans-Christoph Steiner
ad6985cb40 update: allow --nosign to work with only repo_pubkey set
repo_pubkey is required for `fdroid update --nosign`, but repo_keyalias is
not.  For regular signing, the opposite true.
2020-09-17 15:25:56 +02:00
Hans-Christoph Steiner
af4a2ab736 gitlab-ci: speed up test runs that do not need git history
GIT_DEPTH sets how many commits of history to clone in CI Jobs.
gitlab.com defaults to 50 with a max of 1000.  The metadata_v0 job is
the only job that needs history, and it needs more than 50.  So this
sets the default to 1, then metadata_v0 to 1000.

https://docs.gitlab.com/ee/ci/pipelines/settings.html#git-shallow-clone
2020-09-17 15:25:56 +02:00
Hans-Christoph Steiner
59018a887b gitlab-ci: ensure android-23 is present for fdroid build test
This test builds https://gitlab.com/fdroid/ci-test-app, which uses android-23
2020-09-17 15:25:56 +02:00
Michael Pöhn
69e4d48924 Merge branch 'remove-force_build_tools' into 'master'
Remove force_build_tools config option

Closes #738

See merge request fdroid/fdroidserver!797
2020-09-16 16:58:43 +00:00
Michael Pöhn
75c4be2ea9 expose public api in fdroidserver module 2020-09-16 18:26:16 +02:00
Marcus
a1c4e3f588 Merge branch 'buildtools3002' into 'master'
build-tools 30.0.2

See merge request fdroid/fdroidserver!795
2020-09-16 15:36:34 +00:00
Hans-Christoph Steiner
08f724651e remove "force_build_tools" config option, closes #738
The `force_build_tools` config option was added a long time ago to
brute force the _build-tools_ version by trying to replace the value
in `build.gradle` files. This is never something that should be used
in production, since the app's build metadata should specify this kind
of thing. And now that we're moving towards _androguard_ for
everything except fdroid build and fdroid publish, _build-tools_ will
no longer even be used in the other commands.
2020-09-16 16:30:49 +02:00
Hans-Christoph Steiner
df6cf52009 remove last vestige of latestapps.dat 2020-09-16 16:12:17 +02:00
Michael Pöhn
0938561628 Merge branch 'mirror-rsync-script' into 'master'
mirror rsync script

See merge request fdroid/fdroidserver!792
2020-09-16 14:11:38 +00:00
Hans-Christoph Steiner
8b406ace08 mirror-to-mirror.sh: update script to handle multiple primary mirrors 2020-09-16 16:06:23 +02:00
Hans-Christoph Steiner
94cd2a960c add script used to rsync repo to primary mirrors 2020-09-16 16:01:13 +02:00
Michael Pöhn
301ca0a949 refactor metadata.warn_or_exception to private func 2020-09-16 15:25:10 +02:00
Licaon_Kter
de9e0f4fc3 build-tools 30.0.2 2020-09-16 15:58:50 +03:00
Hans-Christoph Steiner
3c148941f7 Merge branch 'remove_latestapps_dat' into 'master'
remove unused latestapps.dat code

See merge request fdroid/fdroidserver!794
2020-09-15 07:48:01 +00:00
Hans-Christoph Steiner
f927cd681f Merge branch 'targetsdk_not_set_fix' into 'master'
fallback to minsdk when targetsdk isn't set

See merge request fdroid/fdroidserver!793
2020-09-15 07:38:07 +00:00
Marcus Hoffmann
36e5fec418 remove unused latestapps.dat code
latestapps.dat was being used for the old-website, it's not used anymore

Fixes the following crash in production:
```
2020-09-13 19:26:59,000 CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/home/fbuild/fdroidserver/fdroid", line 22, in <module>
    fdroidserver.__main__.main()
  File "/home/fbuild/fdroidserver/fdroidserver/__main__.py", line 230,
in main
    raise e
  File "/home/fbuild/fdroidserver/fdroidserver/__main__.py", line 211,
in main
    mod.main()
  File "/home/fbuild/fdroidserver/fdroidserver/update.py", line 2451, in
main
    app = apps[appid]
KeyError: '45b464b398a7d9fac5a186bd3d3d8dc1e6a25f7f9cd48c7462619b1e5fba87c2'
```
2020-09-14 16:22:09 +02:00
Marcus Hoffmann
7de601a5b5 fallback to minsdk when targetsdk isn't set
Androguard already has a function always returning an int here, so let's
use that.

Also put in a guard against minsdk not being set.
2020-09-14 14:12:18 +02:00
Marcus
1f7228d538 Merge branch 'update_test_improvements' into 'master'
test improvements/fixes

See merge request fdroid/fdroidserver!791
2020-09-10 17:20:11 +00:00
Marcus Hoffmann
b2f6483671 use new find_apksigner in test_scan_apk 2020-09-10 18:59:39 +02:00
Marcus Hoffmann
7eb32feaa5 skip new signing test when we can't find apksigner
Also add some error handling to the find_apksigner() method.
2020-09-10 18:59:39 +02:00
Marcus Hoffmann
f6b7572b10 fix fedora test
minimum build tools version is determined by apksigner now.
2020-09-10 18:59:39 +02:00
Marcus Hoffmann
2367461465 tests: debian: apksigner is required for the tests to run now
We need to use a shell wrapper for apksigner though because docker and
binfmt don't play well together
2020-09-10 18:59:39 +02:00
Marcus Hoffmann
89f63b3e1c tests: use yaml.Loader on older yaml versions 2020-09-10 18:38:43 +02:00
Marcus Hoffmann
709f4c9b18 pickle -> yaml rename 2020-09-10 18:38:43 +02:00
Marcus Hoffmann
e613b65098 we need FullLoader for one test, we are dumping custom objects 2020-09-10 18:38:43 +02:00
Marcus Hoffmann
9bf0758f19 make update.Testcase tests work standalone 2020-09-10 18:38:43 +02:00
Marcus Hoffmann
4cd96d4a9f use yaml safeloader in tests
Try to use CSafeLoader when possible because its significantly faster.
Use the normal Safeloader otherwise. (This mirrors the non-test code
behaviour)
2020-09-10 14:18:36 +02:00
Hans-Christoph Steiner
06766ba48b Merge branch 'signing' into 'master'
sign using apksigner

Closes #827 and #634

See merge request fdroid/fdroidserver!736
2020-09-10 11:49:02 +00:00
Marcus Hoffmann
dfecdcc1bd set minimum apksigner version to 26.0.2 2020-09-10 13:20:01 +02:00
Marcus Hoffmann
145ba9db54 fix apksigner smartcardoptions
apksigner documents the options as --ks-provider-class and --ks-provider-arg
those seem to be accepted but fail when actually making a signature with
weird internal exceptions. The new options actually work.
From: https://geoffreymetais.github.io/code/key-signing/#scripting
2020-09-09 22:51:08 +02:00
Marcus Hoffmann
74af61f255 remove providerName from default smartcardoptions
apksigner doesn't recognize the SunPKCS11-OpenSC set via providerName
Neither jarsigner nor apksigner need this to work.
2020-09-09 22:50:58 +02:00
Marcus Hoffmann
768a91370c publish: use apksigner for signing apks with targetSDK>=30
This makes apksigner a hard requirement of the signing procedure.
We'll first try to find a globally installed version from PATH and if
that's not available fall back to using a version from build-tools.

Future TODO: always sign with apksigner, blocked on signature transplant
support for apksigv2/v3

Closes fdroid/fdroidserver#634
Closes fdroid/fdroidserver#827
2020-09-09 18:09:28 +02:00
Marcus
b1128325b5 Merge branch 'scanner_fix_ci' into 'master'
scanner: check for `test` in path relative to build dir

See merge request fdroid/fdroidserver!790
2020-08-30 18:32:42 +00:00
Marcus Hoffmann
c90a72e14d scanner: check for test in path relative to build dir
This was degrading scanner errors to warnings whenever the path from the
current running install of fdroidserver contained test, as has been
happening in the CI image builder:

https://gitlab.com/fdroid/ci-images-server/-/blob/master/test#L6
2020-08-30 20:09:19 +02:00
Marcus
9ae8d7ae6c Merge branch 'pyasn1_modules' into 'master'
unpin pyasn1_modules

See merge request fdroid/fdroidserver!788
2020-08-28 16:07:56 +00:00
Marcus Hoffmann
637c73a882 unpin pyasn1_modules
It currently  runs fine on archlinux with pyasn1-modules 0.2.8.
And guix just reported packaging it with 0.2.2
2020-08-28 17:46:53 +02:00
Hans-Christoph Steiner
d595948616
jenkins-test: remove rewritemeta, it is well covered elsewhere
The jenkins.debian.net tests are brittle enough as it is.

[skip ci] - this doesn't run on gitlab-ci
2020-08-26 10:40:15 +02:00
Marcus Hoffmann
eb57723096 fix accidentally changed hash of gradle 6.5.1
This was changed in 394ad8f863 when
deleting 6.6 from makebuildserver but deleting one line up instead of
down.
2020-08-25 23:15:25 +02:00
Marcus Hoffmann
bc6fa986d1 fix vcs test
It doesn't need a valid sdk_path, so just set it to something.
The test was failing when ANDROID_HOME wasn't set in the env.
2020-08-25 23:09:28 +02:00
Marcus Hoffmann
394ad8f863 add gradle 6.6.1 2020-08-25 23:06:21 +02:00
Marcus
e169238c60 Merge branch 'extlib_scanignore' into 'master'
minor bugfixes

Closes #795, #796, and #759

See merge request fdroid/fdroidserver!771
2020-08-25 19:53:44 +00:00
Marcus Hoffmann
34717fe88a fix typoes 2020-08-25 21:32:54 +02:00
Marcus Hoffmann
059ebd4bc9 tests: add check that we trigger a scanner error without setting it as extlib 2020-08-25 21:32:29 +02:00
Marcus Hoffmann
d07b4123e9 scanner: docstrings for handleproblem functions 2020-08-25 21:32:29 +02:00
Marcus Hoffmann
a656be82ae update: calculate added date for an app over all apks
This was accidentally changed in !756 because the functionality was
hidden in `apply_info_from_latest_apk` which is a less than stellar name
for something that also applies infos from app->apk and in this case did
apply info from *oldest* apk->app.
So instead move that into a separate step.

Note: This restores the previous behaviour. There's discussion in #801
on further changes to make the added date also work for repos which
don't keep an archive at all.
2020-08-25 21:32:29 +02:00
Marcus Hoffmann
a301a1ba93 add test for correct added date for apps 2020-08-25 21:32:29 +02:00
Marcus Hoffmann
d5311fff09 vcs: don't fail when git remote set-head fails
There's valid use-cases for setups where set-head --auto fails. This
happens when building an app from a gitlab CI checkout where no remote
tracking branches are setup.

This isn't really a fatal error. When a remote HEAD exists we'll
continue setting it and if none exists and something requires this being
set up later on (either a build script or fdroid checkupdates) then
we'll fail later on with "origin/HEAD not being known to git".
By not failing early we allow the majority of use-cases that don't need
a remote HEAD to continue with just a warning.

The setup in which this can be reproduced is as follows:
(This is roughly what gitlab runner does when setting up a git checkout
for CI)
- mkdir test && cd test
- git init
- git remote add https://gitlab.com/Bubu/fdroidclassic.git
- git fetch --all
- git checkout db0d2a9a5d1d89101a344169013ac5d518185f31
- mkdir nested_repo && cd nested_repo
- git clone .. .
- git remote set-head origin --auto
  > error: Cannot determine remote HEAD
2020-08-25 21:32:29 +02:00
Marcus Hoffmann
fce4721695 add a vcs.TestCase 2020-08-25 21:32:29 +02:00
Marcus Hoffmann
03e723b1af fix crash when scanner wants to remove the same file more than once
A file can be flagged for multiple problems (i.e. multiple unknown maven
repos in one build.gradle file that is included in a scandelete path).

The scanner will try to delete it once for every problem detected, we
don't really care, as long as the file is gone.

fixes fdroid/fdroidserver#759
2020-08-25 21:32:29 +02:00
Marcus Hoffmann
61736f3f50 scanner: add test for #759 2020-08-25 21:32:29 +02:00
Marcus Hoffmann
78491a0a5b add used extlibs to scanignore path
fixes fdroid/fdroidserver#795
2020-08-25 21:32:29 +02:00
Marcus Hoffmann
f46e99a5c4 test for #796
The extlib test is in build because it tests the interaction between
prepare_source with a later scan as it is run from build.py
2020-08-25 21:31:07 +02:00
Marcus
8801d37649 Merge branch 'publish_json' into 'master'
Some publish.py improvements

Closes #820

See merge request fdroid/fdroidserver!787
2020-08-25 12:33:39 +00:00
Marcus Hoffmann
882f8cfe19 test_check_for_key_collisions: test with an actual collision
Genrated with this script:
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/787#note_401275883
2020-08-24 21:19:59 +02:00
Marcus Hoffmann
d9a6bfb0a9 CI: install pyjks as dependency for tests 2020-08-24 21:11:55 +02:00
Marcus Hoffmann
a114c73c2d publish: factor out the signing key creation into a method 2020-08-24 19:34:08 +02:00
Marcus Hoffmann
7813a17cf8 publish: extract a few functions out of main
publish is currently not reusable from other modules as everything is
happening in main. It's also not testable from python unittests.

There's already a function for getting the key_alias, so we can use
that.

Introduce tests for the split out functions.
2020-08-24 19:34:08 +02:00
Marcus Hoffmann
eaca3d5faa publish: better json reporting
* newKeyAliases wasn't providing any useful information
* generatedKeys now contains the used keyalias as well
* signedApks now also records the used keyalias for each apk
2020-08-24 19:34:08 +02:00
Marcus Hoffmann
ca86c18e33 publish: reformat 2020-08-24 19:34:08 +02:00
Marcus
3954814a3b Merge branch 'post-txt-refactor' into 'master'
Post .txt refactor

See merge request fdroid/fdroidserver!786
2020-08-24 17:05:39 +00:00
Hans-Christoph Steiner
0b92e60266 handle file type detection using Pythonic methods
This ditches the custom common.get_extension() for straight core Python
methods.  This should make the code closer to Python conventions.  For
example, pathlib also includes the "." in the extension it returns.
2020-08-24 17:05:49 +02:00
Hans-Christoph Steiner
da31120b5a build: refactor missing srclibs error reporting for only .yml 2020-08-24 17:05:49 +02:00
Hans-Christoph Steiner
bd1f05e370 Merge branch 'yaml-is-king' into 'master'
remove all code for handling txt metadata

See merge request fdroid/fdroidserver!772
2020-08-24 14:57:19 +00:00
Michael Pöhn
5c3db9a7cc rewritemeta: overwrite existing metadata only if no exception occurred 2020-08-20 20:40:15 +02:00
Michael Pöhn
c45ef453fd remove SUPPORTED_FORMATS list from rewritemeta 2020-08-20 20:40:15 +02:00
Michael Pöhn
fac033314a fix a comment and a warning 2020-08-20 20:40:15 +02:00
Michael Pöhn
f5a5fffb10 purge accepted_formats from config 2020-08-20 20:40:15 +02:00
Michael Pöhn
40cbbd3173 update changelog: remove txt metadata support 2020-08-20 20:40:15 +02:00
Michael Pöhn
f8bc51399e remove txt from nightly default supported metadata formats 2020-08-20 20:40:15 +02:00
Michael Pöhn
4dc503ed28 remove txt form accepted format list 2020-08-20 20:40:15 +02:00
Michael Pöhn
fd2cfb0c7d remove code for copying txt srclibs to buildserver 2020-08-20 20:40:15 +02:00
Michael Pöhn
681a27546c fix linking to yml metadata in wiki 2020-08-20 20:40:15 +02:00
Michael Pöhn
cb368a674c remove txt srclib support 2020-08-20 20:40:15 +02:00
Michael Pöhn
c8f25c2652 remove txt metadata support 2020-08-20 20:40:15 +02:00
Michael Pöhn
2ec90bb490 remove support for rewriting to txt 2020-08-20 20:40:15 +02:00
Michael Pöhn
bc1398f594 remove json metadata support 2020-08-20 20:40:15 +02:00
Hans-Christoph Steiner
29eea3f739 Merge branch 'androguard_minsdk' into 'master'
common: use androguard to figure out minSDK version

Closes #816

See merge request fdroid/fdroidserver!785
2020-08-20 12:45:28 +00:00
Marcus Hoffmann
ba28b44ae7 common: use androguard to figure out minSDK version
Closes: #816
2020-08-19 19:49:39 +02:00
Marcus
89dac62b10 Merge branch 'fix-gradlew-fdroid' into 'master'
gradlew-fdroid: fix random failures due to empty $line, closes #815

Closes #815

See merge request fdroid/fdroidserver!784
2020-08-19 15:12:26 +00:00
Hans-Christoph Steiner
f8a1b45df5 gradlew-fdroid: fix random failures due to empty $line, closes #815 2020-08-19 16:28:58 +02:00
Hans-Christoph Steiner
6258a939e6 Merge branch 'smartcard_hsm' into 'master'
switch publish to common.sign_apk and support smartcard HSMs for app signing

See merge request fdroid/fdroidserver!782
2020-08-17 10:09:35 +00:00
Marcus Hoffmann
a8e9653b96 update: make --create-key work with a HSM 2020-08-14 17:27:58 +02:00
Marcus Hoffmann
004d13a48a make publish and update work with a smartcard HSM
Followup to fdroid/fdroidserver!779.

We need to add smartcardoptions to every call to keytool and jarsigner
as well as handle when keypass not being required and not allowed for
pkcs11 keystores.
2020-08-14 17:27:58 +02:00
Marcus Hoffmann
066978cbcf publish: use common signing method
This is currently still jarsigner based but will at least use sha256
when possible
2020-08-14 15:07:04 +02:00
Marcus Hoffmann
6128f93d26 publish: keystore "NONE" is a special case and doesn't need to exist 2020-08-14 15:06:33 +02:00
Marcus
11236deec6 Merge branch 'patch-1' into 'master'
Spelling: Deploy key, stripping, SSH

See merge request fdroid/fdroidserver!781
2020-08-13 15:03:42 +00:00
Marcus
a997ad7b84 Merge branch 'smartcard-hsm-fixes' into 'master'
Smart Card HSM fixes

See merge request fdroid/fdroidserver!779
2020-08-13 15:02:04 +00:00
Marcus Hoffmann
c3c6a20b7c gradlew-fdroid: fix typo 6.5 -> 6.6 2020-08-11 19:04:19 +02:00
Marcus Hoffmann
d3e8766a3c add gradle 6.6 2020-08-11 09:13:20 +02:00
Marcus
b3fb632846 Merge branch 'platform29-05' into 'master'
Add platform-29_r05

See merge request fdroid/fdroidserver!780
2020-08-11 07:09:20 +00:00
Allan Nordhøy
df7bc77465 Spelling: Deploy key, stripping, SSH 2020-08-10 10:53:23 +00:00
TacoTheDank
7c44669501 Add platform-29_r05 2020-08-09 20:06:30 -04:00
Hans-Christoph Steiner
226f490c52 declare LICENSE file in setup.cfg 2020-08-07 15:30:33 +02:00
Hans-Christoph Steiner
f779ce276a 'keypass' is not required in config if using a HSM 2020-08-07 15:30:33 +02:00
Hans-Christoph Steiner
d213c8b37c update: validate smartcardoptions when using a HSM for the keystore 2020-08-07 15:30:33 +02:00
Hans-Christoph Steiner
7dcf4f5680 index: smartcardoptions is a list or tuple, but only lists can be added 2020-08-07 15:30:33 +02:00
Hans-Christoph Steiner
54257f8f6a init: generate opensc-fdroid.cfg rather than copying from examples
This file is so simple, it is better to skip the complexity of trying to
find the installed examples folder, especially when considering Windows and
macOS, with their odd paths.
2020-08-07 15:30:33 +02:00
Hans-Christoph Steiner
838eee355f Merge branch 'import-kivy' into 'master'
import kivy and two fixes

See merge request fdroid/fdroidserver!778
2020-08-07 11:09:12 +00:00
Hans-Christoph Steiner
a6c60a908a import: add support for kivy buildozer projects 2020-08-07 12:48:15 +02:00
Hans-Christoph Steiner
960d31af2a import: standardize on 'appid' var name for Application ID
The rest of the fdroidserver code uses 'appid' or 'packageName'.  The official
Android name is "Application ID".  "Package Name" is the Java term, and it
is used in Android in Java code.
2020-07-30 14:57:19 +02:00
Hans-Christoph Steiner
2858c73b87 gradlew-fdroid: more robust method for handling Windows linefeeds
The bash pattern matching was getting confused by the Windows linefeeds,
this strips them before the string hits the bash pattern tricks.

* https://github.com/premnirmal/StockTicker/issues/145
2020-07-30 14:57:19 +02:00
Hans-Christoph Steiner
10fa912c16 deploy: remove git remotes not enabled in servergitmirrors
If the repo operator removes an item from servergitmirrors, it should auto-
matically remove the remote.
2020-07-30 14:57:19 +02:00
Hans-Christoph Steiner
5d28eec115 Merge branch 'buster-basebox-checksums' into 'master'
add checksums for basebox-buster64 0.6.0

See merge request fdroid/fdroidserver!777
2020-07-22 11:31:05 +00:00
Michael Pöhn
d4296fdf3b add official checksums for basebox-buster64 0.6.0 2020-07-22 13:09:26 +02:00
Marcus
9c072690eb Merge branch 'buildtools3001' into 'master'
Add buildTools 30.0.1 and platform-29_r04

See merge request fdroid/fdroidserver!776
2020-07-18 23:43:53 +00:00
TacoTheDank
3de9e46702 Add platform-29_r04 2020-07-18 19:22:50 -04:00
TacoTheDank
cfed640adc Add buildTools 30.0.1 2020-07-18 19:17:42 -04:00
Marcus
f5a32aa69e Merge branch 'add_gradle_651' into 'master'
Add gradle 6.5.1

See merge request fdroid/fdroidserver!775
2020-07-13 18:44:14 +00:00
Hans-Christoph Steiner
c8b0e9d509 Merge branch 'log_timestamp' into 'master'
Add timstamp to logs

See merge request fdroid/fdroidserver!774
2020-07-07 15:12:13 +00:00
xynngh
393f08ff25 Add gradle 6.5.1 2020-07-07 14:02:56 +04:00
Jochen Sprickerhof
d8b73dd241 Add timstamp to logs 2020-07-04 18:56:10 +02:00
Hans-Christoph Steiner
174bbf0bdc
jenkins-setup-build-environment: fix my stoopid typo 2020-06-29 09:56:37 +02:00
Hans-Christoph Steiner
e659a5353d
provision-apt-get-install: gpg needs to come from stretch-backports
https://gitlab.com/eighthave/fdroiddata/-/jobs/611438997
Otherwise it fails to install:

```
  gpg : Depends: gpgconf (= 2.2.20-1~bpo9+1)
        Depends: libassuan0 (>= 2.5.0) but 2.4.3-2 is to be installed
        Depends: libgpg-error0 (>= 1.35) but 1.26-2 is to be installed
```

* 7e8c244473
* !769
2020-06-25 18:08:31 +02:00
Hans-Christoph Steiner
f70a4e11dd
jenkins-setup-build-environment: --skip-scan on old builds
The scanner has gotten stricter: !758

[skip ci] since this only affects jenkins.debian.net
2020-06-25 11:53:29 +02:00
Marcus
1902bfb6fc Merge branch 'fix_760' into 'master'
update.py (and index.py) refactoring

Closes #524 and #760

See merge request fdroid/fdroidserver!756
2020-06-24 22:37:51 +00:00
Marcus Hoffmann
3ebc44c54f fix tests after they switched to yaml 2020-06-25 00:07:42 +02:00
Marcus Hoffmann
07caa88920 don't include the localized metadata things for /archive
We haven't done this so far and it's a potential big change in archive
size and update performance.
2020-06-25 00:07:42 +02:00
Marcus Hoffmann
d720c99ae5 refactor update.py:main
This makes update.py:main a lot saner by removing a lot of the
implicit assumptions between the different stages of generating the
repository index.

* mostly unify repo and archive processing, that means the archive is
  now actually getting the same treatment regarding i.e. fastlane data.
  Previously the archive didn't get considered at all here.
* already filter the list of apps to include in a repo in update.py and
  give that prefiltered list to index. This makes sure we actually only
  copy fastlane/triple-t/etc. stuff for apps ending up in the index.
  This both, can save a lot of time if there are a lot of old /build
  dirs lying around and doesn't clutter /repo with things that aren't
  referenced from the index.

Closes fdroid/fdroidserver#524
2020-06-24 23:53:36 +02:00
Marcus Hoffmann
e66683720b move index sorting to index module
This is a historic detail of the index format, so move it there.
For wiki update and status json there's really no reason why this should
be done in alphabetic app name order. Use the default sort order by
appid.
2020-06-24 23:53:36 +02:00
Marcus Hoffmann
8c71637d43 update: make copy_triple_t_store_metadata and insert_localized_app_metadata not assume /repo
This will enable copying the localized metadata to the archive as well.
2020-06-24 23:53:36 +02:00
Marcus Hoffmann
ee4ee85cbd update:archive_old_apks: handle apps with no CVC
If an app doesn't have a CVC, we can just skip any special archive
handling.
Also rename weirdly named `res` to `apkList`.
2020-06-24 23:53:36 +02:00
Marcus Hoffmann
ee162d9e62 gitignore tests/repo/status 2020-06-24 23:53:35 +02:00
Marcus Hoffmann
03881154c6 metadata: make linkresolver an actual object
Previously this was magically capturing the apps dict when passing it around as a
function. This also moved the code to the metadata module.

Add a test doing read_metadata where the linkresolver is used. This
happens when the apps we read have a [[app.id]] link to another app.
2020-06-24 23:53:35 +02:00
Marcus Hoffmann
a4177e5ec3 add test for correct whatsnew handling without CVC 2020-06-24 23:53:35 +02:00
Marcus
ed8c87950d Merge branch 'replacement-var-abs-path' into 'master'
Replacement var abs path

Closes #725

See merge request fdroid/fdroidserver!770
2020-06-24 21:01:35 +00:00
Hans-Christoph Steiner
5fce16c847
remove unused, confusing arg to common.getsrclib() 2020-06-24 22:40:27 +02:00
Hans-Christoph Steiner
d0f426e076
replace $$srclib$$ with an absolute path
closes #725
2020-06-24 22:40:26 +02:00
Marcus
b3f5176654 Merge branch 'fix-bugs' into 'master'
Fix bugs

Closes #725

See merge request fdroid/fdroidserver!769
2020-06-24 20:04:51 +00:00
Hans-Christoph Steiner
1e6f99988a fix typo when looking for build.gradle.kts 2020-06-24 21:43:58 +02:00
Hans-Christoph Steiner
7e8c244473 provision-apt-get-install: ensure gpg is installed
The basebox installs gpg, but when this script is used to provision
a GitLab CI Runner, gpg was missing.  It is used in some builds.
2020-06-24 21:43:58 +02:00
Hans-Christoph Steiner
238f048257 update: fix crash when liberapay: or open_collective: not in FUNDING.yml
closes #799
2020-06-24 21:39:43 +02:00
Hans-Christoph Steiner
82eceebd13 Merge branch 'parse-donation-links-from-funding.yml' into 'master'
update: insert donation links based on FUNDING.yml

See merge request fdroid/fdroidserver!754
2020-06-18 04:44:08 +00:00
Hans-Christoph Steiner
0b4112f743 Merge branch 'scanner-safe_path_test' into 'master'
scanner: add test with abs/rel paths as run from `fdroid build`

See merge request fdroid/fdroidserver!768
2020-06-17 08:56:42 +00:00
Hans-Christoph Steiner
2c4e9beacb scanner: add test with abs/rel paths as run from fdroid build
https://gitlab.com/fdroid/fdroidserver/-/issues/791#note_361018050
!767
2020-06-17 10:33:55 +02:00
Hans-Christoph Steiner
62c8fd5999
add Liberapay: field with username as data
Liberapay was originally included using a numeric ID, since they had
not yet finalized the public URLs.  Now it is a username.  So this
logic prefers the username in Liberapay: field, and keeps the old
LiberapayID: to ease migration.  LiberapayID: will not override
Liberapay:.  Clients are expected to prefer Liberapay: over LiberapayID:
2020-06-16 15:35:28 +02:00
Hans-Christoph Steiner
0183592526
update: insert donation links based on FUNDING.yml
GitHub has specified FUNDING.yml, a file to include in a git repo for
pointing people to donation links.  Since F-Droid also points people
to donation links, this parses them to fill out Donate:
and OpenCollective:.  Specifying those in the metadata file takes
precedence over the FUNDING.yml.  This follows the same pattern as how
`fdroid update` includes Fastlane/Triple-T metadata.  This lets the
git repo maintain those specific donations links themselves.

https://help.github.com/en/articles/displaying-a-sponsor-button-in-your-repository#about-funding-files

The test file was generated using:

```python
import os, re, yaml

found = dict()
for root, dirs, files in os.walk('.'):
    for f in files:
        if f == 'FUNDING.yml':
            with open(os.path.join(root, f)) as fp:
                data = yaml.safe_load(fp)
            for k, v in data.items():
                if k not in found:
                    found[k] = set()
                if not v:
                    continue
                if isinstance(v, list):
                    for i in v:
                        found[k].add(i)
                else:
                    found[k].add(v)

            with open('gather-funding-names.yaml', 'w') as fp:
                output = dict()
                for k, v in found.items():
                    output[k] = sorted(v)
                yaml.dump(output, fp, default_flow_style=False)
```
2020-06-16 15:35:26 +02:00
Marcus
8d517d4583 Merge branch 'simple_apk_scanner' into 'master'
Simple apk scanner

See merge request fdroid/fdroidserver!766
2020-06-15 18:03:19 +00:00
Marcus
f84818c15e scanner: add a simple scan for blacklisted classes after build step
add com.android.billing to blacklist, see
https://gitlab.com/fdroid/fdroiddata/-/issues/2070#note_360611289
2020-06-15 18:03:19 +00:00
Marcus
6986e73506 Merge branch 'allow_appcenter' into 'master'
scanner: allow microsoft appcenter

See merge request fdroid/fdroidserver!764
2020-06-15 10:46:51 +00:00
Marcus Hoffmann
670328c9e5 scanner: allow microsoft appcenter, except appcenter-push
This sdk is open source. It was added because appcenter has a dependency
to play-services. It's possible though to build an app using appcenter
that doesn't pull in play services, so we can't blanket ban the sdk.

The appcenter-push modules has obvious refenrences to firebase, so it's
safe to error on that.

Ref: https://phabricator.wikimedia.org/T254980
2020-06-15 12:24:46 +02:00
Marcus
12f4ae3039 Merge branch 'fix_791' into 'master'
scanner: fix wrong path being passed to function

Closes #791

See merge request fdroid/fdroidserver!767
2020-06-13 11:03:30 +00:00
Marcus Hoffmann
3a9f1e845c scanner: fix wrong path being passed to function
Also make rename the parameter in safe_path to make it clear that this
is just a relative path.

Closes fdroid/fdroidserver#791.
2020-06-13 03:01:54 +02:00
Marcus
be814bf002 Merge branch 'importsubmodules' into 'master'
Import - Detect .gitmodules and add submodules build line

See merge request fdroid/fdroidserver!765
2020-06-12 19:26:23 +00:00
Licaon_Kter
72fde0f10b Detect .gitmodules and add submodules build line 2020-06-11 16:36:54 +03:00
Marcus Hoffmann
294799e2f5 scanner: fix options handling
closes fdroid/fdroidserver#789
2020-06-11 11:44:00 +02:00
Marcus
0e025e2ae9 Merge branch 'scanner-overhaul' into 'master'
scanner file type overhaul

Closes #394

See merge request fdroid/fdroidserver!758
2020-06-11 09:23:39 +00:00
Marcus
95623361ae Merge branch 'master' into 'master'
Update NDK to r21d and add buildtools 30.0.0

See merge request fdroid/fdroidserver!763
2020-06-10 20:21:26 +00:00
TacoTheDank
07992177bf Add build tools 30.0.0 2020-06-10 15:59:04 -04:00
TacoTheDank
0216513da6 Upgrade NDK r21c to r21d 2020-06-10 15:55:53 -04:00
Hans-Christoph Steiner
0837289935 scanner: fix regex for matching URLs in gradle maven{} blocks
closes #465

This script generated gradle-maven-blocks.yaml:
```python
import os
import re
import yaml

pat = re.compile(r'\smaven\s*{[^}]+}')

finds = set()
for root, dirs, files in os.walk('.'):
    for f in files:
        if '.gradle' in f:
            with open(os.path.join(root, f), errors='surrogateescape') as fp:
                contents = fp.read()
            for m in pat.findall(contents):
                finds.add(m)

with open('finds.yaml', 'w') as fp:
    yaml.dump(sorted(finds), fp, default_flow_style=False)

```
2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
6590f3869e scanner: error/warn on dex/gz/zip, closes #394 2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
d7b3bca1e7 build: pass --verbose flag through to scanner 2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
ee54dbce87 scanner: safely check options, for things using this API
https://gitlab.com/fdroid/fdroidserver/-/issues/771#note_353495799
2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
75acf63efa scanner: remove all gradle wrapper files 2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
2f5d780c49 scanner: always setup JSON data structure so functions work as API 2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
84f225f2f2 scanner: make problem descriptions translationable 2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
d898ad0412 scanner: make AARs and JARs trigger an error
refs #491
2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
3bc246ccad scanner: ignore well known image types that are set executable 2020-06-10 19:42:23 +02:00
Hans-Christoph Steiner
83edb5b80a Merge branch 'plugin-system' into 'master'
Plugin system

See merge request fdroid/fdroidserver!709
2020-06-10 17:36:02 +00:00
Michael Pöhn
a97b3ca4dd implement plugin system review suggestsions 2020-06-10 18:43:23 +02:00
Michael Pöhn
77167e098e plugin system: regex instead of import bases plugin parsing 2020-06-10 18:43:11 +02:00
Michael Pöhn
b257a3411a stick to default python sys.path 2020-06-10 12:11:47 +02:00
Michael Pöhn
3a3803ea2d raise excepten when starting broken plugin 2020-06-10 12:11:47 +02:00
Michael Pöhn
bf815251ec rough plugin system implementation 2020-06-10 12:11:47 +02:00
Michael Pöhn
32f09603e1 Merge branch 'move-tests-to-yaml' into 'master'
move tests to YAML

See merge request fdroid/fdroidserver!761
2020-06-10 10:04:36 +00:00
Hans-Christoph Steiner
bde65aa54d gitlab-ci: switch metadata_v0 test to commit that supports only .yml
37f37ebd88
2020-06-10 10:44:27 +02:00
Hans-Christoph Steiner
0d1fddb82e
convert inline tests to .yml 2020-06-10 10:43:27 +02:00
Hans-Christoph Steiner
f0fb3b64f8
remove obselete tests 2020-06-10 10:43:25 +02:00
Hans-Christoph Steiner
37f37ebd88
use default accepted_formats since all the files are .yml anyway 2020-06-10 10:43:21 +02:00
Hans-Christoph Steiner
1b90aec697
purge .txt and .json from bash-completion
YAML is the way!
2020-06-10 09:56:33 +02:00
Hans-Christoph Steiner
b63e9e68c5
move all test metadata files to .yml format
for f in metadata/*.txt; do ../fdroid rewritemeta --to yml $(basename $f | sed 's,\.txt,,'); done
2020-06-10 09:56:31 +02:00
Marcus
3bf2d60bfa Merge branch 'fix_783' into 'master'
strip_and_copy_image: abort on broken symlinks

Closes #783

See merge request fdroid/fdroidserver!760
2020-06-04 11:20:43 +00:00
Marcus Hoffmann
581e433832 strip_and_copy_image: abort on broken symlinks
Also guard against other processes removing the files we are about to
copy.

closes fdroid/fdroidserver#783
2020-06-04 12:58:11 +02:00
Marcus Hoffmann
4c69411387 add gradle 6.5 2020-06-04 00:30:30 +02:00
Marcus
0d609b4b1e Merge branch 'validate-string-int-types' into 'master'
metadata: validate STRING and INT build field types

See merge request fdroid/fdroidserver!752
2020-06-03 22:03:37 +00:00
Hans-Christoph Steiner
13d9a122bf metadata: validate STRING and INT build field types
This converts float/int to string for things like commit: or versionName:.
For versionCode, which must be an integer, it throws an exception if the
data is any other type.
2020-06-02 22:06:01 +02:00
Hans-Christoph Steiner
b2daf96284 lint: fix pyflakes 2020-06-02 22:05:18 +02:00
Hans-Christoph Steiner
b1eb086259 Merge branch 'patch-2' into 'master'
Add NDK r21c

See merge request fdroid/fdroidserver!755
2020-06-02 19:59:38 +00:00
Hans-Christoph Steiner
6c5887e906
lint: make --force-yamllint error if yamllint is not installed
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/753#note_353829401
2020-06-02 21:56:05 +02:00
Hans-Christoph Steiner
83e0693231
update lint bash-completion: -f --format --force-yamllint 2020-06-02 21:56:00 +02:00
Marcus
7eee72a342 Merge branch 'pile-o-2.0-bugfixes' into 'master'
Pile o' 2.0 bugfixes

Closes #719

See merge request fdroid/fdroidserver!753
2020-06-02 16:30:46 +00:00
Marcus
a6814899ad Merge branch 'agp_4.0' into 'master'
add AGP 4.0

See merge request fdroid/fdroidserver!757
2020-06-02 11:58:37 +00:00
Marcus Hoffmann
cfff954782 add AGP 4.0 2020-06-02 13:37:29 +02:00
TacoTheDank
edd41b3c58 Upgrade NDK r21b to r21c 2020-05-29 16:23:20 -04:00
Hans-Christoph Steiner
7a84679b0d gradlew-fdroid: fix parsing when files have Windows linefeeds
The new test file should have Windows linefeeds, if I got the git config
correct.
2020-05-29 21:55:10 +02:00
Hans-Christoph Steiner
fc885c9b5c scanner: test for get_gradle_compile_commands() 2020-05-27 22:09:52 +02:00
Hans-Christoph Steiner
1ed4ed61c7 buildserver: explicitly include sudo as a dependency
The basebox currently provides sudo, but that may not always be the case.
This makes the sudo dependency explicit, so that this provisioning script
can also be used in other settings, like GitLab CI.
2020-05-27 22:09:52 +02:00
Hans-Christoph Steiner
cc5aed3c1f fix version codes in bash completion for fdroid build
I'm not sure the old code ever worked, but this works now, and supports
.yml.

closes #719
2020-05-27 22:09:52 +02:00
Hans-Christoph Steiner
95c3ab2454 skip yamllint test if yamllint is not installed
!721
2020-05-27 22:07:17 +02:00
Hans-Christoph Steiner
67332d83a5 scanner: add --json option for outputting machine readable results
* makes per-build entries in per-app entries
* `fdroid scanner --json --verbose` will output logging messages to stderr
* removed " at line N" from one message to make them uniform keys
* this will be used in issuebot

This is a second attempt with tests for how `fdroid build` calls the
scanner functions. closes #771.  It was previously merged in !748 then
reverted in 68c072c72e
2020-05-27 08:35:14 +02:00
Hans-Christoph Steiner
6030445be0 logging.warn() was deprecated in Python 3.3, use logging.warning()
sed -i 's,logging\.warn(,logging.warning(,g' fdroid */*.*

https://docs.python.org/3.3/library/logging.html#logging.Logger.warning
2020-05-27 08:35:14 +02:00
Hans-Christoph Steiner
dec6b9deed
Merge branch 'gradle-clean' into 'master'
* gradle-clean:
  add test for things `fdroid build` cleans
  build: clean buildSrc/build
  build: fix directories removal

See merge request fdroid/fdroidserver!750
2020-05-26 09:49:42 +02:00
Hans-Christoph Steiner
5b9944fcde add test for things fdroid build cleans
This needs a lot of mocking because build.build_local() is a
gianormous single function.
2020-05-26 09:48:55 +02:00
relan
9ff77cfd1a build: clean buildSrc/build
The buildSrc directory contains custom build logic written in Kotlin.
Before this change we had to 'scandelete' buildSrc/build in the build
recipes becase 'gradle clean' leaves binary artifacts there.
2020-05-26 07:37:20 +00:00
relan
ddfbd1cc47 build: fix directories removal
The 'dirs' array contains a single-level listing of a directory, e. g.
['app', 'build', 'build.gradle', 'gradle', '.gradle']. Multi-component
paths like 'build/tmp' could never be found in this array and thus were
never removed.

Call shutil.rmtree() without checking that the argument is in 'dirs'. If
it exists and is a directory, it'll be removed. Otherwise shutil.rmtree()
will do nothing.
2020-05-26 07:37:20 +00:00
Marcus Hoffmann
68c072c72e Revert "scanner: add --json option for outputting machine readable results"
This reverts commit cdaf62e5d9.

See: https://gitlab.com/fdroid/fdroidserver/-/merge_requests/748#note_347769371
2020-05-24 10:24:40 +02:00
Hans-Christoph Steiner
1be8788f5f Merge branch 'scanner-json' into 'master'
`fdroid scanner --json` for machine readable output

See merge request fdroid/fdroidserver!748
2020-05-19 21:18:39 +00:00
Marcus Hoffmann
e25b8a1933 add gradle 6.4.1 2020-05-17 02:58:30 +02:00
Hans-Christoph Steiner
cdaf62e5d9 scanner: add --json option for outputting machine readable results
* makes per-build entries in per-app entries
* `fdroid scanner --json --verbose` will output logging messages to stderr
* removed " at line N" from one message to make them uniform keys
* this will be used in issuebot
2020-05-14 21:58:48 +02:00
Hans-Christoph Steiner
a0e3b01e94 metadata: parsed srclibs must always return a dict as the container 2020-05-14 16:28:13 +02:00
Hans-Christoph Steiner
410901d3bd Merge branch 'yamllint' into 'master'
yamllint

See merge request fdroid/fdroidserver!721
2020-05-14 12:36:19 +00:00
Michael Pöhn
0945eadd4f Apply suggestion to buildserver/provision-apt-get-install 2020-05-14 11:11:01 +00:00
Michael Pöhn
90f3e1ab70 Merge branch 'hopefully-uncontroversial-fixes' into 'master'
hopefully uncontroversial fixes

See merge request fdroid/fdroidserver!746
2020-05-14 11:05:58 +00:00
Hans-Christoph Steiner
df563d339a
fix pep8 E741 ambiguous variable name 'l' 2020-05-14 12:11:36 +02:00
Hans-Christoph Steiner
1106795583 deploy: stop uploading to androidobservatory if its already up there 2020-05-14 11:55:09 +02:00
Hans-Christoph Steiner
30f2d62597 import: fix --omit-disable flag, its a boolean 2020-05-14 11:55:09 +02:00
Hans-Christoph Steiner
ba854ab24a support Cordova's gradle file
https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html
2020-05-14 11:55:09 +02:00
Hans-Christoph Steiner
77367f1bff server: disable extraneous HTTP errors in upload_apk_to_virustotal
This should be in the lowest level so that both the low level call,
upload_apk_to_virustotal(), and the next level up, upload_to_virustotal(),
both inherit this.
2020-05-14 11:55:09 +02:00
Hans-Christoph Steiner
cfa88a5335 gitlab-ci: fix binfmt support for focal to run apksigner
This manually mounts the binfmt_misc dir if its not present.
It seems the Ubuntu/focal release stopped auto-mounting binfmt_misc:
https://bugs.launchpad.net/binfmt-support/+bug/1878413
2020-05-14 11:55:09 +02:00
Hans-Christoph Steiner
72e85bcccf Merge branch 'ndk-r21b' into 'master'
Upgrade NDK r21 to r21b

See merge request fdroid/fdroidserver!747
2020-05-14 08:08:36 +00:00
relan
13ac46af07 makebuildserver: upgrade NDK r21 to r21b 2020-05-14 08:43:33 +03:00
Hans-Christoph Steiner
bed0653657 Merge branch 'fix-lint-gitlab-ci-job' into 'master'
Fix lint gitlab ci job

See merge request fdroid/fdroidserver!743
2020-05-11 16:05:44 +00:00
Hans-Christoph Steiner
0700242416 gitlab-ci: use latest pylint to avoid safety error about vuln 2020-05-11 17:45:33 +02:00
Hans-Christoph Steiner
052e22284b gitlab-ci: show clear error message when one step of job fails 2020-05-11 17:40:21 +02:00
Hans-Christoph Steiner
169d551683 Merge branch 'archive-fix' into 'master'
Fix nightly --archive-older command line option

See merge request fdroid/fdroidserver!744
2020-05-11 15:32:04 +00:00
Torsten Grote
db96753902
Fix nightly --archive-older command line option 2020-05-11 10:23:26 -03:00
Marcus
3de72bdb0e Merge branch 'gradle-6.4' into 'master'
Add Gradle 6.4

See merge request fdroid/fdroidserver!742
2020-05-08 10:04:46 +00:00
relan
99ef3a8626 Add Gradle 6.4 2020-05-08 10:30:28 +03:00
Michael Pöhn
810a6587df add --force-yamllint option to lint 2020-04-25 17:39:23 +02:00
Michael Pöhn
b076e8cba7 add srclib spec parser 2020-04-25 17:22:48 +02:00
Michael Pöhn
8285f3d759 add changelog entry for yamllint feature 2020-04-25 15:59:51 +02:00
Michael Pöhn
ed2c5f6f5b run yamllint on srclibs when running 'fdroid lint' 2020-04-25 15:57:21 +02:00
Michael Pöhn
270c55560b add yamllint to dependency lists 2020-04-24 15:47:47 +02:00
Michael Pöhn
d24484a950 simple testcase for common.run_yamllint 2020-04-24 15:47:47 +02:00
Michael Pöhn
975538a7a7 make yamllint optional 2020-04-24 15:47:47 +02:00
Michael Pöhn
4e69ff582f run yamllint when parsing failed and also on fdroid lint runs 2020-04-24 15:47:31 +02:00
Michael Pöhn
bb43dcf00e Merge branch 'fix_import_error' into 'master'
Use ImportError for Python < 3.6 (Closes: !734)

See merge request fdroid/fdroidserver!739
2020-04-18 02:37:35 +00:00
Jochen Sprickerhof
30c654459f Use ImportError for Python < 3.6 (Closes: !734)
ModuleNotFoundError is a subclass of ImportError, so this should not
change anything.
2020-04-17 23:26:06 +02:00
Michael Pöhn
7f5e0bb310 Merge branch 'yml-srclib' into 'master'
yaml srclib support

Closes #609

See merge request fdroid/fdroidserver!700
2020-04-16 09:56:30 +00:00
Michael Pöhn
911e86fc87 support copying yml srclibs to buildserver vm during builds 2020-04-16 11:32:37 +02:00
Michael Pöhn
8344e510f6 yml srclibs: changelog 2020-04-16 11:31:59 +02:00
Michael Pöhn
5741e6930b yml srclibs: support Subdir as list 2020-04-16 11:31:59 +02:00
Michael Pöhn
1ac7d612b1 yml srclibs: support multiline Prepare 2020-04-16 11:31:59 +02:00
Michael Pöhn
58776da694 get tests working 2020-04-16 11:31:59 +02:00
Michael Pöhn
aa020af040 srclibs: forward yml parsing error cause 2020-04-16 11:31:59 +02:00
Michael Pöhn
ee3d8d2f18 srclib: yml parsing + tests for yml and txt 2020-04-16 11:31:59 +02:00
Michael Pöhn
fa7885063b scrlib: add test for getsrclib 2020-04-16 11:31:59 +02:00
Michael Pöhn
286220fe11 srclib: add test for getsrclibvcs 2020-04-16 11:31:59 +02:00
Michael Pöhn
2c86d38028 srclib: no spaces in dict key 2020-04-16 11:31:59 +02:00
Michael Pöhn
c6a97939f1 rename parse_srclib to parese_txt_srclib + test case 2020-04-16 11:31:59 +02:00
Michael Pöhn
0d42338d4d Merge branch 'fix-python3.8-index.xml-sort-issue' into 'master'
index: xml.dom.minidom no longer sorts attribs

See merge request fdroid/fdroidserver!738
2020-04-16 08:37:58 +00:00
Hans-Christoph Steiner
c47f9ef123
index: xml.dom.minidom no longer sorts attribs
It seems now that xml.dom.minidom preserves the order of attributes, rather
than sorting them.  We assume alpha-sort, so this manually

This diff in the test suite running on Debian/testing pointed it out:
https://gitlab.com/fdroid/fdroidserver/-/jobs/486970383

```diff
--- /builds/fdroid/fdroidserver/tests/repo/index.xml	2020-04-11 13:36:57.000000000 +0000
+++ repo/index.xml	2020-04-11 13:41:44.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <fdroid>
-	<repo icon="fdroid-icon.png" name="My First F-Droid Repo Demo" pubkey="308204e1308202c9a003020102020434597643300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303931333230313930395a170d3434303133303230313930395a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a028202010086ef94b5aacf2ba4f38c875f4194b44f5644392e3715575d7c92828577e692c352b567172823851c8c72347fbc9d99684cd7ca3e1db3e4cca126382c53f2a5869fb4c19bdec989b2930501af3e758ff40588915fe96b10076ce3346a193a0277d79e83e30fd8657c20e35260dd085aa32eac7c4b85786ffefbf1555cafe2bc928443430cdbba48cfbe701e12ae86e676477932730d4fc7c00af820aef85038a5b4df084cf6470d110dc4c49ea1b749b80b34709d199b3db516b223625c5de4501e861f7d261b3838f8f616aa78831d618d41d25872dc810c9b2087b5a9e146ca95be740316dcdbcb77314e23ab87d4487913b800b1113c0603ea2294188b71d3e49875df097b56f9151211fc6832f9790c5c83d17481f14ad37915fd164f4fd713f6732a15f4245714b84cd665bdbd085660ea33ad7d7095dcc414f09e3903604a40facc2314a115c0045bb50e9df38efb57e1b8e7cc105f340a26eeb46aba0fa6672953eee7f1f92dcb408e561909bbd4bdf4a4948c4d57c467d21aa238c34ba43be050398be963191fa2b49828bc1e4eeed224b40dbe9dc3e570890a71a974a2f4527edb1b07105071755105edcb2af2f269facfb89180903a572a99b46456e80d4a01685a80b233278805f2c876678e731f4ec4f52075aeef6b2b023efbb8a3637ef507c4c37c27e428152ec1817fcba640ad601cb09f72f0fbe2d274a2410203010001a321301f301d0603551d0e04160414c28bf33dd5a9a17338e5b1d1a6edd8c7d141ed0b300d06092a864886f70d01010b0500038202010084e20458b2aafd7fc27146b0986f9324f4260f244920417a77c9bf15e2e2d22d2725bdd8093ec261c3779c3ca03312516506f9410075b90595b41345956d8eb2786fb5994f195611382c2b99dba13381b0100a30bc9e6e47248bf4325e2f6eec9d789216dc7536e753bf1f4be603d9fa2e6f5e192b4eb988b8cdb0bb1e8668a9225426f7d4636479f73ed24ad1d2657c31e63c93d9679b9080171b3bd1bf10a3b92b80bd790fbf62d3644900cd08eae8b9bf9c2567be98dc8cdd2ae19a8d57a3e3e2de899f81f1279f578989e6af906f80c8c2b67651730ee7e568c1af5bcb845b6d685dc55332a9984aeceaea3b7e883447edf1c76b155d95253e39b9710eaa22efa6c81468829702b5dce7126538f3ca70c2f0ad9a5795435fdb1f715f20d60359ef9a9926c7050116e802df651727447848827815f70bd82af3cedd08783156102d2d8ce995c4c43b8e47e91a3e6927f3505a5d395e6bebb84542c570903eeab4382a1c2151f1471c7a06a34dc4d268d8fa72e93bdcd2dccc4302ecac47b9e7e3d8bc9b46d21cd097874a24d529548018dc190ff568c6aa428f0a5eedff1a347730931c74f19277538e49647a4ad7254f4c1ec7d4da12cce9e1fad9607534e66ab40a56b473d9d7e3d563fd03cad2052bad365c5a29f8ae54f09b60dbca3ea768d7767cbe1c133ca08ce725c1c1370f4aab8e5b6e286f52dc0be8d0982b5a" timestamp="1480431575" url="https://MyFirstFDroidRepo.org/fdroid/repo" version="21">
+	<repo name="My First F-Droid Repo Demo" icon="fdroid-icon.png" url="https://MyFirstFDroidRepo.org/fdroid/repo" version="21" timestamp="1480431575" pubkey="308204e1308202c9a003020102020434597643300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303931333230313930395a170d3434303133303230313930395a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a028202010086ef94b5aacf2ba4f38c875f4194b44f5644392e3715575d7c92828577e692c352b567172823851c8c72347fbc9d99684cd7ca3e1db3e4cca126382c53f2a5869fb4c19bdec989b2930501af3e758ff40588915fe96b10076ce3346a193a0277d79e83e30fd8657c20e35260dd085aa32eac7c4b85786ffefbf1555cafe2bc928443430cdbba48cfbe701e12ae86e676477932730d4fc7c00af820aef85038a5b4df084cf6470d110dc4c49ea1b749b80b34709d199b3db516b223625c5de4501e861f7d261b3838f8f616aa78831d618d41d25872dc810c9b2087b5a9e146ca95be740316dcdbcb77314e23ab87d4487913b800b1113c0603ea2294188b71d3e49875df097b56f9151211fc6832f9790c5c83d17481f14ad37915fd164f4fd713f6732a15f4245714b84cd665bdbd085660ea33ad7d7095dcc414f09e3903604a40facc2314a115c0045bb50e9df38efb57e1b8e7cc105f340a26eeb46aba0fa6672953eee7f1f92dcb408e561909bbd4bdf4a4948c4d57c467d21aa238c34ba43be050398be963191fa2b49828bc1e4eeed224b40dbe9dc3e570890a71a974a2f4527edb1b07105071755105edcb2af2f269facfb89180903a572a99b46456e80d4a01685a80b233278805f2c876678e731f4ec4f52075aeef6b2b023efbb8a3637ef507c4c37c27e428152ec1817fcba640ad601cb09f72f0fbe2d274a2410203010001a321301f301d0603551d0e04160414c28bf33dd5a9a17338e5b1d1a6edd8c7d141ed0b300d06092a864886f70d01010b0500038202010084e20458b2aafd7fc27146b0986f9324f4260f244920417a77c9bf15e2e2d22d2725bdd8093ec261c3779c3ca03312516506f9410075b90595b41345956d8eb2786fb5994f195611382c2b99dba13381b0100a30bc9e6e47248bf4325e2f6eec9d789216dc7536e753bf1f4be603d9fa2e6f5e192b4eb988b8cdb0bb1e8668a9225426f7d4636479f73ed24ad1d2657c31e63c93d9679b9080171b3bd1bf10a3b92b80bd790fbf62d3644900cd08eae8b9bf9c2567be98dc8cdd2ae19a8d57a3e3e2de899f81f1279f578989e6af906f80c8c2b67651730ee7e568c1af5bcb845b6d685dc55332a9984aeceaea3b7e883447edf1c76b155d95253e39b9710eaa22efa6c81468829702b5dce7126538f3ca70c2f0ad9a5795435fdb1f715f20d60359ef9a9926c7050116e802df651727447848827815f70bd82af3cedd08783156102d2d8ce995c4c43b8e47e91a3e6927f3505a5d395e6bebb84542c570903eeab4382a1c2151f1471c7a06a34dc4d268d8fa72e93bdcd2dccc4302ecac47b9e7e3d8bc9b46d21cd097874a24d529548018dc190ff568c6aa428f0a5eedff1a347730931c74f19277538e49647a4ad7254f4c1ec7d4da12cce9e1fad9607534e66ab40a56b473d9d7e3d563fd03cad2052bad365c5a29f8ae54f09b60dbca3ea768d7767cbe1c133ca08ce725c1c1370f4aab8e5b6e286f52dc0be8d0982b5a">
 		<description>This is a repository of apps to be used with F-Droid. 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. </description>
 		<mirror>http://foobarfoobarfoobar.onion/fdroid/repo</mirror>
 		<mirror>https://foo.bar/fdroid/repo</mirror>
@@ -94,9 +94,9 @@
 			<added>2017-12-22</added>
 			<sig>056c9f1554c40ba59a2103009c82b420</sig>
 			<permissions>ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,CHANGE_WIFI_MULTICAST_STATE,INTERNET,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE</permissions>
-			<uses-permission maxSdkVersion="18" name="android.permission.READ_EXTERNAL_STORAGE"/>
-			<uses-permission maxSdkVersion="18" name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-			<uses-permission-sdk-23 maxSdkVersion="27" name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
+			<uses-permission name="android.permission.READ_EXTERNAL_STORAGE" maxSdkVersion="18"/>
+			<uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE" maxSdkVersion="18"/>
+			<uses-permission-sdk-23 name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" maxSdkVersion="27"/>
 		</package>
 	</application>
 	<application id="fake.ota.update">
@@ -182,9 +182,9 @@
 			<added>2013-12-31</added>
 			<sig>eb41d4d6082bb3e81c3d58dbf7fc7332</sig>
 			<permissions>ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,BLUETOOTH,BLUETOOTH_ADMIN,CHANGE_NETWORK_STATE,CHANGE_WIFI_MULTICAST_STATE,CHANGE_WIFI_STATE,INTERNET,NFC,RECEIVE_BOOT_COMPLETED</permissions>
-			<uses-permission maxSdkVersion="22" name="android.permission.ACCESS_NETWORK_STATE"/>
-			<uses-permission maxSdkVersion="18" name="android.permission.BLUETOOTH_ADMIN"/>
-			<uses-permission-sdk-23 maxSdkVersion="25" name="android.permission.WRITE_SETTINGS"/>
+			<uses-permission name="android.permission.ACCESS_NETWORK_STATE" maxSdkVersion="22"/>
+			<uses-permission name="android.permission.BLUETOOTH_ADMIN" maxSdkVersion="18"/>
+			<uses-permission-sdk-23 name="android.permission.WRITE_SETTINGS" maxSdkVersion="25"/>
 		</package>
 	</application>
 	<application id="obb.main.twoversions">
```
2020-04-15 21:53:39 +02:00
Hans-Christoph Steiner
1a3f5a263f Merge branch 'use_bin_tar' into 'master'
Use libarchive instead of the Python implementation

See merge request fdroid/fdroidserver!734
2020-04-15 18:27:13 +00:00
Jochen Sprickerhof
86beac22e2 Use libarchive instead of the Python implementation 2020-04-15 18:27:13 +00:00
Hans-Christoph Steiner
e85573d0e1 Merge branch 'git-push-logging' into 'master'
Show debug messages to give clue why pushing git mirror failed

See merge request fdroid/fdroidserver!731
2020-04-15 12:56:04 +00:00
Hans-Christoph Steiner
f39732987e Merge branch 'patch-1' into 'master'
Import - sudo refresh repos too and use the newer npm

See merge request fdroid/fdroidserver!730
2020-04-15 12:53:56 +00:00
Hans-Christoph Steiner
9c1ecf9c1c Merge branch 'stretchsloppy' into 'master'
Add stretch-backports-sloppy repo too

See merge request fdroid/fdroidserver!729
2020-04-15 12:53:02 +00:00
Hans-Christoph Steiner
1b0b4fc57d Merge branch 'scan_giturls' into 'master'
get_app_from_url: add codeberg.org as git url

See merge request fdroid/fdroidserver!737
2020-04-15 12:27:08 +00:00
Izzy
46a464a74b
get_app_from_url: add codeberg.org as git url 2020-04-15 09:13:08 +02:00
Michael Pöhn
57446eee1c Merge branch 'sync' into 'master'
Add sync to make sure buildserverid is written

See merge request fdroid/fdroidserver!735
2020-04-13 20:21:05 +00:00
Jochen Sprickerhof
af4eb86fca Add sync to make sure buildserverid is written 2020-04-12 16:54:29 +02:00
Michael Pöhn
e1a67515e4 Merge branch 'makebs-debug' into 'master'
add debugging output for makebs buildserverid

See merge request fdroid/fdroidserver!732
2020-04-11 13:36:31 +00:00
Michael Pöhn
c000d450ca add debugging output for makebs buildserverid 2020-04-11 15:15:20 +02:00
Torsten Grote
7d69f04b94
Show debug messages to give clue why pushing git mirror failed 2020-04-10 13:34:46 -03:00
Licaon_Kter
463f6823de Import - sudo refresh repos too and use the newer npm 2020-04-08 10:25:53 +00:00
Licaon_Kter
9e8aef6771 Add stretch-backports-sloppy repo too 2020-03-30 07:10:51 -04:00
Marcus Hoffmann
3113b890b5 add gradle 6.3 2020-03-26 16:09:05 +01:00
Hans-Christoph Steiner
4ce02e860b Merge branch 'funding' into 'master'
use default org wide FUNDING.yml

See merge request fdroid/fdroidserver!727
2020-03-20 16:10:30 +00:00
Marcus Hoffmann
a9d0a42c7c use default org wide FUNDING.yml
https://github.com/f-droid/.github/blob/master/FUNDING.yml
2020-03-20 14:26:02 +01:00
Marcus Hoffmann
6a06551b73 add build tools 29.0.3
Closes fdroid/fdroidserver#753
2020-03-17 12:02:18 +01:00
Hans-Christoph Steiner
7f9da9f4df Merge branch 'gradle-no-proxy' into 'master'
provision-gradle: remove fake proxy configuration

See merge request fdroid/fdroidserver!725
2020-03-16 21:39:58 +00:00
relan
1b001cf1b5 provision-gradle: remove fake proxy configuration
The prohibition of HTTP causes connection errors on some builds:

    IOException: https://dl.google.com/android/repository/addons_list-3.xml
    java.net.ConnectException: Connection refused (Connection refused)
    IOException: https://dl.google.com/android/repository/addons_list-2.xml
    java.net.ConnectException: Connection refused (Connection refused)
    IOException: https://dl.google.com/android/repository/addons_list-1.xml
    java.net.ConnectException: Connection refused (Connection refused)
    Failed to download any source lists!

Partly revert a746917022.
2020-03-15 17:41:29 +03:00
Hans-Christoph Steiner
82df54a8a2 Merge branch 'fixes-for-issuebot' into 'master'
fixes for issuebot

See merge request fdroid/fdroidserver!723
2020-03-11 21:35:34 +00:00
Hans-Christoph Steiner
138bc73668
import: --omit-disable option to easily work with generated files 2020-03-11 22:13:47 +01:00
Hans-Christoph Steiner
1bb9cf43e1
import: ensure gradle: yes is added for detected Gradle builds 2020-03-11 22:13:45 +01:00
Hans-Christoph Steiner
a1e17d2b2c
deploy: retry virustotal 30 seconds after rate limiting, and log 2020-03-11 22:13:42 +01:00
Hans-Christoph Steiner
b7901952a1 deploy: make androidobservatory and virustotal functions reusable
This should not change the logic at all, just make the loop runs into
standalone functions.
2020-03-11 22:13:39 +01:00
Hans-Christoph Steiner
733e7be1b3 set F-Droid HTTP Headers globally 2020-03-11 13:41:13 +01:00
Hans-Christoph Steiner
ab2291475b import: mv reusable functions to common.py to avoid import_proxy.py
import is a strict keyword in Python, so it is not possible to import a
module called 'import', even with things like:

* import fdroidserver.import
* from fdroidserver import import
2020-03-11 13:41:13 +01:00
Marcus Hoffmann
87e825bf3e add gradle 6.2.2 2020-03-10 16:58:41 +01:00
Hans-Christoph Steiner
9d4f0f6712 Merge branch 'less_pedandic_checks' into 'master'
opencollecive: fix allowed characters

See merge request fdroid/fdroidserver!724
2020-03-10 15:49:50 +00:00
Marcus Hoffmann
56ee7fe765 opencollecive: fix allowed characters
The url slug used by opencollective allows case variations, they all
lead back to the canonical lowercase variant though.

Apart from ascii characters and numbers only - and _ are allowed.
2020-03-10 16:26:34 +01:00
Marcus
c6e68c11f8 Merge branch 'opencollective' into 'master'
add opencollective metadata and index field

See merge request fdroid/fdroidserver!720
2020-03-10 14:56:03 +00:00
Marcus
9d24f2e4a7 add opencollective metadata and index field 2020-03-10 14:56:03 +00:00
Hans-Christoph Steiner
b8ddc43f95 Merge branch 'libvirt' into 'master'
libvirt: various fixes related to the `makebuildserver` and `fdroid build` commands

See merge request fdroid/fdroidserver!718
2020-03-09 15:06:19 +00:00
fuwa
2d63ab66f5 libvirt: various fixes related to the makebuildserver and fdroid build commands 2020-03-09 15:06:19 +00:00
Hans-Christoph Steiner
5e0c8d5a46 Merge branch 'nightly-stats' into 'master'
Add stats support to nightly repo

See merge request fdroid/fdroidserver!722
2020-03-03 14:30:28 +00:00
Torsten Grote
14208a6761
Add stats support to nightly repo
This will keep track of when APKs were added
and show these dates properly in the client
instead of always resetting all dates to the latest update.
2020-03-02 14:17:42 -03:00
Marcus
b5ec4af54b Merge branch 'gradle_6.2' into 'master'
add gradle 6.2{,.1} and AGP 3.6

See merge request fdroid/fdroidserver!719
2020-02-25 12:10:11 +00:00
Marcus Hoffmann
b4720665b9 add gradle 6.2{,.1} and AGP 3.6 2020-02-25 12:46:47 +01:00
Hans-Christoph Steiner
ed46afe262
gitlab-ci: ensure git is installed for pip_install job 2020-02-20 16:40:31 +01:00
Hans-Christoph Steiner
b5bce9f178
build: do not write/rsync status JSON when running --on-server
!717 !716
2020-02-20 16:40:19 +01:00
Hans-Christoph Steiner
7b8d358833 Merge branch 'status-json-fixes' into 'master'
Status json fixes

Closes #741 and #742

See merge request fdroid/fdroidserver!717
2020-02-19 21:06:56 +00:00
Hans-Christoph Steiner
b6e6ce87cb
build: has no pretty option (closes #742) 2020-02-19 20:29:54 +01:00
Hans-Christoph Steiner
21f5bd73a7
build: fix logging failed builds to the status JSON (closes #741) 2020-02-19 20:29:51 +01:00
Michael Pöhn
28117f31d3 Merge branch 'write-status-json' into 'master'
write buildserver status as public JSON files

See merge request fdroid/fdroidserver!716
2020-02-19 14:21:23 +00:00
Hans-Christoph Steiner
202291d66c
integration test for creating and deploying status JSON files
----------------------------
2020-02-19 14:50:37 +01:00
Hans-Christoph Steiner
bf6004b08e
rsync status JSON as first and last steps of command runs 2020-02-19 14:50:35 +01:00
Hans-Christoph Steiner
c19ef45fd5
build: write status JSON 2020-02-19 14:50:32 +01:00
Hans-Christoph Steiner
55935d9a41
signindex: write status JSON 2020-02-19 14:50:30 +01:00
Hans-Christoph Steiner
c965e7d969
deploy: write status JSON 2020-02-19 14:50:29 +01:00
Hans-Christoph Steiner
ddbdff83bd
gpgsign: write status JSON 2020-02-19 14:50:26 +01:00
Hans-Christoph Steiner
4bb590b6e5
publish: write status JSON 2020-02-19 14:50:24 +01:00
Hans-Christoph Steiner
e8a6d0f813
checkupdates: write status JSON 2020-02-18 23:45:52 +01:00
Hans-Christoph Steiner
d16478b10b
update: write status in JSON repo file, using new internal API 2020-02-18 23:45:48 +01:00
Hans-Christoph Steiner
5459a461db
common.get_head_commit_id() to get string commit ID from HEAD 2020-02-18 23:16:53 +01:00
Hans-Christoph Steiner
fafaa8f81f
standardize on path.endswith() for file extension checks
Its already widely used, this just removes the exceptions.  It is also more
Pythonic
2020-02-18 23:16:51 +01:00
Hans-Christoph Steiner
202602937d
import: ignore results if build/appid dir already exists 2020-02-18 23:16:49 +01:00
Hans-Christoph Steiner
32a29b3304
import: get git commit ID from git repo, e.g. master instead of '?' 2020-02-18 23:16:44 +01:00
Hans-Christoph Steiner
ddafcb9f8a Merge branch 'build-fixes' into 'master'
build fixes

Closes #613

See merge request fdroid/fdroidserver!715
2020-02-14 13:22:07 +00:00
Hans-Christoph Steiner
271b74af7d fix remove_signing_keys() for Kotlin gradles files (*.gradle.kts) 2020-02-13 22:32:51 +01:00
Hans-Christoph Steiner
68b793e308 support kotlin "*.gradle.kts" files in more places
closes #613
2020-02-13 22:32:51 +01:00
Marcus Hoffmann
9ae41cc1ff add support for gradle kotlin scripts
https://guides.gradle.org/migrating-build-logic-from-groovy-to-kotlin/
Closes fdroid/fdroidserver#613

cherry-picked from Bubu/fdroidserver@7d2e9f9c
2020-02-13 22:32:51 +01:00
Hans-Christoph Steiner
3de2d0f56f add basic test suite for gradlew-fdroid
!707
fdroiddata#6216

The se.manyver app is licensed MPL, the files came from:
81d247a6cd
2020-02-13 22:32:51 +01:00
Hans-Christoph Steiner
83ffeb855f prefer build.gradle with Android Plugin as source of package/version/code
These days, the location that overrides all the others is in the android{}
block of the build.gradle file that loads the com.android.application
plugin.  So this should be the preferred place to read these values.

test files GPL licensed: https://github.com/Integreight/1Sheeld-Android-App
2020-02-13 22:32:51 +01:00
Hans-Christoph Steiner
d9722f4453 buildserver: use long timeouts for gradle downloads
default is 30 seconds, this uses 10 minutes to avoid things like:

* What went wrong:
A problem occurred configuring root project 'org.fdroid.fdroid'.
> Could not resolve all files for configuration ':classpath'.
   > Could not download auto-value.jar (com.google.auto.value:auto-value:1.5.2)
      > Could not get resource 'https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.5.2/auto-value-1.5.2.jar'.
         > Read timed out

* https://stackoverflow.com/a/49646993
* https://github.com/gradle/gradle/issues/4629#issuecomment-393182135
* https://github.com/gradle/gradle/pull/3371/files
2020-02-13 22:32:51 +01:00
Hans-Christoph Steiner
1408e486dc Merge branch 'overhaul-import' into 'master'
Overhaul `fdroid import`

See merge request fdroid/fdroidserver!714
2020-02-13 21:31:45 +00:00
Hans-Christoph Steiner
ad92b4c678 scanner: add --force option for scanning disabled apps/builds 2020-02-13 13:58:13 +01:00
Hans-Christoph Steiner
e037ee5972 import: generate skeleton build fields for react-native and flutter 2020-02-13 13:51:52 +01:00
Hans-Christoph Steiner
1153ac24fd import: overhaul URL validation to use urllib.parse
Python provides us a lovely URL parser with some level of validation built
in.  The parsed URL is then much easier to validate.
2020-02-13 13:51:52 +01:00
Hans-Christoph Steiner
e9a6c84efd import: split URL parsing from code cloning
This makes things testable and easier to follow.
2020-02-13 13:51:52 +01:00
Hans-Christoph Steiner
bfe587979d import: make it work most of the time with git repos
This includes real tests too.
2020-02-13 13:51:52 +01:00
Hans-Christoph Steiner
e049a120f8 Merge branch 'gradlew_no_eol' into 'master'
gradlew-fdroid: support parsing files with no EOL before EOF

See merge request fdroid/fdroidserver!707
2020-02-13 09:47:07 +00:00
Hans-Christoph Steiner
697a0641f1
fix sudo syntax from 7a1fa6e857
fdroid/fdroidserver!713
2020-02-11 19:44:18 +01:00
Hans-Christoph Steiner
5a6422f4f3
jenkins-setup-build-environment: require 9GB RAM for 8GB VM
[skip ci] since this isn't used in gitlab-ci at all
2020-02-11 14:56:48 +01:00
Hans-Christoph Steiner
bfe8f05de6
fix syntax error from ae86dc3d38
fdroid/fdroidserver!713

[skip ci]
2020-02-11 12:48:42 +01:00
Hans-Christoph Steiner
e9ca4a17bc Merge branch 'buildserver-fixes' into 'master'
random buildserver fixes

Closes #636 and #624

See merge request fdroid/fdroidserver!713
2020-02-10 16:37:50 +00:00
Hans-Christoph Steiner
a746917022 provision-gradle: disable daemon and block HTTP repos
closes #624
#712
2020-02-05 20:36:25 +01:00
Hans-Christoph Steiner
7a1fa6e857 build: keep DEBIAN_FRONTEND env var when running sudo: script
closes #636
2020-02-05 20:36:25 +01:00
Hans-Christoph Steiner
ae86dc3d38 buildserver: set quiet options to stop apt-get spamming build logs
https://gitlab.com/fdroid/fdroidserver/issues/636#note_266483988
2020-02-05 20:36:25 +01:00
Hans-Christoph Steiner
6b03f995be deploy: check if file is on androidobservatory before uploading
Check if file is on androidobservatory before uploading.
androidobservatory.org redirects to a GET request after the POST, and
this seems to partially fail with requests.  The checking code was
broken.
2020-02-05 20:34:03 +01:00
Hans-Christoph Steiner
5fb368916f
index: fix no JAR test case that fails on example.org
http://example.org/index-v1.jar now returns the HTTP header
"Content-Encoding: gzip" but then the reply is plain HTML. That
triggers a ContentDecodingError instead of an HTTPError, so this
changes the test to success on any RequestsException.
2020-02-05 20:33:40 +01:00
Marcus Hoffmann
25de42055e gradlew-fdroid: update avaiable gradle versions and min versions 2020-02-05 20:21:33 +01:00
Hans-Christoph Steiner
77efdac41b
add Gradle 6.1.1 to gradlew-fdroid
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/710#note_282313001
missing from 84c7f4db9b
[skip ci]
2020-02-05 20:18:39 +01:00
Hans-Christoph Steiner
140bd29c94 Merge branch 'random-bag-of-fies' into 'master'
random bag of fixes

Closes #719

See merge request fdroid/fdroidserver!710
2020-02-05 19:12:19 +00:00
Hans-Christoph Steiner
a086d0dd3a Merge branch 'msappcenter' into 'master'
Add Microsoft Appcenter SDK to forbidden list

See merge request fdroid/fdroidserver!712
2020-02-04 09:40:13 +00:00
licaon-kter
135c92f3d0 Add Microsoft Appcenter SDK to forbidden list 2020-02-02 03:50:54 +02:00
Hans-Christoph Steiner
427856b5fd
tests: use same mirrors order in all tests
This makes it so running `../fdroid update --nosign --pretty` in tests/ no
longer creates a diff in the tests/*/index* files.  It matches the order
set in tests/run-tests.
2020-01-31 15:38:10 +01:00
Hans-Christoph Steiner
84c7f4db9b
Add Gradle 6.1.1, replacing Gradle 6.1 2020-01-31 15:38:08 +01:00
Hans-Christoph Steiner
e6b2134d2e
makebuildserver: ensure vagrant share block symlinks to the host
* https://phoenhex.re/2018-03-25/not-a-vagrant-bug
* https://github.com/hashicorp/vagrant/pull/10792/files
2020-01-31 15:38:07 +01:00
Hans-Christoph Steiner
0fa1f91a23
gitlab-ci: long timeout and many retries for pip installs 2020-01-31 15:38:05 +01:00
Hans-Christoph Steiner
e5d8479033
only do bash completion on .yml files
closes #719
2020-01-31 15:38:04 +01:00
Hans-Christoph Steiner
5c82956561
mirror: make .asc downloading opt-in with --pgp-signatures
Lots of third party repos do not use .asc PGP signatures at all, so having
this optional prevents tons of 404 Not Found errors.
2020-01-31 15:38:02 +01:00
Hans-Christoph Steiner
82a4817e8a
fix field name errors in examples/template.yml 2020-01-31 15:38:01 +01:00
Hans-Christoph Steiner
6ce22bff56
update: strip newlines from name/summary/video entries
These entries are hardcoded as a single line in all the app stores, so
newlines should be stripped to get the data simple to use.  This is in
contrast with the on-disk format for Fastlane and Triple-T, which includes
a newline in the title.txt and short_description.txt files.  I think all
files in those systems are normalized to end in a newline.
2020-01-31 15:37:59 +01:00
Hans-Christoph Steiner
3b5e3a62a3
move getappname+getcvname to checkupdates, the only place they're used 2020-01-31 15:37:57 +01:00
Hans-Christoph Steiner
fdede914cd
tests: properly name CheckupdatesTest class 2020-01-31 15:37:32 +01:00
Hans-Christoph Steiner
3df276cc3c
fix all bandit B310 urllib_urlopen
"Audit url open for permitted schemes. Allowing use of ‘file:’’ or custom
schemes is often unexpected."

https://bandit.readthedocs.io/en/latest/blacklists/blacklist_calls.html#b310-urllib-urlopen
2020-01-31 15:37:30 +01:00
Hans-Christoph Steiner
d8f3d94997
gitlab-ci: remove dscanner exclusions from bandit 2020-01-31 15:37:28 +01:00
Hans-Christoph Steiner
28aa404c24 Merge branch 'remove_drozer' into 'master'
remove dscanner subcommand

See merge request fdroid/fdroidserver!711
2020-01-31 13:50:07 +00:00
Marcus Hoffmann
8961485125 remove dscanner subcommand
It's unused and unmaintained. It could  potentially be revived as a
plugin at a later point.
2020-01-31 14:17:12 +01:00
Hans-Christoph Steiner
da24a45e83 Merge branch 'main-script-tests' into 'master'
Main script tests

See merge request fdroid/fdroidserver!708
2020-01-28 11:03:07 +00:00
Michael Pöhn
f2a80ffa3d fix tests on old python version 2020-01-28 11:43:09 +01:00
Michael Pöhn
b25eeb66a1 fix code style 2020-01-28 11:43:09 +01:00
Michael Pöhn
69fc38c668 repair fdroid --version 2020-01-28 11:43:09 +01:00
Michael Pöhn
f21481ca81 add some simple tests for main 2020-01-28 11:43:09 +01:00
Michael Pöhn
7a4254efa2 make main script pythonic 2020-01-28 11:43:09 +01:00
Marcus Hoffmann
09db493557 gradlew-fdroid: support parsing files with no EOL before EOF
Fixes cases like: https://gitlab.com/fdroid/fdroiddata/merge_requests/6216#note_273985937
2020-01-21 11:15:51 +01:00
Marcus
7683179e84 Merge branch 'gradle61' into 'master'
Add Gradle 6.1

Closes #730

See merge request fdroid/fdroidserver!706
2020-01-19 18:46:52 +00:00
Licaon_Kter
33ddf944f3 Add Gradle 6.1 2020-01-19 18:46:52 +00:00
Marcus Hoffmann
fdcb1ad23f Revert "Revert "Merge branch 'ndk21' into 'master'""
This reverts commit 999b15a909.
2020-01-15 22:48:40 +01:00
Marcus Hoffmann
999b15a909 Revert "Merge branch 'ndk21' into 'master'"
This reverts commit 9b4cb8b76a, reversing
changes made to 3bdbbfd45b.
2020-01-15 22:09:41 +01:00
Marcus
9b4cb8b76a Merge branch 'ndk21' into 'master'
Add NDK21

See merge request fdroid/fdroidserver!705
2020-01-15 12:28:36 +00:00
Licaon_Kter
3c3b3dbcf2 Add NDK21 2020-01-15 12:28:36 +00:00
Marcus
3bdbbfd45b Merge branch 'longer_titles' into 'master'
bump title char_limit to 50

Closes fdroiddata#1906 and #726

See merge request fdroid/fdroidserver!702
2020-01-14 13:54:41 +00:00
Michael Pöhn
9a8718c189 Merge branch 'deploy-fixes' into 'master'
`fdroid deploy` fixes

See merge request fdroid/fdroidserver!703
2020-01-14 11:02:51 +00:00
Hans-Christoph Steiner
df7d7adf78
mirror: optionally fetch build logs and src tarballs 2020-01-14 11:36:11 +01:00
Hans-Christoph Steiner
e76a0c9d6a
git_mirror_size_limit config option to set max git mirror size
GitHub and GitLab have some kinds of limits on how big a git repo can be,
this makes that option configurable.  This also is very useful for tests.
2020-01-14 11:36:08 +01:00
Hans-Christoph Steiner
4fa11ef4fc
deploy: detect virustotal size limits while uploading
This prevents the size limits from blocking the whole deploy.
2020-01-14 11:19:02 +01:00
Hans-Christoph Steiner
058b47e484
deploy: fix virustotal report fetching, use GET and query string 2020-01-14 11:19:00 +01:00
Hans-Christoph Steiner
f2b48575e6
deploy: github/gitlab use bare git repos, only size the .git/ dir
needs test: generate giant APKs by including AndroidManifest.xml and and
large file from /dev/urandom, then sign it.  Then add those to the git repo.
2020-01-14 11:18:53 +01:00
Marcus Hoffmann
96ba194d65 bump title char_limit to 50
This follows google play in doing so.
Closes fdroidserver#726, fdroid/fdroiddata#1906.
2020-01-08 14:20:18 +01:00
Hans-Christoph Steiner
098bce2134 Merge branch 'git_fetch_force_tags' into 'master'
git force fetch tags

Closes #718

See merge request fdroid/fdroidserver!699
2020-01-02 13:45:22 +00:00
Hans-Christoph Steiner
ded5d8c6ac Merge branch 'bugfix/auto-update-suffix' into 'master'
AutoUpdateMode: Do not include + in suffix

Closes #700 and #248

See merge request fdroid/fdroidserver!661
2020-01-02 13:27:12 +00:00
Gerhard Olsson
cf9bff1d56 AutoUpdateMode: Do not include + in suffix
Add suffix to version only
2020-01-02 13:27:12 +00:00
Marcus
619ccb8d5a Merge branch 'keep_cv' into 'master'
keep CVC of an app out of the archive

Closes #385

See merge request fdroid/fdroidserver!701
2020-01-01 14:48:28 +00:00
Marcus Hoffmann
83526e09a3 update: fix unarchiving of allowed disabled algorithm
6d0b1bbe6fae0909683f2c6a154515bc4bfcb674 didn't handle the
allow_disabled_algorithm case at all, so we add it back.

This additionally fixes a (previously existing) bug where setting
allow_disabled_algorithms to True didn't move apks back from archive to
repo. Introduce a new test for this.

The disabled_algorithm archiving logic is still all over the place so
ideally that needs a future refactor.
2020-01-01 15:25:43 +01:00
Marcus Hoffmann
a7a83e1ee3 update: keep CVC of an app out of the archive
We want to keep the stable version (CV) of an app in /repo with highest
priority and only move it to /archive when ArchivePolicy is set to 0.

For this to work we need two changes here:

1) when sorting apks by version code we insert the apk corresponding to
the CVC of the app afterwards with highest priority. So when walking the
list of apks afterwards the CVC apk is always kept first.

2) Instead of the two pass algorithm of moving things back and forth to
the archive we instead figure out where each apk of an app goes in first
before actually moving them into the right place.

Fixes: fdroid/fdroidserver#385
2020-01-01 15:25:43 +01:00
Marcus Hoffmann
7f6efa74f5 tests: add test for correctly handling CVC when archiving 2019-12-24 17:35:54 +01:00
Marcus Hoffmann
3403402fbc git force fetch tags
The behaviour of fetching tags changed in git 2.20. We need to force
fetch tags to restore the earlier behaviour and make fdroid git
operations work with newer git versions.

Closes fdroid/fdroidserver#718
2019-12-23 14:48:52 +01:00
Hans-Christoph Steiner
e9830fc4ab Merge branch 'faster_yaml' into 'master'
metadata: use yaml C implementation when available

Closes #716

See merge request fdroid/fdroidserver!696
2019-12-23 10:09:50 +00:00
Marcus Hoffmann
01d00d54ca metadata: use yaml C implementation when available
This is an order of magnitude faster. Requires the C yaml bindings to be
installed.

Fixes fdroid/fdroidserver#716
2019-12-23 01:59:33 +01:00
Marcus
bc4655f437 Merge branch 'remove_unused_function' into 'master'
remove unused function

See merge request fdroid/fdroidserver!697
2019-12-23 00:52:18 +00:00
Marcus Hoffmann
5642dc56ae remove unused function
The users of this were removed years ago in
013315bf10.
2019-12-23 01:29:06 +01:00
Marcus
44694a0bc7 Merge branch 'ndk20b' into 'master'
Add NDK r20b

See merge request fdroid/fdroidserver!695
2019-12-16 00:07:03 +00:00
Licaon_Kter
126f6bf839 Add NDK r20b 2019-12-16 00:07:03 +00:00
Michael Pöhn
d2481375bb Merge branch 'archive_description' into 'master'
archive description

See merge request fdroid/fdroidserver!694
2019-12-15 16:34:16 +00:00
Hans-Christoph Steiner
37ca21f6da
Merge branch 'hex_versionCode' into 'master'
* hex_versionCode:
  checkupdates: split out vercode parsing into testable function
  Add unit test for string_is_integer()
  Support hex versionCode in build command line
  Support hex in versionCode

See merge request fdroid/fdroidserver!692
2019-12-03 23:55:12 +01:00
Hans-Christoph Steiner
7d40e89341
checkupdates: split out vercode parsing into testable function 2019-12-03 23:51:48 +01:00
Jochen Sprickerhof
bbee2cf707 Add unit test for string_is_integer() 2019-12-03 21:49:44 +01:00
Hans-Christoph Steiner
492f12a7a8
nightly: set descriptions for repo and archive 2019-12-03 00:24:37 +01:00
Hans-Christoph Steiner
ddf1f8ea15
update: make default repo description translatable 2019-12-03 00:24:32 +01:00
Hans-Christoph Steiner
75639ba0e8
update: description is a hard requirement, set a default for archive 2019-12-03 00:23:56 +01:00
Jochen Sprickerhof
0e071a689d Support hex versionCode in build command line
Example: fdroid build net.gaast.giggity:0x200
2019-11-29 20:02:24 +01:00
Jochen Sprickerhof
b83c3c9e18 Support hex in versionCode
Example: https://github.com/Wilm0r/giggity/blob/master/app/src/main/AndroidManifest.xml#L2
2019-11-29 20:01:29 +01:00
Michael Pöhn
4d9ec479a0 Merge branch 'gradle6' into 'master'
Gradle 6.0 & 6.0.1

Closes #710

See merge request fdroid/fdroidserver!691
2019-11-26 10:04:04 +00:00
Licaon_Kter
d0449d9713 Gradle 6.0 & 6.0.1 2019-11-26 10:04:04 +00:00
Hans-Christoph Steiner
1f363a889d
jenkins-setup-build-environment: auto-detect RAM/CPU specs
This lets this setup run on more basic hardware, like schweiger/vibi.
2019-11-18 18:14:11 +01:00
Michael Pöhn
499d65f292 Merge branch 'some-fixes' into 'master'
Some fixes

Closes #703

See merge request fdroid/fdroidserver!690
2019-11-13 11:23:18 +00:00
Hans-Christoph Steiner
b95f66a806
scanner: only allow HTTPS versions of the whitelist 2019-11-13 11:59:24 +01:00
Hans-Christoph Steiner
e6bf586e74
common: make v2 signature message a debug message
https://gitlab.com/fdroid/fdroidserver/issues/703#note_238122327
closes #703
2019-11-13 11:59:23 +01:00
Hans-Christoph Steiner
3354e66bd3
common: use standard format tags when generating the log name 2019-11-13 11:59:20 +01:00
Hans-Christoph Steiner
2cbde77798
build: do not crash if SVN URL pre-validation fails; log error
This is the problem:
https://jenkins.debian.net/job/reproducible_fdroid_build_apps/704/console
2019-11-13 11:59:18 +01:00
relan
c74dc730dd Merge branch 'gradle-5.6.4' into 'master'
Gradle 5.6.4

See merge request fdroid/fdroidserver!689
2019-11-07 04:45:18 +00:00
Hans-Christoph Steiner
f7f9bea1f7
Gradle 5.6.4
https://gitlab.com/fdroid/fdroidserver/-/jobs/342228827
https://gradle.org/release-checksums/
2019-11-06 09:07:42 +01:00
Hans-Christoph Steiner
cca78114cb
gitlab-ci: fedora no longer installs difftools by default 2019-11-05 15:30:34 +01:00
Hans-Christoph Steiner
54b8302c94 Merge branch 'patch-2' into 'master'
remove redundant google analytics match

See merge request fdroid/fdroidserver!688
2019-11-04 09:06:41 +00:00
Mike Hardy
3648ef1f2e Update scanner.TestCase to match new regex regime
scanning for analytics is now handled by firebase/play-services regexes
2019-11-02 18:54:54 +00:00
Mike Hardy
3c398e2aa6 remove redundant google analytics match
'google.*play.*services' and 'firebase' will catch both manners of including analytics I think
https://developers.google.com/android/guides/setup#split
https://firebase.google.com/support/release-notes/android#latest_sdk_versions

This has the desired side effect of also allowing the libre analytics library
'net.mikehardy:google-analytics-java' and 'net.mikehardy:google-analytics-java7'
2019-11-02 18:40:58 +00:00
Hans-Christoph Steiner
d3df615ad1 Merge branch 'gradle563' into 'master'
Gradle 5.6.3

See merge request fdroid/fdroidserver!687
2019-10-30 20:41:21 +00:00
Licaon_Kter
828d164fb2 Gradle 5.6.3 2019-10-30 20:41:21 +00:00
Hans-Christoph Steiner
0a8af2c55f Merge branch 'fix-readline-in-srclibs' into 'master'
build: fix bad regexs when removing signingConfig from srclibs

See merge request fdroid/fdroidserver!686
2019-10-25 08:18:08 +00:00
Hans-Christoph Steiner
4ef3f96e27 Merge branch 'log-deploy-fix' into 'master'
fix disappearing build logs when deploying

See merge request fdroid/fdroidserver!685
2019-10-23 11:43:23 +00:00
Hans-Christoph Steiner
afaa24f2fd
build: fix bad regexs when removing signingConfig from srclibs
I went through the source of all apps in fdroiddata for examples, and found
some that use readLine() for things totally unrelated to signingConfigs.

https://gitlab.com/fdroid/fdroiddata/merge_requests/4775#note_234132902
2019-10-23 12:44:47 +02:00
Michael Pöhn
c954a14139 update.py: fix archiving .log.gz files 2019-10-23 11:04:07 +02:00
Michael Pöhn
7fa3c34e5b update tests for fixed log deployment+changelog 2019-10-15 15:19:18 +02:00
Michael Pöhn
d665106813 fix disappearing build logs when deploying 2019-10-15 14:28:45 +02:00
Hans-Christoph Steiner
6d11da5e13 Merge branch 'triple-t-2' into 'master'
parse Triple-T v2.x layout

See merge request fdroid/fdroidserver!683
2019-10-08 11:15:12 +00:00
Hans-Christoph Steiner
797003f9c6 Merge branch 'lint-allow-beerware-xskat' into 'master'
lint: allow Beerware and XSkat licenses

See merge request fdroid/fdroidserver!684
2019-10-07 11:26:34 +00:00
Hans-Christoph Steiner
a72904ee23
lint: allow Beerware and XSkat licenses
These licenses were already in our repo.  The are not FSF- or OSI-approved,
but they are included in Debian.  So for now at least, we should maintain
them in our list until we have a clearer picture of how we should make the
list of licenses we support.

* fdroidserver!682
* https://github.com/spdx/license-list-XML/issues/876
* Beerware in Debian:
  https://metadata.ftp-master.debian.org/changelogs//main/libm/libmd/libmd_1.0.1-3_copyright
* XSkat in Debian:
  https://metadata.ftp-master.debian.org/changelogs//main/x/xskat/xskat_4.0-7_copyright
2019-10-07 12:05:37 +02:00
Hans-Christoph Steiner
f8c954d89e Merge branch 'lint-url-improvements' into 'master'
Lint URL improvements

See merge request fdroid/fdroidserver!681
2019-10-07 08:36:18 +00:00
Hans-Christoph Steiner
5904aef5a7
update: parse Triple-T v2.x layout
Thanks to the very nice example from Piwigo, included here under the GPLv3+
https://github.com/Piwigo/Piwigo-Android

https://gitlab.com/fdroid/fdroiddata/merge_requests/5579#note_225834868
2019-10-04 14:11:40 +02:00
Hans-Christoph Steiner
a7dd7a812f
update: strip leading/tailing whitespace on author contact fields
Whitespace is not valid in email addresses, URLs, or phone numbers, and the
triple-t/fastlane file format generally has a newline at the end.
2019-10-04 11:33:39 +02:00
Hans-Christoph Steiner
1ef4f74aff lint: include MIT-CMU, it is so close to FSF/OSI-free MIT
fdroidserver!682

https://github.com/spdx/license-list-data/issues/53

* FSF lists two closely related variants as  X11 or Expat, search for "MIT license" in https://www.gnu.org/licenses/license-list.html
* X11 is considered free: https://directory.fsf.org/wiki/License:X11
* Expat is considered free: https://directory.fsf.org/wiki/License:Expat
* It is included in Debian, so it is DFSG-free: https://metadata.ftp-master.debian.org/changelogs//main/f/flite/flite_2.1-release-3_copyright
* Fedora considers it free https://fedoraproject.org/wiki/Licensing:MIT#CMU_Style
2019-10-04 11:30:24 +02:00
Hans-Christoph Steiner
3801db064a lint: improve HTTPS check
It was missing some domains, so I added another rule.  @IzzySoft pointed
out it was redudnant, so this removes the redudant rule and fixes the
original.

https://gitlab.com/fdroid/fdroidserver/merge_requests/681/diffs#note_225263464
2019-10-04 11:12:48 +02:00
Hans-Christoph Steiner
a8b7342e4c jenkins-build-all: enable deploy_process_logs for CI test
fdroidserver!515
2019-10-04 11:12:48 +02:00
Hans-Christoph Steiner
af4e231f7d lint: enforce HTTPS on GitHub and GitLab pages
The always provide HTTPS, so let's enforce it.
2019-10-04 11:12:48 +02:00
Hans-Christoph Steiner
17320c23f4 lint: don't trip up on projects with 'master' in the name
https://gitlab.com/fdroid/fdroiddata/merge_requests/5557#note_223283359
2019-10-04 11:12:48 +02:00
Hans-Christoph Steiner
17f37414db Merge branch 'license-overhaul-2' into 'master'
license overhaul: require FSF or OSI approved license + add override option for default license white-list

See merge request fdroid/fdroidserver!682
2019-10-03 22:01:07 +00:00
Michael Pöhn
d5ab303d83 lint: license override config option + require FSF/OSI approved licenses by default 2019-10-02 22:14:09 +02:00
Michael Pöhn
3c9535d64b lint: fsf approved licenses only 2019-10-02 12:15:02 +02:00
Michael Pöhn
0963da9fd3 Merge branch 'bugly' into 'master'
scanner: blacklist Bugly

See merge request fdroid/fdroidserver!680
2019-09-28 07:59:52 +00:00
relan
bd96a17ef2 scanner: blacklist Bugly
The artifact is licensed under "The Bugly Software License, Version 1.0"
[1], but link to the full text [2] is broken. LICENSE file in the source
code repository is empty.

I guess this library is non-free.

[1] https://mvnrepository.com/artifact/com.tencent.bugly/crashreport/2.8.6.0
[2] http://bugly.qq.com/licenses/LICENSE-1.0.txt
[3] https://github.com/BuglyDevTeam/Bugly-Android
2019-09-28 07:58:19 +03:00
Hans-Christoph Steiner
f331db1b22 Merge branch 'master' into 'master'
update: log errors on bad graphics, and then ignore the file

See merge request fdroid/fdroidserver!679
2019-09-26 20:29:30 +00:00
Hans-Christoph Steiner
c7048f2c39 update: log errors on bad graphics, and then ignore the file
Python PIL is not so tolerant, so bad EXIF causes crashes:

  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2088, in main
    insert_localized_app_metadata(apps)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 978, in insert_localized_app_metadata
    _strip_and_copy_image(os.path.join(root, f), destdir)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 754, in _strip_and_copy_image
    in_image = Image.open(fp)
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2687, in open
    % (filename if filename else fp))
OSError: cannot identify image file <_io.BufferedReader name='build/org.sw24softwares.starkeverben/fastlane/metadata/android/en-US/images/featureGraphic.png'>
2019-09-26 22:06:21 +02:00
Hans-Christoph Steiner
c738ad54ec
jenkins-test: only use APKs that'll never be in fdroiddata 2019-09-25 14:36:10 +02:00
Hans-Christoph Steiner
4190481142
jenkins-test: make source APK source exists 2019-09-25 12:41:07 +02:00
Hans-Christoph Steiner
cf2c1d0270
run-tests needs a source of APKs to function
The test runs on jenkins.debian.net were failing because they
specified a dir that did not exist.
2019-09-25 12:25:39 +02:00
Hans-Christoph Steiner
ebb8a6bf30 Merge branch 'ci-maintenance' into 'master'
CI maintenance

See merge request fdroid/fdroidserver!677
2019-09-23 10:38:15 +00:00
Hans-Christoph Steiner
8d3512763d
gitlab-ci: use a template for a complete apt CI setup
# Conflicts:
#	.gitlab-ci.yml
2019-09-23 11:50:51 +02:00
Hans-Christoph Steiner
0e40387805
gitlab-ci: switch debian/testing back to pure testing, no sid
The sid packages were needed as a temporary workaround while the new
androguard packages were settling into Debian.
2019-09-23 11:33:00 +02:00
Hans-Christoph Steiner
9b5f452f5d
switch official Travis test badge back to https://github.com/f-droid
The repos in this group are now setup as mirrors.
2019-09-23 11:32:58 +02:00
Hans-Christoph Steiner
7142a3b89f
travis: retry brew install, it randomly fails on downloads
$ brew tap adoptopenjdk/openjdk
Updating Homebrew...
==> Tapping adoptopenjdk/openjdk
Cloning into '/usr/local/Homebrew/Library/Taps/adoptopenjdk/homebrew-openjdk'...
fatal: unable to access 'https://github.com/adoptopenjdk/homebrew-openjdk/': Could not resolve host: github.com
Error: Failure while executing; `git clone https://github.com/adoptopenjdk/homebrew-openjdk /usr/local/Homebrew/Library/Taps/adoptopenjdk/homebrew-openjdk --depth=1` exited with 128.
The command "brew tap adoptopenjdk/openjdk" failed and exited with 1 during .
2019-09-23 11:32:56 +02:00
Hans-Christoph Steiner
0da93f9a7d
travis: test bash script syntax with macOS's bash version
!676
2019-09-23 11:32:55 +02:00
Hans-Christoph Steiner
c1110e0e69 Merge branch 'bash-3.2' into 'master'
Make gradlew-fdroid more portable

See merge request fdroid/fdroidserver!676
2019-09-23 09:31:22 +00:00
relan
932ab4a3c1 gradlew-fdroid: avoid sed
sed implementations (GNU sed vs. BSD sed) have variations in regex
syntax causing distributionUrl parsing to fail on macOS.
2019-09-23 07:12:17 +03:00
relan
944046b70b gradlew-fdroid: avoid associative arrays
macOS is shipped with bash-3.2 that does not support associative arrays.
2019-09-23 07:10:44 +03:00
Hans-Christoph Steiner
644428dadf Merge branch 'gradle-version-check' into 'master'
gitlab-ci: check gradle checksums against official list

See merge request fdroid/fdroidserver!674
2019-09-12 12:40:11 +00:00
Hans-Christoph Steiner
25548023e0
gitlab-ci: check gradle checksums against official list 2019-09-12 14:18:07 +02:00
Hans-Christoph Steiner
c70e2ff056 Merge branch 'add-gradle-5.6.1' into 'master'
Add Gradle 5.6.1 and 5.6.2

See merge request fdroid/fdroidserver!673
2019-09-09 11:04:11 +00:00
osscontrib
ce5a25811a Add Gradle 5.6.1 and 5.6.2 2019-09-08 23:22:18 -04:00
Michael Pöhn
ceac51eac1 Merge branch 'patch-1' into 'master'
Update CHANGELOG.md

See merge request fdroid/fdroidserver!672
2019-08-30 19:32:30 +00:00
Michael Pöhn
79d470934d Update CHANGELOG.md 2019-08-30 19:08:43 +00:00
Michael Pöhn
e8c926ba3b Merge branch 'master' into 'master'
do not crash when returned system encoding is None

See merge request fdroid/fdroidserver!671
2019-08-30 19:04:40 +00:00
Pablo Castellano
4ec6958e33 do not crash when returned system encoding is None 2019-08-30 19:45:23 +02:00
Hans-Christoph Steiner
13dc98795f Merge branch 'scanner-debian-maven' into 'master'
Fix local Debian Maven repo handling

See merge request fdroid/fdroidserver!670
2019-08-29 20:59:23 +00:00
relan
079754c56c scanner: add a test for the local Debian Maven repo 2019-08-29 21:33:12 +03:00
relan
3a7ad650e3 scanner: fix local Debian Maven repo handling
The resulting regex was 'https?://file:///usr/share/maven-repo' causing
scanner error.
2019-08-29 21:32:54 +03:00
Hans-Christoph Steiner
c7cd731833
add Tidelift link to FUNDING.yml
[skip ci]
2019-08-29 10:04:19 +02:00
Hans-Christoph Steiner
1d5e241776
add donation links to GitHub FUNDING.yml
https://github.blog/2019-05-23-announcing-github-sponsors-a-new-way-to-contribute-to-open-source/

fdroiddata!5041
2019-08-29 09:27:29 +02:00
Hans-Christoph Steiner
a71d4e5ab8 Merge branch 'graphic-hash-filename-for-caching' into 'master'
Graphic hash filename for caching

See merge request fdroid/fdroidserver!669
2019-08-29 07:26:01 +00:00
Hans-Christoph Steiner
70e7e720b9
update: use graphics filename with hash in index to support caching
Using a filename based on the hash of the contents means that the caching
algorithms for fdroidclient and browsers can safely cache the file forever
using the filename, since this guarantees that the contents will never
change for a given filename.

This does not cover screenshots, only icon.png, featureGraphic.png,
tvBanner.png, and promoGraphic.png.

fdroidserver#689
fdroid-website!453
2019-08-29 08:23:51 +02:00
Hans-Christoph Steiner
508af00e84
update: only copy graphics and screenshots if mtime/size has changed
Instead of copying every time, trust the filesystem to tell us when the
file has changed.
2019-08-29 08:23:47 +02:00
Hans-Christoph Steiner
fbdecbceb7
setup.py: ruamel.yaml >= 0.15 required for yml rewrites 2019-08-28 15:57:44 +02:00
Hans-Christoph Steiner
ce54dbfc11
setup.py: use officially documented way of including README
https://packaging.python.org/tutorials/packaging-projects/
2019-08-28 15:57:43 +02:00
Hans-Christoph Steiner
f13c41e3ba
update: remove Provides: from template.yml test case
!654
dcf3837bcb
2019-08-28 15:57:40 +02:00
Hans-Christoph Steiner
7090ce63dd Merge branch 'remove-provides-in-yml' into 'master'
Remove `Provides:` in yaml metadata

Closes #676

See merge request fdroid/fdroidserver!654
2019-08-28 13:39:59 +00:00
Hans-Christoph Steiner
a1f1b0f2e9 Merge branch 'fix-disapearing-metadata' into 'master'
keep yaml metadata when rewrite failed

Closes #645

See merge request fdroid/fdroidserver!658
2019-08-28 13:28:21 +00:00
Michael Pöhn
9cb43f44b9 add changelog entry for !658 2019-08-27 15:43:20 +02:00
Michael Pöhn
8e5232076f do not delete yml metadata when raumel not installed 2019-08-27 15:38:40 +02:00
Michael Pöhn
0885303672 add additional rewritemeta test for yml 2019-08-27 15:38:40 +02:00
Michael Pöhn
3951d93196 add rewritemeta.TestCase 2019-08-27 15:38:40 +02:00
Michael Pöhn
902f1307dc rewritemeta: refactor supported list to module variable SUPPORTED_FORMATS 2019-08-27 15:38:40 +02:00
Michael Pöhn
08acb55897 keep yaml metadata when rewrite failed 2019-08-27 15:38:40 +02:00
Hans-Christoph Steiner
cb131b45ab Merge branch 'changelog-format' into 'master'
Changelog format

See merge request fdroid/fdroidserver!665
2019-08-26 09:47:29 +00:00
Hans-Christoph Steiner
80febadeaf Merge branch 'gradle-5.6' into 'master'
Add Gradle 5.6

See merge request fdroid/fdroidserver!666
2019-08-26 09:46:58 +00:00
Hans-Christoph Steiner
69350d5443 Merge branch 'platform29' into 'master'
Add platform 29 & buildtools

See merge request fdroid/fdroidserver!667
2019-08-26 09:46:36 +00:00
Licaon_Kter
2f07bafbed Add platform 29 & buildtools 2019-08-26 09:46:35 +00:00
Łukasz Rutkowski
16c1f69f7b Add Gradle 5.6 2019-08-23 18:20:40 +02:00
Michael Pöhn
6b5fb27532 add some missing items to CHANGELOG.md 2019-08-22 01:48:58 +02:00
Michael Pöhn
fd2a9d07ca format CHANGELOG.md to conform with _keep a changelog_ v1.0.0 2019-08-21 22:11:02 +02:00
Hans-Christoph Steiner
b40906d148
update CHANGELOG for v1.1.4 2019-08-15 10:54:19 +02:00
Marcus
7f269be2f7 Merge branch 'ndk_r20' into 'master'
makebuildserver: add ndk r20

See merge request fdroid/fdroidserver!663
2019-07-31 14:10:52 +00:00
Marcus Hoffmann
bdf67784f5 makebuildserver: add ndk r20 2019-07-31 15:40:57 +02:00
Michael Pöhn
39c589fb85 Merge branch 'update-create-template' into 'master'
make metadata template behave well for empty values

Closes #681

See merge request fdroid/fdroidserver!657
2019-07-24 11:02:38 +00:00
Michael Pöhn
8cfeeab409 Merge branch 'ingore-checks-test' into 'master'
Ingore checks test

See merge request fdroid/fdroidserver!660
2019-07-23 21:04:31 +00:00
Michael Pöhn
d0368d0ad8 common add parse_androidmanifests_ignore test 2019-07-23 22:44:45 +02:00
Michael Pöhn
bad888856a checkupdates: add check_http ignore test 2019-07-23 22:01:18 +02:00
Michael Pöhn
be3d498391 checkupdates: check_http fix ignore check 2019-07-23 22:01:18 +02:00
Michael Pöhn
23280b6029 checkupdates add check_http test 2019-07-23 22:01:18 +02:00
Michael Pöhn
1c7af1dc2c add test for checkupdates_app() 2019-07-23 22:01:18 +02:00
Michael Pöhn
1c4d377793 use logging.warning in checkupdates 2019-07-23 22:01:18 +02:00
Michael Pöhn
42a049cd74 Merge branch 'bugfix/ignore-checks' into 'master'
Bugfix/ignore checks

Closes #638

See merge request fdroid/fdroidserver!659
2019-07-23 13:05:12 +00:00
Gerhard Olsson
19aa736011 UpdateCheckName is Ignore: Do not parse manifests 2019-07-23 01:02:31 +02:00
Gerhard Olsson
7c4bed0558 UpdateCheckIgnore: Exception if version not matched
Ignoreversions were checked also if version did not match which raised the exception
The 'version check' runs in some unexpected situations like just
to find directories where to find the AutoName.
2019-07-23 00:21:28 +02:00
Marcus
1ccd839a77 Merge branch 'gradle-5.5.1' into 'master'
Add Gradle 5.5.1

See merge request fdroid/fdroidserver!656
2019-07-22 07:53:38 +00:00
Michael Pöhn
e2fed09af1 make metadata template behaves well for empty values 2019-07-22 01:34:55 +02:00
relan
24e0db1c83 Add Gradle 5.5.1 2019-07-21 18:20:25 +03:00
Michael Pöhn
dcf3837bcb parse yaml: ignore (and warn) deprecated field: Provides 2019-07-15 15:45:02 +02:00
Michael Pöhn
6e48663230 test that write yaml does not write provides 2019-07-11 03:35:23 +02:00
Michael Pöhn
723bd110a6 test that yaml parsing does not accept provides 2019-07-11 03:35:23 +02:00
Michael Pöhn
191363ad55 exclude Provides metadata from yml 2019-07-11 03:35:23 +02:00
Hans-Christoph Steiner
051596dd0d
tests: conditionally disable tests that can't work with apksigner
apksigner treats MD5 signatures as valid, fdroid does not.
2019-07-10 14:35:03 +02:00
Hans-Christoph Steiner
26af94974a Merge branch 'rsync-buildslogs-to-webroot-repo' into 'master'
build: rsync buildlogs to <webroot>/repo

See merge request fdroid/fdroidserver!651
2019-07-10 08:55:04 +00:00
Michael Pöhn
06c798c618 Merge branch 'more-test-fixes' into 'master'
More test and release process fixes

See merge request fdroid/fdroidserver!652
2019-07-07 21:47:58 +00:00
Marcus
4d90474460 Merge branch 'update-gradle' into 'master'
Add Gradle 5.5

See merge request fdroid/fdroidserver!653
2019-07-07 19:50:15 +00:00
Thomas Wirth
48fce5f6be Add Gradle 5.5 2019-07-07 21:03:24 +02:00
Michael Pöhn
6bd39d7532 Merge branch 'checkupdates-regex' into 'master'
checkupdates: match whole words

See merge request fdroid/fdroidserver!649
2019-07-06 15:31:05 +00:00
Michael Pöhn
2c87b5e6f9 deploy build logs: no timestamps 2019-07-06 16:48:56 +02:00
Michael Pöhn
f30983368c build: rsync buildlogs to <webroot>/repo 2019-07-06 16:48:56 +02:00
Hans-Christoph Steiner
a248a69692 tests: skip disabled_algorithms test when apksigner is present
apksigner doesn't treat MD5 signatures as deprecated, so that portion of
the tests would always fail.
2019-07-04 16:45:50 +02:00
Hans-Christoph Steiner
a9aa8788e0 tests: only run source tarball test if running from git clone 2019-07-03 22:33:15 +02:00
Hans-Christoph Steiner
60173d35df ./setup.py release: make upload step manual so CI can run first
There is lots of CI tests for the Debian package, so it is good to first
run those Debian CI tests before uploading an fdroidserver release.
2019-07-03 20:46:40 +02:00
Hans-Christoph Steiner
aa1e958360 tests: only run hooks/pre-commit if its present (not in source tarball) 2019-07-03 20:46:30 +02:00
Hans-Christoph Steiner
1fdeb4691c include all relevant files in source tarball (MANIFEST.in) 2019-07-03 20:46:30 +02:00
Michael Pöhn
bde12e2a52 Merge branch 'git-test-overhaul' into 'master'
big test overhaul

See merge request fdroid/fdroidserver!650
2019-07-03 12:36:40 +00:00
Hans-Christoph Steiner
b9475374a8 update test badges in README 2019-07-03 11:29:38 +02:00
Hans-Christoph Steiner
2f198c24b9 travis: purge xcode9.2 runner, it has flaky networking 2019-07-03 09:07:45 +02:00
Hans-Christoph Steiner
ab8a623c90 travis: tame unneeded messages in log to prevent job terminiation
This is to avoid random job fails from:
"The job exceeded the maximum log length, and has been terminated."
2019-07-03 09:07:42 +02:00
Hans-Christoph Steiner
828ba8aad9 travis: use travis_retry to retry failed sdkmanager/pip3 downloads 2019-07-03 09:07:36 +02:00
Hans-Christoph Steiner
13dbf995d5 travis: uninstall mercurial since it requires Python2 and is unused 2019-07-03 09:07:36 +02:00
Hans-Christoph Steiner
59920b9ab6 travis: upgrade Java to newest release if old enough to still use MD5
The Android SDK still requires Java8, so just force it on all macOS
versions.
2019-07-03 09:07:36 +02:00
Hans-Christoph Steiner
4881e6818b travis: purge "linux" test now that the runner was upgraded to Xenial
Xenial test runs are already well covered by GitLab-CI.
2019-07-03 09:07:36 +02:00
Hans-Christoph Steiner
a0f5ee661e tests: common.test_sign_apk requires aapt to run 2019-07-03 09:07:36 +02:00
Hans-Christoph Steiner
57b9d1e316 tests: handle when apksigner considers MD5 signatures valid 2019-07-02 22:17:06 +02:00
Hans-Christoph Steiner
a9b8687e94 gitlab-ci: the ubuntu_lts test also tests the PPA 2019-07-02 22:17:06 +02:00
Hans-Christoph Steiner
e2351f6c53 gitlab-ci: move pip job to Xenial, Trusty is over 2019-07-02 22:17:06 +02:00
Hans-Christoph Steiner
7381a94b47
gitlab-ci: disable bandit fail on standard debug keystore password 2019-06-30 22:48:52 +02:00
relan
781b55f777 checkupdates: match whole words
Match only whole words when looking for versionCode, versionName, etc. in
manifests. A real build.gradle example:

    flutterVersionCode = '1'
    flutterVersionName = '1.0'
    ...
    defaultConfig {
        versionCode 53
        versionName "2.0.3"
    }

Before this change checkupdates was erroneously getting version code and
version name from the first two lines and failing to find a new release.
2019-06-13 19:51:44 +03:00
Michael Pöhn
da0d6393bd Merge branch 'makebuildserver-dl-timeout' into 'master'
makebuildserver: explicit timeout for cache downloading

Closes #666

See merge request fdroid/fdroidserver!648
2019-05-28 11:07:21 +00:00
Michael Pöhn
06bbd3044b makebuildserver: explicit timeout for cache downloading 2019-05-28 12:07:36 +02:00
Michael Pöhn
333098b95a Merge branch 'improve-litecoin-address-validation' into 'master'
improve litecoin validation + tests

Closes #660

See merge request fdroid/fdroidserver!644
2019-05-28 09:26:52 +00:00
Michael Pöhn
66105de833 improve litecoin validation + tests 2019-05-28 11:04:43 +02:00
Michael Pöhn
92f50e5e50 Merge branch 'patch-1' into 'master'
makebuildserver: show number of files to download

See merge request fdroid/fdroidserver!647
2019-05-28 08:48:07 +00:00
rubo77
e895e981ad makebuildserver: show number of files to download 2019-05-28 00:05:27 +02:00
Michael Pöhn
9a10dce0e3 Merge branch 'fix-unit-tests' into 'master'
fix bandit reports

Closes #663

See merge request fdroid/fdroidserver!646
2019-05-27 09:05:35 +00:00
Michael Pöhn
716f84ec5e use actually working bandit version when running tests on alpine 2019-05-24 23:14:20 +02:00
Michael Pöhn
f434670ba5 Merge branch 'allow-bech32-bitcoin-addresses' into 'master'
bitcoin validation: allow bech32

Closes #655

See merge request fdroid/fdroidserver!643
2019-05-10 09:07:38 +00:00
Michael Pöhn
06cec2041d improve bitcoin validation regex + testcases 2019-05-07 22:43:05 +02:00
Michael Pöhn
64275356e4 Merge branch 'four-bug-fixes' into 'master'
three bug fixes: let apps build with Debian-local repos, nightly fixes

See merge request fdroid/fdroidserver!642
2019-05-06 21:11:46 +00:00
Hans-Christoph Steiner
0e807264f5 update bash completion for new deploy/nightly flags 2019-05-02 08:51:39 +02:00
Hans-Christoph Steiner
5959a395c4 nightly: archive older versions; remove archive if git mirror is full 2019-05-01 21:16:15 +02:00
Hans-Christoph Steiner
869c68dbdb 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.
2019-05-01 21:16:15 +02:00
Hans-Christoph Steiner
f0460dea6e 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.
2019-05-01 21:16:15 +02:00
Hans-Christoph Steiner
a84b515430 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/ = ...
2019-05-01 21:16:15 +02:00
Marcus Hoffmann
cc193e903f remove obsloleted gradle versions from default buildserver install
See https://gitlab.com/fdroid/fdroidserver/merge_requests/641
2019-05-01 14:08:10 +02:00
Michael Pöhn
a670085adb Merge branch 'gradle541' into 'master'
Add Gradle 5.4 and 5.4.1, fix 5.3

See merge request fdroid/fdroidserver!641
2019-04-30 17:59:13 +00:00
Licaon_Kter
293e5483fc Add Gradle 5.4 and 5.4.1, fix 5.3 2019-04-30 17:59:13 +00:00
Hans-Christoph Steiner
9045e2854a
travis-ci: revert change that broke upgrading old Java
https://gitlab.com/fdroid/fdroidserver/merge_requests/637#note_159786747
2019-04-11 14:16:07 +02:00
Hans-Christoph Steiner
dd2f9d60f8
publish: fix stupid error in repro-signing and add integration test
stoopid mistake in ea84014f9b reported
by @CiaranG
2019-04-11 14:06:51 +02:00
Marcus
7272689ced Merge branch 'master' into 'master'
Added newer ndks, gradles, latest sdk-license, and update java 1.8 version

See merge request fdroid/fdroidserver!637
2019-04-11 11:42:18 +00:00
Marcus
3c74c07587 Merge branch 'patch-1' into 'master'
metadata.py - typo

See merge request fdroid/fdroidserver!639
2019-04-08 16:30:32 +00:00
Licaon_Kter
0ea03ddfaa metadata.py - typo 2019-04-08 16:30:32 +00:00
Michael Pöhn
67a8f03fcb Merge branch 'revert-d45431aa' into 'master'
Revert "Merge branch 'write-yaml-overhaul' into 'master'"

See merge request fdroid/fdroidserver!638
2019-04-01 10:45:49 +00:00
Michael Pöhn
67731470cc Revert "Merge branch 'write-yaml-overhaul' into 'master'"
This reverts merge request !630
2019-04-01 10:24:00 +00:00
Taco
457cf22361 Added newer ndks, gradles, latest sdk-license, and update java 1.8 version 2019-03-30 17:10:21 -04:00
Michael Pöhn
d45431aa9e Merge branch 'write-yaml-overhaul' into 'master'
use pyyaml for writing metadata instead of ruamel

Closes #611

See merge request fdroid/fdroidserver!630
2019-03-30 16:53:11 +00:00
Michael Pöhn
7215323982 Merge branch 'makebuildserver-cleanup' into 'master'
makebuildserver cleanup

See merge request fdroid/fdroidserver!626
2019-03-30 16:52:40 +00:00
Michael Pöhn
84cae0eebc Merge branch 'flush-file-before-pass' into 'master'
Flush file before passing it to next function

See merge request fdroid/fdroidserver!636
2019-03-28 19:19:30 +00:00
Nico Alt
3798a884a6 Flush file before passing it to next function
When downloading a repo index, the downloaded index got written to a
file with `.write()` in a `with` clause. Before the file got actually
written to the disk, it got already passed into the next function,
resulting in a `VerificationException`:
```
JAR signature failed to verify: /tmp/tmppq2r51r0
jarsigner: java.util.zip.ZipException: zip file is empty
```

This behavior got introduced in
869cc114a3.

I've found this bug with help of Repomaker's tests: https://gitlab.com/fdroid/repomaker/merge_requests/215#note_148994053
2019-03-22 17:15:58 +01:00
Hans-Christoph Steiner
edfd3cf530 Merge branch 'master' into 'master'
deploy: show HTTP errors when virustotal error fails.

See merge request fdroid/fdroidserver!635
2019-03-22 10:15:32 +00:00
Hans-Christoph Steiner
06ef99be6a deploy: show HTTP errors when virustotal error fails.
Otherwise, this was posting mystery JSON parsing errors because it was
trying to parse the HTTP error page as JSON.  This also moves the
virustotal API key to post data so it is not printed out in the stacktrace.
2019-03-22 10:54:28 +01:00
Michael Pöhn
2683b37044 yml metadata write: do not use local functions 2019-03-19 01:01:18 +01:00
Michael Pöhn
881a79fa84 test writing all yaml fields 2019-03-18 22:45:35 +01:00
Michael Pöhn
63afc0acb5 use pyyaml for writing metadata instead of ruamel 2019-03-18 22:45:35 +01:00
Michael Pöhn
7662520b54 makebuildserver: refactored cachedir variable away 2019-03-18 22:45:13 +01:00
Michael Pöhn
b6e45753da makebuildserver: cachefile now static variable
rename cachefile to CACHE_FILE to make clear that it is a static
variable. Also stopped passing it as an argument when it is already
globally visible.
2019-03-18 22:45:13 +01:00
Michael Pöhn
1d4e5952c9 move host vm warning to main block 2019-03-18 22:45:13 +01:00
Michael Pöhn
bb067055d4 move location check to main blok 2019-03-18 22:45:13 +01:00
Michael Pöhn
d4e5fdd95b use same logging setup as in all other fdroid scripts 2019-03-18 22:45:13 +01:00
Michael Pöhn
81f1bcf752 Merge branch 'fix-fedora-tests' into 'master'
fix fedora ci tests: install @development-tools

See merge request fdroid/fdroidserver!634
2019-03-18 18:43:26 +00:00
Michael Pöhn
102340ec5a fix fedora ci tests: install @development-tools
Sometime pip dependencies required a C compiler because they need to
compile something during installation.
2019-03-18 16:01:34 +01:00
Hans-Christoph Steiner
9b44dcd073 Merge branch 'triplet' into 'master'
improved Triple-T support

Closes #567, #579, and #542

See merge request fdroid/fdroidserver!629
2019-02-27 16:03:26 +00:00
Hans-Christoph Steiner
c4a3354c75 update: support flavors and alternate project dirs for Triple-T
closes #542
2019-02-27 16:40:47 +01:00
Hans-Christoph Steiner
67834697e0 update: get localized text/images from Triple-T Play Publisher 2.x
closes #579
closes #567
2019-02-26 23:42:39 +01:00
Marcus
c912d2e1a8 Merge branch 'two-fixes' into 'master'
Two fixes

See merge request fdroid/fdroidserver!628
2019-02-22 22:00:47 +00:00
Hans-Christoph Steiner
7798dcf9dd index: keep mirrors in the order specified in config.py
The mirrors are displayed in fdroidclient in the order they are received,
and there might be some reason why a repo maintainer wants them in a
specific order.  The danger is that if the mirrors are set in config.py
using "mirrors = {'foo', bar'}" they will have a randomized order since it
will be in a set.  They should be set using [] or () to have a fixed order.
2019-02-22 21:38:20 +01:00
Hans-Christoph Steiner
548f73d988 nightly: search subdirs called 'fdroid' for APKs
@MTRNord tracked down this bug while working on his app
https://gitlab.com/Nordgedanken/simplematrix
2019-02-22 21:32:33 +01:00
Marcus Hoffmann
daff6658c0 ndk r19b: missed a few places 2019-02-20 13:18:24 +01:00
Marcus Hoffmann
8d9f885b1c makebuildserver: add ndk r19b 2019-02-19 15:43:35 +01:00
Hans-Christoph Steiner
9963cf1aba
jenkins-setup-build-environment: fix typo 2019-02-14 14:09:17 +01:00
Hans-Christoph Steiner
a8957447d6 Merge branch 'gradle5.2' into 'master'
Gradle5.2

See merge request fdroid/fdroidserver!625
2019-02-14 13:08:23 +00:00
Marcus Hoffmann
0bc5287db0 Remove gradle 5.1 from default install
gradle.org recommends using the latest patch release.
It can still be downloaded on demand.
2019-02-13 18:41:07 +01:00
Marcus Hoffmann
40cf7311d0 add gradle 5.2 and 5.2.1
Only install 5.2.1 into the buildserver though. It took only 4 days
until 5.2.1 came out and gradle.org recommends using the latest patch
release.
2019-02-13 18:37:26 +01:00
Hans-Christoph Steiner
9be0b3733b
jenkins: switch test fdroidclient build to version we care about
96150 is so old, we no longer install the required version of build-tools:
v23.0.0
2019-02-12 23:17:26 +01:00
Hans-Christoph Steiner
b3cd020edb jenkins: update makebuildserver.config.py based on new specs 2019-02-12 20:42:17 +01:00
Hans-Christoph Steiner
40edb1a87d jenkins: purge libvirt, the runner is now baremetal+virtualbox 2019-02-12 20:38:40 +01:00
Hans-Christoph Steiner
94affe9421
version 1.2 alpha 2019-02-12 12:43:37 +01:00
Hans-Christoph Steiner
d03b121152
update: allow tests to pass when apksigner is not installed
This is only for the v2/v3 signatures.

fdroid/fdroidserver#627
2019-02-12 12:43:21 +01:00
Michael Pöhn
35e67295e9 Merge branch 'mvglasow-master-patch-68763' into 'master'
Clarify warning message about skipped sudo commands

See merge request fdroid/fdroidserver!608
2019-02-09 18:08:23 +00:00
Michael Pöhn
dc0b70bd15 Merge branch 'log_guest_ram_cpu' into 'master'
build: log buildserver guest ram + cpu

See merge request fdroid/fdroidserver!623
2019-02-08 18:53:10 +00:00
Marcus Hoffmann
94c6b776fe build: log buildserver guest ram + cpu 2019-02-07 19:48:03 +01:00
Marcus
e5886a498b Merge branch 'feature/cloudrail' into 'master'
Add cloudrail to blacklist

Closes #628

See merge request fdroid/fdroidserver!622
2019-02-07 10:20:38 +00:00
Pierre Rudloff
b3754af137 Add cloudrail to blacklist 2019-02-07 10:26:03 +01:00
Hans-Christoph Steiner
2157498dcf version 1.1.1 2019-02-03 15:50:39 +01:00
Hans-Christoph Steiner
43f8c29cc6 add CHANGELOG 2019-02-03 15:50:39 +01:00
Hans-Christoph Steiner
50ca3967cc update: fix tests when running without apksigner 2019-02-03 15:50:39 +01:00
Hans-Christoph Steiner
17dc231dc9 update: fix running without androguard
Soon, we can rip out all the aapt parsing stuff, but not yet!
2019-02-03 15:50:39 +01:00
Hans-Christoph Steiner
5d39a97ab8 Merge branch 'index-v1-sdk-as-int' into 'master'
fdroid update: treat target and min sdk version as integers

Closes #596

See merge request fdroid/fdroidserver!596
2019-02-03 14:47:36 +00:00
Hans-Christoph Steiner
c386774413 Merge branch 'weblate' into 'master'
Updated by hook in Weblate to make PO files to match POT (msgmerge)

See merge request fdroid/fdroidserver!620
2019-02-01 15:20:36 +00:00
Hans-Christoph Steiner
ec578fe85f Updated by hook in Weblate to make PO files to match POT (msgmerge) 2019-02-01 15:20:36 +00:00
Hans-Christoph Steiner
9bc81f2689 Merge branch 'encoding-warning' into 'master'
log a warning when encoding is not set to utf-8

Closes #617

See merge request fdroid/fdroidserver!619
2019-02-01 13:16:50 +00:00
Michael Pöhn
5a1c6cf2de log a warning when encoding is not set to utf-8 2019-02-01 13:26:31 +01:00
Hans-Christoph Steiner
09bbca4a51 update: force all "SDK Version" values to int when parsing aapt 2019-02-01 09:56:36 +01:00
Michael Pöhn
dd695c650e update: treat target and min sdk version as int 2019-02-01 09:56:21 +01:00
Hans-Christoph Steiner
64bab7a94c Merge branch 'v2-sig-support' into 'master'
first basic support for APK Signature v2 and v3

See merge request fdroid/fdroidserver!618
2019-02-01 08:40:20 +00:00
Hans-Christoph Steiner
2907aa3ea3 fallback to v3 signatures if v1 and v2 are not available 2019-02-01 09:18:00 +01:00
Hans-Christoph Steiner
d96f5ff660 support APK Signature V2 when apksigner is installed
This was done with much help from @uniqx.  This is the first level of
supporting APK Signatures v1, v2, and v3.  This is enough to include
APKs with any combo of v1/v2/v3 signatures.  For this to work at all,
apksigner and androguard 3.3.3+ must be installed.

closes #399
2019-02-01 09:17:56 +01:00
Hans-Christoph Steiner
ea84014f9b make signer_fingerprint() accept DER encoded certs
androguard's v2 signature methods return DER-encoded certificates.  The DER-
encoded certificates are parsed from JAR Signature's raw "Signature Block
File".
2019-02-01 08:50:57 +01:00
Hans-Christoph Steiner
4d68163175 remove --on-server from completion, it is not a user option
fdroid/fdroidserver!617
a787d123a2
2019-02-01 08:50:57 +01:00
Hans-Christoph Steiner
709d35be0e Merge branch 'patch-1' into 'master'
change glob filter for graphics to not filter out valid IETF RFC5646 locales (fixes #621 and #357)

Closes #357 and #621

See merge request fdroid/fdroidserver!611
2019-01-31 22:09:41 +00:00
Michael Pöhn
f5a10e6e82 Merge branch 'basebox-0.5.1' into 'master'
makebuildserver: update to basebox 0.5.1

See merge request fdroid/fdroidserver!615
2019-01-31 13:32:44 +00:00
Tobias Zwick
1cbd19e33d change back link to fastlane docs 2019-01-30 11:29:55 +01:00
Hans-Christoph Steiner
07759d7550 convert all translation strings to use unicode ellipses
This is already the case in fdroidclient and Debian in general. Weblate
also defaults to checking that the unicode ellipsis is used.

sed -i 's,\.\.\.",…",' locale/fdroidserver.pot locale/*/*/*.po
2019-01-29 13:57:05 +01:00
Hans-Christoph Steiner
7133cede89 gitlab-ci: add cache, extend timeouts/retries to stabilize Fedora job
This is happening too often:
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: Error downloading packages:
  Curl error (28): Timeout was reached for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f29&arch=x86_64 [Connection timed out after 30001 milliseconds]
ERROR: Job failed: exit code 1

https://gitlab.com/fdroid/fdroidserver/-/jobs/152719443

# Conflicts:
#	.gitlab-ci.yml
2019-01-29 13:40:55 +01:00
Hans-Christoph Steiner
3b84a82728 gitlab-ci: fix locale checks in pip_install job 2019-01-29 13:01:25 +01:00
Hans-Christoph Steiner
965b544150 Merge branch 'hide-on-server-cli-flag' into 'master'
fdroid build: hide --on-server cli flag

See merge request fdroid/fdroidserver!617
2019-01-29 11:41:15 +00:00
Michael Pöhn
a787d123a2 fdroid build: hide --on-server cli flag 2019-01-29 11:23:45 +01:00
Hans-Christoph Steiner
54a1c06ce0 tagging release v1.1
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 Comment: GPG for Android - https://guardianproject.info/code/gnupg/
 
 iQEcBAABCAAGBQJcTzGDAAoJED4XeBe6G5v6edMH+wRDL6aInF2yLHx/mYMozY+x
 FSxPb7lyIFYVMfjjoldfL15B8cZgCAKbS7M2xcm0eWjfUnu6yBs9GncsY87DhCYm
 tsxI9MOWELzz6e3KHe/C/21vhZj+lIkyw6rIqJ2J0Aw7E6AKxd08d7N8FnyTVhNx
 uq6tKasz6QiDXcwr9G+nikQ3mJLmXRa/noOIJ33ESdGwx2MfvQyqV2JGKBRaQXDD
 bry0w2foT8fjmxxyEtDBxMTFNlEMefS4YccEgHrxxsTbU7ZCIh1+O8wMmIud7n0v
 AEmjjZS/6sF2ckbna+1XaRbz4lDwTxi/p8V4lR+HhKqwIxjDPsb/r6mnRSxqehs=
 =7O4W
 -----END PGP SIGNATURE-----

Merge branch into 'master'

tagging release v1.1

* tag '1.1':
  set version to 1.1
2019-01-29 10:02:12 +01:00
Michael Pöhn
7ea049ba91 Merge branch 'makebuildserver-avoid-cache-request-flood' into 'master'
makebuildserver: avoid trying to continue cache downloads when checksum is okay

See merge request fdroid/fdroidserver!616
2019-01-29 07:59:41 +00:00
Michael Pöhn
8c025b91d8 makebuildserver: avoid trying to continue cache downloads when checksum is okay 2019-01-28 22:16:48 +01:00
Michael Pöhn
6823d534ee update basebox to 0.5.1 2019-01-28 21:08:04 +01:00
Tobias Zwick
50b1e648b2 remove listing about the expected directory structure from the docstring, instead, link the current fastlane docs 2019-01-28 19:44:03 +01:00
Tobias Zwick
412185f058 Merge branch 'master' into patch-1 2019-01-28 19:30:26 +01:00
Hans-Christoph Steiner
714c6ce902
set version to 1.1 2019-01-28 17:43:39 +01:00
Hans-Christoph Steiner
4cbe1d1222 Merge branch 'master' into 'master'
polish up all the localizations for 1.1, and add basic CI tests

See merge request fdroid/fdroidserver!614
2019-01-28 16:21:58 +00:00
Hans-Christoph Steiner
81b1142bec locale: fix missing format strings 2019-01-28 17:00:08 +01:00
Hans-Christoph Steiner
4fa5512041 update list of officially supported languages to ship with source 2019-01-28 17:00:03 +01:00
Hans-Christoph Steiner
6925083e57 gitlab-ci: compile locales using gettext and babel 2019-01-28 14:42:29 +01:00
Hans-Christoph Steiner
288877e7ce travis-ci: fix GNU sed for macOS, homebrew changed how it works
++brew install gnu-sed --with-default-names
Warning: gnu-sed: this formula has no --with-default-names option so it will be ignored!
==> Downloading https://homebrew.bintray.com/bottles/gnu-sed-4.7.high_sierra.bot
######################################################################## 100.0%
==> Pouring gnu-sed-4.7.high_sierra.bottle.2.tar.gz
==> Caveats
GNU "sed" has been installed as "gsed".
If you need to use it as "sed", you can add a "gnubin" directory
to your PATH from your bashrc like:
    PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
2019-01-28 14:38:14 +01:00
Hans-Christoph Steiner
9226cee162 travis-ci: skip Uygher (ug) in Ubuntu/trusty tests, gettext is too old
Traceback (most recent call last):
  File "./setup.py", line 97, in <module>
    'Topic :: Utilities',
  File "/usr/lib/python3.4/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.4/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.4/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/usr/lib/python3/dist-packages/babel/messages/frontend.py", line 133, in run
    catalog = read_po(infile, locale)
  File "/usr/lib/python3/dist-packages/babel/messages/pofile.py", line 121, in read_po
    catalog = Catalog(locale=locale, domain=domain, charset=charset)
  File "/usr/lib/python3/dist-packages/babel/messages/catalog.py", line 247, in __init__
    locale = Locale.parse(locale)
  File "/usr/lib/python3/dist-packages/babel/core.py", line 313, in parse
    raise UnknownLocaleError(input_id)
babel.core.UnknownLocaleError: unknown locale 'ug'
2019-01-28 14:38:14 +01:00
Hans-Christoph Steiner
9449d52fbf locale: update all with new source strings
make -C locale fdroidserver.pot
make -C locale compile
2019-01-28 14:38:14 +01:00
Hans-Christoph Steiner
36e9fbde98 remove redundant bn_BD translation, there is bn already 2019-01-28 09:30:44 +01:00
Hans-Christoph Steiner
f568fc0977 Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!612
2019-01-27 22:33:39 +00:00
Hans-Christoph Steiner
74048f8619 Translated using Weblate (kab)
Muḥend Belqasem <belkacem77@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
e819694de2 Translated using Weblate (nb_NO)
Allan Nordhøy <epost@anotheragency.no>
Ty Moss <lavahd@protonmail.ch>
2019-01-27 23:11:45 +01:00
Weblate
4a1a83ee86 Translated using Weblate (zh_Hans)
kak mi <wavelake@outlook.com>
RainSlide <RainSlide@outlook.com>
Roufique hossain <roufique@rtat.net>
2019-01-27 23:11:45 +01:00
Weblate
ea589c3a9a Translated using Weblate (ru)
Andrey <andrey@mailbox.org>
mesnevi <shams@airpost.net>
2019-01-27 23:11:45 +01:00
Weblate
4fe1f65254 Translated using Weblate (fa)
frowzy <frowzy_penguin@protonmail.com>
2019-01-27 23:11:45 +01:00
Weblate
c1f86893aa Translated using Weblate (ug)
Nureli <nureliosman@gmail.com>
ۋولقان <nureliosman@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
b7b9cffcd3 Translated using Weblate (pt_BR)
ButterflyOfFire <ButterflyOfFire@protonmail.com>
Luis Fernando <supernando08@gmail.com>
Lunovox Heavenfinder <lunovox@disroot.org>
2019-01-27 23:11:45 +01:00
Weblate
96646adfaf Translated using Weblate (it)
Matteo Fumagalli <f.mustang@protonmail.com>
2019-01-27 23:11:45 +01:00
Weblate
f22e092460 Translated using Weblate (sv)
Jonatan Nyberg <jonatan@autistici.org>
Jonatan Nyberg <jonatan.nyberg.karl@gmail.com>
Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
7c362d03ea Translated using Weblate (tr)
Ali Demirtas <alidemirtas94@gmail.com>
Emin Tufan Çetin <etcetin@gmail.com>
mahmut özcan <mahmutozcan65@yahoo.com>
monolifed <monolifed@gmail.com>
Myeongjin Lee <aranet100@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
ac39f11fa0 Translated using Weblate (ja) 2019-01-27 23:11:45 +01:00
Weblate
ae93397886 Translated using Weblate (es_AR)
Andrés S <andres.segovia.dev@gmail.com>
riveravaldez <riveravaldezmail@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
a07bd6c86b Translated using Weblate (pt_PT)
Lunovox Heavenfinder <lunovox@disroot.org>
Ricardo Fonseca <ricardo.jfonseca@outlook.com>
Sérgio Marques <smarquespt@gmail.com>
ssantos <ssantos@web.de>
2019-01-27 23:11:45 +01:00
Weblate
e7e05385ef Translated using Weblate (hu)
Balázs Meskó <meskobalazs@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
39393184f7 Translated using Weblate (de)
Allan Nordhøy <epost@anotheragency.no>
BO41 <lukasw41@gmail.com>
ssantos <ssantos@web.de>
2019-01-27 23:11:45 +01:00
Weblate
b74bbefcce Translated using Weblate (ml)
suman dev p <sumandev.p@gmail.com>
2019-01-27 23:11:45 +01:00
Weblate
d2ac358e71 Translated using Weblate (bn)
Roufique hossain <roufique@rtat.net>
2019-01-27 23:11:45 +01:00
Weblate
83faf6ecba Translated using Weblate (uk)
AB <ao7nro+6ltrjuwxelfo4@sharklasers.com>
2019-01-27 23:11:45 +01:00
Hans-Christoph Steiner
877fb04e24 androguard v3.3.2 is also missing key API methods 2019-01-27 23:11:44 +01:00
Weblate
aa83aeed49 Translated using Weblate (pl)
Myeongjin Lee <aranet100@gmail.com>
WaldiS <admin@sto.ugu.pl>
2019-01-27 23:11:44 +01:00
Weblate
43df6ab64a Translated using Weblate (fr)
ButterflyOfFire <ButterflyOfFire@protonmail.com>
David Maulat <david@maulat.eu>
gwenderer <gwenael.derer@gmail.com>
Herdir <herdir@herdir.net>
Jean-Baptiste <jean-baptiste@holcroft.fr>
Ldm Public <ldmpub@gmail.com>
pandipanda41 <petitpanda140@gmail.com>
2019-01-27 23:11:44 +01:00
Weblate
fb36ad6a04 Translated using Weblate (es)
Alberto <albertocanetedj@hotmail.com>
Allan Nordhøy <epost@anotheragency.no>
emma peel <emma.peel@riseup.net>
Laura Arjona Reina <larjona@larjona.net>
Markel <wakutiteo@protonmail.com>
Myeongjin Lee <aranet100@gmail.com>
Víctor Manuel Tapia Ramírez <victor-kratos-olympicp@hotmail.com>
2019-01-27 23:11:44 +01:00
Weblate
1ef222ea96 Translated using Weblate (cs)
Clonewayx <fillip1@seznam.cz>
Pavel Borecki <pavel.borecki@gmail.com>
Stanislav Tichý <standa.tichyml@seznam.cz>
2019-01-27 23:11:44 +01:00
Weblate
141ce85333 Translated using Weblate (ko)
Myeongjin Lee <aranet100@gmail.com>
Seokyong Jung <syjung6967@gmail.com>
2019-01-27 23:11:44 +01:00
Weblate
5b3065f146 Translated using Weblate (zh_Hant)
ezjerry liao <ezjerry@gmail.com>
Jeff Huang <s8321414@gmail.com>
2019-01-27 23:11:44 +01:00
Weblate
31face16a8 Translated using Weblate (bo) 2019-01-27 23:11:44 +01:00
Weblate
20ee168499 Translated using Weblate (bn_BD)
Roufique hossain <roufique@rtat.net>
2019-01-27 23:11:44 +01:00
Hans-Christoph Steiner
282a3e0e1d androguard v3.3.0 and v3.3.1 are missing key API methods 2019-01-27 23:00:00 +01:00
Hans-Christoph Steiner
217e6a7c30 metadata: fix pyflakes "use ==/!= to compare str, bytes, and int literals"
$ ./hooks/pre-commit || export EXITVALUE=1
WARNING: ruby is not installed, using dummy placeholder!
fdroidserver/metadata.py:1180: use ==/!= to compare str, bytes, and int literals
fdroidserver/metadata.py:1184: use ==/!= to compare str, bytes, and int literals
fdroidserver/metadata.py:1186: use ==/!= to compare str, bytes, and int literals
fdroidserver/metadata.py:1189: use ==/!= to compare str, bytes, and int literals
ERROR: pyflakes tests failed!
2019-01-27 23:00:00 +01:00
Marcus
7d8fbd3126 Merge branch 'gradle-wrapper-multiple' into 'master'
gradlew-fdroid: fix multiple gradle-wrapper.properties parsing

See merge request fdroid/fdroidserver!613
2019-01-27 13:19:34 +00:00
relan
8e471ad856 gradlew-fdroid: fix multiple gradle-wrapper.properties parsing
Stop looking for the Gradle version if we found it via distributionUrl
in ./gradle/wrapper/gradle-wrapper.properties. If we go on to parsing
../gradle/wrapper/gradle-wrapper.properties, we'll erroneously get the
version from there.
2019-01-27 11:45:53 +03:00
westnordost
a227ad6e1a change glob filter for graphics to not filter out valid IETF RFC5646 locales (fixes #621 and #357)
Also, update the documentation comment to be absolutely clear.

The function used to copy images from any locale directory starting with at least two lowercase letters correctly, but only add those to the app metadata that started with two letters plus one big letter or a "-". The same problem did not exist for adding texts to the metadata.
2019-01-23 11:21:19 +00:00
Hans-Christoph Steiner
aa47e93f36 Revert "Revert "lint: check if CurrentVersion is older than oldest build entry""
This reverts commit a5ec1703c9.

fdroid/fdroiddata@42bb872b46
2019-01-21 23:00:33 +01:00
Hans-Christoph Steiner
1174b14d1e Merge branch 'neonsoftware/master' into master
buildserver: include build-tools 28.0.3
  Added test aapt output files for build-tools 28.0.3
  update.py: Still aapt output parsing, setting regex to catch 'name=' without prefixes, needed for build-tools 28.0.3

fdroid/fdroidserver!591
2019-01-21 22:39:35 +01:00
Hans-Christoph Steiner
86ff550dd2 buildserver: include build-tools 28.0.3 2019-01-21 22:37:59 +01:00
Marcus Hoffmann
cf1a45eb4a add gradle plugin version 3.3 detection 2019-01-19 23:54:20 +01:00
Marcus Hoffmann
eee2cb03cf add ndk r19 2019-01-19 23:51:46 +01:00
Marcus
4effc74c2b Merge branch 'gradle-5.1' into 'master'
makebuildserver: add Gradle 5.1 and 5.1.1

See merge request fdroid/fdroidserver!609
2019-01-16 08:50:07 +00:00
relan
56620177aa makebuildserver: add Gradle 5.1 and 5.1.1 2019-01-16 07:25:25 +03:00
Michael von Glasow
f8f17a430d Reword warning message about sudo commands being skipped 2019-01-15 14:14:09 +00:00
Michael von Glasow
868516f3fd Clarify warning message about skipped sudo commands 2019-01-15 12:36:17 +00:00
Francesco Cervigni
984d276c1b Added test aapt output files for build-tools 28.0.3 2019-01-13 19:27:02 +01:00
Marcus Hoffmann
a5ec1703c9 Revert "lint: check if CurrentVersion is older than oldest build entry"
This reverts commit 78473e7dab.

This is currently blocked by some apps in fdroiddata being reset to a
broken state.
2019-01-10 14:48:52 +01:00
Marcus Hoffmann
e1c547cfdf Revert "Revert "Merge branch 'random-fixes' into 'master'""
This reverts commit f6f2fb0b89.

Only one of the included commit should have been reverted.
2019-01-10 14:48:29 +01:00
Marcus
f6f2fb0b89 Revert "Merge branch 'random-fixes' into 'master'"
This reverts merge request !605
2019-01-10 13:46:49 +00:00
Francesco Cervigni
64445520b0 update.py: Still aapt output parsing, setting regex to catch 'name=' without prefixes, needed for build-tools 28.0.3
build-tools 28.0.3 added a new field in the end 'compileSdkVersionCodename=', which also accidentally ends with the string 'name='.
The purpose of this regex was to catch the 'packageName' field, which is in ht eaapt ouput the exact ' name=', therefore added whe non-caracter \W prefix match.

sample aapt output (28.0.3):
package: name='com.a.b.app' versionCode='1' versionName='1.0' compileSdkVersion='28' compileSdkVersionCodename='9'

previously, regex was catching second occurence, so '9'

See merge request !582
2019-01-08 22:46:47 +01:00
Hans-Christoph Steiner
357dea762d Merge branch 'random-fixes' into 'master'
random fixes

See merge request fdroid/fdroidserver!605
2019-01-03 20:29:01 +00:00
Hans-Christoph Steiner
13bcc476a7 androguard>=3.3 fails: "AXMLParser' object has no attribute 'is_valid'"
Traceback (most recent call last):
  File "/builds/eighthave/fdroidserver/tests/build.TestCase", line 120, in test_get_apk_metadata
    vc, vn = fdroidserver.build.get_metadata_from_apk(app, build, apkfilename)
  File "/builds/eighthave/fdroidserver/fdroidserver/build.py", line 332, in get_metadata_from_apk
    appid, versionCode, versionName = common.get_apk_id(apkfile)
  File "/builds/eighthave/fdroidserver/fdroidserver/common.py", line 2126, in get_apk_id
    return get_apk_id_androguard(apkfile)
  File "/builds/eighthave/fdroidserver/fdroidserver/common.py", line 2158, in get_apk_id_androguard
    while axml.is_valid():
AttributeError: 'AXMLParser' object has no attribute 'is_valid'
2019-01-03 21:00:01 +01:00
Hans-Christoph Steiner
76b026e572 lint: check whether the locale was included in an f-droid.org URL 2019-01-03 21:00:01 +01:00
Hans-Christoph Steiner
78473e7dab lint: check if CurrentVersion is older than oldest build entry
This causes F-Droid to never install this app, except for manually via the
Versions list in AppDetails.
2019-01-03 21:00:01 +01:00
Hans-Christoph Steiner
4c5864c975 buildserver: add config option to use 'nfs' instead of '9p'
'9p' is not possible when running KVM in VMware.  Also, 'nfs' might provide
more reliably operation on systems that are properly setup for it.
2019-01-03 21:00:01 +01:00
Hans-Christoph Steiner
a2aef721d8 add timeout to net.http_get() and index.download_repo_index()
The requests docs recommend this:
http://docs.python-requests.org/en/master/user/quickstart/#timeouts

And mirror-monitor was hanging forever on a bad mirror.
2019-01-03 20:26:40 +01:00
Hans-Christoph Steiner
9c900ed63c Merge branch 'fix-virustotal-from-mirror' into 'master'
Fix virustotal from mirror

See merge request fdroid/fdroidserver!604
2019-01-03 19:26:01 +00:00
Marcus Hoffmann
e6388285fd add gradle 4.10.3 2018-12-23 18:07:20 +01:00
Hans-Christoph Steiner
33b097a3aa deploy: upload to VirusTotal using index-v1.json or index-v1.jar
* A mirror of the repo will have only index-v1.jar.
* A buildserver with separate signing might have only index-v1.json
2018-12-17 14:33:02 +01:00
Hans-Christoph Steiner
869cc114a3 create index.get_index_from_jar() for parsing index-v1.json
Also removes redundant comments, should be in the doc string!
2018-12-17 14:30:05 +01:00
Hans-Christoph Steiner
09281bee25 Merge branch 'disable-auto-updates-on-buildserver' into 'master'
buildserver: disable all automatic apt-get updates

Closes #437

See merge request fdroid/fdroidserver!603
2018-12-12 19:37:15 +00:00
Hans-Christoph Steiner
d6545732e4 buildserver: disable all automatic apt-get updates
Prevents errors due to:
dpkg: error: dpkg status database is locked by another process

closes #437
2018-12-12 17:38:26 +01:00
Hans-Christoph Steiner
076f885950 Merge branch 'verification-fixes' into 'master'
verification fixes

See merge request fdroid/fdroidserver!602
2018-12-10 16:46:46 +00:00
Hans-Christoph Steiner
13016c5d63 verify: add --output-json option to generate status reports
This has to do custom dict/encoder/decoder tricks in order to make sure
that each run of `fdroid verify` on the same files doesn't add duplicate
entries.
2018-12-07 13:13:10 +01:00
Hans-Christoph Steiner
e85256e248 verify: rename var remoteapk to remote_apk to fit other style 2018-12-07 11:19:26 +01:00
Hans-Christoph Steiner
fa7c59eea1 buildserver: include disorderfs to avoid sudo: in metadata
Right now, the only thing that Briar needs in sudo: in order to be built
reproducibly is `apt-get install disorderfs`.  This includes it in the
standard image to make it easy to spread that technique to many builds.

@grote
2018-12-06 21:55:02 +01:00
Hans-Christoph Steiner
47e8c9d436 README: point travis badges to fdroidtravis until f-droid mirror returns
@patcon setup https://github.com/f-droid to mirror the official gitlab
repos.  For some unknown reason, Travis stopped building new commits coming
into that repo about 3 months ago.  This switches to a github.com that I
manually push to, and Travis still builds.

Please switch back to the automatic mirror once it works again.
2018-12-06 14:36:47 +01:00
Hans-Christoph Steiner
78cd2b84ce travis-ci: add missing dependency: python3-defusedxml 2018-12-06 14:05:54 +01:00
Hans-Christoph Steiner
51d961630b fix aapt scraping of <uses-permission> with maxSdkVersion
3e0d1beb09 changed this logic a bit, and it
wasn't quite right.  Then changing the SDK Versions to integers everywhere
seemed to bring this out more.
2018-12-06 13:42:45 +01:00
Hans-Christoph Steiner
653d5fbd88 update: fix running on trusty and things with old PIL/Pillow 2018-12-06 12:49:48 +01:00
Hans-Christoph Steiner
9a524fa85d bump RELEASE_COMMIT_ID for fixing metadata_v0 test
fdroid/fdroidserver!564
2018-12-06 12:30:46 +01:00
Hans-Christoph Steiner
e10c12ffc4 gitlab-ci: fix tests on Fedora
* install `which` and `find` commands used in ./tests/run-tests
* sdkmanager on Fedora needs JAVA_HOME to be set
2018-12-06 12:15:27 +01:00
Michael Pöhn
4655e2e24e Merge branch '427-yml-rewritemeta-produces-unreadble-output-for-multiline-scripts' into 'master'
Resolve "yml rewritemeta produces unreadble output for multiline scripts"

Closes #427

See merge request fdroid/fdroidserver!564
2018-12-05 19:50:59 +00:00
Michael Pöhn
31ca2092a1 yaml parsing: script build flags can now be lists 2018-11-29 21:53:37 +01:00
Michael Pöhn
c15a7508e7 write yaml script metadata as lists 2018-11-29 21:53:37 +01:00
Michael Pöhn
a21635ae2e fix metadata test case: write yaml prebuild 2018-11-29 21:53:37 +01:00
Michael Pöhn
afdc0be954 yaml build flag prebuild: keep writing string rathern than list of strings when theres just 1 entry 2018-11-29 21:53:37 +01:00
Michael Pöhn
723815a25b fix metadata.Testcase:test_rewrite_yaml_special_build_params 2018-11-29 21:53:37 +01:00
Michael Pöhn
d0a129c216 add test for parsing build field prebuild as string 2018-11-29 21:53:37 +01:00
Michael Pöhn
942de28fa5 yaml metadata: split prebuild build field to list 2018-11-29 21:53:37 +01:00
Marcus
35225a973f Merge branch 'makebuildserver_sdk_improvements' into 'master'
Makebuildserver sdk improvements

See merge request fdroid/fdroidserver!601
2018-11-29 11:00:09 +00:00
Marcus Hoffmann
b9dcfb43cf provision-sdk: don't install obolete stuff
This is probably still lying in the cache bu we explicitly don't want to
install it anymore.
2018-11-28 20:47:09 +01:00
Marcus Hoffmann
19076d1596 provision-ndk: set -x to see what it currently does 2018-11-28 20:46:44 +01:00
Marcus Hoffmann
d94e0c968b makebuildserver: remove platforms/build-tools considered obsolete
They can still be installed pre-build when required via sdkmanager.
Not many apps would need them nowadays.
2018-11-28 19:13:37 +01:00
Marcus Hoffmann
5f904e8774 makebuildserver: use latest platform-28 revision 2018-11-28 18:59:33 +01:00
Marcus Hoffmann
13431fe54e provision-apt: don't run dist-upgrade
It might be a breaking operation with certain package configurations.
Package updates that require this (kernel) should come through the
basebox
2018-11-28 18:58:14 +01:00
Marcus
cf81d198ff Merge branch 'apt_improvements' into 'master'
Apt improvements

Closes #600

See merge request fdroid/fdroidserver!600
2018-11-28 11:28:33 +00:00
Marcus Hoffmann
51accbd1d2 provision-apt: also run dist-upgrade
This ensures the kernel is upgraded as well with security fixes.
2018-11-27 18:14:50 +01:00
Marcus Hoffmann
0dcd034270 buildserver: always set DEBIAN_FRONTEND=noninteractive
closes #600
2018-11-27 18:14:05 +01:00
Marcus Hoffmann
ffb78afd0b provision-apt: add assumeyes config
closes #600
2018-11-27 18:13:33 +01:00
Marcus
c64641a545 Merge branch 'gradle5' into 'master'
Gradle5

Closes #594

See merge request fdroid/fdroidserver!599
2018-11-27 17:05:10 +00:00
Marcus Hoffmann
8ac171ba1a add gradle 5.0
closes #594
2018-11-27 17:34:53 +01:00
Marcus Hoffmann
2a2613520a provision-gradle: skip versions older than 2.2.1
These are almost never used now and still can be downloaded on-demand.
2018-11-27 17:34:53 +01:00
Hans-Christoph Steiner
dcc9ada1d1 Merge branch 'makebuildserver_improvements' into 'master'
Makebuildserver improvements

Closes #591

See merge request fdroid/fdroidserver!598
2018-11-27 16:02:38 +00:00
Marcus Hoffmann
e3a25ad3f2 buildserver: remove provision-pip
This was installing one python(2!) module. pip is installed in
provision-apt-get-install now.
2018-11-27 14:48:20 +01:00
Marcus Hoffmann
90a1703ccc makebuildserver: remove packages that should be installed per app
Or these are otherwise old cruft
2018-11-27 14:47:36 +01:00
Marcus Hoffmann
3c1a5873ab provision-apt: don't use automake/libtool from testing
This was set up when running jessie and shouldn;t be requried for now.
2018-11-27 14:47:17 +01:00
Marcus Hoffmann
85b90ee266 provision-apt: add DEBIAN_FRONTEND=noninteractive
This should fix #591 and related issues.
2018-11-27 14:47:08 +01:00
Marcus
4144153d25 Merge branch 'revert-buildserver-deb-mirror-provision' into 'master'
simplify debian mirror setup

Closes #599

See merge request fdroid/fdroidserver!597
2018-11-27 13:26:27 +00:00
Michael Pöhn
201240e603 simplify debian mirror setup 2018-11-27 14:07:19 +01:00
Marcus
3a75f81709 Merge branch 'include-pip-in-buildserver' into 'master'
buildserver: include pip for both Python 2.x and 3.x

See merge request fdroid/fdroidserver!594
2018-11-20 11:25:31 +00:00
Hans-Christoph Steiner
e2e63c9ac3 buildserver: include pip for both Python 2.x and 3.x
`pip install` is a relatively common thing for app builds to use in sudo=,
so it should be built into the buildserver.  This then builds in the trust
relationship to pypi, since it comes from Debian rather than some random
pip download/install process.
2018-11-20 12:10:40 +01:00
Hans-Christoph Steiner
0688090440 Merge branch 'fix-vm-uuid-lookup' into 'master'
fix .vagrant directory based vm provider lookup

See merge request fdroid/fdroidserver!593
2018-11-20 09:18:26 +00:00
Michael Pöhn
ddcab79817 fix .vagrant directory based vm provider lookup 2018-11-16 16:53:01 +01:00
Michael Pöhn
f96db03121 Merge branch 'force_exit' into 'master'
force_exit() to make exit work with all `fdroid build` conditions

See merge request fdroid/fdroidserver!592
2018-11-14 14:58:30 +00:00
Hans-Christoph Steiner
1f346b3149 force_exit() to make exit work with all fdroid build conditions
The build command has to use some threading stuff to handle the timeout and
locks.  This seems to prevent the command from exiting, unless this hack is
used.
2018-11-14 14:27:32 +01:00
Hans-Christoph Steiner
568256f75c Merge branch 'apt_get_update' into 'master'
provisioners: work around apt-get update problem

See merge request fdroid/fdroidserver!590
2018-10-24 11:53:24 +00:00
Marcus Hoffmann
10e3165e41 provisioners: work around apt-get update problem 2018-10-24 13:06:27 +02:00
Marcus
15d422b01b Merge branch 'ndk18' into 'master'
Add NDK r18b

See merge request fdroid/fdroidserver!588
2018-10-22 16:31:57 +00:00
Licaon_Kter
210c62f136 Add NDK r18b 2018-10-22 16:31:57 +00:00
Hans-Christoph Steiner
ff578dae30 Merge branch 'utf8-fixes' into 'master'
UTF-8 fixes

See merge request fdroid/fdroidserver!587
2018-10-19 14:00:00 +00:00
Hans-Christoph Steiner
117d63cca5 update: use 'replace' mode to handle non-UTF8 description files
Fastlane/Triple-T app store metadata files must be in UTF-8.  Before this
would crash if they were not.  This changes the handling to just replace
the non-UTF8 chars with a �.  Here's the stacktrace:

CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroid", line 164, in <module>
    main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroid", line 159, in main
    raise e
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroid", line 138, in main
    mod.main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2010, in main
    insert_localized_app_metadata(apps)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 885, in insert_localized_app_metadata
    os.path.join(root, f))
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 700, in _set_localized_text_entry
    text = fp.read()[:limit]
  File "/usr/lib/python3.5/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 94: invalid start byte
2018-10-19 15:06:16 +02:00
Hans-Christoph Steiner
57556aceee remove redundant open() arg: encoding='utf8'
By default, open() returns a str:
https://docs.python.org/3/library/functions.html#open

By default, str is UTF-8:
https://docs.python.org/3/library/stdtypes.html#str

This used to matter on Python 2.x, but this code is 3.x only now.
2018-10-19 15:01:34 +02:00
Hans-Christoph Steiner
6e5d1a6cc3 jenkins: another attempt to force the locale to a more standard one 2018-10-17 17:17:16 +02:00
Hans-Christoph Steiner
92bf9315e6 Merge branch 'verifiy-basebox' into 'master'
* verifiy-basebox:
  jenkins: switch to using auto-downloaded and verified basebox
  makebuildserver: verify stretch basebox

fdroid/fdroidserver!581
2018-10-17 17:04:16 +02:00
Hans-Christoph Steiner
9dff760d07 jenkins: switch to using auto-downloaded and verified basebox 2018-10-17 17:02:21 +02:00
Hans-Christoph Steiner
ceb3f6631b Merge branch 'update-import-fixups' into 'master'
update/import fixups

Closes #548 and #472

See merge request fdroid/fdroidserver!584
2018-10-12 12:59:43 +00:00
Michael Pöhn
9a85f0007c Merge branch 'use-libvirt-defaults' into 'master'
buildserver: only set disk_bus/nic_model_type if set in config file

See merge request fdroid/fdroidserver!586
2018-10-11 10:32:19 +00:00
Hans-Christoph Steiner
3b0c8fe669 buildserver: only set disk_bus/nic_model_type if set in config file
This makes vagrant/KVM just use the default if these are not set in the
makebuildserver.config.py.

fdroid/fdroidserver!585
2018-10-11 12:11:15 +02:00
Hans-Christoph Steiner
9458a69c54 Merge branch 'libvirt-virtio-config' into 'master'
makebuildserver: options for disk and network hardware emulation

See merge request fdroid/fdroidserver!585
2018-10-11 10:07:29 +00:00
Hans-Christoph Steiner
e591a73b82 update bash completion for fdroid import 2018-10-11 12:02:22 +02:00
Hans-Christoph Steiner
1d13bbf6b6 import: ensure categories from CLI flag are always a list
categories must always be a list in YAML  closes #472
2018-10-11 11:59:42 +02:00
Michael Pöhn
d98d90ab90 makebuildserver: add config options for disk and network hardware emulation 2018-10-11 11:30:46 +02:00
Michael Pöhn
493a767d14 makebuildserver: verify stretch basebox 2018-10-11 09:56:46 +02:00
Hans-Christoph Steiner
bfdf581201 import: use valid placeholder values for versionCode/versionName
fdroid/fdroidserver!559
closes fdroid/fdroidserver#548
2018-10-10 16:02:34 +02:00
Michael Pöhn
aea2589c67 metadata: remove redundant build flags list creation
picked out of fdroid/fdroidserver!559
2018-10-10 16:02:34 +02:00
Michael Pöhn
67e46694d3 add test for allowing to write placeholder values to yaml metadata files 2018-10-10 16:02:34 +02:00
Hans-Christoph Steiner
3bea689f74 add another lint field type test case 2018-10-10 16:02:34 +02:00
Hans-Christoph Steiner
e33c1c74b1 tests: include info.zwanenburg.caffeinetile in index tests 2018-10-10 16:02:34 +02:00
Hans-Christoph Steiner
8b251da79f update: do not set targetSdkVersion if the APK is missing it
699b3e4c69 got it wrong for targetSdkVersion.
Also, one confusing thing is that aapt outputs "sdkVersion: '3'" for
com.politedroid_3.apk but no "sdkVersion:" for no.min.target.sdk_987.apk.
F-Droid never really supported running on android-1 or android-2, so it
seems pointless to debug support for them.
2018-10-10 15:29:02 +02:00
Hans-Christoph Steiner
2a9bc448ee Merge branch 'enforce-list-data-types' into 'master'
Enforce list data types

Closes #578

See merge request fdroid/fdroidserver!583
2018-10-10 12:39:29 +00:00
Hans-Christoph Steiner
58b14279af rewritemeta: rewrite AntiFeature str entries like Categories 2018-10-09 23:49:27 +02:00
Hans-Christoph Steiner
6e6afeec65 unset Categories should be empty by default, not ['None']
This is an ancient, bizarre vestige.  This makes the TYPE_LIST fields
behave the same, e.g. AntiFeatures and Categories.
2018-10-09 23:39:09 +02:00
Hans-Christoph Steiner
85993eb2f8 lint: check fields for proper type, e.g. list vs. string
fdroid/fdroidserver#578
2018-10-09 23:31:24 +02:00
Hans-Christoph Steiner
2113e29082 throw error on ancient, obsolete BuildVersion/UseBuilt metadata fields 2018-10-09 22:23:42 +02:00
Michael Pöhn
019ec6d4ba Merge branch 'fix-appid-checks' into 'master'
fix Application ID checks

See merge request fdroid/fdroidserver!582
2018-09-25 10:50:16 +00:00
Hans-Christoph Steiner
d2216b756b fix typos in strings 2018-09-24 17:09:15 +02:00
Hans-Christoph Steiner
6b57cb6b7c fix strict Application ID checks
* upper case letters are allowed at all positions
* there must be a "." separator
2018-09-24 17:07:27 +02:00
Hans-Christoph Steiner
6cf8fec057 update: correct error message about Android AppID 2018-09-24 17:07:27 +02:00
Hans-Christoph Steiner
ecb6987cda jenkins: ensure valid locale is set before running
This prevents the dreaded "Content is not allowed in prolog" errors when
running gradle.  C.UTF-8 is a Debian thing that is not supported everywhere
including Java.

fdroid/basebox#9
2018-09-24 12:15:46 +02:00
Hans-Christoph Steiner
6d842b8429 Merge branch 'androguard-optimizations' into 'master'
androguard optimizations

Closes #557

See merge request fdroid/fdroidserver!577
2018-09-21 14:59:23 +00:00
Hans-Christoph Steiner
11d46072ab use androguard primitives to speed up finding debuggable flag
androguard parses the whole APK before handing the instance back, this uses
the primitives to just find the <application android:debuggable=""> value,
then stop parsing.

#557
2018-09-21 14:56:46 +02:00
Hans-Christoph Steiner
a3cecc16a3 use partial androguard binary XML parsing to speed up APK ID lookup
Normally, androguard parses the entire APK before it is possible to get any
values from it.  This uses androguard primitives to only attempt to parse
the AndroidManifest.xml, then to quit as soon as it gets what it needs.
This greatly speeds up the parsing (1 minute vs 60 minutes).

fdroid/fdroidserver#557
2018-09-21 14:56:46 +02:00
Hans-Christoph Steiner
fa09337b4b APK_ID_TRIPLET_REGEX only matches first line of aapt output
Stop expensive aapt parsing after the first line when looking with
APK_ID_TRIPLET_REGEX.  As is seen with the `aapt dump badging` output files
in tests/build-tools/, the first line is the only line that will ever match.

#557
2018-09-21 14:56:32 +02:00
Hans-Christoph Steiner
f11b2e8d45 point out the easy way to generate the locale files
fdroid/fdroidserver!560
fdroid/fdroidserver#546
2018-09-21 14:56:32 +02:00
Hans-Christoph Steiner
5c6097f9e0 Merge branch 'gradle-4.10.2' into 'master'
makebuildserver: add Gradle 4.10.2

See merge request fdroid/fdroidserver!580
2018-09-21 06:49:01 +00:00
relan
bf0501797f makebuildserver: add Gradle 4.10.2 2018-09-21 07:38:27 +03:00
Hans-Christoph Steiner
2272bab4f1 Merge branch 'fix-locale-setup' into 'master'
generate all po files

See merge request fdroid/fdroidserver!560
2018-09-20 09:37:09 +00:00
Hans-Christoph Steiner
d2f850e2df jenkins: switch to box name as generated by basebox project 2018-09-19 23:41:34 +02:00
Hans-Christoph Steiner
39c339e5a1 jenkins: force local basebox, do not download from Vagrant Cloud
Until we have a verification process for boxes downloaded from Vagrant
Cloud, the official setup uses a locally generated basebox.
2018-09-19 16:48:00 +02:00
Hans-Christoph Steiner
ee509782a2 buildserver: apt-transport-https needs ca-certificates
ca-certificates is set as Recommends: but for our use cases it is required
since without it, standard CA-signed certs fail to validate.
2018-09-19 16:48:00 +02:00
Hans-Christoph Steiner
d9e9cc20aa gitlab-ci: install python3-defusedxml in debian_testing and ubuntu_lts
fdroid/fdroidserver!578
2018-09-19 16:48:00 +02:00
Hans-Christoph Steiner
ffcd8c3bd4 Merge branch 'gradle-4.10.1' into 'master'
add gradle 4.10.1 to makebuildserver and gradlew-fdroid

Closes #569

See merge request fdroid/fdroidserver!579
2018-09-19 06:30:11 +00:00
Michael Pöhn
7c9c1d4aaf add gradle 4.10.1 to makebuildserver and gradlew-fdroid 2018-09-19 00:03:01 +02:00
Hans-Christoph Steiner
d3bf347a97 Merge branch 'update-basebox-to-fdroid-basebox-stretch64' into 'master'
update basebox to fdroid/basebox-stretch64

See merge request fdroid/fdroidserver!576
2018-09-18 12:59:44 +00:00
Michael Pöhn
4af9199c92 update basebox to fdroid/basebox-stretch64 2018-09-18 12:50:22 +02:00
Michael Pöhn
4a69a37d8e Merge branch 'fix-aapt-28-scraping' into 'master'
Fix aapt 28 scraping

Closes #568 and #565

See merge request fdroid/fdroidserver!575
2018-09-18 09:38:13 +00:00
Hans-Christoph Steiner
4c4da3d176 update: remove 'SET' debug antifeature, closes #565
oops, this slipped in in 3011953d0e

Bump the metadata version to purge the cache
2018-09-18 10:57:10 +02:00
Hans-Christoph Steiner
92c4f048de update: test scan_apk() with both aapt and androguard
#568
2018-09-18 10:55:51 +02:00
Hans-Christoph Steiner
3e0d1beb09 update: finish porting permissions regex to remove group names
Finish the job from 3011953d0e

closes #568
2018-09-18 10:55:51 +02:00
Hans-Christoph Steiner
807bf3d26b build: reuse common methods for getting metadata from APKs
This splits out the code that gets the list of native ABIs supported, then
uses the standard methods for the rest.
2018-09-18 10:55:51 +02:00
Hans-Christoph Steiner
487c4d02f3 handle package: line output from aapt v28
fdroid/fdroiddata!3484
fdroid/fdroiddata!3562
fdroid/fdroidserver!548
2018-09-18 10:55:51 +02:00
Hans-Christoph Steiner
d1acef0405 tests: generate aapt output for every version to make tests easy 2018-09-18 10:55:51 +02:00
Michael Pöhn
c95cbfdf9c Merge branch 'use_available_buildserver_box' into 'master'
vmtools: use whatever buildserver box is available

Closes #497

See merge request fdroid/fdroidserver!574
2018-09-18 08:52:51 +00:00
Hans-Christoph Steiner
566bf7c776 Merge branch '482-upgrade-buildserver-to-stretch' into 'master'
upgrade buildserver basebox to stretch

Closes #514 and #482

See merge request fdroid/fdroidserver!514
2018-09-17 18:18:03 +00:00
Hans-Christoph Steiner
6f889a08d7 jenkins: switch to locally generated stretch64 basebox 2018-09-13 12:07:08 +02:00
Hans-Christoph Steiner
fd7cc2c954 document how to avoid downloading from vagrant cloud 2018-09-13 12:06:51 +02:00
Michael Pöhn
6d0797eb5e allow using remote boxes from vagrant cloud 2018-09-13 11:11:18 +02:00
Michael Pöhn
98806d7c01 configure headless openjdk to run without gtk accessability dependencies 2018-09-13 11:11:18 +02:00
Michael Pöhn
9136080def update default mirror to deb.debian.org 2018-09-13 11:11:18 +02:00
Michael Pöhn
5e4eb294c5 switch to fdroid-stretch64 basebox; remove baseboxurl form makebuildserver 2018-09-13 11:11:18 +02:00
Michael Pöhn
c005d8c5f4 more detailed error message and handling when fetching buildserverid in build.py 2018-09-13 11:11:18 +02:00
Michael Pöhn
a5ef08f57d more general regex for updating debian repo urls in buildserver provisions 2018-09-13 11:11:18 +02:00
Michael Pöhn
aa86e56338 updated buildserver provisions to stretch 2018-09-13 11:11:18 +02:00
Michael Pöhn
ba92623c1e Merge branch 'vmtools_561' into 'master'
actually use the chosen vagrant provider

Closes #561

See merge request fdroid/fdroidserver!573
2018-09-13 08:50:21 +00:00
Marcus Hoffmann
1b95452c14 vmtools: use whatever buildserver box is available
When we don't have an already working builder/.vagrant directory
look for available buildserver vagrant boxes because we'll need to
import one.

Abort if there's no buildserver box.

Fixes: #497
2018-09-12 14:12:12 +02:00
Marcus Hoffmann
1e90b6118e vmtools: fix comment typos 2018-09-12 12:59:11 +02:00
Marcus Hoffmann
b0cce0b8c4 vmtools: actually use the chosen provider
Fixes #561
2018-09-12 12:59:11 +02:00
Hans-Christoph Steiner
ad9a07b47e Merge branch 'little-security-fixes' into 'master'
Little security fixes

Closes #555

See merge request fdroid/fdroidserver!572
2018-09-07 13:32:32 +00:00
Hans-Christoph Steiner
9d12b1dc61 add strict, tested validation of Android/F-Droid package names
Android has stricter rules than Java for Package Names, but anything the
Python regex thinks is valid must be valid according to Java's rules too.

https://developer.android.com/studio/build/application-id
2018-09-07 14:17:39 +02:00
Hans-Christoph Steiner
3ab66efcfe update: max image size of 16 mil pixels to stop image bomb attacks
closes #555
2018-09-07 10:34:56 +02:00
Hans-Christoph Steiner
0cd1e0b172 gitlab-ci: include fdroid in bandit scans 2018-09-07 10:34:56 +02:00
Hans-Christoph Steiner
8b17076525 jenkins-build-all: error msg when buildserver VM not found 2018-09-05 14:37:36 +02:00
Hans-Christoph Steiner
b254472a99 Merge branch 'exclude-filter' into 'master'
build: replace exclude with filter during source tar creation

Closes #531

See merge request fdroid/fdroidserver!538
2018-09-05 12:39:23 +00:00
Marcus
de5455e273 Merge branch 'minor-security-fixups' into 'master'
Minor security fixups

Closes #163

See merge request fdroid/fdroidserver!570
2018-09-04 11:05:25 +00:00
Hans-Christoph Steiner
8f48976cb9 Merge branch 'drop-pickle-for-json' into 'master'
Drop pickle for json

Closes #163

See merge request fdroid/fdroidserver!568
2018-09-03 21:10:26 +00:00
Hans-Christoph Steiner
9bccb2c73e temp fallback to built-in ElementTree if defusedxml is not there 2018-09-03 23:02:31 +02:00
Hans-Christoph Steiner
cf4c9cb4ee buildserver now needs python3-defusedxml
4d13a904f3 means that defusedxml is required
to be installed on the buildserver guest.
2018-09-03 22:56:08 +02:00
Hans-Christoph Steiner
11b3e5be3a update: throw exception for APKs with invalid Application ID
Android Application IDs must be valid Java Package Names.  While the build
tools likely validate the Application ID, it is possible to manually create
a malicious APK.
2018-09-03 22:56:08 +02:00
Hans-Christoph Steiner
5d161cc9fd validate appid when reading metadata files
The metadata file must be named after the Application ID of the app it is
describing, and Android Application IDs must be valid Java Package Names.
2018-09-03 22:56:08 +02:00
Hans-Christoph Steiner
3011953d0e convert apkcache from pickle to JSON
pickle can serialize executable code, while JSON is only ever pure data.
The APK cache is only ever pure data, so no need for the security risks of
pickle.  For example, if some malicious thing gets write access on the
`fdroid update` machine, it can write out a custom tmp/apkcache which would
then be executed.  That is not possible with JSON.

This does just ignore any existing cache and rebuilds from scratch. That is
so we don't need to maintain pickle anywhere, and to ensure there are no
glitches from a conversion from pickle to JSON.

closes #163
2018-09-03 18:07:40 +02:00
Marcus Hoffmann
74776e026f gradlew-fdroid: add gradle 4.10 2018-09-03 14:47:36 +02:00
Marcus Hoffmann
d7b249272a makebuildserver: add gradle 4.10 2018-09-03 14:44:33 +02:00
Hans-Christoph Steiner
c7d5050091 Merge branch 'bandit-scanner-and-fixes' into 'master'
Bandit scanner and fixes

See merge request fdroid/fdroidserver!567
2018-08-30 13:06:07 +00:00
Hans-Christoph Steiner
3ffe2860f3 gitlab-ci: add 'bandit' security scanner to all runs
bandit is used by Radically Open Security and is part of the GitLab Ultimate
Static Application Security Testing (SAST) suite.

https://docs.gitlab.com/ee/user/project/merge_requests/sast.html
2018-08-29 17:48:06 +02:00
Hans-Christoph Steiner
4d13a904f3 use defusedxml to avoid DoS attacks while loading XML 2018-08-29 17:44:54 +02:00
Hans-Christoph Steiner
cc94ebca30 use global constant for the 'xmlns:android' XML namespace 2018-08-29 17:44:54 +02:00
Hans-Christoph Steiner
3e1d313b7c mark manually sanitized input so bandit doesn't complain 2018-08-29 17:44:54 +02:00
Hans-Christoph Steiner
2edc68d6cd mark all required permissions so bandit doesn't complain 2018-08-29 17:44:54 +02:00
Hans-Christoph Steiner
8d3e82913e mark all required usages of MD5 so bandit doesn't complain 2018-08-29 17:44:54 +02:00
Hans-Christoph Steiner
a089614225 checkupdates: remove magic number 99999999 from HTTP checks
It is vestigal from old code and no longer is needed.
2018-08-29 17:24:24 +02:00
Hans-Christoph Steiner
5d77fd97ee use posixpath.join() for paths on the buildserver
This fixes bandit misdetection of hardcoded /tmp dir.  posixpath.join() is
good to use anyway, it highlights what is on the remote server, vs what is
local.  Local paths should use os.path.join() to support Windows, etc.
posixpath is built in since Python 3.4, maybe earlier
2018-08-29 17:24:04 +02:00
Hans-Christoph Steiner
4503e7a92a replace unneeded eval() call and support negative versionCodes 2018-08-29 17:24:04 +02:00
Hans-Christoph Steiner
f0d27e1fa5 Merge branch 'remove-unused-YamlLoader-optimisation' into 'master'
remove unused YamlLoader optimization

See merge request fdroid/fdroidserver!566
2018-08-29 11:12:02 +00:00
Michael Pöhn
ee4945cb84 remove unused YamlLoader optimization 2018-08-29 11:25:01 +02:00
Hans-Christoph Steiner
6b3cf72b68 Merge branch 'safe_yaml_parsing' into 'master'
use yaml.safe_load for parsing metadata

See merge request fdroid/fdroidserver!565
2018-08-29 07:37:43 +00:00
Michael Pöhn
e7a34807f7 use yaml.safe_load for parsing metadata 2018-08-29 00:33:58 +02:00
Michael Pöhn
1a8c77e815 Merge branch 'jarsigner-and-keytool-lookup-regression' into 'master'
fix: jarsigner and keytool lookup regression

Closes #550

See merge request fdroid/fdroidserver!562
2018-08-21 01:28:22 +00:00
Michael Pöhn
4dcfa95d6e fix: jarsigner and keytool lookup regression 2018-08-21 03:05:43 +02:00
Nicco Kunzmann
3546e8d38d generate all po files
- contributes to https://gitlab.com/fdroid/fdroidserver/issues/546#note_95593326
2018-08-20 23:05:55 +02:00
Michael Pöhn
c766129f8b Merge branch 'master' into 'master'
Fix keytool not found on MacOSX (when using Java from Apple)

See merge request fdroid/fdroidserver!557
2018-08-20 10:57:45 +00:00
Cyril Russo
81641b4628 Fixed precommit checks 2018-08-20 11:17:36 +02:00
Cyril Russo
4303b0fac1 Apply suggestion from @uniqx to using shutil.which instead of iterating path by hand 2018-08-17 20:14:54 +02:00
Cyril Russo
ace33bcfc0 Reverted the change in the default config.py
Improved the detection of keytool and jarsigner by also searching the PATH environment variable
2018-08-17 16:46:46 +02:00
Cyril Russo
4f21045cad Fix keytool not found on MacOSX (when using Java from Apple)
Fix keytool parsing error due to localisation keytool -list command.
Always fallback to english so the parsing makes sense.
2018-08-17 15:32:29 +02:00
Hans-Christoph Steiner
05be4bc814 Merge branch '471-lint-check-unknown-keys' into 'master'
check for unknown app fields and build flags when parsing yml

Closes #471

See merge request fdroid/fdroidserver!554
2018-08-14 10:50:59 +00:00
Hans-Christoph Steiner
53bd5acb09 Merge branch 'make-python-tests-run-independent-of-cwd' into 'master'
Make python tests run independent of cwd

See merge request fdroid/fdroidserver!556
2018-08-14 10:34:47 +00:00
Hans-Christoph Steiner
fb16823a4a Merge branch 'master' into 'master'
common: fix tests when running without any Android SDK installed

See merge request fdroid/fdroidserver!553
2018-08-14 10:32:10 +00:00
Michael Pöhn
82563850b7 fix test metadata case for Builds app field 2018-08-14 12:31:12 +02:00
Michael Pöhn
6a06944945 better exception and waring message when yaml metadata checks fail; build flags check optional 2018-08-14 12:31:12 +02:00
Michael Pöhn
0d005ab83a make parse_yaml_metadata ignore empty input 2018-08-14 12:31:12 +02:00
Michael Pöhn
e83221eb03 improve yaml build flag check cost; added unit test for unknown app fields, builds flags checks when parsing yaml 2018-08-14 12:31:12 +02:00
Michael Pöhn
25b4a47951 check for unknown app fields and build flags when parsing yml 2018-08-14 12:31:12 +02:00
Michael Pöhn
f53d1abcce fix: make sure ensure_final_value always has a clearly defined return value 2018-08-14 11:07:44 +02:00
Michael Pöhn
7d5f4d3ab9 added cwd setup boiler-plate to *.TestCase where missing 2018-08-14 10:34:13 +02:00
Michael Pöhn
f153a61277 made build.TestCase run independant of cwd 2018-08-14 10:10:19 +02:00
Michael Pöhn
37e0dce73b made index.TestCase run independant of cwd 2018-08-14 10:08:03 +02:00
Michael Pöhn
edb8d105b0 made update.TestCase run independent of cwd 2018-08-14 10:02:15 +02:00
Michael Pöhn
64c5d176da Merge branch 'examples_char_limits' into 'master'
examples/config.py: update char_limit defaults

See merge request fdroid/fdroidserver!555
2018-08-12 20:31:55 +00:00
Marcus Hoffmann
bc1766c7ce examples/config.py: update char_limit defaults 2018-08-12 18:09:46 +02:00
Marcus Hoffmann
9b0f7f9d04 makebuildserver: add build-tools 28.0.2 2018-08-10 20:55:00 +02:00
Marcus
cf3665b328 Merge branch 'facebook_sdk' into 'master'
scanner: add facebook sdk to forbidden libraries

Closes #534

See merge request fdroid/fdroidserver!542
2018-08-10 13:36:44 +00:00
Marcus Hoffmann
a6dfbc6e2e scanner: add facebook sdk to forbidden libraries
These are sourceavailable but not under a free license.
I made sure that this matches only the facebook sdk's from here:
https://github.com/facebook/facebook-android-sdk and not some real open
source libraries by facebook (fresco, stetho, ...). These seem to be
under a different namespace.

fdroid/fdroidserver#534
2018-08-10 15:20:01 +02:00
Hans-Christoph Steiner
1b37b521c8 common: fix tests when running without any Android SDK installed
fdroid/fdroidserver!552
fdroid/fdroidserver#541
2018-08-07 14:51:42 +02:00
Hans-Christoph Steiner
f1814b7c73 Merge branch '541-ci-tests-dont-execute-majority-of-python-test-cases' into 'master'
Resolve "CI tests don't execute majority of python test cases"

Closes #541

See merge request fdroid/fdroidserver!552
2018-08-07 08:42:42 +00:00
Michael Pöhn
55466f1166 fix fixtures in tests/metadata/dump 2018-08-07 00:02:07 +02:00
Michael Pöhn
5d5617bf40 fix: minor bugs in testcases for: common, metadata, update 2018-08-06 23:53:49 +02:00
Michael Pöhn
28ec93c587 fix: run all testcase in tests/run-tests 2018-08-06 23:53:49 +02:00
Hans-Christoph Steiner
a01d11ba64 Merge branch '530-lint-issue-with-disable' into 'master'
Resolve "Lint issues with 'disable: ...` in YAML"

Closes #530

See merge request fdroid/fdroidserver!550
2018-08-03 09:07:09 +00:00
Hans-Christoph Steiner
09d507839b Merge branch '513-set-locale-explicitly-when-using-keytool' into 'master'
Resolve "fdroidserver fails on MacOSX while init"

Closes #513

See merge request fdroid/fdroidserver!551
2018-08-03 09:04:23 +00:00
Michael Pöhn
74ae6a6a3b set locale explicitly when using keytool 2018-08-03 04:36:00 +02:00
Michael Pöhn
14730be812 bump RELEASE_COMMIT_ID for fixing metadata_v0 test 2018-08-02 18:18:07 +02:00
Michael Pöhn
1e7d9b854d never interpret "disable" as bool in yaml metadata 2018-08-02 17:31:58 +02:00
Michael Pöhn
545872f184 Merge branch 'patch-1' into 'master'
Lint - the error should hint that the right word is `Categories`

See merge request fdroid/fdroidserver!543
2018-07-30 22:56:57 +00:00
Licaon_Kter
da0c541dec Lint - the error should hint that the right word is Categories 2018-07-30 22:56:57 +00:00
Michael Pöhn
bd1af5d07e Merge branch 'signatures-clean-up-globals' into 'master'
clean up globals in signatures.py

See merge request fdroid/fdroidserver!545
2018-07-30 21:11:31 +00:00
Marcus
5e6cb548af Merge branch 'gradle_4.9' into 'master'
add gradle 4.9

See merge request fdroid/fdroidserver!546
2018-07-30 21:10:11 +00:00
Marcus Hoffmann
91a7b91845 add gradle 4.9 2018-07-30 22:54:09 +02:00
Michael Pöhn
27d382e1f4 clean up globals in signatures.py 2018-07-30 13:07:07 +02:00
Michel Le Bihan
44f21fbf15 Merge branch 'signatures_argument_error' into 'master'
signatures: Don't pass config to extract

Closes #536

See merge request fdroid/fdroidserver!544
2018-07-29 16:02:56 +00:00
mimi89999
d76c5dc859
signatures: Don't pass config to extract
Closes #536
2018-07-29 17:45:45 +02:00
Hans-Christoph Steiner
481a6274f0 Merge branch 'archive_icons' into 'master'
update: populate app level info for archive only from archived apks

Closes #365

See merge request fdroid/fdroidserver!537
2018-07-27 13:09:13 +00:00
Marcus
2aaa097962 Merge branch 'fix_532' into 'master'
Fix 532

Closes #532

See merge request fdroid/fdroidserver!541
2018-07-25 18:11:56 +00:00
Marcus Hoffmann
753e9c8175 scanner: properly combine all gradle compile commands with flavors 2018-07-25 19:00:34 +02:00
Marcus Hoffmann
c44ab190bd scanner: fix reformatting fail
This was broken by 44e8f425d :-(.
2018-07-25 19:00:37 +02:00
Marcus
797958c0b1 Merge branch 'build_tools_28.0.1' into 'master'
makebuildserver: add newest build tools

See merge request fdroid/fdroidserver!539
2018-07-25 15:53:18 +00:00
Marcus Hoffmann
2e77392005 makebuildserver: add newest build tools 2018-07-25 17:20:25 +02:00
Areeb Jamal
7bdffde804 build: replace exclude with filter during source tar creation
Replace the deprecated exclude argument with filter in build.py
allowing users of Python 3.7 to use the fdroid CLI

Closes #531
2018-07-25 19:05:30 +05:30
Marcus Hoffmann
957b6b8d19
update: populate app level info for archive only from archived apks
Fixes fdroid/fdroidserver#365
2018-07-19 10:44:14 +02:00
Hans-Christoph Steiner
e8306fbde0 Merge branch 'master' into 'master'
fixes for `fdroid update` when dealing with lots of random APKs

Closes #515

See merge request fdroid/fdroidserver!536
2018-07-18 15:32:35 +00:00
Hans-Christoph Steiner
60ee69b8bd gitlab-ci: pylint<2.0 workaround to avoid typed-ast's gcc requirement
To keep those tests light and small, no gcc please!
* https://gitlab.com/eighthave/fdroidserver/-/jobs/82274815
2018-07-18 17:11:21 +02:00
Hans-Christoph Steiner
84dfd6b06a update: more reliable handling of XMLNS with androguard
Sometimes androguard returns the XMLNS as entirely empty, which would make
it an invalid APK since normally the 'android' name is mapped to the
'http://schemas.amazon.com/apk/res/android' value.  Occasionally, a
different key is used.

closes fdroid/fdroidserver#515
2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
4352aa2792 update: pass resourceIds through if they can't be deferenced
People do odd tricks with `aapt --rename-manifest-package` and androguard
doesn't handle them all.

* https://github.com/androguard/androguard/issues/503
2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
0e0a5019ab update: little trick to avoid some cases of XML app icons
refs #344
2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
75e9a9e176 update: support versionCode values in hex 2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
c8e61aa02d update: handle random drawable folder names when parsing icons
The app com.android.acehk.aceapp37423 had this invalid stuff in it:

     6165  2014-03-28 12:52   res/drawable-320dpi/ic_launcher.png
2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
a9cc7f6358 update translation template with latest strings 2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
56a5d868f1 update: purge --editor and --interactive, they were removed in 2013
48296df5b0
2018-07-17 12:37:13 +02:00
Hans-Christoph Steiner
be54f1e82a Merge branch 'improve_gradlew-fdroid' into 'master'
Improve gradlew fdroid

See merge request fdroid/fdroidserver!535
2018-07-13 16:53:50 +00:00
Marcus Hoffmann
7023f372fd gradlew-fdroid: tabs -> spaces
We have everything indented with spaces. Don't make an exception for
shell scripts.
2018-07-13 17:02:48 +02:00
Marcus Hoffmann
03e9fe4b38 gradlew-fdroid: save downloads with proper name
This makes re-using them for makebuildserver possible
2018-07-13 17:01:14 +02:00
Marcus Hoffmann
51ef9a8a99 gradlew-fdroid; print which gradle binary is actually running 2018-07-13 17:00:45 +02:00
Marcus
449b4ef7a2 Merge branch 'fix_519' into 'master'
Fix 519

Closes #519

See merge request fdroid/fdroidserver!534
2018-07-13 14:28:36 +00:00
Marcus Hoffmann
19a017c88d gradlew-fdroid: don't print available versions
It's not really useful information and can be gathered from the used
fdroidserver commit in any case.
2018-07-13 16:03:38 +02:00
Marcus Hoffmann
377c50fc53 gradlew-fdroid: make sure cachedir exists
Closes fdroid/fdroidserver#519
2018-07-13 16:02:58 +02:00
Michael Pöhn
b6ad6724cc Revert "publish: avoid double removal of dev-supplied reference binary"
This reverts commit db5ed26517.

Doh, messed up the rebase...
2018-07-13 00:07:58 +02:00
Hans-Christoph Steiner
b0e9a25abd Merge branch 'subdir-for-reprod-apks' into 'master'
put .binary.apk files into sub-directory

another shot at #509

See merge request fdroid/fdroidserver!533
2018-07-12 23:53:37 +02:00
Hans-Christoph Steiner
64b999ca19 publish: test case that successfully verifies based on Binaries:
This is a stupid test of the process just to exercise the most basic path.
It should always succeed since it is verifying two copes of the same APK.
2018-07-12 23:53:05 +02:00
Hans-Christoph Steiner
58b81b5ca6 publish: strict regex replacement for .binary.apk
. matches anything \. matches the char "."
2018-07-12 23:53:05 +02:00
Hans-Christoph Steiner
68fb3d2bd9 fix typos 2018-07-12 23:53:05 +02:00
Michael Pöhn
db5ed26517 publish: avoid double removal of dev-supplied reference binary 2018-07-12 23:53:05 +02:00
Michael Pöhn
cdc2147de9 put .binary.apk files into sub-directory 2018-07-12 23:52:46 +02:00
Michael Pöhn
fab02a49dc Merge branch 'better_gradle_support' into 'master'
Better gradle support

Closes #98

See merge request fdroid/fdroidserver!527
2018-07-11 15:20:19 +00:00
Marcus Hoffmann
34b698aa45
hooks: add gradlew-fdroid to BASH_FILES 2018-07-11 11:49:41 +02:00
Marcus Hoffmann
9889a98dea
build: improve gradle experience
This expands the gradle wrapper shell script used by the buildserver for
usage outside the buildserver environment. It also allows downloading
whitelisted versions of gradle if they are not yet deployed to the
buildserver by simply upsating the copy of fdroidserver (in contrast to
having to reprovision the whole buildserver).

We first move the buildserver/gradle shell script to the repo root
as gradlew-fdroid, as it's an fdroid specific gradle wrapper.
We also now sync it inside the build VM before each build.

We then add a list of whitelisted gradle distributions taken from the
makebuildserver script.

The script additionally now reads two env vars which tell it where to
expect installed versions of gradle and where it might store downloaded
gradle .zip files. Both of those are configurable from config.py. As the
first should normally just be a subdir of the second it's not exposed in
the example config.py but only used by the buildserver config.py.

Default config now uses this internal gradle wrapper but a path to a
custom wrapper or specific gradle distribution can still be set from
config.py.

Closes fdroid/fdroidserver#98
Ref: fdroid/fdroidserver#370
2018-07-11 11:49:46 +02:00
Hans-Christoph Steiner
7dae36399d Merge branch 'master' into 'master'
NoSourceSince Anti-Feature should only be added to index

See merge request fdroid/fdroidserver!532
2018-07-10 22:10:09 +00:00
Hans-Christoph Steiner
e3bd293f43 gitlab-ci: point to fixed NoSourceSince commit 2018-07-10 23:48:25 +02:00
Hans-Christoph Steiner
b03c4a7353 NoSourceSince Anti-Feature should only be added to index
Before, it was being added to the metadata, so that rewritemeta would
output it.

fdroid/fdroidserver!529
#508
2018-07-10 23:32:07 +02:00
Hans-Christoph Steiner
6ca09e1bb2 gitlab-ci: update metadata_v0 test for latest metadata fields
This is a lot easier than trying to do some elaborate multiline sed regexp!

https://gitlab.com/fdroid/fdroidserver/merge_requests/529#note_86955227
2018-07-10 17:26:07 +02:00
Hans-Christoph Steiner
90e3a67cef Merge branch 'sourcegone' into 'master'
new AntiFeature: SourceGone (automatically set at NoSourceSince). closes #508

Closes #508

See merge request fdroid/fdroidserver!529
2018-07-10 12:36:49 +00:00
Izzy
5d8e1bde4f new AntiFeature: SourceGone (automatically set at NoSourceSince). closes #508 2018-07-10 12:36:49 +00:00
Marcus Hoffmann
68cb81f38d
gitignore: add .idea dir 2018-07-09 17:59:32 +02:00
Hans-Christoph Steiner
4f7a992214 Merge branch 'fix_notarball' into 'master'
build: propagate --no-tarball option to buildserver

Closes #510

See merge request fdroid/fdroidserver!528
2018-07-09 15:01:09 +00:00
Marcus Hoffmann
a728582077
build: propagate --no-tarball option to buildserver
Closes #510
2018-07-09 14:48:59 +02:00
Marcus
a10957942f Merge branch 'ndkr17b_fix2' into 'master'
ndk17: add to extract whitelist

See merge request fdroid/fdroidserver!526
2018-07-04 12:33:18 +00:00
Marcus Hoffmann
a1ea29c86b
ndk17: add to extract whitelist 2018-07-04 14:30:15 +02:00
Michael Pöhn
b3e3aa6e0e Merge branch '509-Error-publishing-an-apk' into 'master'
Resolve "Error publishing an apk"

See merge request fdroid/fdroidserver!525
2018-07-02 23:04:12 +00:00
Michael Pöhn
5726432159 fix ignoring developer supplied reference apks for reproducible builds when publishing 2018-07-02 15:28:22 +02:00
Marcus
1ee90d05e2 Merge branch 'ndk17b' into 'master'
Ndk17b

See merge request fdroid/fdroidserver!524
2018-06-27 14:47:51 +00:00
Marcus Hoffmann
b3bfb3ac21
examples/config.py: add ndk r17b entry 2018-06-27 16:46:38 +02:00
Marcus Hoffmann
2757bd2093
buildserver config: add ndk r17b entry 2018-06-27 16:45:42 +02:00
Marcus
2f4e5dd868 Merge branch 'makebuildserver_upgrades' into 'master'
Makebuildserver upgrades

Closes #506

See merge request fdroid/fdroidserver!523
2018-06-26 13:50:57 +00:00
Marcus Hoffmann
9ab7adcfbb
makebuildserver: upgrade ndk r17 to r17b 2018-06-26 15:23:48 +02:00
Marcus Hoffmann
297a1eb542
makebuildserver: add gradle 4.8.1
Closes fdroid/fdroidserver#506
2018-06-26 15:23:43 +02:00
Marcus Hoffmann
50660e44fc
makebuildserver: add build-tools_r28 2018-06-26 15:19:17 +02:00
Marcus Hoffmann
2a2058c2f9
makebuildserver: add platform-28 2018-06-26 15:05:12 +02:00
Hans-Christoph Steiner
abb3a0bfb6 Merge branch 'nonstandardwebroot-warning' into 'master'
add extra explanation/warning to nonstandardwebroot in examples/config.py

See merge request fdroid/fdroidserver!522
2018-06-26 09:35:58 +00:00
Michael Pöhn
931ec12b82 add extra explanation/warning to nonstandardwebroot in examples/config.py 2018-06-26 11:31:52 +02:00
Michael Pöhn
1cca767a6b Merge branch 'master' into 'master'
1.0 polish

See merge request fdroid/fdroidserver!521
2018-06-25 19:58:12 +00:00
Hans-Christoph Steiner
d20e8613fe build: only test for all Android SDK paths where it is needed
Now that androguard can be used, the android-sdk is no longer required for
most operations.
2018-06-25 10:52:12 +02:00
Hans-Christoph Steiner
669401640a tests: only run gpgsign tests if gpg is present and executable
This allows the full test suite to run in Debian/Ubuntu autopkgtest with
only the Depends: installed, and nothing from Recommends:.
2018-06-25 10:52:12 +02:00
Hans-Christoph Steiner
c3b361c91b remove 'from distutils.util import strtobool' dependency
Most of distutils is being removed from the Python standard library, and
this is totally not needed here.
2018-06-25 10:52:12 +02:00
Hans-Christoph Steiner
d28dd3f64d bump to 1.1a 2018-06-25 10:52:07 +02:00
Michael Pöhn
b80154da86 Merge branch 'fix-left-out-refactoring-in-build-py' into 'master'
fix left out refactoring in build.py

See merge request fdroid/fdroidserver!520
2018-06-23 21:51:42 +00:00
Michael Pöhn
12af173821 fix left out refactoring in build.py 2018-06-23 23:26:42 +02:00
Hans-Christoph Steiner
3e62b29e96 Merge branch 'master' into 'master'
two fixes and two new flags for `fdroid nightly

Closes #288

See merge request fdroid/fdroidserver!519
2018-06-20 14:32:02 +00:00
Hans-Christoph Steiner
1d6c462605 Merge branch '495-publish-build-logs-with-rsync' into 'master'
publish build logs with rsync

See merge request fdroid/fdroidserver!515
2018-06-19 13:44:09 +00:00
Hans-Christoph Steiner
a736a37282 update: let it work without JDK, only JRE and apksigner 2018-06-19 15:40:48 +02:00
Hans-Christoph Steiner
8f2ee4bd1d run 'zipalign' using standard flags used by Gradle Android Plugin
Nice find by @equeim!  -p was added in build-tools-23.0.0

https://developer.android.com/studio/publish/app-signing#sign-manually

closes #288
2018-06-19 15:40:48 +02:00
Hans-Christoph Steiner
deccd013c9 nightly: --no-deploy option to skip rsyncing repo 2018-06-19 15:40:48 +02:00
Hans-Christoph Steiner
881074b2aa nightly: --keep-private-keys option to allow further processing
This makes it possible to run `fdroid server update` after `fdroid nightly`
has completed.  It also actually deletes all private key files.
2018-06-19 15:40:48 +02:00
Hans-Christoph Steiner
672df07238 Merge branch 'conform-vmtools-coding-style' into 'master'
refactor vmtools logging, pythonic binary lookup

See merge request fdroid/fdroidserver!518
2018-06-19 13:22:28 +00:00
Michael Pöhn
752f6a4ba2 applied review suggestions for deploying (build) logs 2018-06-19 15:18:13 +02:00
Michael Pöhn
a318a637a5 vmtools: use pythonic way to check for installed binaries 2018-06-19 14:47:03 +02:00
Michael Pöhn
ebe71472d3 use default logging style in vmtools 2018-06-19 14:37:18 +02:00
Michael Pöhn
763768989b add additional infos about publish_build_logs to example/config.py 2018-06-19 12:39:37 +02:00
Michael Pöhn
88e64df3ef deploying build logs to server after each individual build run 2018-06-19 12:24:52 +02:00
Michael Pöhn
4c53c71fcf added helper function for uploading build logs with rsync 2018-06-19 12:24:52 +02:00
Michael Pöhn
af980fbe7e added tests for update_serverwebroot 2018-06-19 12:24:52 +02:00
Michael Pöhn
429bc21da7 make common.TestCase run independant of cwd 2018-06-19 12:24:52 +02:00
Marcus
26996b0128 Merge branch 'gradle-4.8' into 'master'
makebuildserver: add Gradle 4.8

See merge request fdroid/fdroidserver!517
2018-06-14 17:55:48 +00:00
relan
396ef24a4d makebuildserver: add Gradle 4.8 2018-06-14 20:37:54 +03:00
Marcus
4b342c7cb5 Merge branch '498' into 'master'
scanner: whitelist www.jitpack.io

Closes #498

See merge request fdroid/fdroidserver!516
2018-06-11 10:55:39 +00:00
Marcus Hoffmann
3a6942ca77
scanner: whitelist www.jitpack.io
Only the non-www version was recognized so far.

Closes #498
2018-06-11 12:40:55 +02:00
Marcus
a65bc96f51 Merge branch '496-makebuildserver-does-not-handle-basebox-with-multiple-architectures-correctly' into 'master'
Resolve "makebuildserver does not handle basebox with multiple architectures correctly"

Closes #496

See merge request fdroid/fdroidserver!513
2018-06-05 07:30:51 +00:00
Michael Pöhn
6266c33027 makebuildserver: fix lookup logic for needs_mutate 2018-06-05 00:03:17 +02:00
Hans-Christoph Steiner
e8bad73ae4 Merge branch 'master' into 'master'
modernize PEP8 checks to prepare for Python 3.7

See merge request fdroid/fdroidserver!512
2018-05-29 12:14:15 +00:00
Hans-Christoph Steiner
ff90c0246e fix PEP8 W605 invalid escape sequence
Python 3.7 will get a lot stricter with escape sequences.  They must be
valid.

* https://lintlyci.github.io/Flake8Rules/rules/W605.html
* https://docs.python.org/3/whatsnew/3.6.html#deprecated-python-behavior
2018-05-29 13:51:47 +02:00
Hans-Christoph Steiner
e6d5260c3c fix PEP8: W504 line break after binary operator 2018-05-29 12:31:56 +02:00
Hans-Christoph Steiner
8c4f75e05f pre-commit hook: use most compatible grep flags
The minimal test suite runs on Alpine use busybox grep, and BSD grep also
often has different flags.
2018-05-29 11:28:08 +02:00
Hans-Christoph Steiner
a87df29135 gitlab-ci: pep8 has been replaced by pycodestyle 2018-05-29 11:28:08 +02:00
Marcus
4b3b14ca82 Merge branch 'cleanup-platform27' into 'master'
remove platform-27_r01

See merge request fdroid/fdroidserver!511
2018-05-28 14:17:48 +00:00
Marcus Hoffmann
e0f54ff995
remove platform-27_r01
Superseded by r03.
2018-05-28 16:04:38 +02:00
Hans-Christoph Steiner
e180e03a5a tests: fix index-v1.json unicode test 2018-05-28 09:29:11 +02:00
Hans-Christoph Steiner
c37c8bc0a5 bump to 1.0.6 2018-05-25 17:29:14 +02:00
Hans-Christoph Steiner
91068d8e00 tests: rename unicode test file to fix "file name too long" errors
pristine-tar and mkdir barf on this file.
2018-05-25 17:27:58 +02:00
Hans-Christoph Steiner
e986dcf985 directly use README.md for pypi, using new metadata options
* https://packaging.python.org/tutorials/packaging-projects/#description
* https://packaging.python.org/specifications/core-metadata/#description-content-type-optional
* https://blog.thea.codes/github-flavored-markdown-on-pypi/
2018-05-25 14:23:05 +02:00
Hans-Christoph Steiner
dae73be4ab bump to 1.0.5 2018-05-25 13:53:09 +02:00
Hans-Christoph Steiner
6c64b68c7e Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!510
2018-05-25 11:36:15 +00:00
Hans-Christoph Steiner
19d59ae655 Weblate 2018-05-25 11:36:15 +00:00
Torsten Grote
8231042699 Merge branch 'polish-verification.f-droid.org-setup' into 'master'
Polish verification.f droid.org setup

See merge request fdroid/fdroidserver!509
2018-05-25 10:59:32 +00:00
Hans-Christoph Steiner
fb02073cab fix "local variable 'e' is assigned to but never used" 2018-05-25 12:32:34 +02:00
Hans-Christoph Steiner
14127bf418 gitlab-ci: combine all lint/syntax/safety checks into a single job
This should make it easier to accept merge requests where there are only
cosmetic problems with them.  pep8/pylint/pyflakes runs can then be disabled
in the 'test' job by not installing the in the ci-images-server base image.
2018-05-25 12:12:40 +02:00
Hans-Christoph Steiner
5ff1b5ef37 verify: exit with error code if any APK fails to verify 2018-05-25 11:56:13 +02:00
Hans-Christoph Steiner
a3a0b8dcf0 verify: --reuse-remote-apk to reuse local APKs
For something like a verification server, this avoids having `fdroid verify`
redownload the remote APK from f-droid.org every time its run.  For normal
users, it should download a fresh copy each time to avoid false errors
based on confusion over anything that might have changed the local copy of
the remote APK.

This patch has been used on verification.f-droid.org for a while now. It is
the last thing keeping verification.f-droid.org from using fdroidserver
straight from stretch-backports.
2018-05-25 11:48:01 +02:00
Hans-Christoph Steiner
b0a5ec5c1a workaround crash in diffoscope when verifying APKs
On versions of diffoscope before 87, like the version included in Ubuntu
xenial LTS, it would crash saying:

ValueError: max_diff_block_lines (100) cannot be smaller than max_page_diff_block_lines (128)

https://bugs.debian.org/875451
2018-05-25 11:48:01 +02:00
Hans-Christoph Steiner
5afba57212 Merge branch 'fix-tests' into 'master'
Fix tests and polish release

See merge request fdroid/fdroidserver!508
2018-05-25 08:51:18 +00:00
Hans-Christoph Steiner
0a15a9b65b tests: fix and test fdroid deploy 2018-05-25 10:32:09 +02:00
Hans-Christoph Steiner
1daa1063c5 tests: keep strerr totally clean on successful runs
Debian's autopkgtest defaults to considering any output on stderr as a sign
that the tests failed.  it is simple to make this achieve that standard, so
it seems worth it for now at least.
2018-05-25 10:32:01 +02:00
Hans-Christoph Steiner
002a4ae50e fix including unicode test APK in source tarball 2018-05-25 10:32:01 +02:00
Hans-Christoph Steiner
cef73e5794 remove unused variable, as reported by pyflakes 2018-05-25 10:32:01 +02:00
Hans-Christoph Steiner
74fb07b302 gitlab-ci: switch pyup_io_safety_check to Alpine to be lighter 2018-05-25 09:54:08 +02:00
Hans-Christoph Steiner
00971941fd Merge branch 'reproducible-bug' into 'master'
Fix reproducible builds

See merge request fdroid/fdroidserver!505
2018-05-24 19:32:46 +00:00
Torsten Grote
c6f3aed003
Fix reproducible builds
This commit fixes two bugs with reproducible builds:
* Files added by the buildserver to META-INF (fdroidserverid and buildserverid)
  were causing signature verification to always fail when --on-server was used.
  Since they are not needed anymore, they are no longer added to APKs.
* When showing a diff between both APK files, `jar xf` did not extract
  the full APK properly which was causing useless diffs.
  Instead of using jar, python's zipfile library is used instead.
2018-05-24 16:09:10 -03:00
Marcus
d9417093f3 Merge branch 'platform-27_r3' into 'master'
makebuildserver: add platform-27_r03

See merge request fdroid/fdroidserver!507
2018-05-23 22:44:34 +00:00
Marcus Hoffmann
23ccbf2965
makebuildserver: add platform-27_r03 2018-05-24 00:27:40 +02:00
Hans-Christoph Steiner
bd6de3d755 Merge branch '492-Stop-using-eval' into 'master'
Resolve "Stop using `eval()`"

Closes #492

See merge request fdroid/fdroidserver!506
2018-05-22 14:21:43 +00:00
Michael Pöhn
6b1f242d25 added tests for common.calculate_math_string 2018-05-22 13:24:37 +02:00
Michael Pöhn
24b20d7668 use simple ast+operator based calculator for evaluating Vercode Operation 2018-05-22 13:08:14 +02:00
Marcus
79a022400f Merge branch 'patch-1' into 'master'
fixed typo vmtools.py

See merge request fdroid/fdroidserver!504
2018-05-21 15:53:54 +00:00
Michael Pöhn
f8a7c23485 fixed typo vmtools.py 2018-05-21 15:29:13 +00:00
Marcus
47cfeff87a Merge branch 'ndk17' into 'master'
makebuildserver: add ndk17

See merge request fdroid/fdroidserver!502
2018-05-17 21:10:14 +00:00
Marcus Hoffmann
c964dd49c8
makebuildserver: add ndk17 2018-05-17 22:37:06 +02:00
Marcus
280ddfb9e8 Merge branch 'spdx-4.0' into 'master'
Spdx 4.0

See merge request fdroid/fdroidserver!501
2018-05-16 21:13:41 +00:00
Marcus Hoffmann
a4b6549927
tests: adapt to spdx v4.0.0 2018-05-16 22:49:57 +02:00
Marcus Hoffmann
f4bb76f3a4
lint: update spdx tags to v4.0.0 2018-05-16 22:36:39 +02:00
Hans-Christoph Steiner
3cb4aa6c18 bump to 1.0.4 2018-05-15 12:39:18 +02:00
Hans-Christoph Steiner
f6bcf5cfe2 Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!500
2018-05-15 10:31:31 +00:00
Hans-Christoph Steiner
d8d1d7774e Weblate 2018-05-15 10:31:31 +00:00
Hans-Christoph Steiner
a76c5cc0b3 Merge branch 'release-test-overhaul' into 'master'
release test overhaul

See merge request fdroid/fdroidserver!499
2018-05-15 09:59:11 +00:00
Hans-Christoph Steiner
f0795cc092 tests: git repo mirror tests require git >= 2.3 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
6570e85a2b gitlab-ci: new test case of pip installs on Ubuntu/trusty
Ubuntu/trusty is used as the base image for CI systems like Travis, as well
as Microsoft Subsystem for Linux.  SO we need to provide working options.
2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
2d3e7ef950 tests: allow tests to run without any Android SDK installed 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
43c61aecee fix pylint Unused argument 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
6db9ba8334 androguard >= 3.1.0 is in pypi, so add it to install_requires 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
54b21a6d22 move pylint run to standalone gitlab-ci job 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
3c9cc59c38 gitlab-ci: include fdroiddata yml files in metadata_v0 test 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
0bd276de1c gitlab-ci: add new security scanner pyup.io/safety
https://pyup.io/safety/
2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
feac3fa067 jenkins: remove most troublesome test case to avoid false fails 2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
5610b3f0d7 set pyasn1 required version to prevent conflict with pyasn1-modules
pyasn1-modules v0.2.1 requires pyasn1 <0.5.0, >=0.4.1 but for whatever
reason, `pip3 install` is not picking it up properly.  Perhaps because pip3
finds an older version of pyasn1 installed but does not upgrade it.

* https://github.com/etingof/pyasn1-modules/issues/10
* https://gitlab.com/eighthave/fdroidserver/-/jobs/67781548
2018-05-14 15:25:33 +02:00
Hans-Christoph Steiner
b3f45ca024 split pip tests to run separately for Ubuntu/trusty and Debian/stretch
Trying to reuse the pip test run is now a lot more work than just
writing it cutstom for each target platform.

Ubuntu/trusty does not have androguard 3.1.x nor aapt >= 26.x, so
using trusty's aapt will always have errors scraping some names from
APKs.  This continues to use Google's binary.

`apt-get update` is now disabled by default by Travis, this adds it
back so that the latest files from the PPA are used.

Here's one example of an issue with pip on trusty:
https://github.com/requests/requests/issues/4006

    pip3 install --quiet -e /home/travis/build/fdroidtravis/fdroidserver
    Exception:
    Traceback (most recent call last):
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/pkg_resources.py", line 2482, in _dep_map
        return self.__dep_map
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/pkg_resources.py", line 2344, in __getattr__
        raise AttributeError(attr)
    AttributeError: _DistInfoDistribution__dep_map

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python3.4/site-packages/pip/basecommand.py", line 122, in main
        status = self.run(options, args)
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python3.4/site-packages/pip/commands/install.py", line 278, in run
        requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python3.4/site-packages/pip/req.py", line 1266, in prepare_files
        req_to_install.extras):
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/pkg_resources.py", line 2291, in requires
        dm = self._dep_map
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/pkg_resources.py", line 2484, in _dep_map
        self.__dep_map = self._compute_dependencies()
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/pkg_resources.py", line 2517, in _compute_dependencies
        common = frozenset(reqs_for_extra(None))
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/pkg_resources.py", line 2514, in reqs_for_extra
        if req.marker_fn(override={'extra':extra}):
      File "/home/travis/build/fdroidtravis/fdroidserver/env/lib/python-wheels/setuptools-3.3-py2.py3-none-any.whl/_markerlib/markers.py", line 113, in marker_fn
        return eval(compiled_marker, environment)
      File "<environment marker>", line 1, in <module>
    NameError: name 'platform_system' is not defined
2018-05-14 15:25:33 +02:00
Marcus
3e0fa5c80e Merge branch 'master' into 'master'
allow running without aapt, support Java versions newer than 9

Closes #474

See merge request fdroid/fdroidserver!497
2018-05-08 18:37:38 +00:00
Hans-Christoph Steiner
040b8d8d5d prefer latest version of Java, its no longer necessary to prefer 7
closes #474
2018-05-04 21:38:06 +02:00
Hans-Christoph Steiner
7eb622930e update Java path searches to also match v10, v11, etc.
This is still pretty conversative, since its not easy to test on all those
platforms.

#474
2018-05-04 21:37:41 +02:00
Hans-Christoph Steiner
77f7ca2f25 tests: allow the full suite to run without aapt, only androguard 2018-05-04 15:11:25 +02:00
Hans-Christoph Steiner
cf1ce46e5c init: make work with only androguard, no Android SDK 2018-05-04 15:11:25 +02:00
Hans-Christoph Steiner
9cc8826a79 tests: allow running with only androguard, no Android SDK 2018-05-04 15:11:25 +02:00
Hans-Christoph Steiner
21a18cf26b 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.
2018-05-04 15:11:25 +02:00
Hans-Christoph Steiner
d2af293bb7 travis-ci: update to only recent OSX versions, well supported by brew 2018-05-04 15:11:25 +02:00
Hans-Christoph Steiner
18a7dddd23 Merge branch 'master' into 'master'
Fix applicationIdSuffix / versionNameSuffix not understood #455

Closes #455

See merge request fdroid/fdroidserver!484
2018-05-04 12:58:29 +00:00
J-Jamet
d6f1de2649 Fix applicationIdSuffix / versionNameSuffix #455 2018-05-04 12:24:16 +02:00
Hans-Christoph Steiner
62a187607d Merge branch 'master' into 'master'
Three random fixes

See merge request fdroid/fdroidserver!496
2018-05-03 12:11:48 +00:00
Hans-Christoph Steiner
27a5cce832 implement common.get_apk_id() using androguard 2018-05-03 13:46:42 +02:00
Hans-Christoph Steiner
98a2f70e38 fix intermittent test failure
For some reason, the parser stopped working intermittently, even
though the format has been the same since aapt 23 or earlier.  Then
also, some of the test cases pointed to symlinks that were no longer
generated, and one test app now has a blank versionName.

Strange that this wasn't caught in the gitlab-ci runs.  !484

FAIL: test_get_api_id_aapt (__main__.CommonTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./common.TestCase", line 578, in testA_get_api_id_aapt
    self.assertEqual(versionName, vn)
AssertionError: '0.1' != "0.1' platformBuildVersionName='4.3.1-1425645"
- 0.1
+ 0.1' platformBuildVersionName='4.3.1-1425645
2018-05-03 13:46:42 +02:00
Hans-Christoph Steiner
cc1e10a37a delete .java.security after checking MD5 signatures
This file is written freshly each time before use, so it does not need
to be ekpt around.  It was the only file making the fdroiddata.git
repo dirty on the f-droid.org infrastructure.

This also adds stricter file permissions to avoid an attacker changing
those settings during operation.
2018-05-03 13:46:36 +02:00
Hans-Christoph Steiner
03ad2578d4 Merge branch 'master' into 'master'
fix bad parsing of maxSdkVersion as a @string resource

See merge request fdroid/fdroidserver!494
2018-04-26 14:36:07 +00:00
Hans-Christoph Steiner
0e5ed1bb11 reusable method for checking if a value is a resId or not
I wrote this for the previous commit, but since aapt does not recognize
SDK Version values that are string resources, I made this do the same thing
2018-04-26 15:19:41 +02:00
Hans-Christoph Steiner
e17815e9f0 handle bad SDK Version values in APKs
Even though it is invalid to have *SdkVersion in AndroidManifest.xml set as
anything but an integer, sometimes people manage to get something in there.
`fdroid update` needs to be able to handle all that.

* https://developer.android.com/guide/topics/manifest/uses-sdk-element#min
* https://gitlab.com/souch/SMSbypass/blob/v0.9/app/src/main/AndroidManifest.xml#L29
* https://gitlab.com/souch/SMSbypass/blob/v0.9/app/src/main/res/values/strings.xml#L27

admin#65
2018-04-26 15:19:41 +02:00
Hans-Christoph Steiner
4ba5b8b5ec ignore index files generated as part of manual testing
it is quite useful to run `../fdroid update --pretty` directly in tests/
2018-04-26 12:33:44 +02:00
Hans-Christoph Steiner
74c6555c71 index: ensure index.xml timestamp is in UTC, closes #481
use verbose but safe syntax so this works with all versions of sed, e.g. osx
2018-04-25 16:35:22 +02:00
Marcus
8fbe0738ec Merge branch 'gradle_4.7' into 'master'
makebuildserver: add gradle 4.7

See merge request fdroid/fdroidserver!493
2018-04-22 18:00:33 +00:00
Marcus Hoffmann
a4fe2f711c
makebuildserver: add gradle 4.7 2018-04-20 17:55:51 +02:00
Hans-Christoph Steiner
afe0c6a167 fix scan_apk_androguard when parsing versionName without a dot (e.g. 5)
fixes de35f1b05b:

Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/fdroid", line 164, in <module>
    main()
  File "/home/hans/code/fdroid/server/fdroid", line 138, in main
    mod.main()
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1932, in main
    apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks, options.use_date_from_apk)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1459, in process_apks
    use_date_from_apk, ada, True)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1332, in process_apk
    apk = scan_apk(apkfile)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1051, in scan_apk
    scan_apk_androguard(apk, apk_file)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1220, in scan_apk_androguard
    res_id = arsc.get_id(apk['packageName'], res_id)[1]
TypeError: 'NoneType' object is not subscriptable

For example https://f-droid.org/archive/com.abitsinc.andr_5.apk:
$ aapt dump badging archive/com.abitsinc.andr_5.apk |head -1
package: name='com.abitsinc.andr' versionCode='5' versionName='5' platformBuildVersionName='2.3.3'
2018-04-18 12:32:28 +02:00
Hans-Christoph Steiner
6cc26ad8c8 Merge branch 'blank-versionName' into 'master'
handle APKs with a blank versionName

Closes #477, #478, fdroidclient#1416, fdroidclient#1417, and fdroidclient#1418

See merge request fdroid/fdroidserver!492
2018-04-17 13:02:55 +00:00
Hans-Christoph Steiner
de35f1b05b update: handle APKs with a blank versionName
Instead of just crashing, first try to use the versionName as written in the
build metadata, otherwise just let it be blank.  A blank versionName will
cause fdroidclient < 1.3 to crash.  Blank versionNames are not allowed in
the .txt metadata format, only .yml.

closes #477
closes #478
closes fdroidclient#1416
closes fdroidclient#1417
closes fdroidclient#1418
fdroiddata!3061
2018-04-17 12:36:49 +02:00
Hans-Christoph Steiner
9bf9159a77 update: use only 7 chars of SHA256 for non-APK version name
#460
2018-04-17 12:36:49 +02:00
Hans-Christoph Steiner
74c0e98d82 update index metadata tests for 673a3517d3 2018-04-16 11:47:48 +02:00
Hans-Christoph Steiner
673a3517d3 add test of Android TV "activity banner" graphic
!491

https://developer.android.com/guide/topics/manifest/activity-element.html#banner
https://developer.android.com/training/tv/start/start.html#banner
2018-04-16 11:37:11 +02:00
Hans-Christoph Steiner
0cea73cd2f Merge branch 'patch-1' into 'master'
fdroidserver/update.py: APK_LABEL_ICON_PAT icon pattern should not be greedy

See merge request fdroid/fdroidserver!491
2018-04-16 09:37:42 +00:00
Phoenix09
ea89b25fd7 fdroidserver/update.py: APK_LABEL_ICON_PAT icon pattern should not be greedy 2018-04-14 23:30:23 +01:00
Marcus
eec005ed67 Merge branch 'wiki-page-name' into 'master'
Filter another invalid mediawiki page title character

See merge request fdroid/fdroidserver!490
2018-04-11 13:35:42 +00:00
Ciaran Gultnieks
bd00b87e4e Filter another invalid mediawiki page title character 2018-04-11 14:32:55 +01:00
Hans-Christoph Steiner
33c6d5570e jenkins-test: remove redundant fdroid update test
This test ran before config.py was setup, so it didn't respect the test
setup.  Things like "make_current_version_link = False" are needed so that
the checkupdates tests work like on the official infrastructure.  Also,
./tests/run-tests has many `fdroid update` tests, so having it here just
wastes time.  The tests that are directly in this script are meant to test
the separate build/sign setup.
2018-04-09 10:27:29 +02:00
Marcus
94a094323e Merge branch 'mwclient-dep' into 'master'
Replace deprecated mwclient method

See merge request fdroid/fdroidserver!489
2018-04-08 11:53:26 +00:00
Ciaran Gultnieks
31e8605864 Replace deprecated mwclient method
It's functionally the same, just a different name.
2018-04-08 09:37:48 +01:00
Hans-Christoph Steiner
ea3f9df473 Merge branch 'patch-1' into 'master'
Fix a typo in README.md

See merge request fdroid/fdroidserver!488
2018-04-06 20:24:54 +00:00
scde
2890b2feb2 Fix a typo in README.md 2018-04-06 17:16:56 +00:00
Hans-Christoph Steiner
45ff2231b0 jenkins-test: turn off link generation for checkupdates test
These links will make checkupdates fail since they will make the git repo
dirty.  There is also a mystery "cache/" subdir, but I don't know what is
making that.
2018-04-05 21:03:13 +02:00
relan
4a5c921aee Merge branch 'gradle_plugin_3.1' into 'master'
add gradle plugin 3.1 which requires gradle 4.4

See merge request fdroid/fdroidserver!487
2018-04-05 12:34:47 +00:00
Marcus Hoffmann
970653bd92
add gradle plugin 3.1 which requires gradle 4.4 2018-04-05 14:12:35 +02:00
Hans-Christoph Steiner
47a930f9f3 Merge branch 'java-gentoo' into 'master'
added java selection criteria for gentoo linux

See merge request fdroid/fdroidserver!486
2018-04-04 17:04:40 +00:00
Hans-Christoph Steiner
c54e32a3b8 Merge branch 'fix-icon-crash' into 'master'
Fix crash when icon_name is None

See merge request fdroid/fdroidserver!485
2018-04-04 17:04:24 +00:00
lb@lb520
a30851ec98 added java selection criteria for gentoo linux 2018-04-04 16:39:25 +02:00
Jonas Kalderstam
9e4459d7d1 Add test for when apk icon src could not be found
An APK (Netflix) was found to have the following icon filename:

    \u2003\u2009\n.xml

This breaks the aapt dump parsing because it iterates line by line and
this filename goes across two lines. Consequently, icon_src will be
None (default value) when it is passed to the icons parser.
2018-03-27 18:39:59 +02:00
Jonas Kalderstam
1f706283ce Fix crash when icon_name is None
Fixes the following crash:

```
$ fdroid update --create-metadata --rename-apks
WARNING: Using Java's jarsigner, not recommended for verifying APKs! Use apksigner
CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/home/jonas/miniconda3/bin/fdroid", line 164, in <module>
    main()
  File "/home/jonas/miniconda3/bin/fdroid", line 138, in main
    mod.main()
  File "/home/jonas/miniconda/lib/python3.6/site-packages/fdroidserver/update.py", line 1927, in main
    apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks, options.use_date_from_apk)
  File "/home/jonas/miniconda/lib/python3.6/site-packages/fdroidserver/update.py", line 1454, in process_apks
    use_date_from_apk, ada, True)
  File "/home/jonas/miniconda/lib/python3.6/site-packages/fdroidserver/update.py", line 1327, in process_apk
    apk = scan_apk(apkfile)
  File "/home/jonas/miniconda/lib/python3.6/site-packages/fdroidserver/update.py", line 1056, in scan_apk
    scan_apk_aapt(apk, apk_file)
  File "/home/jonas/miniconda/lib/python3.6/site-packages/fdroidserver/update.py", line 1184, in scan_apk_aapt
    apk['icons_src'] = _get_apk_icons_src(apkfile, icon_name)
  File "/home/jonas/miniconda/lib/python3.6/site-packages/fdroidserver/update.py", line 1089, in _get_apk_icons_src
    density_re = re.compile('^res/(.*)/' + icon_name + '\.(png|xml)$')
TypeError: must be str, not NoneType
```
2018-03-27 14:17:08 +02:00
Hans-Christoph Steiner
b82f074919 bump to 1.0.3 2018-03-22 23:19:57 +01:00
Hans-Christoph Steiner
4ca77a4faf update: strip all whitespace from buildserverid 2018-03-22 23:19:54 +01:00
Hans-Christoph Steiner
8ab2deace2 Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!483
2018-03-22 22:21:06 +00:00
Hans-Christoph Steiner
02203efe15 Weblate 2018-03-22 22:21:06 +00:00
Marcus
3ee4855945 Merge branch 'gradle-4.6' into 'master'
makebuildserver: add Gradle 4.6

See merge request fdroid/fdroidserver!482
2018-03-16 08:33:52 +00:00
relan
64fad95fa1 makebuildserver: add Gradle 4.6 2018-03-16 07:39:44 +03:00
Hans-Christoph Steiner
4b788b3b09 Merge branch 'master' into 'master'
update: handle AndroidManifest XML namespace named other than 'android'

See merge request fdroid/fdroidserver!481
2018-03-15 15:23:55 +00:00
Hans-Christoph Steiner
54242dee32 update: handle AndroidManifest XML namespace named other than 'android'
https://stackoverflow.com/questions/5856719/why-do-we-specify-namespace-in-android-xml-file

https://f-droid.org/repo/org.moire.ultrasonic_60.apk has:
xmlns:a="http://schemas.android.com/apk/res/android"
2018-03-15 15:56:30 +01:00
Hans-Christoph Steiner
d290eb96f9 Merge branch 'master' into 'master'
update: handle renameManifestPackage when extracting icons with androguard

See merge request fdroid/fdroidserver!480
2018-03-14 18:09:19 +00:00
Hans-Christoph Steiner
b5c1634320 update: handle renameManifestPackage when extracting icons with androguard
aapt --rename-manifest-package changes the applicationId for an app without
changing the packageName listed in AndroidManifest.xml under
<application android:package="">
2018-03-14 18:43:05 +01:00
Hans-Christoph Steiner
cd8b583db1 Merge branch 'master' into 'master'
update: support all official DPIs when extracting icons

See merge request fdroid/fdroidserver!479
2018-03-13 16:12:52 +00:00
Hans-Christoph Steiner
493c485755 update: support all official DPIs when extracting icons
https://developer.android.com/training/multiscreen/screendensities.html
2018-03-13 16:47:24 +01:00
Hans-Christoph Steiner
b445fc066b Merge branch 'master' into 'master'
two update parsing fixes  when using androguard

See merge request fdroid/fdroidserver!477
2018-03-13 11:36:43 +00:00
Hans-Christoph Steiner
3b09e5ee08 update: do not crash on android-26+ XML icon
For example:
res/drawable-v26/icon.xml

Here's the full range of possibilities, we have a lot of work to do:

$ for f in */*.apk; do unzip -l $f |grep -F icon.| grep -Eo 'res/drawable[^/]*'; done | sort -u
res/drawable
res/drawable-anydpi-v21
res/drawable-anydpi-v26
res/drawable-hdpi
res/drawable-hdpi-v11
res/drawable-hdpi-v12
res/drawable-hdpi-v4
res/drawable-hdpi-v5
res/drawable-hdpi-v6
res/drawable-hdpi-v9
res/drawable-large
res/drawable-large-hdpi-v11
res/drawable-large-hdpi-v4
res/drawable-large-ldpi-v4
res/drawable-large-mdpi
res/drawable-large-mdpi-v11
res/drawable-large-v4
res/drawable-large-xhdpi-v11
res/drawable-large-xhdpi-v4
res/drawable-large-xxhdpi-v11
res/drawable-large-xxhdpi-v4
res/drawable-ldpi
res/drawable-ldpi-v11
res/drawable-ldpi-v4
res/drawable-ldpi-v5
res/drawable-ldpi-v6
res/drawable-ldpi-v9
res/drawable-ldrtl-v17
res/drawable-mdpi
res/drawable-mdpi-v11
res/drawable-mdpi-v12
res/drawable-mdpi-v4
res/drawable-mdpi-v5
res/drawable-mdpi-v6
res/drawable-mdpi-v9
res/drawable-nodpi
res/drawable-nodpi-v4
res/drawable-tvdpi-v4
res/drawable-v11
res/drawable-v14
res/drawable-v21
res/drawable-xhdpi
res/drawable-xhdpi-v11
res/drawable-xhdpi-v12
res/drawable-xhdpi-v4
res/drawable-xhdpi-v9
res/drawable-xlarge-hdpi
res/drawable-xlarge-hdpi-v4
res/drawable-xlarge-mdpi
res/drawable-xlarge-mdpi-v4
res/drawable-xlarge-v4
res/drawable-xlarge-xhdpi-v4
res/drawable-xxhdpi
res/drawable-xxhdpi-v11
res/drawable-xxhdpi-v21
res/drawable-xxhdpi-v4
res/drawable-xxhdpi-v9
res/drawable-xxxhdpi
res/drawable-xxxhdpi-v11
res/drawable-xxxhdpi-v4
2018-03-13 12:13:23 +01:00
Hans-Christoph Steiner
e89478e529 update: do not crash on APKs without icons when using androguard 2018-03-13 11:19:19 +01:00
Hans-Christoph Steiner
2c8008356b update: handle bad XML when using androguard
repo/ch.swift.willi_417101.apk had a C/Java comment in the
AndroidManifest.xml rather than an XML comment:

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26">
</uses-sdk>
// Remove permissions introduced by the appsflyer library
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
</uses-permission>
2018-03-12 17:55:45 +01:00
Hans-Christoph Steiner
d98d8c2e52 update: do not crash with androguard when working with apps without icons
For example, SpeedoMeterApp.main_1.apk
2018-03-12 17:55:45 +01:00
Marcus
00b334689f Merge branch 'fix_config_doc' into 'master'
Fix misleading java_path example

See merge request fdroid/fdroidserver!478
2018-03-12 12:37:43 +00:00
Gioacchino Mazzurco
87fdca0d90
Fix misleading java_path example
As you can see in fdroidserver/common.py:219
for java_version in ('7', '8', '9'):
the code look for java version without the 1. in front, after getting a
bunch of error message that JDK could't be found, investigating the code
and documentation I discovered my configuration was ignored because of
this and realized the example was wrong
2018-03-12 12:01:16 +01:00
Hans-Christoph Steiner
ef603d662b jenkins-test: run checkupdates as final stage of test run 2018-03-11 21:36:41 +01:00
Marcus
ae8635633d Merge branch 'master' into 'master'
checkupdates: Save app data to correct metadata format

Closes #461

See merge request fdroid/fdroidserver!476
2018-03-09 20:13:51 +00:00
mimi89999
aaa6b55bf7
checkupdates: Save app data to correct metadata format
Closes #461
2018-03-09 20:46:59 +01:00
Hans-Christoph Steiner
a576796291 jenkins-test: remove tmp hack now that androguard is available
Does the same thing as 9f553186e8 but for
jenkins.debian.net's profitbricks-build7-amd64 setup.
2018-03-09 13:45:51 +01:00
Hans-Christoph Steiner
02107cc5bc gitlab-ci: make ubuntu_lts job test of fdroid/fdroidserver PPA
Now that androguard is working, there should be no need for a specific aapt
version.  The aapt included in Ubuntu LTS should always work fine when
androguard handles the bulk of the work.
2018-03-09 12:00:31 +01:00
Hans-Christoph Steiner
4fcf69a9ef Merge 'fix-scanner' into 'master'
scanner: support Gradle plugin 3.0 syntax for dependencies

fdroid/fdroidserver!475
2018-03-08 13:56:14 +01:00
Hans-Christoph Steiner
44e8f425d5 fix PEP8 formatting issue
fdroidserver/scanner.py:35:34: E241 multiple spaces after ','
fdroidserver/scanner.py:36:35: E241 multiple spaces after ','
fdroidserver/scanner.py:37:30: E241 multiple spaces after ','
fdroidserver/scanner.py:38:41: E241 multiple spaces after ','
fdroidserver/scanner.py:39:30: E241 multiple spaces after ','
fdroidserver/scanner.py:40:38: E241 multiple spaces after ','
fdroidserver/scanner.py:41:38: E241 multiple spaces after ','
2018-03-08 13:55:07 +01:00
relan
44d17663fd scanner: support Gradle plugin 3.0 syntax for dependencies
See https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations
2018-03-08 15:23:15 +03:00
Hans-Christoph Steiner
95e016695c travis-ci: build against latest OSX 10.12 and 10.13 images 2018-03-07 15:15:28 +01:00
Hans-Christoph Steiner
8b9fe05af5 travis-ci: support old versions of OSX 2018-03-07 15:14:30 +01:00
Hans-Christoph Steiner
47b1d4b1e6 travis: brew's Python3 is now called just 'python'
https://discourse.brew.sh/t/brew-install-python3-fails/1756
2018-03-07 14:14:29 +01:00
Hans-Christoph Steiner
7d79780df0 tests: checkupdates now requires a clean git repo state 2018-03-06 20:50:23 +01:00
Hans-Christoph Steiner
8215bbbe9a Merge branch 'checkupdates' into 'master'
tighten up checkupdates

See merge request fdroid/fdroidserver!474
2018-03-06 19:20:38 +00:00
Hans-Christoph Steiner
70d9633555 build/checkupdates/update: log current fdroiddata commit to wiki 2018-03-05 21:49:09 +01:00
Hans-Christoph Steiner
86907d2ebf checkupdates: exit with error if fdroiddata git repo is dirty
One key security property of the F-Droid ecosystem is that the sensitive
code is all stored forever in git repos and source tarballs.  That means
we can easily go back and see if there where exploits and where they came
from.  Therefore, checkupdates should require everything in fdroiddata be
committed to git before running.

This provides --allow-dirty to override that behavior.
2018-03-05 21:49:09 +01:00
Hans-Christoph Steiner
67d386d925 Merge branch 'more-security-fixes' into 'master'
More security fixes

See merge request fdroid/fdroidserver!471
2018-03-05 09:10:57 +00:00
Hans-Christoph Steiner
8f30c892c5 VercodeOperation: only allow simple math expresssions and %c 2018-03-05 09:45:58 +01:00
Hans-Christoph Steiner
6876e28bb4 hg: use /bin/false to clarify that it is an executable 2018-03-05 09:45:58 +01:00
Hans-Christoph Steiner
6cd8f2ffea SVN: only allow redirects to HTTPS
"SVN follows HTTP 301 redirects to svn+ssh:// URLs. As a result, an
innocent looking HTTP URL can be used to trigger a Command Execution with a
301 redirect."
https://blog.recurity-labs.com/2017-08-10/scm-vulns.html#third-round-svn-and-mercurial

I scanned fdroiddata and found no suspicious redirects.  Here's how:

grep -A1 '^Repo *Type: *git-svn' *.txt *.yml| sed -n 's,.*Repo:\(.*\),\1,p' > /tmp/urls.txt

import requests
with open('/tmp/urls.txt') as fp:
    for line in fp:
        try:
            r = requests.head(line.strip())
            print(r.status_code, line)
        except requests.exceptions.SSLError:
            print('SSLError', line)
2018-03-05 09:45:58 +01:00
Marcus
654b3cb9dc Merge branch 'lint_fix' into 'master'
lint: fix update check data https check

See merge request fdroid/fdroidserver!473
2018-03-02 22:59:26 +00:00
Marcus Hoffmann
c81d5da953
lint: fix update check data https check
The urlver field can be '.', this was not considered in
26bfd7fb28.
2018-03-02 23:56:49 +01:00
Marcus
c35b120ff2 Merge branch 'tighten-up-UpdateCheckData' into 'master'
Tighten up UpdateCheckData

See merge request fdroid/fdroidserver!470
2018-03-02 11:45:53 +00:00
Hans-Christoph Steiner
7da0747849 checkupdates: require UpdateCheckData has valid HTTPS URL 2018-03-01 23:51:36 +01:00
Hans-Christoph Steiner
26bfd7fb28 lint: require UpdateCheckData to contain only valid HTTPS URLs 2018-03-01 23:51:27 +01:00
Hans-Christoph Steiner
1c9bc32bf6 lint: tighten up HTTPS checks on URLs 2018-03-01 23:38:56 +01:00
Hans-Christoph Steiner
4197a4a64a Merge branch 'master' into 'master'
update: make icon extraction less dependent on aapt

Closes fdroid-website#192

See merge request fdroid/fdroidserver!469
2018-02-28 21:42:06 +00:00
Hans-Christoph Steiner
498ea5d609 lint: ban all dangerous HTML tags
* https://en.wikipedia.org/wiki/HTML_sanitization
* https://asostack.com/enhance-your-google-play-store-description-with-rich-formatting-and-emojis-5f50ff354e5f
2018-02-27 12:09:54 +01:00
Hans-Christoph Steiner
b2ca49b26c update: make icon extraction less dependent on aapt
For androguard, @thezero already developed a way to get all the icons after
only extracting the icon name.  So this uses that for the aapt-based scans
also, to make them less brittle.

This should fix the problem where `fdroid update` was choosing the XML icon
for apps that include one, like NewPipe.

closes fdroid/fdroid-website#192
2018-02-26 23:43:42 +01:00
Hans-Christoph Steiner
01a73071c7 gitlab-ci: set metadata_v0 test to use 1.0.2 as the baseline 2018-02-23 22:48:44 +01:00
Hans-Christoph Steiner
0fa50ebcb2 rewritemeta: fix proper_format() so lint works with .yml files 2018-02-23 22:43:03 +01:00
Hans-Christoph Steiner
5a6a51a29e Merge branch 'allow-dashes-and-underscores-in-signature-file-names-when-checking-for-reproducability' into 'master'
allow dashes and underscores in signature file names when checking for reproducability

See merge request fdroid/fdroidserver!468
2018-02-22 23:23:50 +00:00
Michael Pöhn
8cca83aec4 allow dashes and underscores in signature file names when checking for reproducability 2018-02-22 23:30:42 +01:00
Hans-Christoph Steiner
2f563f533b bump to 1.0.2 to placate pypi
I mistakenly uploaded the dist tarball to pypi without the PGP signature.
So I deleted the release, thinking I could reupload it.  It is not possible:
https://github.com/pypa/packaging-problems/issues/74

So this is really just a bump so I can reupload to pypi.
2018-02-22 21:23:19 +01:00
Hans-Christoph Steiner
06fb855a27 common: tighten up regexs when searching for version name/code and appid
This should have less of a change of matching bad things.
thanks to @stf for the report.  I ran tests comparing the original vs these
new patterns, and it was a 100% match. So at least it didn't make things
worse.

Here's the test script:
#!/usr/bin/env python3

import os
import re


old_vcsearch_g = re.compile(r'''.*[Vv]ersionCode[ =]+["']*([0-9]+)["']*''').search
old_vnsearch_g = re.compile(r'.*[Vv]ersionName *=* *(["\'])((?:(?=(\\?))\3.)*?)\1.*').search
old_psearch_g = re.compile(r'.*(packageName|applicationId) *=* *["\']([^"]+)["\'].*').search
new_vcsearch_g = re.compile(r'''.*[Vv]ersionCode\s*=?\s*["']*([0-9]+)["']*''').search
new_vnsearch_g = re.compile(r'''.*[Vv]ersionName\s*=?\s*(["'])((?:(?=(\\?))\3.)*?)\1.*''').search
new_psearch_g = re.compile(r'''.*(packageName|applicationId)\s*=*\s*["']([^"']+)["'].*''').search

old = re.compile(r'.*(packageName|applicationId) *=* *["\']([^"]+)["\'].*').search
new = re.compile(r'''.*(packageName|applicationId)\s*=*\s*["']([^"']+)["'].*''').search


for root, dirs, files in os.walk('build'):
    for f in files:
        if f.endswith('.gradle'):
            with open(os.path.join(root, f)) as fp:
                for line in fp:
                    for old, new in ((old_vcsearch_g, new_vcsearch_g),
                                     (old_vnsearch_g, new_vnsearch_g),
                                     (old_psearch_g, new_psearch_g)):
                        found_old = old(line)
                        found_new = new(line)
                        oldresult = None
                        newresult = None
                        if found_old or found_new:
                            if found_old:
                                oldresult = found_old.groups()
                                #print('OLD', oldresult)
                            if found_new:
                                newresult = found_new.groups()
                                #print('NEW', newresult)
                            if oldresult != newresult:
                                print('--------------------------------')
                                print(f, oldresult, newresult)
2018-02-22 21:15:41 +01:00
Hans-Christoph Steiner
e9320017b4 Bump to 1.0.1! 2018-02-22 20:01:50 +01:00
Hans-Christoph Steiner
991b78660c Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!467
2018-02-22 14:59:32 +00:00
Hans-Christoph Steiner
4b63f4ded6 Weblate 2018-02-22 14:59:32 +00:00
Hans-Christoph Steiner
f55bb62a56 Merge branch 'androguard-fixes' into 'master'
Androguard fixes

See merge request fdroid/fdroidserver!466
2018-02-22 14:39:34 +00:00
Hans-Christoph Steiner
e75bf70be6 signatures: future-proof fetching app ID info from APK
We're not using platformBuildVersionName and it might go away just like it
appeared: with no good reason or announcement.
2018-02-22 15:08:55 +01:00
Hans-Christoph Steiner
88e24dc4e3 update: switch to improved androguard detection 2018-02-22 15:08:54 +01:00
Hans-Christoph Steiner
f420a037d5 gitlab-ci: remove apt-get progress dumps from build log 2018-02-22 15:08:54 +01:00
Hans-Christoph Steiner
0e9252db37 gitlab-ci: try to download PPA keys until they succeed
This download occasionally fails, so this keeps retrying till it succeeds.
The CI job has a time limit, so no need to figure out an exit condition.
2018-02-22 15:08:54 +01:00
Hans-Christoph Steiner
089712c012 tests: do not automatically run install.TestCase, its troublesome
`fdroid install` is rarely used, if at all, and the test frequently fails
for no reason in gitlab-ci, because it can't start the adb server.
2018-02-22 15:08:54 +01:00
Hans-Christoph Steiner
89498208fc gitlab-ci: test against latest build-tools 27.0.3 2018-02-22 15:08:54 +01:00
Hans-Christoph Steiner
11bed21071 gitlab-ci: androguard from Debian/unstable til it stabilizes 2018-02-22 15:08:54 +01:00
Hans-Christoph Steiner
52b3436ff6 make is_apk_and_debuggable() default to using androguard before aapt 2018-02-22 15:08:53 +01:00
Hans-Christoph Steiner
847bbb6e43 init: do not try to find aapt if androguard is available 2018-02-22 13:38:02 +01:00
Hans-Christoph Steiner
aa4f54bf18 update: include implied permissions when using androguard
`aapt dump badging` includes these when listing uses-permissions:
https://github.com/androguard/androguard/pull/428
2018-02-21 12:34:54 +01:00
Hans-Christoph Steiner
63d4d46291 update: 'features' list only includes required features
The F-Droid index 'features' list is not the same as what is in the
AndroidManifest.xml.  It only includes "required" features, for example.
2018-02-20 17:08:55 +01:00
Hans-Christoph Steiner
9f553186e8 gitlab-ci: switch debian_testing to use androguard 2018-02-20 16:30:06 +01:00
Hans-Christoph Steiner
008110889a update: fix crash from missing file extension in extracted icon
I missed this in 40fac10ebc, yay tests!
2018-02-20 16:29:52 +01:00
Hans-Christoph Steiner
c679b5b144 Merge branch 'use-androguard-first' into 'master'
use androguard first

Closes #236

See merge request fdroid/fdroidserver!465
2018-02-19 18:53:42 +00:00
Hans-Christoph Steiner
44ebf701e1 Merge branch 'support-xml-icons' into 'master'
Support XML icons

Closes #392

See merge request fdroid/fdroidserver!464
2018-02-19 16:58:28 +00:00
Hans-Christoph Steiner
d1ded7f64d update: use androguard by default if it is available
closes #236
2018-02-15 14:28:48 +01:00
Hans-Christoph Steiner
40fac10ebc update: extract and store XML icons
These can then be used by the client.

#344
#392
2018-02-15 14:28:45 +01:00
Hans-Christoph Steiner
5281228ea5 update: switch to new androguard v3.1 API based on lxml
apkobject.get_android_manifest_xml() used to return a xml.dom.minidom
object, now it returns an lxml.etree.Element object.
2018-02-15 14:28:45 +01:00
Hans-Christoph Steiner
5713b54e0b update: find alternate PNGs for apps that have an XML app icon
Apps can now use an XML icon, but if the app supports older Android
versions, it'll also contain PNG versions of the same icon.  This finds
those PNGs and uses them instead.

#344
closes #392
fdroiddata#913
2018-02-15 14:28:45 +01:00
Hans-Christoph Steiner
699b3e4c69 update: fix min/target/max edge case parsing with androguard
In order to test that aapt defaults minSdkVersion to 3, I ran this script
then compared the output with meld:

cd $ANDROID_HOME/build-tools
for d in *.*; do echo $d; $ANDROID_HOME/build-tools/$d/aapt dump badging /home/hans/code/fdroid/server/tests/repo/com.politedroid_3.apk > /tmp/${d}.txt; done
meld /tmp/17.0.0.txt /tmp/26.0.2.txt /tmp/27.0.3.txt
2018-02-15 14:28:45 +01:00
Marcus
e6208da7ca Merge branch 'fix-excessive-ndk' into 'master'
makebuildserver: do not provision excessive NDKs

See merge request fdroid/fdroidserver!463
2018-02-14 23:54:00 +00:00
Marcus
997289d9ca Merge branch 'fdroid-deploy' into 'master'
rename `fdroid server` to `fdroid deploy` and deprecate 'init'

Closes #264

See merge request fdroid/fdroidserver!462
2018-02-14 21:51:11 +00:00
relan
2c0e430a2d makebuildserver: do not provision excessive NDKs
When a new minor version of an NDK is released, it replaces an older one,
e.g. r16 with r16b (see commit 6f295cb). But old NDK package remains in
the cache and provisioning script unpacks it too as it matches the mask.

Fix NDK provisioning to unzip only while-listed versions.
2018-02-14 09:11:40 +03:00
Hans-Christoph Steiner
1725e09f7e rename fdroid server to fdroid deploy and deprecate 'init'
`fdroid server init` is has not been needed for a long time.  And 'server'
is the only subcommand that has its own subsubcommands.  This turns it into
only `fdroid deploy`, which does what `fdroid server update` does. This
also changes the bash completion to use `fdroid deploy`.  But the old
`fdroid server update` and `fdroid server init` commands remain working.

closes #264
2018-02-13 12:54:48 +01:00
Hans-Christoph Steiner
bffa6a73be Translated using Weblate (Tibetan)
Currently translated at 87.6% (397 of 453 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/

fix all errors in Weblate
2018-02-13 09:41:15 +01:00
Hans-Christoph Steiner
3a7abcfe66 Translated using Weblate (Tibetan)
Currently translated at 87.6% (397 of 453 strings)

Translation: F-Droid/F-Droid Server
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/
2018-02-13 09:34:33 +01:00
Hans-Christoph Steiner
dbb6fe6af5 fix format string issues in Tibetan 2018-02-13 09:22:57 +01:00
Hans-Christoph Steiner
483b0289e9 switch gettext translation files to po-unwrapped format
Weblate, gettext, and Python-Babel all seem to have slightly different
wrapping rules.  This leads to lots of annoying diffs and git merge
conflicts.  So just don't wrap at all! :-D
2018-02-13 09:17:28 +01:00
Hans-Christoph Steiner
d7af22b48e Weblate (closes !461)
Squashed commit of the following:

commit ecf5d514554f105e887d7c47cc6b4378ed83202c
Author: Tobias_Groza <tobias.groza@outlook.de>
Date:   Fri Feb 9 15:45:56 2018 +0000

    Translated using Weblate (German)

    Currently translated at 45.3% (180 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 8e88ed041a7892460a5dc06f2daced4fbc352912
Author: Takumi Shoji <azumukupoe1999@gmail.com>
Date:   Wed Feb 7 13:31:22 2018 +0000

    Added translation using Weblate (Japanese)

commit 1cb941084b806d082f67eef59c72f516cddca77f
Author: Марс Ямбар <mjambarmeta@gmail.com>
Date:   Sun Feb 4 11:31:42 2018 +0000

    Translated using Weblate (Ukrainian)

    Currently translated at 42.4% (169 of 398 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/

commit 765b98f46f0ede79320dc9558b29695188ca1f6b
Author: anonymous <>
Date:   Sun Feb 4 09:24:22 2018 +0000

    Translated using Weblate (German)

    Currently translated at 43.0% (171 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 9cadc4463acbd87ad715703c444a192d4acab14b
Author: Follpvosten <wolfi@karpador.xyz>
Date:   Sun Feb 4 09:24:10 2018 +0000

    Translated using Weblate (German)

    Currently translated at 42.8% (170 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 50065b4e3594bd7990ae5bf27523ea05c6e43d22
Author: anonymous <>
Date:   Sun Feb 4 09:22:12 2018 +0000

    Translated using Weblate (German)

    Currently translated at 42.5% (169 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 8a752cdd9d8cceba4a6659b8ef67d346424a3599
Author: ezjerry liao <ezjerry@gmail.com>
Date:   Fri Feb 2 08:56:38 2018 +0000

    Translated using Weblate (Chinese (Traditional))

    Currently translated at 100.0% (397 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/

commit dd63360aae5b8827a5593f751e206f8759406902
Author: Andreas Kleinert <Andy.Kleinert@gmail.com>
Date:   Thu Feb 1 18:53:17 2018 +0000

    Translated using Weblate (German)

    Currently translated at 41.0% (163 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 51b8b24f549c05d146dd9683c2c8b65dcbf85374
Author: anonymous <>
Date:   Thu Feb 1 18:48:47 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.7% (158 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 41c9716d20b46e695540a7c70d9ea9656ed7b712
Author: Andreas Kleinert <Andy.Kleinert@gmail.com>
Date:   Thu Feb 1 18:47:31 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 50cc7dba100db09cccb30d9229c3e8446b6171f8
Author: anonymous <>
Date:   Thu Feb 1 18:45:21 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 4ac4c4d829b1bc772bf8b7bafb18e37fb8e5036f
Author: Andreas Kleinert <Andy.Kleinert@gmail.com>
Date:   Thu Feb 1 18:45:08 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 95fe106077ea50f7e4ab8b65fa794c82fa1fb890
Author: anonymous <>
Date:   Thu Feb 1 18:44:58 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 1b08bc809ebfdc65bb3814a5bf2c04fcd0590afa
Author: Andreas Kleinert <Andy.Kleinert@gmail.com>
Date:   Thu Feb 1 18:44:08 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 96e9647bde958cf2fd4cd7a9a49f215568f4fb6f
Author: anonymous <>
Date:   Thu Feb 1 18:41:24 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit fe2b29d4326f44b8b07df0a3f9e77cd7390bdf4d
Author: Andreas Kleinert <Andy.Kleinert@gmail.com>
Date:   Thu Feb 1 18:40:49 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 7c7877ededd8d7c7f79cfefa70f15077f6a20e2e
Author: Luca D'Amico <damico.luca91@live.it>
Date:   Mon Jan 29 16:54:49 2018 +0000

    Translated using Weblate (Italian)

    Currently translated at 36.2% (144 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/it/

commit 51a301b2061b99f5a44b434fadefeb4a99c00232
Author: anonymous <>
Date:   Sun Jan 28 22:10:11 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.5% (157 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 8956165544aab77074460d91106cb0daebbdf606
Author: dadnal <liberapay-weblate@com.beintner.de>
Date:   Sun Jan 28 22:09:42 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.2% (156 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit f9ef03ddc373ccf0baf034e47ac7c54fcbe5291e
Author: anonymous <>
Date:   Sun Jan 28 22:09:32 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.2% (156 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit d26423fb9a00df6dce939983347ad1c62220addd
Author: dadnal <liberapay-weblate@com.beintner.de>
Date:   Sun Jan 28 22:09:20 2018 +0000

    Translated using Weblate (German)

    Currently translated at 39.0% (155 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 4b2f03f3102061c75199f4f7ffa2499deb07c85a
Author: anonymous <>
Date:   Sun Jan 28 22:08:41 2018 +0000

    Translated using Weblate (German)

    Currently translated at 38.7% (154 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit c13c602ae66356cd977da0452f3ff4e9fa406b36
Author: dadnal <liberapay-weblate@com.beintner.de>
Date:   Sun Jan 28 22:08:06 2018 +0000

    Translated using Weblate (German)

    Currently translated at 38.5% (153 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 195dddd89aee5512bc51c1590297436d89a5a0be
Author: anonymous <>
Date:   Sun Jan 28 22:07:22 2018 +0000

    Translated using Weblate (German)

    Currently translated at 38.5% (153 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit e44c705053983c9bd084efca5b02963b57cb7bdd
Author: dadnal <liberapay-weblate@com.beintner.de>
Date:   Sun Jan 28 22:06:51 2018 +0000

    Translated using Weblate (German)

    Currently translated at 38.2% (152 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 02a6882ea2b1e42c0cb8a9357a55950796dc243c
Author: anonymous <>
Date:   Sun Jan 28 22:05:31 2018 +0000

    Translated using Weblate (German)

    Currently translated at 37.7% (150 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 68b8c4bc0661ad3da65ef9003eca1d1b3f03c1a5
Author: dadnal <liberapay-weblate@com.beintner.de>
Date:   Sun Jan 28 22:05:17 2018 +0000

    Translated using Weblate (German)

    Currently translated at 37.5% (149 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/de/

commit 40810ad9f938d4b45a5f2f4cbd049bd91986ad8c
Author: Alireza A. A <alir425p@gmail.com>
Date:   Thu Jan 18 17:22:49 2018 +0000

    Translated using Weblate (Persian)

    Currently translated at 0.2% (1 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/

commit f1c8192d0e7a548c857a6d9566df601cde05fdc2
Author: ezjerry liao <ezjerry@gmail.com>
Date:   Mon Jan 22 09:04:22 2018 +0000

    Translated using Weblate (Chinese (Traditional))

    Currently translated at 100.0% (397 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/

commit e92e8664f96998dcee399d32147ae3be5005bb7f
Author: Jeff Huang <s8321414@gmail.com>
Date:   Tue Jan 16 02:37:32 2018 +0000

    Translated using Weblate (Chinese (Traditional))

    Currently translated at 100.0% (397 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/

commit e09a832dd053323816aecab11fa80229d83a9fcd
Author: jxt <chihsun.tsai@gmail.com>
Date:   Mon Jan 15 00:38:41 2018 +0000

    Translated using Weblate (Chinese (Traditional))

    Currently translated at 100.0% (397 of 397 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/

commit b22859288f609f62e8628970009ac694b9b3f497
Author: monolifed <monolifed@gmail.com>
Date:   Sat Jan 6 23:24:19 2018 +0000

    Translated using Weblate (Turkish)

    Currently translated at 37.4% (149 of 398 strings)

    Translation: F-Droid/F-Droid Server
    Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/
2018-02-13 08:53:05 +01:00
Hans-Christoph Steiner
1f99a27a9c Revert "wiki: include per-app link to all related activity on gitlab.com"
This reverts commit a57f17b276.

Turns out this was totally useless, this can be fully handled in
https://f-droid.org/wiki/page/Template:App since it already has the
Application ID there.
2018-02-12 12:15:56 +01:00
Hans-Christoph Steiner
d8679c3cad Merge branch 'git-svn-improvements' into 'master'
git-svn improvements

See merge request fdroid/fdroidserver!453
2018-02-12 11:18:02 +00:00
Hans-Christoph Steiner
1626655879 Merge branch 'import-for-issuebot' into 'master'
`fdroid import` fixes for issuebot

See merge request fdroid/fdroidserver!452
2018-02-12 11:08:55 +00:00
Hans-Christoph Steiner
dc26e7f79f git-svn: check HTTPS connection with Python Requests
git-svn will put up the "Reject/Accept" prompt if it encounters a bad HTTPS
certificate.  I could find no way to stop it from doing that.  So instead,
this checks the HTTPS connection with an HTTP HEAD request first.
2018-02-12 12:07:24 +01:00
Hans-Christoph Steiner
a1075f45cc git-svn: require working HTTPS for all Subversion URLs
Subversion does not verify each commit as strongly as git does, so HTTPS is
really important.  Also, there is the possibility of injecting code into
`fdroid checkupdate` calls if plain HTTP is used.
2018-02-12 12:07:24 +01:00
Hans-Christoph Steiner
dd93ee6c9b git: use /bin/true for 'askpass' to prevent all password prompts
This uses both the env vars and the command line options to ensure
that it works with as many versions of git as possible.  Also, git-svn
uses the env vars, but not necessarily the command line options.

This uses /bin/true to pretend that it succesfully got the password.
If password auth is truly required, then it will fail further on down
the line.
2018-02-12 12:07:24 +01:00
Hans-Christoph Steiner
574fa15fce git: make explicit that git configs are calling cmd line utilities
These are not boolean values, but command line utilities which return a
guaranteed exit status.
2018-02-12 12:07:24 +01:00
Hans-Christoph Steiner
c67ed5e85f git-svn: use '--' to isolate user input in command lines 2018-02-12 12:07:24 +01:00
Hans-Christoph Steiner
62db94d96e Merge branch 'build-36h' into 'master'
build: set overall timeout to 36 hours

See merge request fdroid/fdroidserver!460
2018-02-12 11:06:34 +00:00
Hans-Christoph Steiner
a40b79eb9d import: fix crash when importing from local git repo 2018-02-12 12:05:27 +01:00
Hans-Christoph Steiner
559adb207b import: get build dir from settings.gradle
Most projects set a single build dir in settings.gradle, so its worth
trying here.
2018-02-12 12:05:27 +01:00
Hans-Christoph Steiner
64938d9104 import: switch to .yml as default metadata format 2018-02-12 12:05:27 +01:00
Hans-Christoph Steiner
d4e64bda4c Merge branch 'timeout_flag' into 'master'
build: clear timeout flag before every build

See merge request fdroid/fdroidserver!455
2018-02-12 12:01:46 +01:00
Hans-Christoph Steiner
2238b5cafd Merge branch 'metadata-write-int' into 'master'
metadata: write values of TYPE_INT fields

See merge request fdroid/fdroidserver!456
2018-02-12 10:57:38 +00:00
Hans-Christoph Steiner
ef9b89f4ec Merge branch 'remove-ndk-r9b' into 'master'
makebuildserver: remove NDK r9b to save 1.6 GB of disk space

See merge request fdroid/fdroidserver!459
2018-02-12 10:55:02 +00:00
Hans-Christoph Steiner
8326e62235 Merge branch 'ndk-r16b' into 'master'
makebuildserver: upgrade NDK r16 to r16b

See merge request fdroid/fdroidserver!458
2018-02-12 10:54:31 +00:00
Hans-Christoph Steiner
9ba9c6cc3d Merge branch 'gradle-4.5.1' into 'master'
makebuildserver: add Gradle 4.5.1

See merge request fdroid/fdroidserver!457
2018-02-12 10:54:06 +00:00
relan
c0f323e343 build: set overall timeout to 36 hours
Currently f-droid.org has a lot of pending builds and big delays
between "fdroid build --all" runs. Bump overall build time limit from
12 hours to 36 hours to increase buildserver throughput.
2018-02-12 13:45:53 +03:00
relan
76da21f121 makebuildserver: remove NDK r9b to save 1.6 GB of disk space
NDK r9b is used by only one app (net.gorry.android.input.nicownng) that
was last updated in 2015.
2018-02-12 09:16:55 +03:00
relan
6f295cb3d3 makebuildserver: upgrade NDK r16 to r16b 2018-02-11 10:20:42 +03:00
relan
5387fe85a7 makebuildserver: add Gradle 4.5.1 2018-02-11 10:08:06 +03:00
relan
4d56c6c262 metadata: write values of TYPE_INT fields
Otherwise we end up with empty values after "fdroid rewritemeta".
2018-02-11 09:51:53 +03:00
Marcus Hoffmann
39a5637df2
build: clear timeout flag before every build
This fixes the weird logging behaviour where after a build that timed
out all subsequent failed builds would also show up as timed out.
2018-02-07 20:47:50 +01:00
Hans-Christoph Steiner
bc5bf7e0ec Merge branch 'translation-app-field' into 'master'
metadata: add new Translation app field for URL for contributions

See merge request fdroid/fdroidserver!450
2018-02-05 15:16:43 +00:00
Hans-Christoph Steiner
eac391c58f Merge branch 'popen-stdin-devnull' into 'master'
common: use /dev/null as stdin when calling subprocess.Popen()

See merge request fdroid/fdroidserver!451
2018-02-05 14:46:08 +00:00
Hans-Christoph Steiner
05eef5a454 metadata: add new Translation app field for URL for contributions
This is a field requested from a bunch of translators so they can easily
find where to translate apps:
https://forum.f-droid.org/t/translation-field-for-app-entries/1403/5
2018-02-05 15:45:12 +01:00
relan
946a1461f2 common: use /dev/null as stdin when calling subprocess.Popen()
We always want to run all utilities non-interactively. By default
subprocess.Popen() inherits stdin descriptor from parent process, i.e.
when fdroid is run from an interactive shell, subprocesses may expect
input from it.

Reading from /dev/null immediately returns EOF, failing any user prompt
and preventing us from hang.
2018-02-05 15:34:42 +03:00
Hans-Christoph Steiner
5db86215f6 lint: check srclibs has name and @ in it
fdroiddata!2863
2018-01-31 13:33:36 +01:00
Hans-Christoph Steiner
4b0f9d6653 Merge branch 'master' into 'master'
Option --resetserver does nothing; have it used instead

See merge request fdroid/fdroidserver!449
2018-01-31 10:01:18 +00:00
csagan5
427427481e Change --resetserver to --reset-server for consistency 2018-01-30 20:45:03 +01:00
csagan5
cf54c9514c Option --resetserver does nothing; have it used instead 2018-01-30 14:50:35 +01:00
Hans-Christoph Steiner
adaf97a3cb Merge branch 'build-timeout-customization' into 'master'
build: make per-build hard time limit customizable

See merge request fdroid/fdroidserver!446
2018-01-30 11:22:08 +01:00
Hans-Christoph Steiner
b170ef7ce8 fix metadata test: remove timeout= from comparison 2018-01-30 11:20:30 +01:00
relan
86f34ee70a build: make per-build hard time limit customizable
Add "timeout=n" metadata field that overrides build timeout (in seconds).
The default is 7200, i.e. 2 hours.
2018-01-30 11:14:50 +03:00
relan
cc4b57b10b Merge branch 'gradle-4.5' into 'master'
makebuildserver: add gradle 4.5

See merge request fdroid/fdroidserver!448
2018-01-30 06:12:32 +00:00
Marcus Hoffmann
bf8dd8f6c9
makebuildserver: add gradle 4.5 2018-01-29 18:03:14 +01:00
Hans-Christoph Steiner
84262cfead Merge branch 'crash-and-standard-imports' into 'master'
Crash and standard imports

See merge request fdroid/fdroidserver!445
2018-01-29 09:24:48 +00:00
Hans-Christoph Steiner
68099cdf1c Merge branch 'minor-security-ish-tweaks' into 'master'
security-ish tweaks

See merge request fdroid/fdroidserver!442
2018-01-29 09:23:25 +00:00
Hans-Christoph Steiner
f24cf7f71b vmtools: use standard imports: os.remove()
The rest of the code uses os.remove()
2018-01-26 10:18:42 +01:00
Hans-Christoph Steiner
4463bf238d vmtools: use standard imports: os.path.join()
The rest of the code uses os.path.join()
2018-01-26 10:18:42 +01:00
Hans-Christoph Steiner
099c98bc60 metadata: fix crash when there are duplicate metadata files
The string had the variable 'appid' while the format() call had only the
variable 'path'.  This also standardizes on 'appid' like the rest of the
code.
2018-01-26 10:18:42 +01:00
Hans-Christoph Steiner
d3caf09421 use standard User-Agent in check-fdroid-apk 2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
b851d49d24 shell=True is too dangerous to allow; there are unfiltered user inputs
There are all sorts of unfiltered user inputs like tag and branch names in
source repos.  If those names are fed into popen calls that use shell=True,
that opens up a wide range of exploits.  All core operations should never
use shell=True.
2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
07cdf848d7 use '--' in source vcs calls to protect against malicious input
This is a quick and very incomplete addition of '--' to command line calls
to source VCSs like git and hg that could manipulated by malicious
tag/branch names or other vectors.

These were all manually tested by calling the command lines on my own
machine.
2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
32213ef040 scanner: allow running without versionCode and as API
This lets `fdroid scanner my.package.name` run without requiring that the
versionCode is also specified.  It also allows scanner.scan_source() to be
called as a function in the public API of fdroidserver.
2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
53f603bf30 lint: check description for forbidden HTML tags: iframe, link, script, etc. 2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
f0940540ee buildserver: include python3-git for future use
We should be replacing all our custom git shell commands with python3-git,
since it is a common library for doing that.  It will receive a lot more
attention and maintenance than our code for doing it.  For example, we
should not ever use shell=True, since that opens up a lot of security
risks.
2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
a57f17b276 wiki: include per-app link to all related activity on gitlab.com 2018-01-26 10:18:41 +01:00
Hans-Christoph Steiner
528aa9269e Merge branch 'platform27' into 'master'
makebuildserver: re-add platform 27

Closes #445

See merge request fdroid/fdroidserver!444
2018-01-26 09:09:15 +00:00
Marcus Hoffmann
0e68971eef
makebuildserver: re-add platform 27
Closes #445
2018-01-25 16:56:56 +01:00
Marcus
9f6862ce82 Merge branch 'build_tools_27.0.3' into 'master'
makebuildserver: add build-tools 27.0.3

See merge request fdroid/fdroidserver!443
2018-01-25 13:12:53 +00:00
Marcus Hoffmann
98313fc066
makebuildserver: add build-tools 27.0.3 2018-01-25 11:53:27 +01:00
Hans-Christoph Steiner
a4bdd104d7 Merge branch 'remove-kivy' into 'master'
build: remove unused, unmaintained Kivy build method

See merge request fdroid/fdroidserver!441
2018-01-24 05:35:32 +00:00
Hans-Christoph Steiner
513c95894c build: remove unused, unmaintained Kivy build method
This code has never been used and contains some insecure uses of shell=True
Building Kivy apps should be done with the buildozer=yes method.  The
buildozer method should probably be moved to a provisioner once that is in
place.
2018-01-23 23:16:05 +01:00
Hans-Christoph Steiner
b0b9f2f601 Merge branch 'remove-qt' into 'master'
buildserver: remove Qt installer, its huge, outdated, and being replaced

See merge request fdroid/fdroidserver!440
2018-01-23 20:52:22 +00:00
Hans-Christoph Steiner
62ddab7edd buildserver: remove Qt installer, its huge, outdated, and being replaced
The currently included Qt has known security issues and is outdated.  This
can now be replaced by downloading and installing the Qt installer using
the sudo= build field.  @relan's provisioner system will also replace this
once that's done.  There are only two apps that currently use the Qt stuff:

* csd.qtproject.minesweeper
* org.openorienteering.mapper
2018-01-23 20:28:26 +01:00
Hans-Christoph Steiner
825b8e9683 Merge branch 'build_timeout' into 'master'
Build timeout

See merge request fdroid/fdroidserver!437
2018-01-22 20:49:01 +00:00
Marcus Hoffmann
a1a88e1c6a
main: force exit on keyboard interrupt
This applies the same workaround as b8ed892ad9.
2018-01-22 16:02:49 +01:00
Marcus Hoffmann
fa43066f8d
build: add global soft timeout of 12 hours
Only start new builds for 12 hours. This ensures we publish new builds
often enough even on long backlogs.

This could be made configurable at a later point.
2018-01-22 16:02:49 +01:00
Marcus Hoffmann
80e121d182
build: log timeouts to the wiki 2018-01-22 16:02:49 +01:00
Marcus Hoffmann
85985074d4
build: enable watchdog timer for each build that kills in 2 hours
This introduces locking for the commonly used vagrant functions in
vmtools because vagrant fails when another vagrant command is
already running.
2018-01-22 16:01:20 +01:00
Marcus Hoffmann
9a4f3ac019
Revert "build: bump max_apps_per_run to 50"
This reverts commit 56a53055be.

Revert "build: limit --all to 10 apps at a time"

This reverts commit afc5cc6b6a.
2018-01-22 15:53:45 +01:00
Hans-Christoph Steiner
61bb74a369 Merge branch 'log-update-checkupdates-server-to-wiki' into 'master'
Log update/checkupdates/server to wiki

See merge request fdroid/fdroidserver!439
2018-01-22 13:29:45 +00:00
Hans-Christoph Steiner
22563bdf17 gitlab-ci: make metadata_v0 test work even when tags are missing
This uses the commit ID of the release tags, rather than the release tag
itself so that contributor forks do not need to include the tags in them
for this test to work.

The COMMIT_ID should be bumped after each release, so that the list of sed
hacks needed does not continuously grow.
2018-01-22 14:00:20 +01:00
Hans-Christoph Steiner
486ee25708 wiki: log build start/stop time, command line, RAM, and processor count 2018-01-22 14:00:16 +01:00
Hans-Christoph Steiner
ef69bbff34 wiki: log server start/stop times and command line 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
cd3e531731 buildserver: force no auto updates of package lists or upgrades 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
8d2092ada1 jenkins-test: include repo_pubkey in config.py for BUILD test
The BUILD machine does not have a keyring on it, only the public key for
the index signing key.  This is a very rudementary test for that.
2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
f841ec745f wiki: move checkupdates wiki log to separate function 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
010f1c5029 log installed android sdk versions for update and checkupdates 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
e163c09e26 move get_android_tools_versions functions to common 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
4beb2d52e9 wiki: log update start/stop time and command line 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
5b92820ff3 wiki: fix bug updating Repository Maintenance
site.pages doesn't seem to exist anywhere, site.Pages is used throughout.
2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
22c6acc026 wiki: log appids as checkupdates goes through them 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
fc4f5a79a7 wiki: log checkupdates start/stop time and command line for each run 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
df51a6e999 common.get_wiki_timestamp() for posting timestamps to wiki log pages 2018-01-22 13:49:10 +01:00
Hans-Christoph Steiner
e013fde8b9 Merge branch 'iconfix' into 'master'
fix "cannot identify image file" with XML icons

See merge request fdroid/fdroidserver!435
2018-01-18 10:53:34 +00:00
Hans-Christoph Steiner
4612ddf312 Merge branch 'gitlab-mirrors-reorder' into 'master'
Reorder the gitlab mirrors so GitLab Pages comes before "raw".

See merge request fdroid/fdroidserver!438
2018-01-18 09:01:17 +00:00
Peter Serwylo
3180acc454 Reorder the gitlab mirrors so GitLab Pages comes before "raw".
GitLab storage provides two mirrors by default:
 * https://gitlab.com/user/repo/raw/master/fdroid/repo
 * https://user.gitlab.io/repo/fdroid/repo

While the F-Droid client will happily fetch the index*.jar files and
parse them from either of these two mirrors, only the GitLab Pages
mirror will serve files with the correct mime type. Many repos
tend to put index.html files (and associated .css/.js/image files) in
the root of a repository to provide information about that repo.

One example is RepoMaker. The way in which RepoMaker decides the public
URL of a repo, is to take the first mirror in the list. This means that
the URL which RepoMaker directs people to for GitLab storage returns a
.html document in text/plain, which means that it is not rendered.

We could change RepoMaker so that it takes the last mirror, and then it
woruld work. However there is something nice about the first mirror in a
list being the most authoritative (even though the mirror order doesn't
- and perhaps shouldn't have any specific meaning).
2018-01-18 08:02:07 +11:00
Izzy
42ac65e8aa simplifying fix for "cannot identify image file" with XML icons 2018-01-17 16:48:08 +01:00
Izzy
6f5b539a54 fix "cannot identify image file" with XML icons 2018-01-12 22:12:27 +01:00
Hans-Christoph Steiner
56a53055be build: bump max_apps_per_run to 50
With this at 10, it seems that there are often runs that produce no builds
at all.  That's bad.
2018-01-11 23:25:31 +01:00
Hans-Christoph Steiner
846a8c68c4 jenkins-build-all: don't fail if max build limit caused no builds 2018-01-11 23:25:24 +01:00
Hans-Christoph Steiner
ee89468818 jenkins-test: ensure gpg is starting from a clean and proper place
There have been frequent failures on import, some bugs suggest that it
might be because these dirs are missing.  They would get wiped by a
`git clean -fdx`.
2018-01-11 21:27:33 +01:00
Hans-Christoph Steiner
5ad661ef7b jenkins-build-all: use local mediawiki if available 2018-01-11 16:47:49 +01:00
Hans-Christoph Steiner
c4dbc58d10 build: buildserverid must always be str not bytes 2018-01-11 14:09:12 +01:00
Hans-Christoph Steiner
87524622ea build: fix str vs. bytes error in buildserverid
ERROR: Could not build app org.fdroid.fdroid due to unknown error: Traceback (most recent call last):
  File "/var/lib/jenkins/userContent/reproducible/reproducible_setup_fdroid_build_environment/fdroidserver/build.py", line 1202, in main
    options.onserver, options.refresh):
  File "/var/lib/jenkins/userContent/reproducible/reproducible_setup_fdroid_build_environment/fdroidserver/build.py", line 972, in trybuild
    build_server(app, build, vcs, build_dir, output_dir, log_dir, force)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_setup_fdroid_build_environment/fdroidserver/build.py", line 82, in build_server
    logging.debug(_('Fetched buildserverid from VM: ') + buildserverid)
TypeError: Can't convert 'bytes' object to str implicitly
2018-01-11 12:50:18 +01:00
Hans-Christoph Steiner
3a792a8c3d Merge branch 'cleaner-clean' into 'master'
build: clean up only known subdirectories in build/*

Closes #438

See merge request fdroid/fdroidserver!432
2018-01-10 19:14:49 +00:00
relan
e29be52da0 build: clean up only known subdirectories in build/*
We remove the whole "build" directory while cleaning source code tree
because Gradle can leave there files even after "gradle clean". But some
projects (Mozilla Fennec) actually have useful stuff checked into VCS
under the "build" directory.

Remove only those subdirectories that we known for sure are leftovers
from Gradle.

Fixes fdroid/fdroidserver#438.
2018-01-10 21:45:26 +03:00
Marcus
784e456cc6 Merge branch 'gradle-4.4.1' into 'master'
makebuildserver: add Gradle 4.4.1

See merge request fdroid/fdroidserver!433
2018-01-10 18:40:36 +00:00
relan
70fba5d08c makebuildserver: add Gradle 4.4.1 2018-01-10 21:31:59 +03:00
Hans-Christoph Steiner
4e9ff9570d Merge branch 'master' into 'master'
new script to audit the FDroid.apk on https://f-droid.org

See merge request fdroid/fdroidserver!431
2018-01-05 13:47:48 +00:00
Hans-Christoph Steiner
dfbe114af3 new script to audit the FDroid.apk on https://f-droid.org
This makes sure its signed by the F-Droid key.
2018-01-05 14:08:14 +01:00
Hans-Christoph Steiner
0baa163b01 README: fix name on CI badges 2018-01-05 13:39:18 +01:00
Hans-Christoph Steiner
6d69dcddd9 use 1.0.0 for release version to make pypi happy 2018-01-03 21:41:35 +01:00
Hans-Christoph Steiner
6ad02bc4ec release: compile_catalog must be run before register 2018-01-03 21:26:39 +01:00
Hans-Christoph Steiner
d95859c87e Bump to 1.0!! 2018-01-03 16:51:16 +01:00
Hans-Christoph Steiner
62a0d85e9a Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!430
2018-01-03 15:40:05 +00:00
Hans-Christoph Steiner
7d5d5b0999 Weblate 2018-01-03 15:40:03 +00:00
Hans-Christoph Steiner
4aaf82c34c Merge branch 'build-log-data-points' into 'master'
add data points to the build log to add debugging

See merge request fdroid/fdroidserver!429
2018-01-03 14:39:23 +00:00
Hans-Christoph Steiner
fba4fa6ca6 get minimum aapt version from fdroidserver/common.py for CI tests 2018-01-03 14:54:30 +01:00
Hans-Christoph Steiner
54965455b1 build: include buildserverid on wiki build logs, if it exists
When `fdroid build` is run using the buildserver, it should fetch the
buildserverid on the first build.

Seems this was really a silly bug in 837fc99d74
2018-01-03 13:58:06 +01:00
Hans-Christoph Steiner
444ae95380 build: log the start time of the current build session
Since `fdroid build --all` can run a long time, knowing when that command
was started will be very useful information for figuring out what the build
server is doing.
2018-01-03 12:29:29 +01:00
Hans-Christoph Steiner
9793e57302 jenkins.debian.net is Debian/stretch, its build-tools are too old 2017-12-29 16:06:45 +01:00
Hans-Christoph Steiner
c8e32c2802 gitlab-ci: and one last stoopid error in debian_testing target 2017-12-29 16:06:45 +01:00
Hans-Christoph Steiner
c7762ad7d7 gitlab-ci: fix syntax error 2017-12-29 15:35:04 +01:00
Hans-Christoph Steiner
6816ef15dd gitlab-ci: temp disable some tests on Debian/testing
build-tools needs an update before these tests will work again.
2017-12-29 15:29:28 +01:00
Hans-Christoph Steiner
b70ede6761 gitlab-ci: set Fedora build to use a supported build-tools version
Using 25.0.2, not all of the permissions were being output:

--- /builds/fdroid/fdroidserver/tests/repo/index.xml	2017-12-28 22:33:53.624704459 +0000
+++ repo/index.xml	2017-12-28 22:41:52.207849097 +0000
@@ -35,7 +35,6 @@
 			<added>2017-12-22</added>
 			<sig>2d337e40aef77564bf62781ac424595c</sig>
 			<permissions>ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,CHANGE_WIFI_MULTICAST_STATE,INTERNET,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE</permissions>
-			<uses-permission maxSdkVersion="18" name="android.permission.READ_EXTERNAL_STORAGE"/>
 			<uses-permission maxSdkVersion="18" name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 			<uses-permission-sdk-23 maxSdkVersion="27" name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
 		</package>
2017-12-29 15:12:49 +01:00
Hans-Christoph Steiner
463a1b5376 Merge branch 'ever-more-fixes' into 'master'
Ever more fixes

Closes #395 and #306

See merge request fdroid/fdroidserver!423
2017-12-28 22:33:25 +00:00
Hans-Christoph Steiner
76f20da9e8 Merge branch 'fix_no-refresh' into 'master'
build: fix --no-refresh

See merge request fdroid/fdroidserver!428
2017-12-28 22:08:29 +00:00
Hans-Christoph Steiner
6d32b68016 tests: correct package names in stats/known_apks.txt
This doesn't seem to affect the tests either way, but it is good to have
things correct there.
2017-12-28 23:07:26 +01:00
Hans-Christoph Steiner
e451ec0079 common: fix bug in new SHA-256 signatures for >= android-18
Luckily, this is only used in `fdroid nightly` so far.
2017-12-28 23:07:26 +01:00
Hans-Christoph Steiner
109eb928e8 aapt 26.0.0 is required to properly parse permissions and label
#236

closes #395
aapt 26.0.0 outputs the permissions correctly

closes #306
aapt 26.0.0 now outputs:  application-label:'K-9 Mail'
2017-12-28 23:07:26 +01:00
Hans-Christoph Steiner
01f3d071ee nightly: support arbitrary keystore files for setup
GitHub only allows an SSH key to be used as a Deploy Key for a single repo.
That means, each nightly build repo on GitHub/Travis must have its own
debug keystore.
2017-12-28 23:07:26 +01:00
Hans-Christoph Steiner
8ed6bb8506 jenkins: try to prevent the build node from running out of disk space 2017-12-28 22:51:55 +01:00
Marcus
195a1bbae4 Merge branch 'master' into 'master'
gradle file: use flavour specific versionCode/versionName, fall back to parsing line by line

See merge request fdroid/fdroidserver!426
2017-12-27 19:31:50 +00:00
mimi89999
455dcc34d8
Add Nextcloud and DavDroid test case 2017-12-27 11:51:57 +01:00
Marcus Hoffmann
e775d330c2
build: fix --no-refresh
This was broken by the in-source-tree .fdroid.yml file support.
Also support this for building on the buildserver.
2017-12-26 00:20:17 +01:00
Marcus
6069cad027 Merge branch 'platform-27' into 'master'
makebuildserver: remove platform-27

See merge request fdroid/fdroidserver!427
2017-12-24 18:39:01 +00:00
Marcus Hoffmann
14657f2642
makebuildserver: remove platform-27
The hash changes all the time and gradle will install this on the fly
anyway when missing.
2017-12-24 18:51:28 +01:00
mimi89999
90c7dd29df
gradle file: use flavour specific versionCode/versionName, fall back to parsing line by line 2017-12-23 17:12:54 +01:00
Michel Le Bihan
5cfa4d487f Merge branch 'master' into 'master'
Revert: gradle file: use flavour specific versionCode/versionName, fall back to…

See merge request fdroid/fdroidserver!425
2017-12-23 12:01:12 +00:00
mimi89999
918bd15c45
Revert: gradle file: use flavour specific versionCode/versionName, fall back to parsing line by line 2017-12-23 12:57:34 +01:00
Marcus
8c243ee7eb Merge branch 'limit-build-all' into 'master'
build: limit --all to 10 apps at a time

See merge request fdroid/fdroidserver!420
2017-12-22 13:09:16 +00:00
Hans-Christoph Steiner
69dc3cc9ce Merge branch 'typo' into 'master'
Fix a typo in vmtools.py

See merge request fdroid/fdroidserver!421
2017-12-22 08:50:49 +00:00
Pierre Rudloff
ebfb35f1f7 Fix a typo in vmtools.py 2017-12-22 00:14:29 +00:00
Hans-Christoph Steiner
afc5cc6b6a build: limit --all to 10 apps at a time
This needed now because the buildserver is hanging so often, that we are
often going a week or more without any builds published.  Perhaps this is
only temporary, or maybe we will want to flush this feature out more as a
standard thing.  But we really need it for now to at least get some builds
out on a daily basis.

Since the website deploy is also triggered by this cycle, making the build
finish more often means the website will be published more often.
2017-12-21 23:15:34 +01:00
Hans-Christoph Steiner
c29d135de1 Merge branch 'additional_tests' into 'master'
readme: add note about additional CI tests

See merge request fdroid/fdroidserver!419
2017-12-21 09:18:13 +00:00
Marcus Hoffmann
2b43413df8
readme: add note about additional CI tests
[ci-skip]
2017-12-21 00:56:42 +01:00
Hans-Christoph Steiner
5f9bfe48ff Merge branch 'nail-down-tests' into 'master'
Nail down tests

Closes #432

See merge request fdroid/fdroidserver!418
2017-12-20 23:16:03 +00:00
Hans-Christoph Steiner
80844832a8 travis-ci: install babel with pip to stop easy_install
easy_install just fails, trying to install into ./.eggs
https://travis-ci.org/fdroidtravis/fdroidserver/jobs/319144754
2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
8a58ee72e3 travis-ci: include new android-sdk-license on OSX 2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
173a35b190 tests: only generate keystores when that is actually being tested
Generating a keystore is quite slow since it means a new RSA key is created.
That only needs to happen in the tests that check that it actually happened,
otherwise the test can just reuse the stored test keystore.

closes #432
2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
eb81eaa574 README: document test suite (closes #432) 2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
7fcb4da0e6 travis-ci: show sdkmanager logs 2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
2659312a7c update: support working with old versions of PIL/Pillow
Image.close() was added in Pillow 2.4 or so.
2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
9087ec76f3 build: use dpkg to purge sudo, for less spammy debug logs
apt is quite verbose:
DEBUG: buildserver > DEBUG: > sudo SUDO_FORCE_REMOVE=yes apt-get -y purge sudo
DEBUG: buildserver > Reading package lists...

DEBUG: buildserver > Building dependency tree...
DEBUG: buildserver > Reading state information...
DEBUG: buildserver > The following package was automatically installed and is no longer required:
DEBUG: buildserver >   libasprintf0c2
DEBUG: buildserver > Use 'apt-get autoremove' to remove it.
DEBUG: buildserver > The following packages will be REMOVED:
DEBUG: buildserver >   sudo*

DEBUG: buildserver > 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
DEBUG: buildserver > After this operation, 2,391 kB disk space will be freed.
DEBUG: buildserver > (Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 73055 files and directories currently installed.)
DEBUG: buildserver > Removing sudo (1.8.10p3-1+deb8u5) ...
DEBUG: buildserver > Purging configuration files for sudo (1.8.10p3-1+deb8u5) ...
DEBUG: buildserver > Processing triggers for man-db (2.7.0.2-5) ...
2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
781e3c785f always hide PIL.PngImagePlugin's "STREAM" debug messages
Otherwise, enabling verbose messages gives tons of these messages:
DEBUG: STREAM b'IHDR' 16 13
DEBUG: STREAM b'IDAT' 41 32768
2017-12-20 23:46:37 +01:00
Hans-Christoph Steiner
22aaa3dcbb Revert "revert reverted checksum of platform-27_r01.zip (google tampered there again)"
This reverts commit 7f13675b8c.
2017-12-20 13:36:53 +01:00
Hans-Christoph Steiner
3d91e6a5b5 jenkins-test: import secret key into test GNUPGHOME
Can't run `fdroid gpgsign` without a secret key!
2017-12-20 13:36:53 +01:00
Hans-Christoph Steiner
39b76b0eda scanner: fix tests so they work on all tested platforms
The standard test configuration is needed to make the tests reliably. Also,
these tests used some odd yield logic.  Who knows what exactly failed, but
these tests should be reliable.

* https://gitlab.com/fdroid/fdroidserver/-/jobs/44984595
* https://gitlab.com/fdroid/fdroidserver/-/jobs/44984596
* https://travis-ci.org/f-droid/fdroidserver/builds/318071369
2017-12-19 22:51:40 +01:00
Hans-Christoph Steiner
86c5598307 Merge branch 'whitelist-firebase' into 'master'
Whitelist some open-source firebase libs

See merge request fdroid/fdroidserver!411
2017-12-18 12:30:30 +00:00
Hans-Christoph Steiner
873ff20a3c Merge branch '430-UnboundLocalError-local-variable-im-referenced-before-assignment' into 'master'
fix handling unreadable images in update.extract_apk_icons

Closes #430

See merge request fdroid/fdroidserver!416
2017-12-18 08:56:27 +00:00
Michael Pöhn
c17aeb5231 fix handling unreadable images in update.extract_apk_icons 2017-12-16 22:06:20 +01:00
Marcus
82badb8921 Merge branch '431-Invalid-checksum-platform-27_r01.zip' into 'master'
revert reverted checksum of platform-27_r01.zip (google tampered there again)

Closes #431

See merge request fdroid/fdroidserver!415
2017-12-16 15:46:10 +00:00
Michael Pöhn
7f13675b8c revert reverted checksum of platform-27_r01.zip (google tampered there again) 2017-12-16 16:23:06 +01:00
Marcus
86cb8cbce7 Merge branch 'build-tools_r27.0.2' into 'master'
makebuildserver: add build-tools_r27.0.2

See merge request fdroid/fdroidserver!413
2017-12-15 12:14:00 +00:00
Marcus
a6928571a5 Merge branch 'gradle-4.4' into 'master'
makebuildserver: add Gradle 4.4

See merge request fdroid/fdroidserver!412
2017-12-15 11:55:13 +00:00
relan
b2213f1e62 makebuildserver: add build-tools_r27.0.2 2017-12-15 14:34:40 +03:00
relan
b16669b2a0 makebuildserver: add Gradle 4.4 2017-12-15 14:32:34 +03:00
Hans-Christoph Steiner
985e6189eb Merge branch 'security-fixes' into 'master'
security fixes for Janus and image metadata exploits

See merge request fdroid/fdroidserver!409
2017-12-15 11:22:56 +00:00
Jan Berkel
365834d3ea Convert to string 2017-12-15 00:58:46 +01:00
Jan Berkel
5dee23f7a6 Add a simple test for scanner 2017-12-15 00:37:52 +01:00
Jan Berkel
62d1c672f3 whitelist some open-source firebase libs 2017-12-14 22:03:48 +01:00
Hans-Christoph Steiner
2e531af58f build: force purging of sudo, ignore error message
Fixes bb758d3f, spotted by @bubu:
DEBUG: buildserver > DEBUG: > sudo apt-get -y purge sudo
DEBUG: buildserver > Reading package lists...
DEBUG: buildserver > Building dependency tree...
DEBUG: buildserver > Reading state information...
DEBUG: buildserver > The following packages will be REMOVED:
DEBUG: buildserver >   sudo*
DEBUG: buildserver > 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
DEBUG: buildserver > After this operation, 2,391 kB disk space will be freed.
(Reading database ... 68491 files and directories currently installed.)
DEBUG: buildserver > Removing sudo (1.8.10p3-1+deb8u4) ...
DEBUG: buildserver > You have asked that the sudo package be removed,
DEBUG: buildserver > but no root password has been set.
DEBUG: buildserver > Without sudo, you may not be able to gain administrative privileges.
DEBUG: buildserver >
DEBUG: buildserver > If you would prefer to access the root account with su(1)
DEBUG: buildserver > or by logging in directly,
DEBUG: buildserver > you must set a root password with "sudo passwd".
DEBUG: buildserver >
DEBUG: buildserver > If you have arranged other means to access the root account,
DEBUG: buildserver > and you are sure this is what you want,
DEBUG: buildserver > you may bypass this check by setting an environment variable
DEBUG: buildserver > (export SUDO_FORCE_REMOVE=yes).
DEBUG: buildserver >
DEBUG: buildserver > Refusing to remove sudo.
DEBUG: buildserver > dpkg: error processing package sudo (--purge):
DEBUG: buildserver >  subprocess installed pre-removal script returned error exit status 1
DEBUG: buildserver > Errors were encountered while processing:
DEBUG: buildserver >  sudo
DEBUG: buildserver > E: Sub-process /usr/bin/dpkg returned an error code (1)
2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
42522c23c9 update: do not crash if AndroidManifest.xml in APK has invalid date
This crash actually blocked a Janus exploit APK from being added to the
repo, but crashing isn't really the appropriate way to do that.
2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
8f45796ecb update: close unclosed Image instance 2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
387eebc4d6 update: strip all metadata from PNGs
This strips metadata and optimizes the compression of all PNGs copied
from the app's source repo as well as all the icons extracted from the
APKs.  There have been exploits delivered via image metadata, and
F-Droid isn't using it all, so its best to just remove it.

This unfortunately uncompresses and recompresses the files.  Luckily,
that's a lossless procedure with PNGs, and we might end up with
smaller files.  The only tool I could find that strips without
changing the image data is exiftool, but that is written in Perl.
2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
67b9514c5a update: strip EXIF data from all JPEGs
EXIF data can be abused to exploit systems a lot easier than the JPEG image
data can.  The F-Droid ecosystem does not use the EXIF data, so keep things
safe and strip it all away.  There is a chance that some images might rely
on the rotation to be set by EXIF, but I think having a safe system is more
important.

If needed, only the rotation data could be saved.  But that then makes it
hard to tell which images have been stripped.  This way, if there is no
EXIF, it has been stripped.  And if there is EXIF data, then it is suspect.

https://securityaffairs.co/wordpress/51043/mobile-2/android-cve-2016-3862-flaw.html
https://threatpost.com/google-shuts-down-potentially-massive-android-bug/120393/
https://blog.sucuri.net/2013/07/malware-hidden-inside-jpg-exif-headers.html

The big downside of this is that it decompresses and recompresses the
image data.  That should be replaced by a technique from jhead,
exiftool, ObscuraCam, etc. that only strips the metadata.
2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
bde0558d82 update: reject APKs with invalid file sig, probably Janus exploits
This just checks the first four bytes of the APK file, aka the "file
signature", to make sure it is the ZIP signature and not the DEX signature.
This was checked against the test APK, and I ran it against some known
malware and all of f-droid.org to make sure it works.

All valid ZIP files (therefore APK files) should start with the ZIP
Local File Header of four bytes.

https://www.guardsquare.com/en/blog/new-android-vulnerability-allows-attackers-modify-apps-without-affecting-their-signatures
2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
5ce950e748 update: print warnings for all KnownVulns found
Some baby steps towards making the KnownVuln stuff more visible.
2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
ca50adb2e5 update: switch tests to using standardized setUp() method 2017-12-14 16:57:22 +01:00
Hans-Christoph Steiner
61aac0503a Merge branch 'fixFlavor' into 'master'
Regex only for flavor blocks: flavor { ... }

See merge request fdroid/fdroidserver!407
2017-12-14 16:56:01 +01:00
Hans-Christoph Steiner
bec4f7d547 add Conversations as gradle flavor test case 2017-12-14 16:52:02 +01:00
Hans-Christoph Steiner
538d7155b4 jenkins-build-all: improve detection of working buildserver VM
If I manually run some steps of the process, not all of the normal cruft
might be left behind.  I'm not really sure which of the multiple copies of
the images are actually required, but these both seem to work when present.
2017-12-14 10:41:11 +01:00
Hans-Christoph Steiner
cc0399e740 Merge branch '428-Signature-key-fingerprint-of-file-stats-publishsigkeys-jar-does-not-match-repo_key_sha256-in-config-py' into 'master'
jenkins test: clear singing-key-fingerpring from previous run

Closes #428

See merge request fdroid/fdroidserver!410
2017-12-14 08:50:10 +00:00
Michael Pöhn
93c1c23a4b jenkins test: clear singing-key-fingerpring from previous run 2017-12-13 17:39:55 +01:00
Hans-Christoph Steiner
1f5818020d Merge branch 'fdroidserver-liberapay' into 'master'
Add Liberapay support

See merge request fdroid/fdroidserver!408
2017-12-12 16:55:05 +01:00
Hans-Christoph Steiner
8b9b18ceed fix metadata_v0 tests
The old metadata format didn't know anything of LiberapayID, so no need to
check for it.
2017-12-12 16:54:35 +01:00
Andrea Scarpino
19a83b6219 Add Liberapay support 2017-12-12 11:53:31 +01:00
Hans-Christoph Steiner
858b398927 Merge branch '1.0-polish' into 'master'
1.0 polish

Closes #424

See merge request fdroid/fdroidserver!405
2017-12-11 21:44:16 +00:00
Hans-Christoph Steiner
5c9d46b5b2 remove XML files from bash completion, they are not supported anymore 2017-12-11 22:11:16 +01:00
Hans-Christoph Steiner
bb758d3f00 build: apt-get purge sudo after using it for sudo= build field
Once `sudo` has been used to execute the commands in sudo=, then it should
be removed from the build VM.  That prevents any other part of the build
from using sudo.  That means that all commands run with `sudo` must be
committed to fdroiddata.git, making them very visible.

closes #424
2017-12-11 22:11:16 +01:00
Hans-Christoph Steiner
4af8f196e3 metadata: error if .fdroid.txt exists, it is unsupported
Using .txt format has bugs when used embedded in an app's git repo, so
tell the user to use YAML or JSON.

#364
2017-12-11 22:11:16 +01:00
Hans-Christoph Steiner
1d83d4396c makebuildserver: quiet rsync for copy_caches_from_host 2017-12-11 22:11:16 +01:00
Hans-Christoph Steiner
4835d7c20c Merge branch 'rational-jarsigner-logging' into 'master'
handle jarsigner/apksigner output cleanly for rational logging

Closes #405

See merge request fdroid/fdroidserver!404
2017-12-11 20:27:06 +00:00
tobiasKaminsky
03f301470e
regex only for flavor blocks: flavor { ... } and nothing else 2017-12-11 14:29:32 +01:00
Hans-Christoph Steiner
6640f276b0 Revert "makebuildserver: update SHA-256 for platform-27_r01.zip"
Looks like Google switched back to the old binary, which I guess is
good news?
https://issuetracker.google.com/issues/70292819

This reverts commit 956660085a.

!401
2017-12-08 09:44:10 +01:00
Hans-Christoph Steiner
5ac943a3f2 Merge branch 'yml_completion' into 'master'
bash completion: use correct yml suffix

See merge request fdroid/fdroidserver!406
2017-12-07 23:10:18 +00:00
Marcus Hoffmann
9270e68fe2 bash completion: use correct yml suffix 2017-12-07 23:29:34 +01:00
Hans-Christoph Steiner
4f43099c88 Merge branch 'more-nightly' into 'master'
More `fdroid nightly` polish

Closes #423

See merge request fdroid/fdroidserver!402
2017-12-07 22:11:40 +00:00
Hans-Christoph Steiner
7b52722d12 nightly: replace / from fingerprint in SSH key filename, fixes #423
The SSH key fingerprint is used in the filename.  The base64 used for SSH
key fingerprints includes /.  Not all keys will end up having a / in them.
For those that do, this will crash since the ssh key filename ends up being
non-existent dirs:

$ fdroid nightly
Importing keystore /home/mhoffmann/.android/debug.keystore to /tmp/.cqswaeo8/.keystore.p12...
MAC verified OK
writing RSA key
CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/usr/lib/python3.6/shutil.py", line 544, in move
    os.rename(src, real_dst)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/.cqswaeo8/.privkey' -> '/tmp/.cqswaeo8/debug_keystore_PZtS/4Tzk4dpzKiX9AAf1GrhAVi9U7UE1aYEHr6evKo_id_rsa'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mhoffmann/projects/oss/fdroidserver/fdroid", line 156, in <module>
    main()
  File "/home/mhoffmann/projects/oss/fdroidserver/fdroid", line 132, in main
    mod.main()
  File "/home/mhoffmann/projects/oss/fdroidserver/fdroidserver/nightly.py", line 284, in main
    privkey = _ssh_key_from_debug_keystore()
  File "/home/mhoffmann/projects/oss/fdroidserver/fdroidserver/nightly.py", line 73, in _ssh_key_from_debug_keystore
    shutil.move(privkey, ssh_private_key_file)
  File "/usr/lib/python3.6/shutil.py", line 558, in move
    copy_function(src, real_dst)
  File "/usr/lib/python3.6/shutil.py", line 257, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.6/shutil.py", line 121, in copyfile
    with open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/.cqswaeo8/debug_keystore_PZtS/4Tzk4dpzKiX9AAf1GrhAVi9U7UE1aYEHr6evKo_id_rsa'
2017-12-07 22:39:32 +01:00
Hans-Christoph Steiner
5d56841f8a nightly: prompt user to create a debug.keystore if its not there
#423
2017-12-07 22:39:32 +01:00
Hans-Christoph Steiner
c823d4c4a8 nightly: fix QR icon.png generation 2017-12-07 22:39:32 +01:00
Hans-Christoph Steiner
5d54446efc update: do not replace Name/Summary from template unless blank
`fdroid nightly` needs this change so it can set the Summary using the
template.
2017-12-07 22:39:32 +01:00
Hans-Christoph Steiner
4afe5aefd5 nightly: create app metadata using template of parsed data 2017-12-07 22:39:32 +01:00
Marcus
87018d45e2 Merge branch 'remove-fd-commit' into 'master'
remove fd-commit, no active devs use it, and requires Auto Name/Name

See merge request fdroid/fdroidserver!392
2017-12-07 20:31:09 +00:00
Hans-Christoph Steiner
adc0c23db4 Merge branch 'help_message_fix' into 'master'
metadata: make help for common -W option clearer

See merge request fdroid/fdroidserver!350
2017-12-07 20:03:17 +00:00
Marcus Hoffmann
0f18005104 metadata: make help for metadata -W option clearer
specify possible choices and provide clearer help text
2017-12-07 20:28:27 +01:00
Hans-Christoph Steiner
6228162cbd handle jarsigner/apksigner output cleanly for rational logging
These were both spamming the output with lots of confusing messages, even
when --verbose was not used.  Jarsigner especially has confusing messages,
since it has warnings that do not pertain to APK signatures at all, like
the ones about timestamps and missing Certificate Authority.

closes #405
2017-12-07 17:32:14 +01:00
Hans-Christoph Steiner
7f4d84684e Merge branch 'syntaxfix' into 'master'
correct "usage" output (--help; see #405)

See merge request fdroid/fdroidserver!403
2017-12-07 14:17:25 +00:00
Izzy
0a1fe3dc7e correct "usage" output (--help; see #405) 2017-12-07 14:51:27 +01:00
Hans-Christoph Steiner
0e37a18d83 makebuildserver: fix join() syntax error, it needs a list/tuple
If only there was a way to test this without taking hours to run...

fixes 964ef996a0
2017-12-07 11:52:52 +01:00
relan
8ffed8750c Merge branch 'update-platform-27_r01' into 'master'
makebuildserver: update SHA-256 for platform-27_r01.zip

See merge request fdroid/fdroidserver!401
2017-12-07 06:05:46 +00:00
Hans-Christoph Steiner
6902160e89 remove fd-commit, no active devs use it, and requires Auto Name/Name
fd-commit and checkupdates both require that there are two name fields,
AutoName: and Name:.  This is only used for the commit messages.  Since the
current devs do it manually, we can remove the fd-commit shell script, then
focus on checkupdates when revamping AutoName/Name.

https://botbot.me/freenode/fdroid-dev/msg/82539152
2017-12-06 22:48:08 +01:00
Hans-Christoph Steiner
956660085a makebuildserver: update SHA-256 for platform-27_r01.zip
Someone forgot to call this _r02.zip:
-ro.​build.​version.​incremental=4402310
+ro.​build.​version.​incremental=4458339

https://verification.f-droid.org/build-metadata/platform-27_r01.html

!364
2017-12-06 22:05:09 +01:00
Hans-Christoph Steiner
6fc507da39 Merge branch 'gitlab-ci-testing-xenial-fedora' into 'master'
gitlab CI runs on  Debian/testing,  Ubuntu/xenial,  Fedora

See merge request fdroid/fdroidserver!398
2017-12-06 19:44:58 +00:00
Hans-Christoph Steiner
05abbfbabd gitlab-ci: move sdist test run to new fedora job
A full run of the test suite takes quite a bit of time.  This removes one
of the 3 runs from the main 'tests' job, and puts it into the Fedora job.
That test run is mostly to make sure the setup.py and source tarball are
correctly, so that doesn't affect merge requests very often.

This also tests `pip install --user`, which was not really being tested
before.
2017-12-06 20:20:17 +01:00
Hans-Christoph Steiner
1a77c6af38 init: fix test for aapt when no aapt has been found
Just give a proper error message rather than this stack trace:

Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/fdroid", line 156, in <module>
    main()
  File "/home/hans/code/fdroid/server/fdroid", line 132, in main
    mod.main()
  File "/export/share/code/fdroid/server/fdroidserver/init.py", line 148, in main
    if os.path.isfile(aapt):
  File "/usr/lib/python3.5/genericpath.py", line 30, in isfile
    st = os.stat(path)
2017-12-06 20:20:17 +01:00
Hans-Christoph Steiner
964ef996a0 makebuildserver: make copy_caches_from_host do rsync like fdroid build
This rsync hung because of an SSH unknown key prompt.  Since this is just
the vm host sshing to the vm guest, it is not essential to check the host
keys.
2017-12-06 20:20:17 +01:00
Hans-Christoph Steiner
a0a68c7a13 setup requires Babel aka python3-babel to compile translations
https://forum.f-droid.org/t/f-droid-server-building-error/1670
2017-12-06 20:20:17 +01:00
Hans-Christoph Steiner
dda9c8b774 gitlab-ci: add pip install test on Arch Linux 2017-12-06 20:20:17 +01:00
Hans-Christoph Steiner
1b1475c982 gitlab-ci: add test runs on Ubuntu, Debian/testing, Fedora 2017-12-06 12:30:47 +01:00
Marcus Hoffmann
bfe2c00834 common.testCase: fix find_sdk_tools when aapt is installed in /usr/bin
The testlogic was broken when having both aapt in /usr/bin and also as
part of the android sdk.
2017-12-06 12:30:47 +01:00
Hans-Christoph Steiner
67e6cbe793 hooks/pre-commit: make ruby and dash tests optional
These are only used for checking syntax in buildserver/Vagrantfile.
Not requiring ruby makes doing CI tests on lots of distros easier
and faster. dash is an 'essential' package on Debian derivs, so
those tests will always be run somewhere.
2017-12-06 12:30:47 +01:00
Hans-Christoph Steiner
a2978a5526 common: aapt 24.0.0 (v0.2-2964546) is now required
Without a recent aapt, the <uses-permission-sdk-23> tag will not be found.
2017-12-06 12:30:47 +01:00
Hans-Christoph Steiner
657b64f6ed Merge branch 'lint-fixes' into 'master'
Lint fixes, plus changing the standard link format in descriptions

See merge request fdroid/fdroidserver!397
2017-12-06 09:41:39 +00:00
Hans-Christoph Steiner
8e1c39f791 Merge branch 'rsync_improvements' into 'master'
Rsync improvements

See merge request fdroid/fdroidserver!400
2017-12-06 08:55:19 +00:00
Hans-Christoph Steiner
b31239803a lint: greatly expand the list of link shorteners to ban
Since we are now getting credit for fighting trackers, might as well step
up the fight!

gleaned from these sources:
* https://bit.do/list-of-url-shorteners.php
* https://www.hashtags.org/featured/list-of-url-shorteners/
* http://l-lists.com/en/lists/gvaoif.html
2017-12-06 09:54:25 +01:00
Hans-Christoph Steiner
05616b33a7 lint: enforce HTTPS and shortener ban in descriptions as well 2017-12-06 09:54:25 +01:00
Hans-Christoph Steiner
42a9833536 lint: switch links to plain URLS rather than mediawiki syntax
fdroidclient#1000
2017-12-06 09:54:25 +01:00
Hans-Christoph Steiner
8588b89eff lint: add more VCS HTTPS checks
I manually checked that these work with HTTPS. fdroiddata!2710 should fix
all of these issues.
2017-12-06 09:54:25 +01:00
Marcus Hoffmann
1bfba12124 build: write out full rsync options
Also put target host:dir on one line to make it more readable
2017-12-05 21:52:22 +01:00
Marcus Hoffmann
e12e1b6a5c build: better logging output on rsync failures
Save rsync error output and combine that with the command invocation
into an FDroidException which can be logged to the wiki.

This additionally sets -q for rsync to only print errors.
2017-12-05 21:52:11 +01:00
Torsten Grote
2bb1445cd6 Merge branch 'nightly-fixes' into 'master'
more `fdroid nightly` polishing

See merge request fdroid/fdroidserver!399
2017-12-05 17:42:57 +00:00
Hans-Christoph Steiner
c33a71a945 fix hg pull, was stupid mistake in 7bba20c662
fdroid/fdroidserver!396
2017-12-05 16:55:58 +01:00
Hans-Christoph Steiner
bb643eddcf jenkins-setup-build-environment: delete libvirt images before test run
profitbricks-build7-amd64 was running out of disk space when running this
job...
2017-12-05 12:31:13 +01:00
Hans-Christoph Steiner
4561ea59a6 nightly: use shutil.move() only so all ops work across filesystems
https://gitlab.com/fdroid/fdroidserver/merge_requests/377#note_49998712
2017-12-05 09:13:19 +01:00
Hans-Christoph Steiner
2983c35361 shutil.move() in apk_strip_signature() to work across filesystems
os.rename() only works if source and destination are on the same file
system, shutil.move() works across file systems.

OSError: [Errno 18] Invalid cross-device link: '/builds/eighthave/fdroidclient/app/build/outputs/apk/app-debug.apk' -> '/tmp/tmp966vh75f/tmp.apk'
2017-12-04 22:52:41 +01:00
Hans-Christoph Steiner
bf913703c5 nightly: only use read_config to load final, generated config.py
This needs to use the config loading routine to find Java `keytool`, but
since it doesn't need to fully load the config, isolate that usage in the
function.  Then read_config() is only ever called once, as is it meant to
be used, once the config.py is generated.

Using `from . import common; common.config = foo` will not always work,
due to some oddities to how the `from` imports work. So the full module
has to be imported in order to make sure its always properly set.
2017-12-04 22:52:41 +01:00
Hans-Christoph Steiner
8a61b0b945 nightly: resign APKs with provided debug.keystore
Rather than needing to run a command before and after the build, in order
to first install the debug.keystore, then after to fetch and publish the
APK, this makes `fdroid nightly` just resign the APK with the provided
debug.keystore.  Then `fdroid nightly` can be run as the final step in a CI
build, and still ensure that the APKs are always signed by the provided
debug.keystore.
2017-12-04 22:52:41 +01:00
Hans-Christoph Steiner
1c3a4479ab add common.sign_apk() for nighly as test for using in publish
Since the MD5 migration was quite a bit of work, it makes sense to start
on moving away from SHA1 as much as possible while it is easy to do. SHA256
will only work in APK signatures on android-18 (4.3) or newer.  So if an
APK has a minSdkVersion of 18 or newer, then sign with SHA256.

https://issuetracker.google.com/issues/36956587
https://android-review.googlesource.com/c/platform/libcore/+/44491
2017-12-04 22:52:41 +01:00
Hans-Christoph Steiner
7da0854fa1 Merge branch 'CVE-2017-1000117' into 'master'
block all SSH connections for VCS, for usabililty and security

See merge request fdroid/fdroidserver!396
2017-12-04 18:48:24 +00:00
Hans-Christoph Steiner
7bba20c662 block all SSH connections for VCS, for usabililty and security
If we allow SSH, then we'd have to manage known_hosts.

All VCS and submodule URLs should use HTTPS.  SSH URLs have security vulns:
https://blogs.msdn.microsoft.com/devops/2017/08/15/git-vulnerability-with-submodules/
https://www.theregister.co.uk/2017/08/13/ssh_flaw_in_git_mercurial_svn/
CVE-2017-1000117

I did a manual scan of the setup on jenkins.debian.net to see if I could
find any suspicious URLs.  Looks good so far.  This is what I used:

find . -type f -print0 |xargs -0 grep -Eo 'ssh[:+][svn/]+...................'
find . -type f -print0 |xargs -0 grep -Eo 'ssh://-[^ "]+'

Also, some ssh://_ URLs in submodules might still work, because of the URL
rewriting in fdbfb4d1.  But https://-oProxyCommand=pwnme does not really do
anything, unlike ssh://-oProxyCommand=pwnme
2017-12-04 17:49:59 +01:00
Marcus
5ae14fab18 Merge branch 'submodules_ucm' into 'master'
checkupdates: don't fail when we can't init submodules

Closes #231

See merge request fdroid/fdroidserver!395
2017-12-04 16:29:11 +00:00
Marcus Hoffmann
db0a97e8e7 checkupdates: don't fail when we can't init submodules
Later revisions might have removed the submodules so we want to keep
going when there are no submodules present.
We still abort when there is an error initializing submodules.

Fixes fdroid/fdroidserver#231
2017-12-04 16:30:37 +01:00
Michael Pöhn
2dcb19d392 Merge branch 'git_clone_fix' into 'master'
GitFetchFDroidPopen: don't change cwd when cloning

See merge request fdroid/fdroidserver!393
2017-12-03 16:49:42 +00:00
Marcus Hoffmann
30b3f41a75 GitFetchFDroidPopen: don't change cwd per default
Fix for ca24aa4ca8.
For git clone we don't want to change cwd because clone actually
creates the repo dir.
2017-12-03 17:07:36 +01:00
Hans-Christoph Steiner
ca24aa4ca8 stop git clone from hanging at prompts
Forgot this in fdbfb4d1a2 !378

reviewed in person with @bubu @uniqx
2017-12-03 13:13:07 +01:00
relan
24e1da1e91 Merge branch 'log_git' into 'master'
build: log vcs tools version on every build attempt

See merge request fdroid/fdroidserver!391
2017-12-03 06:03:03 +00:00
Marcus Hoffmann
bb591e236d build: log vcs tools version on every build attempt 2017-12-02 22:41:08 +01:00
Hans-Christoph Steiner
3f4e93bf86 Merge branch 'metadataFlavours' into 'master'
Add flavour to metadata

See merge request fdroid/fdroidserver!370
2017-12-02 20:51:24 +00:00
Hans-Christoph Steiner
b8ed892ad9 build: hard exit on success to avoid hanging
Something is preventing `fdroid build --all` from exiting after a long
run.  @bubu, @uniqx and I think it is because of the use of
AsynchronousFileReader, somehow it's thread does not exit. So the
workaround for now is to just try a hard exit instead of waiting for
things to finish cleanly with `sys.exit(0)`.

https://jenkins.debian.net/job/reproducible_fdroid_build_apps/94/console
2017-12-02 13:48:47 +01:00
Michael Pöhn
68bbfa7e0e Merge branch 'no_sleep' into 'master'
vmtools: remove old vagrant workaround

See merge request fdroid/fdroidserver!380
2017-12-02 12:49:05 +00:00
Marcus
167c730ad8 Merge branch 'sort-fdroid-build-all' into 'master'
sort `fdroid build --all` by most recent first

See merge request fdroid/fdroidserver!390
2017-12-02 12:34:27 +00:00
tobiasKaminsky
d5ecb34df7
add flavour to metadata 2017-12-01 15:25:00 +01:00
Hans-Christoph Steiner
5b22ff7dc6 tests: use standard dir setup so all tests start in same dir 2017-11-30 17:32:53 +01:00
Hans-Christoph Steiner
3ff4b656c6 tests: name temp test dir after test function that used it 2017-11-30 17:32:53 +01:00
Hans-Christoph Steiner
30b2f5a48a build: sort fdroid build --all by most recently changed first 2017-11-30 17:32:53 +01:00
Hans-Christoph Steiner
bf09109c49 mirror: fix syntax error on Python 3.4
It seems that Python 3.5 is more flexible with * expansion, Python 3.4 says:

SyntaxError: only named arguments may follow *expression
https://travis-ci.org/f-droid/fdroidserver/jobs/309194065
2017-11-30 14:03:04 +01:00
Hans-Christoph Steiner
dcbc78d238 Merge branch 'gradleFlavor' into 'master'
gradle file: use flavour specific versionCode/versionName, fall back to parsing line by line

See merge request fdroid/fdroidserver!389
2017-11-30 13:44:47 +01:00
Hans-Christoph Steiner
c7c40cb59f PEP8 fixes 2017-11-30 13:42:37 +01:00
Hans-Christoph Steiner
2a758886cd Merge branch 'polish-for-1.0' into 'master'
Polish for 1.0

Closes #421

See merge request fdroid/fdroidserver!388
2017-11-30 12:28:28 +00:00
tobiasKaminsky
33aee96ed9
added test case 2017-11-30 11:12:18 +01:00
Hans-Christoph Steiner
27d332c8ae vmtools: in KVM mode, only call sudo hack when file is not readable 2017-11-29 21:06:35 +01:00
Hans-Christoph Steiner
b1bab81739 server: prevent crash when uploading to virustotal 2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
7389947cc3 init: handle case where keystore.jks is present but config.py is not 2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
e2bbeb5083 common: document read_pkg_args() and read_app_args()
It took me a long time to figure out how `fdroid build --all` builds the
whole list of apps...
2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
2b6825ccfd build: set open file limit based on how many apps are being processed
When running `fdroid build --all` on a buildserver with thousands of apps,
it was frequently hitting the open file limit.  This increases the open
file limit based on how many apps are being process.  It is doubled to
provide a margin of safety.

There are probably open file leaks which ideally would be fixed, but this
is also useful to make things more resilient to all the random stuff apps
include in their build systems.
2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
19af92c982 buildserver: include all Android SDK licenses in their exact format
I tried to clone the files I got from `sdkmanager --licenses`, byte for
byte.
2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
f01b6af57f nightly: automatically create and manage app metadata
This also allows the developer to edit the metadata in the *-nightly git
repo to customize it.

closes #421
2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
6f97be128f nightly: fix QR code repo icon generation 2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
c98740a7d2 nightly: include 'qrcode' as dependency 2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
d46d9574b4 update: use KnownApks dates to check system clock on offline machines
KnownApks provides a reliable source of a relatively recent date.
2017-11-29 21:06:02 +01:00
Hans-Christoph Steiner
1219f07d3b Merge branch 's3cfg' into 'master'
server: allow user to specify custom s3cfg file

Closes #413

See merge request fdroid/fdroidserver!385
2017-11-29 19:34:11 +00:00
Hans-Christoph Steiner
7eef6eac93 server: allow user to specify custom s3cfg file (closes #413)
This lets people do advanced S3 setups like CloudFront caching, and
anything else s3cmd lets you do.
2017-11-29 19:50:57 +01:00
Marcus
528d5a0d1a Merge branch 'fdroid-mirror' into 'master'
mirror: new command to make a mirror of a repo

See merge request fdroid/fdroidserver!389
2017-11-29 17:29:42 +00:00
Hans-Christoph Steiner
09a6b37ac0 mirror: fix downloading of graphics
It was downloading them all directly into the 'repo' folder.
2017-11-29 17:12:38 +01:00
Hans-Christoph Steiner
79a4c469b3 mirror: forward --verbose flag to wget to control output 2017-11-29 16:54:52 +01:00
Hans-Christoph Steiner
94e67a7623 mirror: verify index signature if fingerprint included in URL
This keeps the old handling without signature checks so that it works
without requiring Java/apksigner or the whole config.py parsing stuff.
2017-11-29 16:54:27 +01:00
Hans-Christoph Steiner
d5481927f2 mirror: show help if no URL is provided 2017-11-29 16:31:48 +01:00
Hans-Christoph Steiner
2162703a1a mirror: new command to make a mirror of a repo
This creates a mirror of a full repo by downloading all files listed in
the index, and the ones that are generated based on that data, e.g. icons
of different resolutions.  This could be useful for setting up mirrors of
small repositories, instead of having to learn and manage rsync or
something else for mirroring.  This just needs a working repo.

It uses wget in a batch mode with the aim as being as efficient as
possible.  wget mirroring over HTTP is always going to be less efficient
than rsync, but it shouldn't be so bad since it uses --continue to check
whether it has already downloaded a file.  I suppose it could be extended
to use ETags for a little more efficiency.

I developed this creating a test mirror of f-droid.org, which is now a bit
ironic, since I added a specific check to prevent people from using this
on f-droid.org.
2017-11-29 12:40:04 +01:00
tobiasKaminsky
f8492f05a8
gradle file: use flavour specific versionCode/versionName, fall back to parsing line by line 2017-11-29 09:40:44 +01:00
Hans-Christoph Steiner
5607ccdc41 jenkins-test: make new keystore on each test so the password is known 2017-11-28 12:10:13 +01:00
Hans-Christoph Steiner
cee65dbfb6 Bump to 0.9.1 for release process fixes 2017-11-27 16:57:30 +01:00
Hans-Christoph Steiner
743ef9ba00 rename test files to work round filename length limits
It seems a lot of things like tar, Windows, some filesystems, etc. do not
handle long filenames. #416
2017-11-27 16:57:30 +01:00
Hans-Christoph Steiner
875dfd0d60 check git is on correct tag before making a release 2017-11-27 16:57:30 +01:00
Hans-Christoph Steiner
ff5717b37e Merge branch 'tests-fedora' into 'master'
tests: fix pycodestyle lookup

See merge request fdroid/fdroidserver!386
2017-11-27 15:58:24 +00:00
relan
6498d24f36 tests: fix pycodestyle lookup
Pycodestyle is available as /usr/bin/pycodestyle-3 on Fedora.
2017-11-27 16:32:41 +03:00
Hans-Christoph Steiner
80bd6f5fe2 Bump to 1.0.dev0 2017-11-27 13:59:35 +01:00
Hans-Christoph Steiner
2c32071f24 Bump to 0.9 2017-11-27 13:59:35 +01:00
Hans-Christoph Steiner
e89dc399ff Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!384
2017-11-27 12:28:35 +00:00
Hans-Christoph Steiner
0768b4db0f Weblate 2017-11-27 12:28:34 +00:00
Hans-Christoph Steiner
ec453eac8a nightly: fix PEP8 E722 do not use bare except 2017-11-27 10:42:31 +01:00
Hans-Christoph Steiner
35ff37b1e2 jenkins: require successful git fetch before running tests 2017-11-27 10:07:17 +01:00
Hans-Christoph Steiner
2cf6110860 jenkins-setup-build-env: actually run tests in the new buildserver VM
Oops, this has been failing, since it was running the build on the vm host,
not in the buildserver VM.
2017-11-27 10:07:17 +01:00
Hans-Christoph Steiner
c7f859c168 jenkins-test: don't overwrite fdroid init config.py and rm test files 2017-11-27 10:07:17 +01:00
Hans-Christoph Steiner
d6c2ec092f jenkins-test: force new repo setup for each build
jenkins-build-all just sets `build_server_always = True`, these tests need
a whole keystore setup.  So just delete the existing config, and let
`fdroid init` do the rest.
2017-11-26 22:48:53 +01:00
Hans-Christoph Steiner
9fda492b2f Merge branch 'rsync' into 'master'
build: rsync instead of sftp dirs to the buildserver

Closes #227

See merge request fdroid/fdroidserver!379
2017-11-26 21:50:24 +00:00
Hans-Christoph Steiner
c65398cb8a Merge branch 'ndk' into 'master'
makebuildserver: add ndk r16

See merge request fdroid/fdroidserver!383
2017-11-26 21:48:04 +00:00
Marcus Hoffmann
f9b853ab91 makebuildserver: add ndk r16 2017-11-26 17:17:55 +01:00
Hans-Christoph Steiner
9aacdf3fe3 Merge branch 'vm-provider-lookup-flaw' into 'master'
fix vm provider lookup flaw

See merge request fdroid/fdroidserver!382
2017-11-25 17:10:43 +00:00
Hans-Christoph Steiner
a3815039d8 Merge branch 'no_rm' into 'master'
common: use python instead of calling out to 'rm'

See merge request fdroid/fdroidserver!381
2017-11-25 16:43:44 +00:00
Michael Pöhn
1e83bd306f fix vm provider lookup flaw 2017-11-25 17:30:15 +01:00
Marcus Hoffmann
597fc04c9e build: rsync instead of sftp dirs to the buildserver
Sending many small files with paramiko's sftp implementation is quite
slow. There seems to be no way around this, other projects (ansible)
recommend to use rsync in this case.

Our sourcecode directories sometimes have a LOT of files, it can take
up to an hour to copy all required things inside the buildserver.

Instead we just use rsync with the ssh options we get from vagrant.
For rsync specific options we use:

* sync permissions as before
* sync symlinks (was done partially before)
* don't sync hardlinks and ownership as these don't make for things
  coming from a VCS

Closes fdroid/fdroidserver#227.
2017-11-25 14:07:06 +01:00
Marcus Hoffmann
c790f43bf3 common: use python instead of calling out to 'rm'
Be platform agnostic by not calling other utilities.
2017-11-25 13:49:33 +01:00
Hans-Christoph Steiner
0f28c805b3 Merge branch 'stop-hanging-on-git-ssh' into 'master'
Stop hanging on git ssh

See merge request fdroid/fdroidserver!378
2017-11-25 10:25:52 +00:00
Marcus Hoffmann
b9b262422f vmtools: remove old vagrant workaround
This was introduced in cd23bb933c
apparently to work around problems in vagrant 1.3.5.

This seems not to be necessary any more, I have never had a problem with
those sleeps removed.
2017-11-25 00:38:00 +01:00
Hans-Christoph Steiner
09828f4a73 never wait for SSH prompts when running git commands
We never allow git via SSH or password/key access, and right now, this
causes things to hang forever.  This sets things up to fail quickly
with invalid ssh connections.

BatchMode=yes - passphrase/password querying will be disabled.

StrictHostKeyChecking=yes - never automatically prompt, or add host keys to
the ~/.ssh/known_hosts file, and refuse to connect to hosts whose host key
has changed.
2017-11-23 23:31:38 +01:00
Hans-Christoph Steiner
fdbfb4d1a2 build: stop git from waiting forever at username/password prompts
If a git fetch/clone/submodule URL points to gitlab, github, bitbucket, etc
and that repo does not exist any more, those services will prompt the user
for a username/password so that the service can check if its a private
repo.  Private repos show up the same as non-existent repos.  This employs
two techniques for making sure that git never waits at those prompts.  It
instead should just fail immediately.  The buildserver has been hanging on
these prompts forever, until manually killed.  This change will apply to
updates both on the buildserver host, and the buildserver guest vm.

This uses the "insteadOf" git config option to rewrite URLs to always use
HTTPS and then include a fake username/password so that git will use those
in the prompts and fail immediately.  This trick has been in use on the
verification server for a long while and has been working well.  It has
also been used on jenkins.debian.net in the host.
https://f-droid.org/en/docs/Verification_Server/

It also includes GIT_TERMINAL_PROMPT, which also prevents the bad behavior,
which was added in git 2.3.
https://github.com/blog/1957-git-2-3-has-been-released
2017-11-23 23:31:37 +01:00
Hans-Christoph Steiner
c45264b190 buildserver: use git from jessie-backports to get better workflow
A number of key features around username/password handling where added in
2.3, like GIT_SSH_COMMAND and GIT_TERMINAL_PROMPT.
2017-11-23 23:27:59 +01:00
Hans-Christoph Steiner
4b51cc273a Merge branch 'nightly' into 'master'
nightly: new command to setup nightly builds in CI systems

See merge request fdroid/fdroidserver!377
2017-11-23 22:13:42 +00:00
Hans-Christoph Steiner
f670634450 nightly: new command to setup nightly builds in CI systems
This lets people using CI systems easily setup a nightly build repo hosted
for free in github or gitlab.

https://github.com/zom/Zom-Android/pull/355
https://gitlab.com/fdroid/fdroidclient/merge_requests/594

environment variables:
* https://docs.gitlab.com/ce/ci/variables/README.html
* https://docs.travis-ci.com/user/environment-variables
* https://circleci.com/docs/1.0/environment-variables
2017-11-22 23:27:07 +01:00
Hans-Christoph Steiner
cbd9669105 rename test file to fit within eCryptfs filename limits (closes #416) 2017-11-22 11:40:16 +01:00
Hans-Christoph Steiner
8bf70338e4 make common.local_rsync() method for pre-configured local rsyncs 2017-11-22 11:40:16 +01:00
Hans-Christoph Steiner
ed80391bb5 common.get_examples_dir() to get path to fdroidserver examples 2017-11-22 11:40:16 +01:00
Hans-Christoph Steiner
e33684fc9b tests: new tests for stacktraces caused by translated help strings 2017-11-22 11:40:16 +01:00
Hans-Christoph Steiner
0beaa4701b remove --create-key from completion, its only for migrations
If people want to create repos, they should be using `fdroid init`.  This
flag is for very specific cases: migrating old unsigned repos to signed.
It shouldn't be promoted for anything else since there are better tools for
those tasks.
2017-11-22 11:40:16 +01:00
Hans-Christoph Steiner
b72d6d7dbb Merge branch 'gradle-platform-install' into 'master'
Allow Gradle to install new platforms

See merge request fdroid/fdroidserver!373
2017-11-20 08:36:07 +00:00
Hans-Christoph Steiner
0e3d63fa1b Merge branch 'remove-ubuntu-trusty-paramiko-hack' into 'master'
buildserver: remove special sshd setup for Ubuntu 14.04

See merge request fdroid/fdroidserver!374
2017-11-20 08:30:37 +00:00
relan
14f95f7750 buildserver: remove special sshd setup for Ubuntu 14.04
Now that fdroidserver requires Python 3, there's no need to tune sshd for
an old version of Paramiko because Ubuntu 14.04 does not have
python3-paramiko package in its repositories:

    https://packages.ubuntu.com/search?keywords=python3-paramiko

We can safely assume that Ubuntu 14.04 users have installed a more recent
version of Paramiko from PIP.
2017-11-17 21:15:18 +03:00
relan
3a7a043c68 buildserver: add new android-sdk-license hash
The old hash does not work anymore, at least for platform-27. Where this
new one comes from:

1. Download command line tools from
   https://developer.android.com/studio/index.html#command-tools
2. Unzip the package
3. Run ./tools/bin/sdkmanager --licenses
4. Read and accept licenses
5. Find the hash in ./licenses/android-sdk-license
2017-11-14 19:00:30 +03:00
Marcus
c798183bc7 Merge branch 'gradle-4.3.1' into 'master'
makebuildserver: add Gradle 4.3.1

See merge request fdroid/fdroidserver!372
2017-11-14 12:27:00 +00:00
relan
358fedc611 buildserver: allow gradle/sdkmanager to install new platforms
Google releases new API SDKs quite rarely (about 2 times a year), but when
they do this, many apps quickly start using it. Allow downloading new API
SDKs to avoid waiting for the next buildserver rebuild.
2017-11-14 12:31:52 +03:00
relan
c859ffe145 makebuildserver: add Gradle 4.3.1 2017-11-14 10:36:12 +03:00
Marcus
1ae4bd77b2 Merge branch 'master' into 'master'
Changed setup.py +x for easy invocation

Closes #410

See merge request fdroid/fdroidserver!371
2017-11-14 01:38:19 +00:00
Benji Wiebe
3e20ed8590 Changed setup.py +x for easy invocation 2017-11-13 19:09:51 -06:00
Marcus
1fef00589a Merge branch 'build-tools_r26.0.3' into 'master'
makebuildserver: add build-tools_r26.0.3

See merge request fdroid/fdroidserver!369
2017-11-12 17:18:22 +00:00
relan
16465c7a17 makebuildserver: add build-tools_r26.0.3 2017-11-12 10:48:00 +03:00
relan
f7d09afe91 Merge branch 'master' into 'master'
makebuildserver: add build-tools_r27.0.1

See merge request fdroid/fdroidserver!368
2017-11-12 07:44:22 +00:00
Hans-Christoph Steiner
c89649057a jenkins: some reliability fixes to the test scripts 2017-11-10 22:08:51 +01:00
Sergey Eremin
0ec17495af makebuildserver: add build-tools_r27.0.1 2017-11-10 18:38:58 +03:00
Hans-Christoph Steiner
daa9635286 jenkins-test: ./run-tests won't work with only unsigned APKs 2017-11-10 09:30:02 +01:00
Hans-Christoph Steiner
d7a51fd058 README: add new jenkins.debian.net test 2017-11-09 15:02:37 +01:00
Hans-Christoph Steiner
cd3e763953 tests: only test fdroid build if the right build-tools is installed 2017-11-09 14:07:40 +01:00
Hans-Christoph Steiner
a14124955a tests: fix fdroid build test with Debian gradle 2017-11-09 13:11:49 +01:00
Hans-Christoph Steiner
2ee32f3524 fix tests to work when only Debian Android SDK is installed
jenkins.debian.net only had `apt install android-sdk`, it does not have any
of Google's packages installed.
2017-11-08 14:05:17 +01:00
Hans-Christoph Steiner
3d3050d04f jenkins-test: tame debug output to keep logs at a reasonable length 2017-11-08 14:05:17 +01:00
Hans-Christoph Steiner
9ade09349b update: improve help strings 2017-11-08 14:05:17 +01:00
Hans-Christoph Steiner
6bcdf6439b jenkins-test: ./run-tests needs ANDROID_HOME 2017-11-08 13:15:16 +01:00
Hans-Christoph Steiner
8cfc590b39 hooks: add new jenkins scripts to syntax checker 2017-11-08 12:40:18 +01:00
Hans-Christoph Steiner
e844c18d6e jenkins: make test script executable 2017-11-08 12:04:51 +01:00
Hans-Christoph Steiner
3a04ec91b7 jenkins: rename scripts based on jenkins.debian.net names
Make things self-documenting by reusing the exact same names everywhere.
2017-11-08 09:46:56 +01:00
Hans-Christoph Steiner
d347f3ebb2 jenkins: move tests to separate job
The setup and build_all jobs take a very long time to run, so its really
annoying when they are marked as failed just because one small thing in the
test suite failed.  So move the test suite to its own job that can be run
more frequently.
2017-11-08 09:46:56 +01:00
Hans-Christoph Steiner
dc23defb41 README: add Weblate badge for translation status 2017-11-08 09:46:56 +01:00
Hans-Christoph Steiner
1ad75f3258 jenkins-build-makebuildserver: bump cpus to 2 and memory to 6144
profitbricks-build7-amd64 has 8 gigs of RAM and 2 cores, so might as well
use them!
2017-11-07 16:25:16 +01:00
Hans-Christoph Steiner
f28016002f jenkins-build: clean / fix paths to buildserver base box setup
[skip ci]
2017-11-07 15:53:59 +01:00
Marcus
17cf121eec Merge branch 'build-tools_r27' into 'master'
makebuildserver: add build-tools_r27

See merge request fdroid/fdroidserver!367
2017-11-05 10:10:59 +00:00
relan
db65ef5ed3 makebuildserver: add build-tools_r27 2017-11-05 10:59:01 +03:00
Hans-Christoph Steiner
975fcea6b3 Merge branch 'vcs-info' into 'master'
build: raise VCS client version logging level

See merge request fdroid/fdroidserver!366
2017-11-03 13:16:13 +00:00
Hans-Christoph Steiner
ccccc0743f Merge branch 'gradle-4.3' into 'master'
makebuildserver: add Gradle 4.3

See merge request fdroid/fdroidserver!365
2017-11-03 13:15:11 +00:00
Hans-Christoph Steiner
7c3333ac02 Merge branch 'platform-27_r01' into 'master'
makebuildserver: add platform-27_r01

See merge request fdroid/fdroidserver!364
2017-11-03 13:14:16 +00:00
relan
cd8a86a2a2 build: raise VCS client version logging level
Debug logging is not saved in buildserver logs. Also move this line into
build.py's main() to avoid duplication: common.setup_vcs(app) may be
called from parse_metadata() too.
2017-11-02 08:52:02 +03:00
relan
86512d3655 makebuildserver: add Gradle 4.3 2017-10-31 17:19:57 +03:00
relan
156fbcc377 makebuildserver: add platform-27_r01
Add Android 8.1.0 SDK platform.
2017-10-31 17:15:42 +03:00
Hans-Christoph Steiner
349bcb0e8e README: better build status layout 2017-10-30 15:35:55 +01:00
Hans-Christoph Steiner
967704f3d3 add HTML Anchor Name for linking straight to build status badges 2017-10-30 15:23:54 +01:00
Hans-Christoph Steiner
8c3b3b7935 README: add status badges for jenkins.debian.net builds
[skip ci]
2017-10-30 11:03:58 +01:00
Hans-Christoph Steiner
0c7247c7b2 Merge branch 'add-ulimit-debugging-to-jenkins-build-scirpt' into 'master'
add ulimit debugging to jenkins build script

See merge request fdroid/fdroidserver!363
2017-10-27 19:51:13 +00:00
Michael Pöhn
3380b24d2e add ulimit debugging to jenkins build script 2017-10-27 21:21:56 +02:00
Hans-Christoph Steiner
7be46d53c7 sort Anti-Features before writing them to the wiki
This avoids silly updates to the wiki where the sort order of the Anti-
Features is the only change:

−{{AntiFeature|KnownVuln}}
 {{AntiFeature|DisabledAlgorithm}}
+{{AntiFeature|KnownVuln}}

https://f-droid.org/wiki/index.php?title=info.guardianproject.browser&curid=517&diff=189655&oldid=188037
2017-10-27 09:15:22 +02:00
Hans-Christoph Steiner
e666cd9b35 Merge branch 'more-1.0-polishing' into 'master'
More 1.0 polishing

Closes #402

See merge request fdroid/fdroidserver!362
2017-10-27 07:11:50 +00:00
Ciaran Gultnieks
505d2c1325 update bombs out when no icons (closes #402) 2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
230d8971ba metadata: make all strings translatable 2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
ac69d5b17d update: make all strings translatable 2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
ffc91e301a make _ always be the gettext function, nothing else
This avoids hard bugs where the _() function gets overidden by a str or
something else.
2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
dd6d4b2012 preserve metadata when copying APK signatures
Since this code was not setting the "create system" and "compress type",
Python uses it's defaults.  Those will be different than what the Android
tools produces if this is run on UNIX.  The Android tools uses the bare
bones "Windows" ZIP format, e.g. no permissions, etc.

For example:
https://verification.f-droid.org/eu.siacs.conversations_234.apk.diffoscope.html
2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
17efa13183 tests: pre-set failfast as reminder of a handy time saver 2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
e0df6d2479 choose the most recent available version of Java
This came about testing on OSX, where there are often multiple versions of
the JDK installed.  This was choosing the oldest version.  It should
choose the most recent version.
2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
43b990505d travis-ci: only run one round of the test suite on OSX
The OSX tests seem to run slower, they often timeout.  So only run
the test suite with the installed version of fdroid, instead of the
three rounds that ./complete-ci-tests does.
2017-10-25 23:01:25 +02:00
Hans-Christoph Steiner
ab02a6fcc3 Revert "scanner: promote jar and aar files present in the repo to errors"
This reverts commit 5f5d3ea896.

These new scanner rules for JARs causes most builds on fdroiddata to
break.  For example, at least the past 20 releases of
org.fdroid.fdroid.  fdroiddata needs to be cleaned up and prepared for
this before we can include 5f5d3ea896

I'm running fdroid scanner on the whole archive now, I'll post the log
to an issue once its done.  Ignoring test files would eliminate some
of these build failures, at least for most org.fdroid.fdroid builds.

refs #!325
2017-10-25 22:55:47 +02:00
Marcus
fde964479d Merge branch 'makebuildserver/default_memory' into 'master'
makebuildserver: change mem default 4 GB

See merge request fdroid/fdroidserver!358
2017-10-25 12:41:25 +00:00
Marcus Hoffmann
f9444386e6 makebuildserver: change mem default 2 GB
1 GB is not enough for a modern android toolchain, so we change it to
something actually usable.
2017-10-25 14:13:35 +02:00
Hans-Christoph Steiner
23265e3290 Merge branch 'patch-1' into 'master'
HTTP, HTTPS

See merge request fdroid/fdroidserver!360
2017-10-24 13:40:53 +00:00
Marcus Hoffmann
e307cdec59 common: check file existence before opening manifest
This fixes a problem when there is a broken symlink with the name
AndroidManifest.xml which will then lead to a crash when trying to open
it for trying to remove the debuggable flag.
2017-10-24 15:19:38 +02:00
Hans-Christoph Steiner
95c5b0840c Merge branch 'deploy-localization-support' into 'master'
Deploy localization support

See merge request fdroid/fdroidserver!356
2017-10-23 10:27:22 +00:00
Allan Nordhøy
6daeb88ab9 HTTP, HTTPS 2017-10-22 06:43:18 +00:00
Hans-Christoph Steiner
55a24dc408 Merge branch 'remove_basebox_ref' into 'master'
makebuildserver: remove reference to f-droid.org/jessie64.box

See merge request fdroid/fdroidserver!357
2017-10-20 19:54:50 +00:00
Marcus Hoffmann
7859244ce7 makebuildserver: remove reference to f-droid.org/jessie64.box
Also improve error message when the initial vagrant up fails, this is
most likely due to the missing jessie64.box file.
2017-10-20 04:41:50 +02:00
Hans-Christoph Steiner
4ff50e9099 fix egg-link and easy_install support for Python3
Wow, this is hacky and weird, but its been there for a long time. I
don't know if its even relevant anymore, but is isolated so it
shouldn't hurt anything.  Plus there is a test for it in
tests/complete-ci-tests, so it seems worth fixing.
2017-10-19 23:28:13 +02:00
Hans-Christoph Steiner
cc6d867423 fix finding translation files when installed 2017-10-19 23:28:13 +02:00
Hans-Christoph Steiner
0300553020 add some context to some strings that are confusing to translators 2017-10-19 23:28:13 +02:00
Hans-Christoph Steiner
f227af817f standardize on "build-tools" as the name of that Android SDK component 2017-10-19 23:28:13 +02:00
Hans-Christoph Steiner
35c7c1e805 update localization source files with make -C locale
* `make -C locale` updates all the sources
* `make -C locale compile` can compile the binaries, but the preferred way
  is `python3 setup.py compile_catalog`.
2017-10-19 23:28:13 +02:00
Hans-Christoph Steiner
49bd5a6462 use Babel to compile localizations and include in source tarball
python3-babel was also included in the gitlab-ci docker image:
ffc08dbc1d
2017-10-19 23:28:13 +02:00
Hans-Christoph Steiner
57c3c60f0e include in source tarball: be de es es_AR fr nb pt_BR tr uk zh_Hans zh_Hant
The way to officially include a new language in the source tarball is to
add it to the MANIFEST.in.  Otherwise, it will not be included in the
source tarball, and therefore won't be installed when using apt, pip, etc.
2017-10-19 23:16:58 +02:00
Hans-Christoph Steiner
927104a4e3 update: make strings translatable 2017-10-19 23:16:58 +02:00
Hans-Christoph Steiner
d4865ec038 include README.rst in official release source tarball
README.rst is still the standard for Python libs.
2017-10-19 23:16:58 +02:00
Hans-Christoph Steiner
7d4e354f25 FDroidException handle Exceptions that return things other than str
This is related to a4c4a16ed9
2017-10-19 20:38:43 +02:00
Hans-Christoph Steiner
af0d8ab84c tests: make pip3 install quieter for shorter CI logs 2017-10-19 20:23:57 +02:00
Hans-Christoph Steiner
c80d68dcc0 travis-ci: get OSX tests running again...
Java9 is starting to roll out on some of the Travis CI machines, but
the Android SDK does not yet work on Java9, it throws:

java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
2017-10-19 20:23:57 +02:00
Hans-Christoph Steiner
3407c67041 Merge branch '391-fdroid-publish-unknown-execption' into 'master'
better error message in publish when repo_key is not set

Closes #391

See merge request fdroid/fdroidserver!352
2017-10-18 13:11:24 +00:00
Michael Pöhn
788c8f97fd better error message in publish when repo_key is not set 2017-10-17 22:10:39 +02:00
Hans-Christoph Steiner
e5acdee21e make update to update all translation files from source code 2017-10-17 21:13:08 +02:00
Hans-Christoph Steiner
85050ecb81 Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!354
2017-10-17 16:24:26 +00:00
Hans-Christoph Steiner
f0988d45dd Weblate 2017-10-17 16:24:25 +00:00
Hans-Christoph Steiner
7c568cf16a jenkins-build-makebuildserver: use current version for test build 2017-10-17 16:24:21 +02:00
Torsten Grote
7832c0ef38 Merge branch '1.0-fixes' into 'master'
1.0 fixes

Closes #357

See merge request fdroid/fdroidserver!353
2017-10-17 14:19:47 +00:00
Hans-Christoph Steiner
6a8152af15 include all argparse strings in translation template
The Python argparse library has its own strings, which are translatable
via gettext.  This gets those sources strings from the library, and
includes them in this project.  Since gettext is invoked and configured
in fdroidserver, fdroidserver needs to handle the translations for the
libraries it uses.
2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
ccc3fb8b2e update translation template and add file context for each string
The file context lets the translators know which command the string applies
to.  It does not have line numbers, since those are less useful, while
causing lots of merge conflicts.
2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
460c4185bb update: support Fastlane's official location for screenshots
fastlane/android/metadata/locale/images/*Screenshots

https://github.com/fastlane/fastlane/blob/2.61.0/screengrab/lib/screengrab/runner.rb#L324

closes #357
2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
a4169484fd update: fix detection of Triple-T screenshots
* https://github.com/westnordost/StreetComplete/issues/489
* https://forum.f-droid.org/t/screenshots-dont-show-up-in-client-using-gradle-play-publisher/881/2

#357
2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
b6067e6a1f server: automatically create S3 bucket when using s3cmd 2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
0c4dc9779e server: move strings to be gettext translatable 2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
a4c4a16ed9 handle exceptions that send a tuple for the error message
Running `fdroid verify` I was seeing FDroidExceptions from verify.py:98
that had a tuple rather than a string.


Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/fdroid", line 152, in <module>
    main()
  File "/home/hans/code/fdroid/server/fdroid", line 128, in main
    mod.main()
  File "/home/hans/code/fdroid/server/fdroidserver/verify.py", line 98, in main
    logging.info("...NOT verified - {0}".format(e))
  File "/home/hans/code/fdroid/server/fdroidserver/exception.py", line 22, in __str__
    ret += "\n==== detail begin ====\n%s\n==== detail end ====" % ''.join(self.detail).strip()
TypeError: sequence item 1: expected str instance, HTTPError found
2017-10-13 14:58:15 +02:00
Hans-Christoph Steiner
53ce81179c Merge branch 'error_on_jars' into 'master'
RFC: Error on jars

See merge request fdroid/fdroidserver!325
2017-10-12 11:46:59 +00:00
Hans-Christoph Steiner
d95e009c3f Merge branch 'gradle-4.2.1' into 'master'
makebuildserver: add Gradle 4.2.1

See merge request fdroid/fdroidserver!351
2017-10-08 19:06:09 +00:00
relan
dca96a6159 makebuildserver: add Gradle 4.2.1
N.B. Actual address of the distribution server is downloads.gradle.org;
services.gradle.org redirects to it.
2017-10-08 21:12:37 +03:00
Michael Pöhn
4b35f19480 Merge branch '334-make-index-generation-fully-reproducible' into 'master'
Resolve "make index generation fully reproducible"

Closes #334

See merge request fdroid/fdroidserver!343
2017-10-06 17:18:10 +00:00
Hans-Christoph Steiner
4f772596d2 Merge branch 'print-vcs-client-version' into 'master'
common: print VCS client version

See merge request fdroid/fdroidserver!349
2017-10-06 09:07:13 +00:00
relan
0ab0b03648 common: print VCS client version
This may help to debug issues with too old VCS clients.
2017-10-06 09:41:24 +03:00
Hans-Christoph Steiner
02449865f1 Merge branch 'fix_bare_except' into 'master'
fix bare except to satisfy newer pycodestyle

See merge request fdroid/fdroidserver!348
2017-10-04 20:13:46 +00:00
Hans-Christoph Steiner
a2c176e34a Merge branch 'build-tools-26-0-2' into 'master'
add build-tools 26.0.2

See merge request fdroid/fdroidserver!347
2017-10-04 20:13:33 +00:00
Marcus Hoffmann
50ba108093 fix bare except to satisfy newer pycodestyle 2017-10-04 19:23:53 +02:00
Marcus Hoffmann
f25cfe1b37 add build-tools 26.0.2 2017-10-04 19:03:41 +02:00
Marcus Hoffmann
1c5dccb413 import: fix bitbucket import
repo type can be found on main url, not under /src
2017-10-04 18:54:47 +02:00
Hans-Christoph Steiner
5567182629 Merge branch 'fix-dot-gradle-removal' into 'master'
build: fix build/ and .gradle/ removal after cleaning

Closes #384

See merge request fdroid/fdroidserver!346
2017-10-03 13:19:47 +00:00
Hans-Christoph Steiner
ad10bfcad2 Merge branch '291-include-apk-signatures-in-build-metadata-file' into 'master'
include APK signatures in build metadata file

Closes #291

See merge request fdroid/fdroidserver!287
2017-10-03 12:57:34 +00:00
relan
aad4bd89d8 build: fix build/ and .gradle/ removal after cleaning
An app may not have a top-level build.gradle file, while Gradle still
creates top-level .gradle/ directory. When build.gradle is absent,
fdroidserver will not remove .gradle/, scanner will find binaries in it
and fail the whole build.

Fix this by also checking for settings.gradle file (should always exist
in the top-level directory) in addition to build.gradle.
2017-10-01 10:11:37 +03:00
Michael Pöhn
89d9d0c45b use OrderedDict for localization data in index-v1 2017-09-26 14:15:48 +02:00
Michael Pöhn
26192a00e2 make sure all timestamps in index-v1 are utc 2017-09-26 14:15:27 +02:00
Michael Pöhn
290b9050e0 convert apk timestamp from filesystem to utc before storing 2017-09-26 14:13:08 +02:00
Michael Pöhn
50c17f99d1 make sure apk-added datetime only gets returned rounded to days 2017-09-26 14:13:04 +02:00
Michael Pöhn
a2d361dec8 add test for index-v1.json 2017-09-26 14:12:59 +02:00
Michael Pöhn
dfc6261ccb sort antiFeatures list in index-v1.json 2017-09-26 14:12:53 +02:00
Michael Pöhn
b6b79edf11 store fdroid signing-key-fp-list in stats dir 2017-09-26 14:11:09 +02:00
Michael Pöhn
75c5fa6355 added some docstrings and error messages 2017-09-26 14:11:09 +02:00
Michael Pöhn
6fc968f7cd choose best apk version vor index v0 2017-09-26 14:11:09 +02:00
Michael Pöhn
6930edf889 sort index-v1; publish now creates and stores a list of signature fingerprints 2017-09-26 14:11:09 +02:00
Michael Pöhn
bca07f794f added functions for storing/loading signer fingerprints to stats 2017-09-26 14:11:09 +02:00
Michael Pöhn
5a524d4d0c added some developer-signing key metadata to tests 2017-09-26 14:11:09 +02:00
Michael Pöhn
ba3844e97e function for finding developer signature in metadata 2017-09-26 14:11:09 +02:00
Michael Pöhn
6a4a78429f add signer to index v1 2017-09-26 14:11:09 +02:00
Michael Pöhn
7c4b8bcac4 added parse release filename function 2017-09-26 14:11:09 +02:00
Michael Pöhn
b993d93395 skip singing apks which ar not validating with signatures from metadata 2017-09-26 14:11:09 +02:00
Michael Pöhn
04daa7a03a test for common.get_app_id_aapt 2017-09-26 14:11:09 +02:00
Michael Pöhn
91369dacfb try injecting signatures for metadata when publishing 2017-09-26 14:11:09 +02:00
Michael Pöhn
08627d70a7 check file existance before trying to verify apks; use centext manager for zips when verifying apk 2017-09-26 14:11:09 +02:00
Michael Pöhn
efb0bf6ee5 add common functions for dealing with apk signatures 2017-09-26 14:11:09 +02:00
Michael Pöhn
45688bfe42 refactored publishing source tarball into a function 2017-09-26 14:11:09 +02:00
Michael Pöhn
c196f7dd7a common function for fetching sha256 signing-key fingerprint 2017-09-26 14:11:09 +02:00
Hans-Christoph Steiner
d44d48285b Merge branch 'build-drozer-syntax-error' into 'master'
building with --dscanner now exits gracefully when repo dir not present

See merge request fdroid/fdroidserver!344
2017-09-26 08:49:51 +00:00
Hans-Christoph Steiner
eaca20675c tests: test setting up app git repo like fdroid build does
I wrote this to try to find #379 but this test didn't trigger that bug.
2017-09-25 16:35:18 +02:00
Hans-Christoph Steiner
cbf7ba0414 tests: add setUp() method to common to handle standard stuff 2017-09-25 16:35:18 +02:00
Hans-Christoph Steiner
beb79d613d move lots of comments to function doc strings 2017-09-25 16:35:18 +02:00
Hans-Christoph Steiner
628fa134f1 travis-ci: quiet output for pip/sdkmanager installs
The log was getting way too long.
2017-09-25 16:35:18 +02:00
Hans-Christoph Steiner
d757902f9c update MANIFEST.in
There were a number of new files missing.  Some files still manually
excluded.  Generated using:

 for f in `git ls-tree -r master --name-only | sort`; do echo include $f; done
2017-09-25 16:35:18 +02:00
Hans-Christoph Steiner
31e81e83da use pandoc to convert README.md to PyPI's reST format
PyPI and Python packages expect the description to be in reST format, which
is a lot different than Markdown.  This does the conversion if pandoc is
installed.
2017-09-25 16:35:18 +02:00
Michael Pöhn
d8485f7123 build+drozer: error message instead of crash when repo-folder missing 2017-09-25 16:09:57 +02:00
Hans-Christoph Steiner
faeecf0b07 Merge branch 'gradle-4.2' into 'master'
makebuildserver: add Gradle 4.2

See merge request fdroid/fdroidserver!342
2017-09-25 12:17:34 +00:00
relan
3fdddd1179 makebuildserver: add Gradle 4.2 2017-09-23 10:04:39 +03:00
Hans-Christoph Steiner
ca069d941d Merge branch 'port-to-osx-and-trusty' into 'master'
port to OSX and Ubuntu/trusty

See merge request fdroid/fdroidserver!341
2017-09-20 15:24:57 +00:00
Hans-Christoph Steiner
86a3ef5355 travis-ci: always reinstall Java on OSX to get recent version
The Travis images have quite old versions of Java currently.
2017-09-19 20:16:08 +02:00
Hans-Christoph Steiner
a9a696b199 travis-ci: test on older OSX versions 2017-09-19 20:16:08 +02:00
Hans-Christoph Steiner
2764c43fa2 tests: use ci-test-app with current Gradle Android Plugin
This works around the gradle 2.x bug where versions newer than 2.9 cannot
run things.  This also then specifies the version of Gradle Android Plugin
that is included in Debian/stretch.
2017-09-19 20:16:08 +02:00
Hans-Christoph Steiner
dc569b9c18 tests: support Java setups where MD5 is not disabled by default
For platforms using Java < 1.8.0_133, MD5 is still enabled for JAR
signatures.  Its just too painful to manage all this, so support this
in the tests.
2017-09-19 20:16:08 +02:00
Hans-Christoph Steiner
373b46ab3f tests: don't run gpgsign tests on Travis CI's OSX, gpg always fails 2017-09-19 20:16:08 +02:00
Hans-Christoph Steiner
2b5edf2434 travis-ci: make Trusty builds a first class citizen
Trusty is used in Travis-CI, Windows Subsystem for Linux, and many other
places, so its an important target platform to test on.  This provides
testing for the backports in the Launchpad PPAs like:

* https://launchpad.net/~fdroid/+archive/ubuntu/fdroidserver
* https://launchpad.net/~fdroid/+archive/ubuntu/buildserver
2017-09-19 20:16:08 +02:00
Hans-Christoph Steiner
0a88a97881 travis-ci: update OSX CI build to work again 2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
d1f6126dea tests: support Ubuntu/trusty's python3.4-venv 2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
bc192b6be0 tests: prefer GNU sed on BSD/OSX, BSD's sed has lame syntax
https://blog.remibergsma.com/2012/09/18/sed-inline-editing-different-on-mac-osx/
2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
176f539647 allow spaces in filenames
This fixes all the bugs I could find that prevented fdroid from
handling files with spaces in them.  This is more important now that
fdroid supports random media files, and Repomaker
2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
6adf309bef tests: move test APK with bad unicode filename to separate test
This filename has some messed up bytes related to bi-directional script
that is included (Left-to-Right and Right-to-Left).  GNU/Linux always
interprets filenames as pure byte sequences.  Windows and OSX store
filenames as Unicode strings.  So on OSX, the invalid filename gets
converted to a valid name.  That works fine, but the test fails because it
is compared to a file generated on Ubuntu, where it preserves the byte
sequence.

This includes an APK with a valid Unicode filename that includes
bi-directional script.
2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
5dcb48831f index: always use jarsigner for verifying JAR signatures
apksigner v0.7 (build-tools 26.0.1), Google made it require that the
AndroidManifest.xml was present in the archive before it verifies the
signature.  So this needs to stick with the jarsigner hack for JARs.
2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
535f2afe90 init: prompt user for Android SDK path using platform-specific default 2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
1d4e3a254d create blank config.py using cross-platform technique
os.mknod() fails on OSX with:

Traceback (most recent call last):

  File "/Users/travis/build/fdroidtravis/fdroidserver/tests/../fdroid", line 154, in <module>
    main()
  File "/Users/travis/build/fdroidtravis/fdroidserver/tests/../fdroid", line 130, in main
    mod.main()
  File "/Users/travis/build/fdroidtravis/fdroidserver/fdroidserver/update.py", line 1768, in main
    common.write_to_config(config, 'repo_keyalias', config['repo_keyalias'])
  File "/Users/travis/build/fdroidtravis/fdroidserver/fdroidserver/common.py", line 2328, in write_to_config
    os.mknod(cfg)
PermissionError: [Errno 1] Operation not permitted
2017-09-19 20:13:36 +02:00
Hans-Christoph Steiner
c225e0c363 Merge branch 'first-working-localization' into 'master'
First working localization

See merge request fdroid/fdroidserver!340
2017-09-19 18:12:41 +00:00
Hans-Christoph Steiner
8e0b424bc8 update translation template with latest strings 2017-09-16 13:19:38 +02:00
Hans-Christoph Steiner
86cf1c9800 add Makefile to handle refreshing translation template
To generate the translation files, run `make -C locale`or
`cd locale && make`

To update the template, run `make -C locale template` or
`cd locale && make fdroidserver.pot`
2017-09-16 13:19:38 +02:00
Hans-Christoph Steiner
6c7b987239 fix string formats that are ambiguous for translators 2017-09-16 13:19:38 +02:00
Hans-Christoph Steiner
255932453c ensure _ is used only for gettext strings
_ is often used for variables that are ignored, this makes that a bit more
explicit
!338
2017-09-16 13:19:38 +02:00
Hans-Christoph Steiner
53e4ec47a7 English source string corrections
From @monolifed <monolifed@gmail.com>
2017-09-16 13:19:38 +02:00
Hans-Christoph Steiner
9712fac011 "No config.py found" should warning level, until people get use to it
Since !335 changed the long standing behavior, now allowing `fdroid` to
work without a config.py being present, this message should be quite
visible in case people are expecting `fdroid` to fail when there is no
config.py present.
2017-09-16 11:11:49 +02:00
Hans-Christoph Steiner
c7d45b9515 Merge branch 'plural' into 'master'
Correct plurals

See merge request fdroid/fdroidserver!334
2017-09-16 08:11:06 +00:00
Hans-Christoph Steiner
acac15f74d Merge branch 'newcomers' into 'master'
allow starting without config.py

See merge request fdroid/fdroidserver!335
2017-09-16 08:07:56 +00:00
Hans-Christoph Steiner
f144cae11c Merge branch 'weblate' into 'master'
Weblate

See merge request fdroid/fdroidserver!339
2017-09-15 21:00:33 +00:00
Hans-Christoph Steiner
5ca2997daf Weblate 2017-09-15 21:00:33 +00:00
Hans-Christoph Steiner
a2eaf37394 Merge branch 'implement-gettext' into 'master'
first implementation of localization using gettext

Closes #342

See merge request fdroid/fdroidserver!338
2017-09-15 19:29:12 +00:00
Jan Berkel
4723cff0c8 Correct plurals 2017-09-15 14:16:30 +02:00
Hans-Christoph Steiner
fa0d618d2f rename 'app-id' to standard Android 'applicationId'
* https://developer.android.com/studio/build/application-id.html
* https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/applicationid-vs-packagename

This only changes the term in the human texts, not var names or CLI flags.
2017-09-15 11:41:51 +02:00
Hans-Christoph Steiner
278d67d960 implement gettext localization
This allows all the text to be localized via Weblate.  This is a quick
overview of all the strings, but there are certainly some that were left
out.

closes #342
2017-09-15 11:39:00 +02:00
Hans-Christoph Steiner
e4ca82d80c tests: support running on platforms with old java
In order to test on travis-ci's OSX setup, its easiest to support the old
version of Java that is installed there by default.  It is pretty old, so
it does not include the April 2017 update that disables MD5:

https://blogs.oracle.com/java-platform-group/oracle-jre-will-no-longer-trust-md5-signed-code-by-default
https://www.bleepingcomputer.com/news/security/oracle-to-block-jar-files-signed-with-md5-starting-with-april-2017
https://support.ca.com/us/knowledge-base-articles.TEC1691042.html

#292 #323
2017-09-15 11:37:24 +02:00
Hans-Christoph Steiner
cb10f0df09 standardize os.walk() var names based on Python 3.5 docs
There were multiple conventions used in the code, but mostly it was already
using the convention from the docs, so this converts things to using that
convention:

https://docs.python.org/3/library/os.html#os.walk
2017-09-15 11:37:21 +02:00
Hans-Christoph Steiner
96e71bfdb3 set minimum Python version to 3.4
We use contructs introduced in 3.4, and 3.4 is really widely available.

https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords
2017-09-15 11:35:30 +02:00
Hans-Christoph Steiner
30c0d5f4d5 gitlab-ci: ensure release tag is present for metadata_v0 tests
Forks won't necessarily have all the tags, so this ensures that they are
present.
2017-09-15 11:35:30 +02:00
Hans-Christoph Steiner
9cb074cb08 Merge branch 'buildserver-verbose' into 'master'
print build-server output when verbose flag is set

Closes #213

See merge request fdroid/fdroidserver!219
2017-09-15 09:10:07 +00:00
Hans-Christoph Steiner
7aebf7a33f Merge branch '368-makebuildserver-fails-checkey-101' into 'master'
remove checkey from jenkins-build-makebuildserver

Closes #368

See merge request fdroid/fdroidserver!337
2017-09-15 09:01:12 +00:00
Michael Pöhn
23b45c68c1 remove checkey from jenkins-build-makebuildserver 2017-09-14 11:28:12 +02:00
Marcus Hoffmann
34f79b876c tests: don't touch config.py, no config is fine now 2017-09-14 02:15:57 +02:00
Marcus Hoffmann
190a2fde81 common: allow starting without a config file
There is no reason this should be disallowed as the default config often
works well when building simple apps.
2017-09-14 02:15:57 +02:00
Marcus Hoffmann
feadc6a565 make sure config exists before writing to it 2017-09-14 02:15:57 +02:00
Marcus Hoffmann
de1afc3c7e bash_completion: add update --create-key option 2017-09-14 02:15:57 +02:00
Michael Pöhn
5770e1d3ef log build-server output when verbose flag is set 2017-09-14 01:38:34 +02:00
Marcus Hoffmann
237973a1d6 bash_completion: fix option completion
Line breaks need to be escaped in the command list.
2017-09-13 14:02:04 +02:00
Hans-Christoph Steiner
7db6997eea add all subcommands to bash completion
The bash completion needs a modernization, but this at least makes all the
subcommands work.
#374
2017-09-13 09:53:26 +02:00
Hans-Christoph Steiner
a4a7b99760 Merge branch 'fix_gplay_check' into 'master'
Fix gplay check

See merge request !333
2017-09-13 07:18:46 +00:00
Marcus Hoffmann
5ebde251b1 checkupdates: use html.unescape instead of HTMLParser.unescape
HTMLParser.unescape is only an internal method and deprecated.
This requires Pyhton 3.4.
2017-09-13 01:42:15 +02:00
Marcus Hoffmann
921524081c checkupdates: fix google play check method
This has never worked with python3 and was also not properly adapted to
apps as objects. So we fix both of these issues.
2017-09-13 01:40:09 +02:00
Hans-Christoph Steiner
253bd92df3 Merge branch 'refuse-publishing-duplicate-apks' into 'master'
proper error message when publishing with the same app in repo and unsigned

See merge request !329
2017-09-12 15:33:51 +00:00
Hans-Christoph Steiner
7513432a41 Merge branch 'warn_on_aar' into 'master'
scanner: warn on aar files

See merge request !332
2017-09-12 15:29:29 +00:00
Hans-Christoph Steiner
9461dd0f3d Merge branch 'scanner_refactoring' into 'master'
Scanner refactoring

See merge request !330
2017-09-11 15:47:57 +00:00
Marcus Hoffmann
5f5d3ea896 scanner: promote jar and aar files present in the repo to errors
This makes sure we we don't include any prebuilt code in the build process.
2017-09-11 17:05:24 +02:00
Marcus Hoffmann
15c4492625 remove gradle-wrapper.jar during scan
We make sure to not use the gradle wrapper anyway so this should have no
impact.
2017-09-11 17:05:21 +02:00
Marcus Hoffmann
af2eb2bd50 scanner: warn on aar files 2017-09-11 17:05:16 +02:00
Marcus Hoffmann
5d9eb9b295 scanner: rename variables, use os.path.relpath
* rename fd -> path_in_build_dir
* rename fp -> filepath
* use os.path.reldir instead of string manipulation
2017-09-11 16:49:39 +02:00
Marcus Hoffmann
1ee3f9aad5 scanner: more descriptive variable names from os.walk
This uses the names from python documentation of os.walk().
2017-09-11 16:49:30 +02:00
Michael Pöhn
328c1ad0c7 proper error message when publishing with the same app in repo and unsigned 2017-09-07 12:19:48 +02:00
Hans-Christoph Steiner
546b09cd93 Merge branch 'close-subprocess-file-handles' into 'master'
make sure file-streams of subprocesses get closed

See merge request !328
2017-09-07 09:51:08 +00:00
Hans-Christoph Steiner
3aee9b3f11 Merge branch 'close-subprocess-file-handles' into 'master'
make sure file-streams of subprocesses get closed

See merge request !328
2017-09-07 09:49:51 +00:00
Hans-Christoph Steiner
2ce014c9f4 Merge branch 'signatures-subcommand' into 'master'
signatures command

See merge request !327
2017-09-07 09:04:25 +00:00
Michael Pöhn
a718c75b05 make sure file-streams of subprocesses get closed 2017-09-07 02:36:58 +02:00
Michael Pöhn
3e6dfacf6c added signatures subcommand 2017-09-07 00:03:35 +02:00
Hans-Christoph Steiner
be874b1134 Merge branch 'dont-list-fdroid-subcommands-in-random-order' into 'master'
don't list fdroid subcommands in random order

See merge request !326
2017-09-05 14:45:57 +00:00
Michael Pöhn
0df95ce7e6 dont list fdroid subcommands in random order 2017-09-04 14:29:30 +02:00
Marcus Hoffmann
4b605e8b3e remove trailing whitespace 2017-09-03 19:30:00 +02:00
Marcus Hoffmann
90180bb902 makebuildserver: add comment about not upgrading sdk-tools 2017-09-03 18:33:03 +02:00
Michael Pöhn
e9f8f2cc61 Merge branch 'apk_output_location' into 'master'
handle gradle-plugin 3.0 output apk location

Closes #363

See merge request !321
2017-09-01 12:21:05 +00:00
Hans-Christoph Steiner
d9193d1b05 Merge branch 'metadata_v0_test' into 'master'
bump fdroid version to test against to 0.8 remove legacy handling

See merge request !324
2017-08-31 19:51:09 +00:00
Marcus Hoffmann
baef08725b CI: bump fdroid version to test against to 0.8 remove legacy handling
Bump to latest released version, remove all handling of things that
changed in a backward incompatible way before.
2017-08-31 21:06:34 +02:00
Hans-Christoph Steiner
781f00f211 Merge branch 'mr/update_docker-py' into 'master'
setup.py: unstick docker-py and requests dependencies

See merge request !318
2017-08-31 12:48:18 +00:00
Marcus Hoffmann
36ef93520c Merge branch 'mr/verify_ca_certs_v2' into 'master'
makebuildserver: verify https all requests to avoid urllib3 warnings

See merge request !316
2017-08-28 15:05:24 +00:00
Marcus Hoffmann
b81f14b8df Merge branch 'revert-af707cd1' into 'master'
Revert "setup.py: don't use pyasn1 to 0.3.3 until pyasn1-modules is updated to support it"

See merge request !322
2017-08-27 22:40:49 +00:00
Marcus Hoffmann
e38fc27cf1 Revert "setup.py: don't use pyasn1 to 0.3.3 until pyasn1-modules is updated to support it"
This reverts commit af707cd1cb
2017-08-27 22:07:49 +00:00
Marcus Hoffmann
af707cd1cb setup.py: don't use pyasn1 to 0.3.3 until pyasn1-modules is updated to support it
Latest pyasn1-modules hard codes pyasn1-0.3.2, so this currently break our tests.
Ref: https://github.com/etingof/pyasn1-modules/issues/4
2017-08-27 21:58:40 +00:00
Marcus Hoffmann
222b9251e7 Merge branch 'mr/update_platforms_tools' into 'master'
makebuildserver: update platform and build tool releases

See merge request !317
2017-08-27 19:41:16 +00:00
Marcus Hoffmann
b148b82f83 add comments to gradle output directories 2017-08-26 17:03:13 +02:00
Marcus Hoffmann
b114b44020 handle gradle-plugin 3.0 output apk location
This commit adds support for new gradle plugin 3.0 output directories.
The new structure looks like this:

build/outputs/apk/<flavour1><Flavour2>/release/*.apk

Note the capitalization on the different flavour components.
So if we build a specific flavour combination we add this combination to
the path where we look for an output .apk.

Closes #363

Based on !320 by: Michel Le Bihan <michel@lebihan.pl>
Signed-off-by: Marcus Hoffmann <bubuiic@aol.com>
2017-08-26 16:03:31 +02:00
Michael Pöhn
794e4436b4 Merge branch 'local_metadata' into 'master'
metadata: also read .fdroid.txt metadata

Closes #364

See merge request !319
2017-08-22 16:46:07 +00:00
Marcus Hoffmann
a9a19527c7 metadata: also read .fdroid.txt metadata
This is documented as working here:
https://f-droid.org/docs/Building_Applications/
(second to last paragraph)

fixes #364
2017-08-22 00:03:43 +02:00
Marcus Hoffmann
fb87751ef2 setup.py: unstick docker-py and requests dependencies
docker-py 1.10.6 is the last version released under docker-py, after that it
will be just docker, but has breaking changes, see:
https://github.com/docker/docker-py/releases/tag/2.0.0

Update the list of allowed versions of requests to docker-py master.
2017-08-17 01:53:49 +02:00
Marcus Hoffmann
69666839f7 makebuildserver: update platform and build tool releases
Update platform-25 to r03
Update platform-26 to r02
Add build-tools_r26.0.1

sha256 signatures locally computed after verifying the sha1 signature provided
by the repository2-1.xml file.

All these will be downloaded and installed in the buildserver through
provision-android-sdk anyway but this adds them to the cache.
2017-08-17 00:56:59 +02:00
Marcus Hoffmann
ae613ab277 makebuildserver: verify https all requests to avoid urllib3 warnings
According to http://docs.python-requests.org/en/master/user/advanced/#ca-certificates
python-requests >= 2.4.0 will use the certifi provided certificates.
We already recommend installing python3-certifi in the docs.
On debian requests is patched to use the system trust store instead.
2017-08-17 00:49:53 +02:00
Hans-Christoph Steiner
1955e2f153 Merge branch 'gradle-updates' into 'master'
makebuildserver: add Gradle 3.5.1, 4.0.1, 4.0.2 and 4.1

See merge request !313
2017-08-15 15:49:58 +00:00
Hans-Christoph Steiner
40b96ca60d Merge branch 'ndk-r15c' into 'master'
makebuildserver: upgrade NDK r15b to r15c

See merge request !314
2017-08-15 15:48:50 +00:00
relan
a09952ca2b makebuildserver: add Gradle 3.5.1, 4.0.1, 4.0.2 and 4.1
Android Gradle plugin 3.0.0 requires Gradle 4.1.
2017-08-14 08:53:57 +03:00
relan
6f05cf85f9 makebuildserver: upgrade NDK r15b to r15c 2017-08-11 10:19:40 +03:00
Hans-Christoph Steiner
c67f8e349c metadata: handle empty YAML files without crashing
!311
2017-07-26 18:21:28 -07:00
Hans-Christoph Steiner
7bd171480f update: test metadata creation using internal and external templates
There is a hardcoded template in update.py, and there is also the
possibility for the user to create a template.yml.  This tests both of them
and cleans up the related code a bit.

#352 !310
2017-07-26 15:34:13 -07:00
Hans-Christoph Steiner
96aacf1752 add missing comma in setup.py 2017-07-26 11:25:51 -07:00
Hans-Christoph Steiner
355b08262d Merge branch 'metadata' into 'master'
preserve order and formatting on creating Metadata from Yaml template (closes #352)

Closes #352

See merge request !310
2017-07-26 18:14:33 +00:00
Izzy
cbd420e490 preserve order and formatting on creating Metadata from Yaml template (closes #352) 2017-07-26 09:22:01 +02:00
Hans-Christoph Steiner
5eb85deeaf Bump to 0.8 2017-07-25 22:19:49 -07:00
Hans-Christoph Steiner
5feaafa1bd update pypi "classifiers" 2017-07-25 22:19:49 -07:00
Hans-Christoph Steiner
1e7832a4f4 update README to point to https://f-droid.org/docs 2017-07-25 22:19:48 -07:00
Hans-Christoph Steiner
c7034bfaea update file list in setup.py 2017-07-25 22:19:48 -07:00
Hans-Christoph Steiner
6dfdc78314 Merge branch 'metadata' into 'master'
Updating syntax check for Flattr (see #284)

See merge request !309
2017-07-26 05:06:42 +00:00
Izzy
b787ec9e34 Updating syntax check for Flattr (see #284) 2017-07-20 20:26:25 +02:00
Hans-Christoph Steiner
512688990f Merge branch '0.8-fixes' into 'master'
0.8 fixes

Closes #325, #347, and #309

See merge request !304
2017-07-20 03:58:27 +00:00
Hans-Christoph Steiner
c1e9379f67 remove errant trailing slash added in 7613c18dd8 2017-07-20 00:00:08 +02:00
Hans-Christoph Steiner
be523a3f1a include all test files in source tarball 2017-07-20 00:00:08 +02:00
Hans-Christoph Steiner
619c66e1dc gitlab-ci: filter new build fields in metadata_v0 test 2017-07-19 16:24:28 +02:00
Hans-Christoph Steiner
0a953814e2 update: always include name/summary/desc in index.xml if available
With the new localization support, the name/summary/description in the
metadata file becomes the global override.  So most apps are not going to
have those fields present in their metadata file.  This fixes the index.xml
generation to fall back to the localized versions of those fields when they
are not set in the metadata field.

https://forum.f-droid.org/t/what-has-happend-to-osmand
2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
f43da8cd14 add new files to MANIFEST.in
They need to be there in order to be included in the source tarball.
2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
3e67634a27 wp-droid: move deprecated Wordpress plugin to its own repo
closes #325
2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
7613c18dd8 verify: if downloading from /repo/ fails, try /archive/
The Builds entries in metadata/ files do not easily say whether a
given APK is in the repo/ or the archive/.  So it should also try to
download the official APK from the archive/ when verifying.
2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
67d98c5a36 keep .apk file ext when diffoscope'ing Binaries: 2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
2ecaf6ef8d rewritemeta: only print file type if its changing 2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
1f7f9d403c server: report errors pushing to git mirrors
This makes `fdroid server update` fail if pushing to one of the git mirrors
fails.  This is what happens if the other methods fail, e.g. rsync or S3.

closes #347
2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
93caf27319 server: include gitlab raw URLs as git mirrors
gitlab serves raw files from a CDN, so its appropriate to use the raw URL.
@pserwylo @grote and I discussed it and found a reference, but I can't find
that reference now.

Since the client will try the next mirror if one fails, it makes sense to
include both the gitlab raw and gitlab pages URLs to the mirror.  The
gitlab pages deploy process is still a bit flaky anyway.
2017-07-19 15:07:50 +02:00
Hans-Christoph Steiner
6d8e916491 server: only rm git mirror if the git history is getting too large
git hosts like github, gitlab, bitbucket usually allow 1 gig repos. This
changes the git mirroring behavior to keep the history until the repo hits
1 gig.  Keeping history makes updates a lot faster, since the whole repo
does not need to be pushed on each update.
2017-07-19 13:03:17 +02:00
Hans-Christoph Steiner
d8954fc033 update: force checkout .gitlab-ci.yml when updating git mirrors
closes #309
2017-07-17 11:38:15 +02:00
Hans-Christoph Steiner
523b5f4777 server: smooth out btlog transfer for offline signing setups
It turns out it is error prone to `git push` to a non-bare git repo. For
the offline signing machine, the git remote needs to be a regular git repo
in a directory on a thumbdrive so that once the thumbdrive is plugged into
an online machine, that git repo can be transferred to the online machine.
2017-07-17 11:38:15 +02:00
Hans-Christoph Steiner
be8e7830e1 Merge branch 'xmlicons' into 'master'
have fallback for XML icons also consider res/mipmap*

See merge request !307
2017-07-17 06:33:02 +00:00
Izzy
54a646bd93 have fallback for XML icons also consider res/mipmap*
several apps (e.g.
[FastHub](http://apt.qumran.org/fdroid/index/apk/com.fastaccess.github)
and [Monety](http://apt.qumran.org/fdroid/index/apk/open.currency)) have
their ic_launcher.png files not in res/drawable*dpi/, but in
res/mipmap*/ -- so the regex has been adjusted by this patch.

Additionally: if the only icon for a given resolution was an XML without
existing fallback-PNG, it should be considered "non existent" (ie.
"empty_density").
2017-07-17 00:54:33 +02:00
Hans-Christoph Steiner
6940f9da43 Merge branch 'metadata' into 'master'
adding example metadata template (closes #345)

Closes #345

See merge request !306
2017-07-16 14:21:46 +00:00
Izzy
fc114dfd63 using a "real category" as example 2017-07-15 17:22:18 +02:00
Izzy
c644d0c3c8 adding example metadata template (closes #345) 2017-07-15 16:52:08 +02:00
Hans-Christoph Steiner
830e788401 Merge branch 'metadata' into 'master'
--create-metadata: use yaml.dump() and (if exists) template.yml

See merge request !305
2017-07-10 09:08:45 +00:00
Izzy
dd69490821 --create-metadata: only set default empty values if not using template.py 2017-07-08 14:41:19 +02:00
Izzy
4d375a585d enable user to have presets for metadata by using a template.yml (see #345) 2017-07-08 14:21:49 +02:00
Izzy
732de91aa7 make --create-metadata use yaml.dump instead of ruamel (solves #345) 2017-07-08 14:07:11 +02:00
Hans-Christoph Steiner
25f96e1911 ensure that mirror URLs always include the repodir
Since the mirror URLs are per repo section (repo/archive), the mirror URLs
must include the repodir at the end.  This was missing for servergitmirrors

found by @cde when working on fdroidclient#35
2017-07-07 15:50:11 +02:00
Hans-Christoph Steiner
70858bb104 Merge branch 'master' into 'master'
Also search for apk in build/outputs/apk/release

See merge request !303
2017-07-07 11:02:32 +00:00
mimi89999
a427bb7b56
Also search for apk in build/outputs/apk/release 2017-07-07 12:21:09 +02:00
Hans-Christoph Steiner
b0a8d4163d Merge branch 'metadata' into 'master'
--create-metadata: make sure apk[name] is not empty

See merge request !302
2017-07-06 22:49:26 +00:00
Izzy
8ea06ce83e --create-metadata: make sure apk[name] is not empty 2017-07-07 00:18:08 +02:00
Hans-Christoph Steiner
7ec0656dbb Merge branch 'sudo' into 'master'
add new 'sudo=' Build field

Closes #317

See merge request !297
2017-07-06 21:53:31 +00:00
Hans-Christoph Steiner
dfb07808d3 support configing buildserver VM per-build with sudo=
This adds the 'sudo' build field, which is just a script that is run as
root.  For more info, see the issue that this closes:

refs #318
closes #317
2017-07-06 17:29:23 +02:00
Michael Pöhn
747ac52a62 Merge branch 'yaml-template' into 'master'
update: remove ruamel requirement, and improve '--create-metadata'

Closes #343

See merge request !300
2017-07-06 15:29:19 +00:00
Hans-Christoph Steiner
abe422fd7a handle App instance with no Builds when writing YAML 2017-07-06 16:00:44 +02:00
Hans-Christoph Steiner
4a15208b84 update: update openssl KnownVuln scan to handle all recent versions
Thanks to @bubu for reporting!
2017-07-06 13:31:42 +02:00
Hans-Christoph Steiner
3e6b7062b6 update: remove ruamel requirement, and improve '--create-metadata'
If ruamel.yaml is not available, this will fallback to using PyYAML. This
also adds some blank fields to the newly created template to make it easy
for human editors to fill in.

closes #343
2017-07-06 13:31:42 +02:00
Hans-Christoph Steiner
928633ddba Merge branch 'some-data-related-fixed' into 'master'
support manually adding per-Build Anti-Features in metadata, and other fixes

Closes #322 and #331

See merge request !296
2017-07-06 11:29:36 +00:00
Hans-Christoph Steiner
10a607ede3 update: find PNG when recommended icon is an XML file
APKs can now use XML files for vector graphics like the app icon. `aapt`
returns the XML file by default, and perhaps also androguard.  This
checks if the icon is an XML file, and if so, it tries to find a PNG in
the APK with the same name and density to use instead

closes #322

This should also ultimately make the XML file available as an icon source
as well fdroidclient#1091
2017-07-06 12:25:48 +02:00
Hans-Christoph Steiner
c14cbeb0a5 update: normalize var name to apkzip 2017-07-06 12:25:48 +02:00
Hans-Christoph Steiner
2548d71600 jenkins: document build/sign test flow 2017-07-06 12:25:48 +02:00
Hans-Christoph Steiner
9a90a5071d buildserver: support any recent NDK version, with stable filenames
Now that the download file name and type seems to have stabilized, I
think we no longer need to manually specify each new added release in
this script to unpack.

closes #331
2017-07-06 12:25:48 +02:00
Hans-Christoph Steiner
df99c85ca6 support manually adding per-build antiFeatures in metadata
For cases like the OpenVPN vuln that was recently announced, it is useful
for fdroiddata maintainers to be able to mark builds that have known
vulnerabilities.
2017-07-06 12:25:48 +02:00
Michael Pöhn
20afa0e861 lint: check all build fields against accepted list
This makes sure there are no typoed or wrong build fields in all metadata
files.
2017-07-06 12:25:48 +02:00
Hans-Christoph Steiner
b34d5c83b9 Merge branch '343-ruamel-yaml-version-check' into 'master'
check version of ruamel.yaml and raise according error message

See merge request !301
2017-07-06 08:10:14 +00:00
Michael Pöhn
4ca57ebfbb check version of ruamel.yaml and raise according error message 2017-07-06 09:07:54 +02:00
Hans-Christoph Steiner
ebef1ae57d Merge branch 'antifeature' into 'master'
added new AntiFeature: ApplicationDebuggable

See merge request !298
2017-07-05 20:34:35 +00:00
Hans-Christoph Steiner
d28cc7337a Merge branch 'metadata' into 'master'
create_metadata: do not skip APK files having no name

See merge request !299
2017-07-05 20:31:23 +00:00
Izzy
2c8bacde42 create_metadata: do not skip APK files having no name 2017-07-05 20:31:21 +00:00
Izzy
4d9c60d352 added new AntiFeature: ApplicationDebuggable
Useful e.g. for "test repositories" to indicate an app was compiled with
"application-debuggable"
2017-07-04 21:15:04 +02:00
Hans-Christoph Steiner
b29fcde16b gitlab-ci: remove hacks need to support Debian/jessie 2017-07-04 14:53:21 +02:00
Hans-Christoph Steiner
6d7fd5f07c Merge branch 'ndk' into 'master'
NDK r14b and r15b

See merge request !293
2017-07-04 14:34:42 +02:00
Hans-Christoph Steiner
2508393884 Merge branch '290-make-rewrite-metadata-respect-key-word-sort-order' into 'master'
Resolve "make `fdroid rewritemeta` respect key-word sort order for YAML files"

Closes #290

See merge request !295
2017-07-04 12:24:17 +00:00
Michael Pöhn
6ab8551915 Merge branch '290-make-rewrite-metadata-respect-key-word-sort-order' into 'master'
rewritemeta: respect key-word sort order for YAML files

Closes #290

See merge request !263
2017-07-04 11:51:59 +00:00
Michael Pöhn
071ad46b55 moved some yaml test files into a separate forlder to avoid conflicts with other test cases 2017-07-04 13:35:05 +02:00
Michael Pöhn
1b362c2183 correct yaml-rewriting for buildozer flag 2017-07-04 13:27:45 +02:00
Michael Pöhn
0980fb4df8 import ruamel.ymal only when re-writing yaml metadata 2017-07-04 11:51:08 +02:00
Michael Pöhn
19d422da86 rewritemeta yaml: fixed boolen mapping for build flags 2017-07-04 11:51:08 +02:00
Michael Pöhn
cfd3e84250 use stored metadatapath instead of guessing it 2017-07-04 11:51:08 +02:00
Michael Pöhn
056a28f897 fix indentation 2017-07-04 11:51:08 +02:00
Hans-Christoph Steiner
3cb936ae92 fdroid update --create-metadata now outputs YAML format
As part of the push towards using YAML as the main metadata format, this
makes the blank template be a .yml file.
2017-07-04 11:51:08 +02:00
Michael Pöhn
75ebb6e8cc fix building with yml metadata 2017-07-04 11:51:08 +02:00
Michael Pöhn
54963506a0 set required minimum ruamel.yaml version 2017-07-04 11:51:08 +02:00
Michael Pöhn
fc070ee657 refactored yaml tests into metadata test case; fixed typo 2017-07-04 11:51:08 +02:00
Michael Pöhn
cdec1a5b80 add ruamel yaml to buildserver depenencies 2017-07-04 11:51:08 +02:00
Michael Pöhn
7ab197be2e completed ordered yaml field list 2017-07-04 11:51:08 +02:00
Michael Pöhn
f1e0089931 prettify write_yaml metadata 2017-07-04 11:51:08 +02:00
Michael Pöhn
7aa92abebc yaml rewrite version code as int 2017-07-04 11:51:08 +02:00
Michael Pöhn
f9d4007ea6 rewrite metadata builds list to yaml 2017-07-04 11:51:08 +02:00
Michael Pöhn
fbd5e8772c yaml metadata rewrite: correct blank line 2017-07-04 11:51:08 +02:00
Michael Pöhn
c46dec925e add ruamel.yaml to setup.py 2017-07-04 11:51:08 +02:00
Michael Pöhn
735b7d0f33 fixed pyflakes/pep warings 2017-07-04 11:51:08 +02:00
Michael Pöhn
0f90ab9aac rewrite to yaml works for app data now (builds still missing) 2017-07-04 11:51:08 +02:00
relan
86b403b599 makebuildserver: add NDK r15b 2017-07-04 11:44:25 +03:00
relan
ecdb2c685a makebuildserver: fix NDK r14b provisioning
Replace r14 with r14b after a57bff7.
2017-07-04 10:46:52 +03:00
Hans-Christoph Steiner
0be224b3e0 Merge branch 'repo-update-break-down' into 'master'
Break down the update.scan_apk() method into smaller pieces

See merge request !288
2017-07-03 22:08:43 +00:00
Torsten Grote
0bbe0c5db0
Break up the scan_apk() method and rename it to process_apk() 2017-07-03 18:37:01 -03:00
Hans-Christoph Steiner
607d1d2553 gitlab-ci: switch to new Debian/stretch image
ci-images-server!1
2017-07-03 20:41:26 +02:00
Hans-Christoph Steiner
e01a45d014 Merge branch 'archive-policy-fix' into 'master'
Archive policy overhaul

Closes #323, #292, and #166

See merge request !291
2017-07-03 09:07:08 +00:00
Hans-Christoph Steiner
f2432f7fa4 gitlab-ci: apt upgrade so that tests run with current updates
The MD5 signature stuff was failing in tests because the CI image was
using a quite old version of Java's jarsigner, which had not yet disabled
MD5.
2017-07-03 10:02:51 +02:00
Hans-Christoph Steiner
56ee5de2bd update: invalidate cache if allow_disabled_algorithms changes
Since the cache contains implicitly the result of the jarsigner verify,
if the allow_disabled_algorithms config changes, then the apkcache is
invalid.
2017-07-03 10:02:51 +02:00
Hans-Christoph Steiner
e75cabfe77 update: write cache file if anything has changed it
This fixes a bug introduced in 04db6870 where cachechanged for scan_apks()
was set only by the last call to scan_apk().
2017-07-03 10:02:51 +02:00
Hans-Christoph Steiner
5f0817d7bf tests: make sure apkcache gets created 2017-07-03 10:02:51 +02:00
Hans-Christoph Steiner
39fd664778 update: create 'archive/' if needed when moving APKs
Normally, just 'repo/' is created by default, e.g. `fdroid init`. If APKs
are dumped into 'repo/', then have invalid signatures, then they'll be
automatically moved to 'archive/', which therefore needs to exist.
2017-07-03 10:02:51 +02:00
Hans-Christoph Steiner
746d4bd4cf update: allow_disabled_algorithms option to keep MD5 sigs in repo
The new policy is to move APKs with invalid signatures to the archive,
and only add those APKs to the archive's index if they have valid MD5
signatures.

closes #323
closes #292
2017-07-03 10:02:51 +02:00
Hans-Christoph Steiner
b7260ea854 update: allow deprecated signatures only in the archive
In April 2017, Oracle's jarsigner and Google's apksigner both switched to
considering any APK signature that uses MD5 as unsigned.  Any old build
is likely to have a MD5 signature.  This sets up the archive as the only
place where these "disabled algorithms" are allowed in the repo, and
marks any APK signed by a "disabled algorithm" as having a "known
vulnerability"

This also now automatically moves APKs with invalid signatures to the
archive section.

#323
2017-06-28 23:53:42 +02:00
Hans-Christoph Steiner
0047f19d56 update: move duplicated code into move_apk_between_sections() 2017-06-28 23:53:42 +02:00
Hans-Christoph Steiner
e1492148fa fix "Archive Policy:" field, APKs can move in/out of archive
The original logic was checking keepversions against the len() of ALL the
APKs in the repo/archive.  The correct thing is to check against the
number of APKs available for the given packageName/appid.

closes #166
2017-06-28 23:53:42 +02:00
Hans-Christoph Steiner
be2926ffc8 tests: test moving files to and from the archive
#166
2017-06-28 23:53:42 +02:00
Hans-Christoph Steiner
0d3f4547a9 Merge branch 'random-small-fixes' into 'master'
Random small fixes

Closes #222

See merge request !292
2017-06-28 21:53:18 +00:00
Hans-Christoph Steiner
7de6e4dfed init: update docs links for next steps 2017-06-28 23:14:57 +02:00
Hans-Christoph Steiner
214c9f7a2b lint: check file extension for metadata
This helps keep fdroiddata clean, on @krt's request.

closes #222
2017-06-28 23:14:57 +02:00
Hans-Christoph Steiner
4b99a505b3 locale: fix broken source string 2017-06-28 23:14:57 +02:00
Hans-Christoph Steiner
9886e539d3 scan APKs for signs of "Master Key" exploit
This exploit is old, and was fixed in 4.4.  But it was easy to exploit,
so it is still worth scanning for it.  It is also easy to scan for, since
valid APKs should not have files with duplicate names.  In theory, this
could look for duplicate file names for any file, but this limits the
false positives by only checking names of files related to executing code.

fdroidclient#40
2017-06-28 23:14:57 +02:00
Hans-Christoph Steiner
5fd014a852 update: move btlog import since btlog.py requires python3-git
To keep the dependencies limited to where they are needed.
2017-06-28 23:14:57 +02:00
Hans-Christoph Steiner
7f9f47496f gitlab-ci: fix metadata_v0 test to run on the right commits
Checking out master will often mean its testing the wrong commit, since
merge requests rarely are in master.
2017-06-28 23:14:57 +02:00
Hans-Christoph Steiner
6e72ffb043 gitlab-ci: fix metadata_v0 test for new buildozer build flag
Just remove it, since 0.7.0 does not know about that build flag.
2017-06-22 16:33:11 +02:00
Hans-Christoph Steiner
8b09ef46a0 Merge branch 'buildozer-build' into 'master'
Added a method to build python/kivy projects using buildozer.

See merge request !290
2017-06-21 12:04:45 +00:00
lb@lb520
bab8f8ea02 Test metadata files updated. 2017-06-21 08:26:52 +02:00
Hans-Christoph Steiner
5e7e17e800 gitlab-ci: properly quote colons 2017-06-20 20:27:23 +02:00
Hans-Christoph Steiner
4939b8a530 gitlab-ci: ignore blank Description in metadata_v0 test
We'll eventually be moving to having the internal representation use a
'' or None when there is no Description, so no use in fixing this.
2017-06-20 18:15:12 +02:00
lb@lb520
0672a6f1ec build.py corrected 2017-06-20 15:56:15 +02:00
lb@lb520
230286786f Added a method to build python/kivy projects using buildozer. 2017-06-20 14:16:31 +02:00
Hans-Christoph Steiner
26a4e33a7a Merge branch 'vagrantfile-box' into 'master'
Copy initial buildserver CPU/memory configuration to final box Vagrantfile

See merge request !279
2017-06-19 09:36:21 +00:00
Hans-Christoph Steiner
0f6dc31bce Merge branch 'gradle4' into 'master'
makebs: add gradle4.0

See merge request !289
2017-06-17 11:01:39 +00:00
Hans-Christoph Steiner
ee1b7ccea2 Merge branch 'googlemaven' into 'master'
Add Google's maven repo to allowed list

See merge request !275
2017-06-17 11:00:57 +00:00
Boris Kraut
1b88f886e7 makebs: add gradle4.0 2017-06-17 01:39:44 +02:00
Hans-Christoph Steiner
790c881000 set gettext template to UTF-8 2017-06-16 22:21:08 +02:00
Hans-Christoph Steiner
0dff73f29a move translation files to 'locale' like Repomaker does
The django gettext layout seems to the most standard approach with
Python projects.
2017-06-16 22:10:48 +02:00
Hans-Christoph Steiner
ca62f9c0b8 jenkins-build: point to new dir named after the script
This changes out the arbitrary names used before.
2017-06-15 17:21:35 +02:00
Hans-Christoph Steiner
55980a45cc ignore test files from d06f05e9c8 2017-06-15 17:21:35 +02:00
Hans-Christoph Steiner
7d6d827e0b jenkins-build: git clean before running fdroid cli tests
Otherwise, `fdroid init` will fail since the old repo files are present.
2017-06-15 17:21:35 +02:00
Hans-Christoph Steiner
d06f05e9c8 update: do not crash on screenshots without texts/graphics
`fdroid update` crashed for apps that only had screenshots but no graphics
or localized texts because destdir was not being set in that case.  This
fixes that and adds a test case.

closes #320
!286
2017-06-12 21:25:54 +02:00
Hans-Christoph Steiner
e1d316a4bc Merge branch 'fix' into 'master'
fix #320 due to unintentionally reusing the same variable name

Closes #320

See merge request !286
2017-06-12 19:26:04 +00:00
Rui Zhao (renyuneyun)
b5b463a5ec fix !320 due to unintentionally reusing the same variable name 2017-06-12 18:09:00 +01:00
Boris Kraut
03ef37cbde Merge branch 'master' into 'master'
makebuildserver: bump tools, add api26 and build-tools 26

See merge request !284
2017-06-10 09:55:47 +00:00
Sergey Eremin
eb64b0889d makebuildserver: bump tools, add api26 and build-tools 26 2017-06-09 20:35:04 +03:00
Boris Kraut
c687a5c65d Merge branch 'fdroiddata-localization-fixes' into 'master'
fdroiddata localization fixes

See merge request !283
2017-06-08 01:54:34 +00:00
Hans-Christoph Steiner
30ff777897 rewritemeta: do not include empty Summary: or Description:
Since the Summary: and Description: in the metadata file has the highest
priority of all the localized texts, adding blank versions means that
apps would always have blank Summary and Description even if the app has
those fields in the localized sections of fdroiddata and/or in the app's
source repo itself.

fdroiddata!2262
2017-06-07 22:10:25 +02:00
Hans-Christoph Steiner
18c3bfa5fb lint can no longer properly detect unset Summary/Description
Since the Summary/Description can now be set in the app's source code, or
in fdroiddata/metadata/<packageName>/<locale>/*.txt, this lint check is
no longer valid.  It is important to check whether these texts are empty,
but it'll require some thinking about how and where to best to that.
`fdroid update` will have access to all that data, but perhaps at that
point it is too late.

Also, the current text prioritization puts Summary/Description in the
.txt/.yml file at the highest priority, overriding every other copy,
including in fdroiddata/metadata/<packageName>/<locale> and in the app's
source code.
2017-06-07 22:10:25 +02:00
Hans-Christoph Steiner
37c3bf304c support fdroid names in filenames for localized texts
* "full description" is just "description"
* "short description" is "summary"
* "title" is "name"
2017-06-07 22:10:25 +02:00
Hans-Christoph Steiner
43d3a9c7a5 support fastlane simplified metadata dir
Running `fastlane init` gave me a much simpler directory layout, which
turns out to be the same as what is used for fdroiddata.
2017-06-07 22:10:25 +02:00
Hans-Christoph Steiner
e36864e4f0 Merge branch 'check-vmx-libvirt' into 'master'
Use Qemu instead of KVM when we don't have VMX/SVM

See merge request !282
2017-06-07 18:19:40 +00:00
Torsten Grote
061093d014 Merge branch 'localization-template' into 'master'
add core help strings to gettext source file

See merge request !281
2017-06-02 14:22:26 +00:00
Torsten Grote
78d4603090 Merge branch 'duplicate-apk-processing' into 'master'
APK processing for duplicate versionCodes and renaming

See merge request !280
2017-06-02 14:20:20 +00:00
Hans-Christoph Steiner
75f29dd690 add core help strings to gettext source file
This will allow us to put these up on Weblate and have people start
translating them.  Then we can figure out how to actually include and
deploy the translations later.  It is unfortunately non-trivial, since
we have to manually figure out the install paths.
2017-06-02 14:06:17 +02:00
Willem Mulder
60bb34ef1a Use Qemu instead of KVM when we don't have VMX/SVM 2017-06-02 11:37:15 +02:00
Hans-Christoph Steiner
8776221988 check signature and OpenSSL after APK has proven valid
If working with a random grabbag of APKs, there can be all sorts of
issues like corrupt entries in the ZIP, bad signatures, signatures that
are invalid since they use MD5, etc.  Moving these two checks later means
that the APKs can be renamed still.

This does change how common.getsig() works.  For years, it returned
None if the signature check failed.  Now that I've started working
with giant APK collections gathered from the wild, I can see that
`fdroid update` needs to be able to first index what's there, then
make decisions based on that information.  So that means separating
the getsig() fingerprint fetching from the APK signature verification.

This is not hugely security sensitive, since the APKs still have to
get past the Android checks, e.g. update signature checks.  Plus the
APK hash is already included in the signed index.
2017-06-01 17:45:29 +02:00
Hans-Christoph Steiner
372c8b418d strip file extension from generated name for non-APKs
With a generic file, the file name is the only guaranteed name metadata
field.  So if the name is not specified in the metadata, then the name
is set to the filename.  This changes that so that the file extension is
stripped from that generated name.
2017-06-01 16:01:05 +02:00
Hans-Christoph Steiner
6105f8a184 use var naming scheme in KnownApks (apk --> apkName)
Everywhere else, the file name of the APK is called apkName.
2017-06-01 16:01:05 +02:00
Hans-Christoph Steiner
9471bf2731 regexs for getting packageName and versionCode from filenames
This is useful for parsing APK files, which can include packageName,
versionCode, and optionally 7 char signing key ID (i.e. <sig>).
This also can set the packageName and versionCoe for non APK files, so
that it is easy to assign them to metadata files, and to allow for
upgrades by setting the versionCode in the filename.
2017-06-01 16:01:05 +02:00
Hans-Christoph Steiner
ceac6d25cb index.xml cannot handle APKs with the same packageName/versionCode
Really, it is the fdroidclient parser of index.xml that fails, due to the
hardcoded expectation that there will only ever be a single APK for any
given versionCode.  We keep index.xml backwards compatible for old
clients, and use index-v1.json to support new things.  Having multiple
APKs that have the same packageName and versionCode will break the client
v0.103.* since that version uses index-v1.json, but still has the hard-
coded database parsing stuff.

#153
2017-06-01 16:01:05 +02:00
Hans-Christoph Steiner
4053f03d77 update: add --rename-apks to force APK filenames to fdroid standard
uses the standard package.name_123.apk.  If that exists, it appends the
shasum.  If that exists, then its a duplicate, so its deleted. This should
help @SergeWinters with his 12,000 APKs.
2017-06-01 16:01:05 +02:00
Andrew Patrikalakis
5a0c201fab Copy initial buildserver CPU/memory configuration to final box Vagrantfile 2017-06-01 09:53:33 -04:00
Hans-Christoph Steiner
0f4cbc7224 allow APKs with same packageName/versionCode but different signer
There are many APKs out in the wild that claim to be the same app and
version and each other, but they are signed by different keys.  fdroid
should be able to index these, and work with them.   This supports having
the developer's signature via reproducible builds, random collections of
APKs like repomaker, etc.
2017-06-01 10:30:41 +02:00
Hans-Christoph Steiner
2c6945dac7 gitlab-ci: add index v0 metadata parsing test
This test is very handy for making sure the old index.xml v0 format does
not inadvertantly change.
2017-05-30 21:13:49 +02:00
Hans-Christoph Steiner
afac1b2efd add basic test for fdroid scanner
There was no test coverage at all for this command, this is a very basic
test that should prevent things like 2626858450
2017-05-30 21:13:49 +02:00
Hans-Christoph Steiner
63fd20fff0 Merge branch 'master' into 'master'
Add support for the new Bitbucket look

See merge request !278
2017-05-30 19:08:28 +00:00
Alexey Krasilnikov
a3a34cdbd3 Add support for the new Bitbucket look 2017-05-30 18:33:55 +03:00
Hans-Christoph Steiner
7a302cfb75 Merge branch 'makebs' into 'master'
makebs: update to ndk-r14b and build-tools-25.0.3

See merge request !277
2017-05-29 08:01:32 +00:00
Boris Kraut
1558d2ba91 Merge branch 'lint-for-newness' into 'master'
`fdroid lint` support for SPDX, l18n, dev signatures

Closes #234

See merge request !269
2017-05-26 21:38:35 +00:00
Boris Kraut
a57bff78d4 makebs: update to ndk-r14b and build-tools-25.0.3 2017-05-26 23:21:20 +02:00
Hans-Christoph Steiner
114d5dc8c6 make tests pass new lint rules 2017-05-26 21:03:38 +02:00
Hans-Christoph Steiner
4570d9dc8a lint: use only license tags from https://spdx.org/license-list
closes #234
2017-05-26 21:03:38 +02:00
Hans-Christoph Steiner
1178d032f3 lint: support new per-package subdirs for l18n and dev signatures
Graphics and localized text can now be stored in the package folders,
always in a folder that is named for the locale.  The upstream developer
signature is also now stored, so that the upstream APK can be reproduced
even if they remove their APKs.

#291
fdroiddata!2229
fdroiddata!2224
fdroidclient#15
fdroidserver#174
2017-05-26 21:03:38 +02:00
Hans-Christoph Steiner
3dbd74262f lint: add popular URL shorteners to the banned list 2017-05-26 21:03:38 +02:00
Boris Kraut
c056b95fd5 scanner: allow google maven 2017-05-26 15:51:38 +02:00
Hans-Christoph Steiner
5a90443b0b Merge branch 'master' into 'master'
Don't pass root_dir to scan_source

See merge request !276
2017-05-25 18:49:14 +00:00
mimi89999
2626858450
Don't pass root_dir to scan_source 2017-05-25 20:11:14 +02:00
Torsten Grote
fe2d65df73 Merge branch 'modernize-pylint' into 'master'
modernize pylint

See merge request !252
2017-05-25 14:00:36 +00:00
Hans-Christoph Steiner
39d25da3e9 Merge branch 'linphone-packages' into 'master'
Add required packages for linphone 3.1.0 build

See merge request !274
2017-05-24 10:57:21 +00:00
Andrew Patrikalakis
61553a8e93 Add required packages for linphone 3.1.0 build 2017-05-23 21:20:10 -07:00
Hans-Christoph Steiner
9ad457c16f fix pylink 'dict' has no member 'keystore' 2017-05-23 22:34:16 +02:00
Hans-Christoph Steiner
17cd07f1a7 fix pylint unused-argument 2017-05-23 22:34:16 +02:00
Hans-Christoph Steiner
12c80f9062 update outdated pylint setup
The logilab-astng lib is dead, replaced by python-astroid.  The crazy astng
plugin is no longer needed also.

#281
2017-05-23 22:34:16 +02:00
Hans-Christoph Steiner
361ce5ca41 Merge branch 'python-vagrant-copy-caches' into 'master'
complete staging buildserver setup on jenkins.debian.net using nested KVM instances

See merge request !176
2017-05-23 18:38:57 +00:00
Hans-Christoph Steiner
a01e302cde makebuildserver: make config['domain'] local var where its needed 2017-05-23 20:08:29 +02:00
Michael Pöhn
c8234919df refactored vm related code from build.py to vmtools.py 2017-05-23 20:08:29 +02:00
Michael Pöhn
fc660048eb removed unused buildserver code 2017-05-23 20:08:08 +02:00
Hans-Christoph Steiner
9ef936c21a leave VirtualBox vagrant package as it was originally
We only need Vagrantfile hacks for KVM.
2017-05-23 20:06:47 +02:00
Michael Pöhn
8f1fabfed6 restart builder vm when ssh connection fails 2017-05-23 20:06:47 +02:00
Hans-Christoph Steiner
6106b962a2 build: delete bad builder/ symlinks
If builder/ is a symlink but is not detected as a directory by
os.path.isdir(), then it is a broken symlink.
2017-05-23 20:06:06 +02:00
Michael Pöhn
4546929d7f wait a sec after suspending 2017-05-23 20:06:06 +02:00
Michael Pöhn
48159f005a reset buildserver vm if vagrant uuid not present 2017-05-23 20:06:06 +02:00
Michael Pöhn
510efaa024 makebuildserver vbox logmessage fix 2017-05-23 20:06:06 +02:00
Michael Pöhn
0ec5422952 use uuid for vbox snapshots again 2017-05-23 20:06:06 +02:00
Michael Pöhn
358b00d7aa removed useless vm validity check; attempted to fix vbox support 2017-05-23 20:06:06 +02:00
Michael Pöhn
1b1d6b7d96 deal with outdated box images in libvirt storage pool 2017-05-23 20:06:06 +02:00
Michael Pöhn
b01d48a4fd makebuildserver deal with apt cache lock 2017-05-23 20:06:06 +02:00
Hans-Christoph Steiner
acf25a3999 build server use up instead or resume; logging 2017-05-23 20:06:06 +02:00
Hans-Christoph Steiner
c749c68486 test script for vmtools 2017-05-23 20:06:06 +02:00
Michael Pöhn
3187d2cbcf revised build server creation 2017-05-23 20:06:06 +02:00
Michael Pöhn
8abd3f1cbc auto-lookup vm provider based on available executables; more fault tolerant vagrant package 2017-05-23 20:06:06 +02:00
Hans-Christoph Steiner
bba6b8ab0a fixed reading libvirt box image size 2017-05-23 20:06:06 +02:00
Michael Pöhn
1bd51966b8 vmtools debug logging for check_output calls 2017-05-23 20:06:06 +02:00
Hans-Christoph Steiner
5dbcd0e9bd added box handling to vmtools 2017-05-23 20:06:06 +02:00
Hans-Christoph Steiner
01b6473823 refactored kvm_package to vmtools 2017-05-23 20:06:06 +02:00
Hans-Christoph Steiner
5580a685db added makebuildserver option for keeping vagrant box
This is very useful for debugging this process, and also for people
who might want to keep a working copy of the box.
2017-05-23 20:06:06 +02:00
Michael Pöhn
d180aa2658 fix virsh destroy parameters 2017-05-23 20:06:06 +02:00
Michael Pöhn
4347c10d9d use configured vm provider in when calling destroy in makebuildserver 2017-05-23 20:06:06 +02:00
Michael Pöhn
a414aa00ff use overhauled mv destroy code in build.py 2017-05-23 20:06:06 +02:00
Michael Pöhn
92fada803e overhauled and moved destroying builder vm to vmtools.py 2017-05-23 20:04:08 +02:00
Michael Pöhn
fb03e17849 fdroid build: added sleep after destroy/undefine 2017-05-23 20:04:08 +02:00
Michael Pöhn
718d01dea2 makebuildserver added sleep after destroy/undefine 2017-05-23 20:04:08 +02:00
Michael Pöhn
3c4b1dec84 makebuildserver more robust codepath for vagrant destroy 2017-05-23 20:04:08 +02:00
Michael Pöhn
7e8f7c65bc makebuildserver added failsafe when destroy vagrant vm 2017-05-23 20:04:08 +02:00
Michael Pöhn
70a827d59a makebuildserver use virsh instead of libvirt for forcing domain off 2017-05-23 20:04:08 +02:00
Michael Pöhn
8e5446068b makebuildserver debug logging when initial provisioning fails 2017-05-23 20:04:08 +02:00
Michael Pöhn
16b609215e overhauled makebuildserver libvirt vm cleanup 2017-05-23 20:04:08 +02:00
Michael Pöhn
440509cf8a makebuildserver debugging log details 2017-05-23 20:04:08 +02:00
Michael Pöhn
2aa5523011 makebuildserver prune gloabal vagrant status when purging broken VMs 2017-05-23 20:04:08 +02:00
Michael Pöhn
8cfd3ca770 delete .vagrant dir when cleaning up buildserver vm 2017-05-23 20:04:08 +02:00
Michael Pöhn
437ff7c3f0 jenkins makebuildserver fail if vagrant box was not created 2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
2993674aa8 calculate correct size for buildserver-box in makebuildserver
https://gitlab.com/fdroid/fdroidserver/issues/238#note_24000153
"Our hard-coded image size meta-data (1000) is for some interpreted as less
than the size of the box-image by my kvm setup. This makes grub/initrd
refuse to boot. So I've changed the metadata size to 9999 which resulted in
an actually booting vm. I can log in on the builder-vm via virt-manager
and virsh.
2017-05-23 20:04:08 +02:00
Michael Pöhn
413c3836d5 auto-reset broken builder vm 2017-05-23 20:04:08 +02:00
Michael Pöhn
ce3c959ce5 scan vm provider again after re-creating builder vm 2017-05-23 20:04:08 +02:00
Michael Pöhn
c54e0565d7 added some debug listings to jenkins makebuildserver script 2017-05-23 20:04:08 +02:00
Michael Pöhn
34cddd3be8 delete associated libvirt domain/image when destroying builder vm 2017-05-23 20:04:08 +02:00
Michael Pöhn
fad98eeb7f build: fixed kvm snapshot support; makebuildserver: setup kvm ssh credentials 2017-05-23 20:04:08 +02:00
Michael Pöhn
fa2d44ee94 added libvirt vm-provider support to build.py 2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
69e4b91d3f makebuildserver: package up KVM VM as a vagrant box
`vagrant package` does not work with KVM, so we have to hack together our
own until someone implements it (suppose we should do it). This is a hacked
up version based on:
d7d440ea8f/tools/create_box.sh

#238
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
988ac21e7f buildserver: make --clean destroy reliably
This prevents v.destroy() from running if Vagrantfile.yaml does not exist,
since that is required for vagrant to run: is the core config including the
name of the box, etc.  Otherwise, it would exit with an error.

This also does complete cleanup when using libvirt.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
299ed82a88 buildserver: consolidate boxfile export code into one block
This is just for clarity, and moving more code into the main() function.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
daade7656a buildserver: add copy_caches_from_host config option
For people using slow, expensive, and/or flaky internet, liberal use of
caching can make a huge difference.  The restricted environment of the
gpjenkins box has been a good test environment for this (Tor-only,
whitelist of allowed IPs to visit, home internet connection).
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
4cde71552f buildserver: run_via_vagrant_ssh() to run cmds via python-vagrant
This moves the last vagrant call in a subprocess.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
6464ec55b7 buildserver: move code into main() method to always stop thread
By running the whole program in a main() function, it can be wrapped in
try/finally in order to stop the background display thread.  This is also
done in ./fdroid, its standard practice for Python CLI utilities.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
675500ad88 buildserver: display verbose logging in a background tail 2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
4b03c3d42d buildserver: replace custom code with python-vagrant
I ran into some annoying issues with UTF-8 output in the vagrant logs, and
it was hard to solve.  So I switched to using python-vagrant, which handles
it all for us.  Its been around since 2012, has a number of contributors,
and is still actively maintained, so it seems like a good bet. I also
packaged it for Debian, including a backport in jessie-backports.

On Debian/jessie, do `apt-get install python3-vagrant/jessie-backports`
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
7ef0d5dfd8 include class like UNIX tail -f for displaying logs
This allows fdroidserver to easily log activity while displaying it at the
same time.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
c62e3fd0cc move bulk of reproducible_fdroid_build_apps.sh to jenkins-build
This lets us quickly and frequently test things.
2017-05-23 20:04:08 +02:00
Hans-Christoph Steiner
1710428de1 Merge branch 'exceptions' into 'master'
Replace sys.exit() in non-main functions by exceptions

See merge request !273
2017-05-22 20:50:54 +00:00
Torsten Grote
1fcd8e63a3
Replace sys.exit() in non-main functions by exceptions
Also move all exceptions into one module
2017-05-22 16:51:11 -03:00
Michael Pöhn
a8420817cb fix calling vagrant global-status 2017-05-22 17:40:19 +02:00
Michael Pöhn
592a292847 use stable version of priv ext instead of latest when testing in makebuildserver 2017-05-22 16:04:30 +02:00
Hans-Christoph Steiner
84dc415837 jenkins-build-makebuildserver: retry git fetch until it works
It seems that gitlab gives 500 errors a bit too frequently, so keep
retrying the `git pull` until it works so that there isn't a error email
sent out over failed pulls.
2017-05-22 16:04:30 +02:00
Hans-Christoph Steiner
780b0e9502 Merge branch 'indexing-fixes' into 'master'
indexing fixes

Closes #303

See merge request !270
2017-05-22 09:32:39 +00:00
Hans-Christoph Steiner
0345d2c79f update: find aapt when it is not in the PATH
This is some very messy logic built up since 2010.  This will all go away
once we have a python3 version of androguard available.

The removed imports and `dir(APK)` is to silence pyflakes

closes #303
2017-05-18 17:21:05 +02:00
Hans-Christoph Steiner
c348186ad6 update: fix fastlane scraping, it uses a subdir called 'images'
https://commons.wikimedia.org/wiki/File:GetChromium_FeatureGraphic_1024x500.png
2017-05-18 16:13:17 +02:00
Hans-Christoph Steiner
77a65be9db update: skip packages without metadata in index V1
If a package does not have a matching "app" metadata file, then it should
not be added to the index. index V0 already does this properly.
2017-05-18 16:13:17 +02:00
Hans-Christoph Steiner
a17b95a860 update: improved logging
the aapt warnings were very verbose, and the other now includes the
file name type for screenshots, rather than the filename twice.
2017-05-18 16:13:17 +02:00
Hans-Christoph Steiner
5d705452f5 update: allow repo files to use _ in the file names
_ is a valid character for Java package names, so it should also work in
the repo file naming scheme. This makes it so it only splits the file
name based on the last _.
2017-05-18 16:13:17 +02:00
Hans-Christoph Steiner
84bb41a91f metadata: switch from deprecated cgi.escape to html.escape
cgi.escape is deprecated in Python 3.x and has security issues:
https://bugs.python.org/issue26398

html.escape() differs from cgi.escape() by its defaults to quote=True:

 s = html.escape( """& < " ' >""" )   # s = '&amp; &lt; &quot; &#x27; &gt;'
2017-05-18 16:13:17 +02:00
Torsten Grote
ee57285817 Merge branch 'cdn-git-mirror' into 'master'
Fix double pushing on remote git-mirror

See merge request !272
2017-05-17 22:47:56 +00:00
thez3ro
ec30d73f13
fix double pushing on remote 2017-05-17 23:08:25 +02:00
Hans-Christoph Steiner
87066bc1d5 Merge branch 'cdn-git-mirror' into 'master'
Use Gitlab Pages as mirror instead of Raw

Closes #293

See merge request !271
2017-05-17 20:29:33 +00:00
thez3ro
846f5422fd
Use gitlab pages as mirror 2017-05-17 21:08:34 +02:00
Hans-Christoph Steiner
b144029517 Merge branch 'hg39' into 'master'
buildserver: use hg 3.9 from backports

See merge request !266
2017-05-10 17:22:15 +00:00
Boris Kraut
fec2f677bf buildserver: use hg 3.9 from backports 2017-05-10 18:55:38 +02:00
Hans-Christoph Steiner
eb49c9e8f3 Merge branch 'master' into 'master'
replace aapt with androguard

See merge request !234
2017-05-05 09:10:32 +00:00
Michael Pöhn
ff3baefbed Merge branch 'yaml' into 'master'
basic support for YAMLin `fdroid rewritemeta`

Closes #285 and #169

See merge request !260
2017-05-05 08:35:44 +00:00
thez3ro
06598ae406
use androguard if aapt isn't found 2017-05-04 23:35:17 +02:00
Hans-Christoph Steiner
9607cdb621 Merge branch 'download-index-etag' into 'master'
Support ETag when downloading repository index

See merge request !264
2017-05-02 19:12:41 +00:00
Torsten Grote
8d424f19ec
Support ETag when downloading repository index 2017-05-02 15:37:02 -03:00
Hans-Christoph Steiner
4f758f5c78 fix white space trimming when writing .txt format
Some of the internal data format changes somehow broke the white space
trimming when writing out .txt.

closes #285
2017-05-02 14:55:23 +02:00
Hans-Christoph Steiner
0d00705aed use pyyaml for rewriting .yml metadata files
This replaces the broken, custom code with the standard YAML lib.

In rewritemeta, do not call app.metadatapath since it will be deleted when
the dict is cleaned up for outputing. metadatapath is only used internally
and should not be written out.

closes #169
refs #290
2017-05-02 14:55:23 +02:00
Michael Pöhn
e7e97654b1 Merge branch 'libvirt-support' into 'master'
Check for libvirt specific shutoff message

See merge request !262
2017-05-02 07:39:51 +00:00
Torsten Grote
f758b5c205 Merge branch 'pre-0.103-alpha4-rename' into 'master'
downcase all 'localized' key names to match the rest of index-v1

See merge request !261
2017-05-01 17:59:59 +00:00
Andrew Patrikalakis
9ee96117d8 Check for libvirt specific shutoff message 2017-04-29 18:38:44 -07:00
Hans-Christoph Steiner
cdef5bcd92 downcase all 'localized' key names to match the rest of index-v1
This is a little omission.  keys that are used in metadata/*.yml all start
with an UpperCase letter, but in fdroidserver, index-v1.json, and
fdroidclient, it is all camelCase with lowercase first letter. The keys
from the 'localized' section are currently never in metadata/*.yml, so
these keys never get downcase.  This change will break fdroidclient
versions that do not also have this change, but since we're in alpha, that
should be fine.

If support for a 'localized' section is added to metadata/*.yml, then the
keys there should probably be UpperCase CamelCase to match the other keys.
2017-04-27 21:12:49 +02:00
Hans-Christoph Steiner
9f9f0d1a16 Merge branch 'git-identity-file' into 'master'
Make git server mirror upload honor config['identity_file'] option

See merge request !259
2017-04-24 21:24:07 +00:00
Torsten Grote
c137231d8b
Make git server mirror upload honor config['identity_file'] option 2017-04-24 16:22:33 -03:00
Hans-Christoph Steiner
591bfc4474 Merge branch '148-no-verify-logs-on-split-build-publish-infrastructure' into 'master'
compare apk with Binaries from metadata right after building

Closes #148

See merge request !247
2017-04-24 18:50:58 +00:00
Michael Pöhn
fc4e40255d remove build output when not reproducible 2017-04-23 11:33:51 +02:00
Michael Pöhn
5b7209d882 unified method for naming build output 2017-04-22 12:04:32 +02:00
Michael Pöhn
62af9b8e3d check meld config for manual apk diffs 2017-04-22 10:48:50 +02:00
Michael Pöhn
4044e06e7b use verify_apks for checking build output 2017-04-22 10:48:50 +02:00
Michael Pöhn
f4a7c19043 fix java architecture in buildserver config 2017-04-22 10:48:50 +02:00
Michael Pöhn
a3e7eacc9b compare apk with Binaries from metadata right after building 2017-04-22 10:48:50 +02:00
Hans-Christoph Steiner
1c25c516aa Merge branch '273-invalid-apk-gets-through-to-publish-stage' into 'master'
throw proper error when download of apks fail

Closes #273

See merge request !258
2017-04-21 07:56:55 +00:00
Michael Pöhn
abe04272b1 throw proper error when download of apks fail 2017-04-20 17:48:38 +02:00
Daniel Martí
c7ae6bc826 Merge branch 'gradleplugin' into 'master'
bs: use only prefixes for gradle kv pairs

See merge request !257
2017-04-19 09:27:42 +00:00
Hans-Christoph Steiner
650b3c95b4 Merge branch 'full-app-store-metadata-scraping' into 'master'
Full app store metadata scraping

Closes #204 and #143

See merge request !253
2017-04-19 08:25:56 +00:00
Hans-Christoph Steiner
82095c7a9a add basic test for Triple-T Gradle Play Publisher scraping 2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
fd21d68bc1 update: fix glob to actually match all locales
glob != regexp, [A-Z-.@] means one of those chars is required in that
position, so the glob pattern was requiring a least 3 chars.  Locales are
usually just two lower case letters, e.g. vi, de, ar.
2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
cb49f57c06 support "Author Web Site" as metadata field
Fastlane Supply, Triple-T Gradle Play Publisher, and many app stores
include the possibility to specify a website for the author, as distinct
from the website for the app.

closes #204
2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
18f949c62b include Author/Contact info from Triple-T Gradle Play Publisher
This is just the bare minimum, it adds it to the index, but AuthorPhone
and AuthorWebsite are not yet supported by fdroidclient.  AuthorName is.

#204
2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
9589d13ef2 update: include "What's New" texts when they are available
This uses the "What's New" entry for the CurrentVersionCode and includes it
as the current WhatsNew metadata for the App class.

Things like fastlane supply and Google Play support a "What's New" entry
per-APK, but fdroidclient does not current use anything but the current
version of this data.  Right now, it seems we probably only want to have
the latest WhatsNew in the index to save space.

In theory, we could make the WhatsNew data structure follow the structure
of fastlane/Play, but that would quite a bit of complexity for something
that might never be used.

fdroidclient#910
2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
822c2d3992 update: app store metadata from Triple-T gradle play publisher
Since f-droid.org has the source repos, `fdroid update` can just grab files
from the source repo.  This makes `fdroid update` use the metadata that is
laid out in the Triple-T gradle play publisher filesystem layout:

https://github.com/Triple-T/gradle-play-publisher#upload-images
https://github.com/Triple-T/gradle-play-publisher#play-store-metadata

closes #143
2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
89c480181c update: include localized app store metadata from fastlane
This includes all metadata from the app's source repo following the path
layout specified for the fastlane supply tool:
https://github.com/fastlane/fastlane/blob/1.109.0/supply/README.md#images-and-screenshots

refs #35
closes #143
2017-04-19 10:05:24 +02:00
Hans-Christoph Steiner
a7daec7c36 add char limits for text: Name=30, Video=256, WhatsNew=500
Since this info can come from automated sources, this prevents giant blobs
from being mistakenly stuck in these fields.  It also brings it inline with
the standard lengths other popular app stores use.

https://support.google.com/googleplay/android-developer/answer/113469?hl=en
https://stackoverflow.com/a/20276565
2017-04-19 10:05:24 +02:00
Boris Kraut
58900744ea bs: use only prefixes for gradle kv pairs 2017-04-18 23:36:01 +02:00
Hans-Christoph Steiner
ac26304bf4 Merge branch 'gradleplugin' into 'master'
bs: update gradle plugin/version pairs

See merge request !256
2017-04-18 19:35:11 +00:00
Boris Kraut
ebbea3f0d1 bs: update gradle plugin/version pairs 2017-04-18 19:42:52 +02:00
Hans-Christoph Steiner
0ffbff9aec Merge branch 'patch-1' into 'master'
Properly add gradle3.5

See merge request !255
2017-04-18 07:13:34 +00:00
Ruslan Boitsov
a6ec4ba363 Add gradle 3.5 to the list of available versions 2017-04-18 06:41:09 +00:00
Hans-Christoph Steiner
1d44a42774 Merge branch 'gradle35' into 'master'
makebs: add gradle 3.5

See merge request !254
2017-04-17 12:01:01 +00:00
Boris Kraut
10e91d1be2 makebs: add gradle 3.5 2017-04-15 15:08:13 +02:00
TheZ3ro
89b0dea2fa Merge branch 'support-new-features-with-offline' into 'master'
Support new features with offline signing

See merge request !250
2017-04-13 15:21:01 +00:00
Hans-Christoph Steiner
489b129dd8 PEP8 E305 expected 2 blank lines after class or function definition 2017-04-13 10:55:07 +02:00
Hans-Christoph Steiner
5d5e34005b Merge branch 'bs_dependency_pyasn1' into 'master'
provision missing pyasn1 dependency to build server

See merge request !251
2017-04-12 23:02:02 +00:00
Hans-Christoph Steiner
31d92367ed git mirror test requires git >= 2.3 2017-04-13 00:49:36 +02:00
Hans-Christoph Steiner
fcb0634eaa server: store virustotal JSON locally as reusable data cache
This helps with uploading faster when hitting the public API rating
limiting since it will not hit the API if there is already a matching
response on the local filesystem.  This also provides a source of data for
things like repomaker to diplay to users.
2017-04-13 00:49:36 +02:00
Michael Pöhn
82bc71fa6f provision missing pyasn1 dependency to build server 2017-04-13 00:44:53 +02:00
Hans-Christoph Steiner
d74d6160dd server: check virustotal has APK before uploading it
This restructures the virustotal uploading so that first checks whether
virustotal already has the file, and only if not does it upload it.  This
also handles the public API rate limiting, which returns an HTTP 204. This
will now try again until it succeeds, even when rate limited.   Instead of
just getting the list of files from the filesystem, this reads the index-v1
which also already has the SHA256 in there.  virustotal also uses SHA256 as
a unique ID for files.
2017-04-12 15:04:05 +02:00
Hans-Christoph Steiner
8dd9d63e8f server: show progress bar when pushing git mirrors
The git mirrors can be really slow to upload, so they need a progress bar.
2017-04-12 15:04:05 +02:00
Hans-Christoph Steiner
f94ef29271 server: prefer s3cmd over libcloud for syncing
libcloud has been flaky for years, but it is also widely available and is
more pythonic.  So this adds the option for using `s3cmd sync` if it is
available.  `s3cmd sync` acts like rsync for uploading to S3.  So this code
emulates the rsync uploading code in `fdroid server update`.
2017-04-12 15:04:05 +02:00
Hans-Christoph Steiner
17219d56f4 server: support git mirrors with the offline signing setup 2017-04-12 15:04:04 +02:00
Hans-Christoph Steiner
d3b9dbece9 server: rely on rsync to delete files from git-mirror
Instead of each time deleting the whole local git-mirror repo, and
recreating it, this just deletes the .git/ dir, then lets the rsync in
_local_sync() handle deleting anything that should no longer be in the repo.
2017-04-12 15:04:04 +02:00
Hans-Christoph Steiner
5cc15d0fa9 support git@gitlab.com: style URLs in servergitmirrors
This converts the git@gitlab.com SSH URLs to the proper HTTPS URLs that
fdroidclient can directly use.
2017-04-12 00:45:22 +02:00
Hans-Christoph Steiner
183ce9541b server: support btlog on offline signing setups
This is necessary to shuttle the binary transparency log from the offline
machine to the thumb drive, then from the thumb drive to the online box.
2017-04-12 00:45:22 +02:00
Hans-Christoph Steiner
f75b547795 server: remove unused --sync-from-local-copy-dir
This option was not hooked up at all, and does not make sense as a command
line argument.  It should just be a config.py item.  In that case, the
presence of config.py marks the current dir as a repo, so there is no
longer a need to test for a dir called repo/ as a safety.  This makes the
setup easier, since sync_from_localcopy() now creates repo/ for the user.
2017-04-12 00:45:22 +02:00
Hans-Christoph Steiner
0c19d4566d Merge branch 'elimitate-password-files' into 'master'
Eliminate the need for password files

See merge request !249
2017-04-11 21:37:46 +00:00
Torsten Grote
4d25113fa0
Eliminate the need for password files
The passwords are now passed as private environment variables to the
processes that need them.
2017-04-11 16:34:49 -03:00
Torsten Grote
cb942168d5 Merge branch 'nail-down-btlog-and-bugfix' into 'master'
Nail down btlog and key bugfix

See merge request !248
2017-04-10 21:21:52 +00:00
Hans-Christoph Steiner
299ba86948 server: git push for binary transparency in fdroid server update
Since `fdroid server update` is the place where all uploads to servers
happens, it makes sense to also handle the git push for the binary
transparency log here instead of `fdroid btlog`
2017-04-10 23:02:12 +02:00
Hans-Christoph Steiner
e3152e9ef0 simplify Android Observatory config
This just keeps the config key name simple and direct.
2017-04-10 23:02:12 +02:00
Hans-Christoph Steiner
f3b55ab0f0 fix mistake: lists use .append() not .add()
This was a mistake in 5ad3486741
2017-04-10 23:02:12 +02:00
Hans-Christoph Steiner
5020f70997 btlog: fix bug with first run, the etag variable needs to exist 2017-04-10 20:30:13 +02:00
Torsten Grote
4e4c6d9acf Merge branch 'morebintrans' into 'master'
`fdroid btlog` for anyone to setup a binary transparency log for any repo

See merge request !243
2017-04-05 12:45:40 +00:00
Torsten Grote
255addc53c Merge branch 'miscfixes' into 'master'
misc fixes

Closes #268

See merge request !245
2017-04-04 21:28:08 +00:00
Hans-Christoph Steiner
136d58dbae btlog: test with fdroid update without requiring ssh access
Yay git!  Just use a filesystem git remote instead of ssh.
2017-04-03 23:17:03 +02:00
Hans-Christoph Steiner
4b7084f779 btlog: if git remote is specified, push commits to that remote
This makes fdroid automatically push the new binary transparency commits if
there is a git_remote specified in either config.py or from a CLI arg.
2017-04-03 20:31:42 +02:00
Hans-Christoph Steiner
53b69f507e allow index.TestCase to work when run using any path 2017-04-03 20:24:21 +02:00
Hans-Christoph Steiner
40290fc5e0 move make_binary_transparency_log to btlog
This keeps the code more organized, and reduces the number of things that
are loaded for every command via common.
2017-04-03 20:24:21 +02:00
Hans-Christoph Steiner
896c6496b4 remove setting git name/email for binary transparency logs
The machine running the steps should include the git config, so that it is
specific to that machines.
2017-04-03 20:24:21 +02:00
Hans-Christoph Steiner
6f71465ec1 support pretty output in JSON and for binary transparency logs
This makes make_index_v1() support `fdroid update --pretty`, then also uses
pretty output for the binary transparency logs, so that the git history has
nice, readable diffs between commits.
2017-04-03 20:24:21 +02:00
Hans-Christoph Steiner
c591a4cd89 fdroid btlog external binary transparency logger
This complements the binary transparency logging that happens on the
server side !226.  Anyone can set up an efficient tracker of any
F-Droid repo which stores all index files that it sees.  It uses HEAD
requests and ETag checking to be as efficient as possible, so that
this can be automatically run at a frequent pace.
2017-04-03 20:24:21 +02:00
Hans-Christoph Steiner
eadcd13723 move make_binary_transparency_log to common for easy reuse 2017-04-03 20:24:21 +02:00
Hans-Christoph Steiner
e58ad330f4 encode filenames as bytes to handle all locale setups
This was failing on environments that did not have any LANG or LC_* locale
variables set.  This is a valid setup, and is common in headless setups, so
it needs to be handled.

This also adds a new pass of the test suite without the locale env vars set
so that this situation is also tests on gitlab-ci, not only gpjenkins.

The error this caused was:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-18: ordinal not in range(128)
2017-04-03 20:24:00 +02:00
Hans-Christoph Steiner
4d50ab9bad ignore cache on key name change, instead of crashing
In 6c2cf2ccdd, the names of some essential
data bits changed.  If those names are not in the tmp/apkcache, then
`fdroid update` shouldn't crash but instead just ignore that cache entry.
tmp/apkcache should be deleted since the metadata version was bumped, but
I guess that does not always happen.
2017-04-03 20:20:25 +02:00
Hans-Christoph Steiner
5ad3486741 make sure indexes are sorted to minimize diffs between copies
With the binary transparency log stored in git, it makes that more readable
and as small as possible if the index files are fully sorted.  That will
reduce the differences between two copies of an index file to a bare
minimum.

If in the future we implement some kind of binary diff transfer, this will
also help there.
2017-04-03 20:18:54 +02:00
Hans-Christoph Steiner
7d4176dd50 metadata: don't crash if metadata includes blank Categories list
If someone includes just 'Categories:', it shouldn't crash.
2017-04-03 20:18:54 +02:00
Hans-Christoph Steiner
baeae862ad buildserver: allow gradle to install new components
Google is making gradle automatically download Android SDK components that
are needed by the build, but not already present.  We need to support that
since it would be a lot of work to fight it.  Plus, since each build starts
from the fresh snapshot, it should not be such a big deal to let each
build install stuff during the process.

closes #268
2017-04-03 20:18:54 +02:00
Hans-Christoph Steiner
d6310ed52c Merge branch 'invalid-apk-fix' into 'master'
Fix bug when scanning invalid APKs and add a test for it

See merge request !246
2017-04-03 17:38:51 +00:00
Torsten Grote
8f6fa2955d
Fix bug when scanning invalid APKs and add a test for it 2017-04-03 13:07:49 -03:00
Hans-Christoph Steiner
2ba757e6c9 Merge branch 'index-parsing' into 'master'
Download and return repository index

See merge request !240
2017-04-03 16:04:35 +00:00
Hans-Christoph Steiner
159ca824b7 Merge branch 'local-install' into 'master'
Fix installs with pip --user

See merge request !244
2017-04-03 14:45:45 +00:00
Torsten Grote
6552c1fa49
Fix installs with pip --user 2017-04-03 09:55:20 -03:00
Torsten Grote
7c34dd96f4
Reduce code duplication
by re-using methods for extracting and verifying certificate
2017-04-03 09:23:06 -03:00
Torsten Grote
a23da47118
Add method for downloading (and verifying) a repository index
This includes some test cases to test the new code.
2017-04-03 09:02:07 -03:00
Hans-Christoph Steiner
d8ad1c78c2 Merge branch '265-fdroid-init-generates-double-entries-in-config-py' into 'master'
avoid duplicate value assignments in config files

Closes #265

See merge request !241
2017-04-03 10:13:20 +00:00
Michael Pöhn
8b51e40d63 avoid duplicate value assignments when updating config files 2017-04-02 12:08:01 +02:00
Hans-Christoph Steiner
a6b3ffeeea Merge branch 'move-index-methods' into 'master'
Move index methods into dedicated modules

See merge request !239
2017-03-31 17:42:22 +00:00
Torsten Grote
389fd7e6c9
Re-use config and options from common module in index 2017-03-31 11:00:49 -03:00
Torsten Grote
f9321f6032
Move index related methods to new index module 2017-03-29 13:10:04 -03:00
Torsten Grote
9f765ed6f7
Move index signing methods into signindex.py 2017-03-29 12:11:40 -03:00
Hans-Christoph Steiner
256ef003fc Merge branch 'patch-1' into 'master'
Update support repository.

See merge request !238
2017-03-29 14:56:37 +00:00
Jan Christian Grünhage
f637b461f0 Update support repository. 2017-03-29 10:33:38 +00:00
Hans-Christoph Steiner
8f96c9da3d Merge branch 'smaller-methods' into 'master'
Factor out code into smaller methods to be used by repomaker

See merge request !236
2017-03-27 19:59:51 +00:00
Hans-Christoph Steiner
c3492ab153 Merge branch 'notabug' into 'master'
import: add notabug.org, auto-detect gradle, add options for license and categories

See merge request !237
2017-03-27 19:55:44 +00:00
Hans-Christoph Steiner
916e8eb108 Merge branch 'build_tools_log' into 'master'
post correct build tool versions to wiki

Closes #267

See merge request !235
2017-03-27 19:54:48 +00:00
Hans-Christoph Steiner
7f08fad2c6 Merge branch 'sign-and-verify-update' into 'master'
sign and verify update

See merge request !230
2017-03-27 19:48:36 +00:00
Boris Kraut
13b276e02f import: add option to specify license and categories, auto-detect build.gradle 2017-03-26 19:00:03 +02:00
Boris Kraut
39f7429c9b import: add notabug.org 2017-03-26 18:05:37 +02:00
Torsten Grote
c9b76eb808
Return public key and fingerprint after generating repo signing key 2017-03-22 15:53:20 -03:00
Torsten Grote
c484dc33be
Factor out code from update.main() to individual functions 2017-03-22 15:17:04 -03:00
Michael Pöhn
843595eb33 moved version android tools version log header to corresponding function 2017-03-22 14:56:26 +01:00
Michael Pöhn
0fda23ef80 fix local var name overloading when iterating build flavours 2017-03-22 14:20:54 +01:00
Michael Pöhn
c15f02ed68 fix exception handling in dscanner and update.py 2017-03-22 14:07:54 +01:00
Michael Pöhn
c45c4041a5 Merge remote-tracking branch 'fdroid/master' into build_tools_log 2017-03-22 14:02:45 +01:00
Michael Pöhn
83fe2bda4d fix exception handling in build.py 2017-03-22 14:01:32 +01:00
Hans-Christoph Steiner
223c793201 prefer apksigner if installed, jarsigner sucks
Google has their own utility for verifying APK signatures on a desktop
machine since Java's jarsigner is bad for the task.  For example, it
acts as if an unsigned APK validates.  And to check whether an APK is
unsigned using jarsigner is difficult.

apksigner also does the v2 signatures, so it will have to be used
eventually anyway.  It is already in Debian/stretch and can be
available in jessie-backports if need be.

https://android.googlesource.com/platform/tools/apksig
https://packages.debian.org/apksigner
2017-03-22 10:51:12 +01:00
Hans-Christoph Steiner
ffd490d8da set_command_in_config() for finding CLI tools to run 2017-03-22 10:51:12 +01:00
Hans-Christoph Steiner
70915a7445 verify: fdroidserverid and buildserverid are part of the sig
There are two SHA1 git commit IDs that fdroidserver includes in the builds
it makes: fdroidserverid and buildserverid.  Originally, these were inserted
into AndroidManifest.xml, but that makes the build not reproducible. So
instead they are included as separate files in the APK's META-INF/ folder.
If those files exist in the signed APK, they will be part of the signature
and need to also be included in the unsigned APK for it to validate.
2017-03-22 10:51:12 +01:00
Hans-Christoph Steiner
364e609ebe make fdroid verify use common.verify_apks()
This makes the jarsigner the ultimate and only judge of whether two APKs
match.  This is the best tool since APK signatures are jar signatures. This
should be eventually updated to use the official Android APK signing tool
called apksigner.

https://android.googlesource.com/platform/tools/apksig/
2017-03-22 10:51:12 +01:00
Hans-Christoph Steiner
998b6245e9 verify: ensure only a single signature is in compared APK
The ZIP format allows multiple entries with the exact same filename, and on
top of that, it does not allow deleting or updating entries.  To make the
`fdroid verify` procedure failsafe, it needs to create a new temporary APK
that is made up on the contents of the "unsigned APK" and the signature
from the "signed APK".  Since it would be possible to give a signed APK as
in the unsigned one's position, `fdroid verify` was not able to update the
signature since it was just adding the new signature to the end of the ZIP
file.  When reading a ZIP, the first entry is used.
2017-03-22 10:51:12 +01:00
Hans-Christoph Steiner
3c9eeff7f3 Merge branch 'supportrepo' into 'master'
makebs: update support repo to r46

See merge request !233
2017-03-22 09:28:26 +00:00
Michael Pöhn
bb49123118 post correct build tool versions to wiki 2017-03-21 23:51:15 +01:00
Boris Kraut
53be33055b makebs: update support repo to r46 2017-03-21 21:50:29 +01:00
Hans-Christoph Steiner
71ff1d6257 Merge branch 'ndk14' into 'master'
makebs: add ndk r14

See merge request !231
2017-03-20 09:38:58 +00:00
Boris Kraut
ed310f0404 makebs: add ndk r14 2017-03-19 22:27:51 +01:00
Hans-Christoph Steiner
9b12aa6f71 Merge branch 'scan-single-apk' into 'master'
Allow for scanning single APKs

See merge request !227
2017-03-17 14:47:30 +00:00
Torsten Grote
04db6870d1
Factor code for scanning a single APK out into its own method.
This allows projects using fdroidserver to scan individual APKs without
needing to re-scan all APKs present in a repository.
2017-03-17 10:40:45 -03:00
Torsten Grote
60f166b2c6 Merge branch 'index-v1' into 'master'
app index V1 - support graphics, localization, and more

See merge request !221
2017-03-17 13:34:31 +00:00
Hans-Christoph Steiner
866528de5b signindex: support signing index-v1.jar
This is a bit different than index.jar: instead of their being index.xml
and index_unsigned.jar, the presense of index-v1.json means that there is
unsigned data.  That file is then stuck into a jar and signed by the
signing process.  index-v1.json is never published to the repo.  It is
included in the binary transparency log, if that is enabled.
2017-03-17 14:12:03 +01:00
Hans-Christoph Steiner
fa657ce720 move update.signjar() to common so it can also be used in signindex 2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
696bae4d6d warn and ignore graphics files that have no matching app metadata
If there are graphics files that are in repo/ but there is no metadata for
the associated app, then do not include the graphics in the index. Issue a
warning about this.
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
21ba89a581 copy graphic assets from fdroiddata and app source into repo
This looks for standard graphics assets in two standardized locations, one
in metadata/ subdirs and another in fastlane's standard dirs in the app's
source repo.  When it finds them, it copies them into the repo, where they
will then be included in the index for use by fdroidclient.  The images in
the metadata/ folder of fdroiddata take precendence over the files in the
app's source repo.

So like this for including graphics in fdroiddata:
  metadata/packageName/locale/filename.(png|jpg|jpeg)
for example:
  metadata/org.videolan.vlc/en-US/featureGraphic.png
or
  metadata/info.guardianproject.ripple/zh-CN/phoneScreenshots/screenshot1.png

Including graphics in fdroiddata would be optional. The prefered way to get
graphics into the repo would be for the files to be in the git repo in a
standard location.  This fastlane layout is currently supported:

https://github.com/fastlane/fastlane/blob/1.109.0/supply/README.md#images-and-screenshots
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
713d9195c3 ensure that app.Categories is always a list of strings
This just makes it easier for people writing build recipes.  Rewriting will
output a list of strings as well.

The test index.xml and categories.txt are updated to include the new number
categories, and the changed CurrentVersionCode to 2147483647 (MAX_VALUE)
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
7044a909ca include graphics and screenshots from repo in V1 index
If the repo has store graphics and/or screenshots, then include those in
the metadata.  This follows the possible graphics for Google Play, and the
file naming scheme of the open source 'fastlane' tool for managing those
files.

https://github.com/fastlane/fastlane/blob/1.109.0/supply/README.md#images-and-screenshots
https://support.google.com/googleplay/android-developer/answer/1078870?
https://android-developers.blogspot.com/2011/10/android-market-featured-image.html

Signed-off-by: Hans-Christoph Steiner <hans@eds.org>
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
ab7e85c951 include push install/uninstall requests in index-v1
Since the index-v1 is generated straight from the internal dict, this just
moves the generation earlier, and feeds it into the apps dict.
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
6c2cf2ccdd convert internal dict keys to match fdroidclient's Apk class
This syncs up the field names between the fdroiddata .yml files, the keys
used in the implementation in fdroidserver, the index data format, and the
final data structures in fdroidclient.  This makes it easier for devs to
follow, and makes the Jackson parsing library automatically handle
converting the data from the index file to Java instances.

This bumps the metadata version since the apkcache will have to be
discarded.

Here are the name changes:
* apkname --> apkName
* id --> packageName
* sha256 --> hash
* version --> versionName
* versioncode --> versionCode

tests/repo/index.xml was changed only to bump the metadata version
from 17 to 18.
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
fcb7a0feb4 fdroid update uses datetime instances for timestamps
Using datetime instances as the internal format makes it much easier to
convert between the formats needed for index.xml and index-v1.  apkcache
still uses time tuples and known_apks.txt still uses the ISO date.
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
c9aa26d89e add index V1 format, a direct translation of internal dict
Python encode/decode libs work directly with dicts, so the internal dict
can just be passed directly to any of these libs (pyyaml, pyjson, msgpack,
simplejson, etc).  This still generates the exact same index.xml as before.

This converts the internal format for the repo timestamp to a datetime
instance, which can be easily converted to UNIX time in seconds for XML
and UNIX time in milliseconds for the new index formats.  UNIX time in
milliseconds is directly serialized into a java.util.Date instance by
Jackson.
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
b3a5db52f7 break out jar signing into function so it can be reused
The new index format will also need to use jar signing
2017-03-17 13:55:40 +01:00
Hans-Christoph Steiner
3afd6ca684 only set 'No description available' in the old index format
The new index format aims to be a direct representation of the data, then
the clients/website will handle the rest.
2017-03-17 13:55:40 +01:00
Michael Pöhn
1bc0ec27c0 Merge branch 'buildserver-auto-install' into 'master'
buildserver auto install

Closes #247

See merge request !229
2017-03-17 12:51:15 +00:00
Hans-Christoph Steiner
b6d8916881 Merge branch 'metadata_output_vars' into 'master'
metadata output-lines now substitute $$VERSION$$/etc.

Closes #263

See merge request !228
2017-03-17 11:37:18 +00:00
Hans-Christoph Steiner
02f1a30ba8 Merge branch 'binary-transparency' into 'master'
new repo-wide config option for a "Binary Transparency" log based on git

See merge request !226
2017-03-16 19:57:56 +00:00
Hans-Christoph Steiner
a737255ce4 add a simple test of the binary transparency log
This makes sure it gets generated with two commits: README and first log.
2017-03-16 19:22:32 +01:00
Hans-Christoph Steiner
110914ebf3 update: include git config name/email in binary transparency log 2017-03-16 17:48:54 +01:00
Hans-Christoph Steiner
580a9eb058 buildserver: support HTTPS Debian mirrors
The ever troublesome gpjenkins box needs to use HTTPS mirrors.  Plus it
improves the security of the buildserver, since there have been CVEs that
HTTPS would protect against:
https://www.debian.org/security/2016/dsa-3733
2017-03-16 15:06:35 +01:00
Hans-Christoph Steiner
64ea4caac1 buildserver: allow gradle/sdkmanager to install into the new m2repository
Google is pushing gradle towards downloading all the SDK components that it
needs, rather than having a preconfigured SDK installed.  The buildserver
strongly supports the old model, with added checksum checking even. We can
still support the old model by pre-configuring the SDK and locking it down
as root. This can then also support the new model by setting the file perms
so that new packages can be auto-installed, but they cannot overwrite any
packages that come pre-installed and pre-verified.

fdroiddata!2096
closes #247
2017-03-16 13:23:42 +01:00
Michael Pöhn
d2570a493e metadata output-lines now substitute $$VERSION$$/etc. 2017-03-16 09:24:05 +01:00
Hans-Christoph Steiner
c5c244ccbd generate HTML diff from verify using diffoscope
If diffoscope is installed, then use it to generate HTML diffs of all
verification builds.
2017-03-15 22:12:04 +01:00
Hans-Christoph Steiner
03ec590989 new repo-wide config option for a Binary Transparency Log
A Binary Transparency Log is a append only log of all binaries published by
a repo.  This is useful for people to find whether the binary they have
matches what F-Droid has published, and also makes it more difficult for
the published history to be changed without notice, or for a server to give
specific users custom malware binaries.

https://www.eff.org/deeplinks/2014/02/open-letter-to-tech-companies
2017-03-15 22:12:04 +01:00
Ciaran Gultnieks
0ef818486d Remove whitespace from HTTP update check versions 2017-03-15 19:54:09 +00:00
Ciaran Gultnieks
7306e1cf69 Catch update check failure and proceed, not bomb out 2017-03-15 19:54:09 +00:00
Hans-Christoph Steiner
4430d8b01c update: fix crash in debug logging message 2017-03-15 14:23:37 +01:00
Hans-Christoph Steiner
1e9406778f buildserver: remove my silly mistake
Should have done this through a merge request... code review!
2017-03-14 20:14:06 +01:00
Hans-Christoph Steiner
ee82c30cb8 buildserver: bump to android_m2repository r45 2017-03-14 20:04:50 +01:00
Hans-Christoph Steiner
cb7c60246c Merge branch 'constraintlayout-license-bullshit' into 'master'
buildserver: support new ConstraintLayout license bullshit

See merge request !225
2017-03-14 12:11:27 +00:00
Hans-Christoph Steiner
3e895eadd2 buildserver: allow gradle to install newer build-tools versions
gradle will now automatically download and install missing bits of the
Android SDK.  While we prefer to have the SDK packages fully verified, we
should allow this behavior on the buildserver to ensure that builds work
even when the buildserver can't be updated.  Since each build starts from a
clean snapshot, this auto-installed build-tools will only be used for the
single build, so it won't affect other apps.
2017-03-14 12:39:03 +01:00
Hans-Christoph Steiner
590160d766 buildserver: support new ConstraintLayout license bullshit
The new ConstraintLayout library in Android Support has some new custom way
of handling the license.  I suspect that they are going to use this new way
with all of the bits that gradle downloads.  We also have to support it for
apps that use it, including soon fdroidclient.

fdroiddata!2094
ci-images!1
2017-03-13 16:31:27 +01:00
Ciaran Gultnieks
7211381e27 Merge branch 'popen-nonutf8' into 'master'
common: don't assume build script output is utf-8

See merge request !224
2017-03-13 07:40:31 +00:00
Daniel Martí
37c802d323 common: don't assume build script output is utf-8
FDroidPopen is used for running many commands - from git to gradle to
custom commands via flags like build=. When any of these invoke calls to
custom build systems or upstream programs/scripts, it's not safe to
assume that the output will be utf8.

Unfortunately, this currently leads to crashes and failed builds:

	ERROR: Could not build app org.kiwix.kiwixmobile due to unknown error: Traceback (most recent call last):
	  File "/home/vagrant/fdroidserver/fdroidserver/build.py", line 1155, in main
	    options.onserver, options.refresh):
	  File "/home/vagrant/fdroidserver/fdroidserver/build.py", line 951, in trybuild
	    build_local(app, build, vcs, build_dir, output_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh)
	  File "/home/vagrant/fdroidserver/fdroidserver/build.py", line 648, in build_local
	    p = FDroidPopen(['bash', '-x', '-c', cmd], cwd=root_dir)
	  File "/home/vagrant/fdroidserver/fdroidserver/common.py", line 1786, in FDroidPopen
	    result.output = result.output.decode('utf-8')
	UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 5397290: invalid start byte

One way to fix this would be to use one of the python libraries that
guess an encoding. But a much safer option is to tell the decode method
to ignore non-utf8 bytes, as opposed to crashing on them.
2017-03-12 19:36:44 +00:00
Hans-Christoph Steiner
001d3b1fbb Merge branch 'include-ota-zip-in-index-xml' into 'master'
fix OTA ZIP inclusion in index.xml

See merge request !223
2017-03-10 23:06:22 +00:00
Hans-Christoph Steiner
6fe27ad75e fix source tarball filename for media files
bug from 07ce948809
2017-03-10 19:05:51 +01:00
Hans-Christoph Steiner
6aca906863 include non-APKs that match metadata and fdroid-generated filenames
Since it is now possible to build and include arbitrary files, like OTA
update ZIP files, the update procedure needs to look for non-APK files that
match the packageName_versionCode pattern of fdroid-generated files.

!193
admin#14
privileged-extension#9
2017-03-10 18:37:18 +01:00
Hans-Christoph Steiner
9d363b91f4 update: do not include fdroid-generated tarballs as "media" files
`fdroid build` will generate source tarballs, and now with support for
adding any file to a repo, we need to explicitly ignore the fdroid-
generated source tarballs.  If people want to include source tarballs in a
repo, they still can, as long as that source tarball doesn't use the
`fdroid build` tarball naming scheme.
2017-03-10 18:37:18 +01:00
Hans-Christoph Steiner
6207ee7878 Merge branch 'gradle341' into 'master'
makebs: add gradle 3.4.1

See merge request !222
2017-03-10 15:23:41 +00:00
Boris Kraut
e8d0a8ede8 makebs: add gradle 3.4.1 2017-03-10 14:29:36 +01:00
Hans-Christoph Steiner
19b3d7f00d Merge branch 'pre-indexv1-fixes' into 'master'
pre index-v1 fixes

See merge request !220
2017-03-07 10:39:41 +00:00
Hans-Christoph Steiner
650d52fb0a uses-permission maxSdkVersion as int, and enforces int string in XML
This forces <uses-permission maxSdkVersion=""> to be an integer in the
internal dict, and forces it to have no decimal point in XML.  Having it as
an integer in the internal dict means data will pass directly through to
the fdroidclient Apk instance, where it is ultimately an integer.
2017-03-06 22:04:14 +01:00
Hans-Christoph Steiner
7bae1075ba non-APK files will not have minSdkVersion, so don't force it
fdroidclient should handle no minSdkVersion fine, since it just parses the
text in <sdkver></sdkver> as an int, and uses a default value if there is
an Exception.
2017-03-06 22:03:20 +01:00
Hans-Christoph Steiner
0be58c2dca update: do not include PGP signatures as "media" files
A .asc or .sig file is a detached PGPG signature, `fdroid gpgsign`
generates them.  It makes no sense for them to be ever treated as a file
for distribution.

This also adds to forgotten forms of index files.
2017-03-06 11:55:17 +01:00
Hans-Christoph Steiner
f79f08a1c1 update bash completion commenting to match standards 2017-03-06 11:53:58 +01:00
Hans-Christoph Steiner
d4060bbaa2 Merge branch 'master' into 'master'
upload release apk to virustotal

Closes #17

See merge request !218
2017-03-06 09:13:15 +00:00
thez3ro
f76ef0b3a8
upload release apk to virustotal 2017-03-03 13:44:55 +01:00
Hans-Christoph Steiner
c352c02557 Merge branch 'master' into 'master'
upload release apk to AndroidObservatory

Closes #142

See merge request !217
2017-03-01 22:36:53 +00:00
Hans-Christoph Steiner
f68d811e64 Merge branch 'master' into 'master'
upload release apk to AndroidObservatory

Closes #142

See merge request !217
2017-03-01 22:36:26 +00:00
thez3ro
d5e2d6f57a
upload release apk to AndroidObservatory 2017-03-01 22:34:55 +01:00
Hans-Christoph Steiner
2242bb232b Merge branch 'skip-scan' into 'master'
Pass on --skip-scan flag to build server VM when running fdroid build --server.

Closes #130

See merge request !216
2017-03-01 17:35:02 +00:00
Michael Pöhn
c5bd8d9582 Pass on --skip-scan flag to build server VM when running fdroid build --server. 2017-03-01 17:27:17 +01:00
Hans-Christoph Steiner
0025adf566 Merge branch 'metadata-fixes-and-tests' into 'master'
metadata fixes and tests

Closes #261

See merge request !215
2017-02-28 13:28:55 +00:00
Hans-Christoph Steiner
4e8e297944 metadata: port .fdroid.yml handling to App dict subclass
This got overlooked in b7fc7f2228, then
caught in the ./makebuildserver tests, where it builds Checkey.
2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
5214889bbd fix bug including media files
'name' is not the full path, so it'll always fail common.is_repo_file()'s
os.path.isfile() check.

Introduced in 56d51fcd6b
2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
f06e336904 improve rewritemeta error msg about formats 2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
564cfb1089 match versionCode/versionName when set as gradle variable
For example, see org.kontalk:

allprojects {
    ext {
        appVersionCode = 221
        appVersionName = '4.0.1-preview'
    }
}
2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
507ed4a170 do not crash if no versionCode is found while parsing
if vercode is None and max_vercode is None, then it gave None as an arg to
the regexp pattern in ignoresearch().

closes #261
2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
d92ac1e8f6 fix metadata dump test to run on CI servers 2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
8b85c860a6 rename lastupdated to lastUpdated to match fdroid client
This lets index-v1 be parsed directly into class instances because the
field/instance var names match exactly.  The original index v0 element
must retain the 'lastupdated' name for backwards compatibility.
2017-02-28 12:08:04 +01:00
Hans-Christoph Steiner
73bb2cf1ba Merge branch 'gradle34' into 'master'
makebs: add gradle 3.4

See merge request !214
2017-02-27 09:10:11 +00:00
Boris Kraut
add1ad6eb5 makebs: add gradle 3.4 2017-02-26 03:23:49 +01:00
Hans-Christoph Steiner
b2a432db7e Merge branch 'remove-manual' into 'master'
remove TeX manual, it moved to https://gitlab.com/fdroid/fdroid-website

See merge request !209
2017-02-24 15:18:43 +01:00
Hans-Christoph Steiner
584841a775 jenkins-build-makebuildserver: add rudimentary rewritemeta test
This will show if rewritemeta changed anything.  fdroiddata requires all
files to be rewritten with rewritemeta before they are accepted.
2017-02-24 14:01:31 +01:00
Hans-Christoph Steiner
8decd3b504 remove TeX manual, it moved to https://gitlab.com/fdroid/fdroid-website
The whole TeX manual has been folded into the new Jekyll-based website, so
this is no longer needed at all.
2017-02-24 14:01:31 +01:00
Hans-Christoph Steiner
7a25dbc081 rewritemeta: fix silly bug of using == for =
This was introduced in c0bc3afda9
2017-02-24 13:36:41 +01:00
Torsten Grote
2a421d653c Merge branch 'make-Build-App-act-like-dicts' into 'master'
make Build and App classes act like dicts

See merge request !210
2017-02-24 11:11:11 +00:00
Hans-Christoph Steiner
4e39621601 provide warning if config items will not preserve order
If a group of items are enclosed in {}, then that will be a Python set,
which does not preserve order.  To preserve order, the data must be either
a tuple () or list [].
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
388c336e76 build: ensure test is running on git commit that this code works with
Since https://gitlab.com/fdroid/ci-test-app is a separate git repo, things
with incompatible changes could get out of sync.  Therefore, this test
should specify which git commit is runs against.

For example, the .fdroid.yml file is still a moving target.  Just now, the
keys had the spaces removed as part of this MR.
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
593613043e normalize Build TYPE_STRING data based on .txt
Unfortunately, things like versionCode must be strings.  That should be
converted to be ints throughout.
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
c178cfb843 normalize Build TYPE_LIST data based on .txt
In the future, we should have better internal datatypes for this stuff,
i.e. instead of gradle: ['yes'] for True, actually use a boolean.  For now,
make the YAML and JSON metadata produce the same internal data as .txt.
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
f7ae398aae add script for mass testing metadata parsing after changes
This requires manually running it.  I suppose it would be possible to
include a snapshot of the dumped internal representation for each release,
then make the tests run automatically against that.  Right now, the dump is
17megs of YAML.  Seems large to include in this git repo.
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
e0f39a7e7b rename Build fields: version -> versionName, vercode -> versionCode
Since the YAML/JSON/etc. field names are now exactly the same as the field
names used in the internal dict in the Build class, this is a global rename

This keeps with the standard names used in Android:
https://developer.android.com/guide/topics/manifest/manifest-element.html
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
c0bc3afda9 convert metadata.Build to a subclass of dict
Like with the App class in the commit before, this makes it a lot
easier to work with this data when converting between the internal
formats and external formats like YAML, JSON, MsgPack, protobuf, etc.

The one unfortunate thing here is Build.update. It becomes
dict.update(), which is a method not an attribute.
build.get('update') or build['update'] could be used, but that would
be oddly inconsistent. So instead the field is renamed to
'androidupdate', except for in the .txt v0 metadata files. This better
describes what field does anyway, since it runs `android update`.

Build.update is only referenced in two places right next to each other
for the ant builds, so this change still seems worthwhile.
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
b7fc7f2228 convert App to subclass of dict to support parsing/dumping libs
Python is heavily based on its core data types, and dict is one of the more
important ones.  Even classes are basically a wrapper around a dict. This
converts metadata.App to be a subclass of dict so it can behave like a dict
when being dumped and loaded.  This makes its drastically easier to use
different data formats for build metadata and for sending data to the
client.  This approach will ultimately mean we no longer have to maintain
custom parsing and dumping code.

This also means then that the YAML/JSON field names will not have spaces in
them, and they will match exactly what it used as the dict keys once the
data is parsed, as well as matching exactly the instance attribute names:

* CurrentVersion: 1.2.6
* app['CurrentVersion'] == '1.2.6'
* app.CurrentVersion == '1.2.6'

Inspired by:
https://goodcode.io/articles/python-dict-object/
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
4625651192 make Build class act more like a dict
This makes it a lot easier to work with Build instances with parsing and
dumping libraries, since they expect only core Python types (dict, list,
tuple, str, etc)
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
14f204cfe1 sort repo index data to make index.xml generation reproducible
This makes it easy to test that the code is still generating the exact same
index.xml.  It also might help the ZIP compression work better in index.jar
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
56ef716a4e test for original "v0" index XML compatibility
The original index.xml format needs to stay around for backwards
compatibility, but we shouldn't touch it anymore once the new format is in
place.  This is a test to make sure `fdroid update` can still generate the
correct XML.

install_list and uninstall_list should be tuples or lists in order to
ensure that the order is preserved.

These tests also check that the added and lastupdated dates are
working correct, based on the dates in tests/stats/known_apks.txt. I
could see no useful way to test the timestamp, it is just hardcoded
using a regexp search-and-replace.  Running these tests manually might
require deleting tmp/apkcache.
2017-02-24 11:01:01 +01:00
Hans-Christoph Steiner
327ba335a7 Merge branch 'support-v44' into 'master'
makebs: update support repo to r44, closes fdroid/rfp#49

Closes rfp#49

See merge request !213
2017-02-23 11:48:01 +00:00
Hans-Christoph Steiner
ed3af92cbd Merge branch 'firebase' into 'master'
scanner: add firebase to usual suspect list, closes #259

Closes #259

See merge request !212
2017-02-23 11:46:56 +00:00
Boris Kraut
687061f47e makebs: update support repo to r43, closes fdroid/rfp#49 2017-02-23 01:27:10 +01:00
Boris Kraut
daafc422ae scanner: add firebase to usual suspect list, closes #259 2017-02-23 00:41:00 +01:00
Hans-Christoph Steiner
284e272f48 Merge branch 'name' into 'master'
update: add name to skeleton, closes #258

See merge request !211
2017-02-21 14:08:47 +00:00
Boris Kraut
823e40eed0 update: add name to skeleton 2017-02-19 16:25:49 +01:00
Hans-Christoph Steiner
7fdf35014f Merge branch 'feature/git-mirroring' into 'master'
Add git repo mirroring

Closes #235

See merge request !206
2017-02-17 15:26:15 +00:00
thez3ro
5a9bcfbbf4
add git repo mirroring 2017-02-17 16:05:57 +01:00
Hans-Christoph Steiner
fc433c803b Merge branch 'ossjfrog' into 'master'
scanner: allow oss.jfrog.org/artifactory/oss-snapshot-local

See merge request !208
2017-02-13 21:06:18 +00:00
Hans-Christoph Steiner
bb5c2ec3de Merge branch 'build-publish-staging-test' into 'master'
build/publish staging test

See merge request !207
2017-02-13 19:42:21 +00:00
Boris Kraut
c87cdb91db scanner: allow oss.jfrog.org/artifactory/oss-snapshot-local 2017-02-13 20:24:35 +01:00
Hans-Christoph Steiner
2a39566906 jenkins-build-makebuildserver: remove VLC as test, its too flaky
Revert "jenkins-build-makebuildserver: include VLC as a test build"

This reverts commit 6debb3ebbf.
2017-02-13 20:10:49 +01:00
Hans-Christoph Steiner
1d91a400a2 buildserver: update to latest tools and m2repository 2017-02-13 20:10:48 +01:00
Hans-Christoph Steiner
3046156a89 jenkins-build-makebuildserver: handle git update of fdroiddata better
This prevents attempts to merge when there was rebasing, which can fail.
2017-02-13 20:08:45 +01:00
Hans-Christoph Steiner
837fc99d74 build: include buildserverid in build log for wiki 2017-02-13 20:08:45 +01:00
Hans-Christoph Steiner
57c3ba413c log Android SDK/NDK component versions on buildserver
ad2b9b99c2 put this in the wrong place, it
was running it on the buildserver host rather than in the buildserver VM
itself, where the builds actually run.

refs #148
2017-02-13 20:08:45 +01:00
Hans-Christoph Steiner
0cf08de347 build: fix fdroidserverid in build log post on wiki
The carriage return in the fdroidserverid file messes up the wiki format.
This was forgotten in 69d39bb301
2017-02-13 20:08:45 +01:00
Hans-Christoph Steiner
03223ab9df jenkins-build-makebuildserver: test the whole build/publish workflow
For full deployments like f-droid.org, the building happens on a separate
machine from the signing.  This adds a basic test of that kind of setup.
2017-02-13 20:08:45 +01:00
Hans-Christoph Steiner
9c36894955 Merge branch 'supportlib' into 'master'
makebs: bump support repo to r43

See merge request !205
2017-02-13 19:05:44 +00:00
Boris Kraut
e382f09fd6 makebs: bump support repo to r43 2017-02-11 14:40:40 +01:00
Ciaran Gultnieks
70c347264c Merge branch 'fix-build-and-vlc' into 'master'
fix CI, makebuildserver, and VLC build

See merge request !204
2017-02-07 13:27:56 +00:00
Hans-Christoph Steiner
6debb3ebbf jenkins-build-makebuildserver: include VLC as a test build 2017-02-07 11:05:18 +01:00
Hans-Christoph Steiner
1eb65c7087 buildserver: use automake and cmake from jessie-backports
These should be reasonably backwards compatible, and there is already
automake1.11 for those that need a version that old.  As for cmake, there
are five apps that seem to it:

com.amaze.filemanager
org.dolphinemu.dolphinemu
org.navitproject.navit
org.yabause.android
org.videolan.vlc

It looks like VLC is the only app that is currently building and using
cmake in the most recent releases.  Some of them used to use cmake, but no
longer.
2017-02-07 10:47:20 +01:00
Hans-Christoph Steiner
36272656fc gitlab-ci: workaround "ImportError: No module named 'packaging'"
https://github.com/pypa/setuptools/issues/937

fdroid/ci-images#1
2017-02-06 17:28:07 +01:00
Hans-Christoph Steiner
4929349555 buildserver: add openjdk-8-jdk-headless depends from backports 2017-02-06 14:59:15 +01:00
Ciaran Gultnieks
c344c31271 Merge branch 'supportlib' into 'master'
makebs: upgrade support repo to r42

See merge request !203
2017-02-04 17:34:49 +00:00
Boris Kraut
f32f4a68d1 makebs: upgrade support repo to r42 2017-02-04 15:01:15 +01:00
Hans-Christoph Steiner
1993cc874d Merge branch 'collection-of-fixes' into 'master'
include fdroidserverid in build log post on wiki

See merge request !201
2017-01-21 21:34:33 +00:00
Hans-Christoph Steiner
69d39bb301 build: include fdroidserverid in build log post on wiki 2017-01-20 12:12:20 +01:00
Hans-Christoph Steiner
d08bd32a35 update URL for git repo of test app 2017-01-20 12:12:20 +01:00
Hans-Christoph Steiner
78a3e35ef7 break out categories.txt generation to standalone method
This is to clean up the code for the introduction of a new index format.
This also makes it so that only repo/categories.txt is generated, and not
archive/categories.txt.

Currently, the only thing that I can find that reads categories.txt is the
wordpress plugin, e.g. wp-fdroid.  And it only reads repo/categories.txt
not archive/categories.txt.
2017-01-20 10:47:35 +01:00
Hans-Christoph Steiner
d54ad41938 fix bad caching of non-APK files in the repo
Silly mistake in 07ce948809
2017-01-20 10:47:35 +01:00
Hans-Christoph Steiner
8147f92355 Merge branch 'fdroid-publish-ota-zip' into 'master'
`fdroid publish` now includes OTA ZIPs and related source

See merge request !193
2017-01-12 13:03:51 +00:00
Hans-Christoph Steiner
7a1b99f11a Merge branch 'libtool-from-testing' into 'master'
buildserver: support installing packages from Debian/testing

Closes #224

See merge request !200
2017-01-12 12:59:57 +00:00
Hans-Christoph Steiner
4741f75f03 buildserver: update android_m2repository to latest (r41) 2017-01-12 10:19:38 +01:00
Hans-Christoph Steiner
948689281a ensure fdroiddata metadata file overrides .fdroid.yml in source
If the already parsed App instance from metadata/*.* has a field, then the
value coming from .fdroid.yml should not override it.
2017-01-11 22:42:41 +01:00
Hans-Christoph Steiner
7af7297ca8 buildserver: support installing packages from Debian/testing
Sometimes, a build process requires newer versions of build tools than are
available in Debian/stable.  Oftentimes, using the package straight from
Debian/testing works fine when a package is not available as a backport.
libtool 2.4.6 is needed for building VLC, so it is one example of this.

The preferences file sets up the apt "pinning" so that all updates are not
installed from testing, only the packages that are requested by adding
"/testing" after then package name.

closes #224
2017-01-10 10:56:03 +01:00
Hans-Christoph Steiner
bc27dee950 fdroid publish now includes OTA ZIPs and related source
This adds support for publishing ZIP files which were built with
`fdroid build`.  This is for "Over-The-Air" (OTA) update ZIP files for
flashing to ROMs.  The first example of this is the Privileged Extension,
which must be installed by flashing an OTA ZIP on Android > 5.0.

!181
https://gitlab.com/fdroid/privileged-extension/issues/9
https://gitlab.com/fdroid/privileged-extension/issues/10
https://gitlab.com/fdroid/fdroiddata/merge_requests/1804

Also, "if app.Binaries:" is the same as "if app.Binaries is not None:", but
is the standard Python style.
2017-01-09 11:32:52 +01:00
Hans-Christoph Steiner
0eea26753a Merge branch 'gradle33' into 'master'
makebs: install gradle 3.3

See merge request !199
2017-01-09 10:31:57 +00:00
Boris Kraut
d63a1fde19 makebs: install gradle 3.3 2017-01-08 21:13:24 +01:00
Ciaran Gultnieks
3d103875ea Merge branch 'gettext-backport' into 'master'
buildserver: install gettext from jessie-backports

Closes #224

See merge request !198
2017-01-07 19:05:08 +00:00
Hans-Christoph Steiner
8caf98a00b buildserver: install gettext from jessie-backports
In order to install a package from jessie-backports, apt-get has to be told
to get it from there rather than the main archive.  It will not use
jessie-backports by default even if it is added as an apt source.

closes #224
2017-01-03 22:24:38 +01:00
Daniel Martí
fcba707c86 Merge branch 'import' into 'master'
import: fix raw git-over-https urls

See merge request !196
2017-01-01 23:25:30 +00:00
Daniel Martí
4c4ad2ebfc Merge branch 'spdx' into 'master'
docs: switch to spdx license list

See merge request !194
2017-01-01 23:24:37 +00:00
Daniel Martí
e1a1eada11 Merge branch 'ci-update' into 'master'
Bump CI image, now with build-tools 25.0.2

See merge request !197
2016-12-23 17:22:35 +00:00
Daniel Martí
926aafa58b Bump CI image, now with build-tools 25.0.2 2016-12-23 17:46:09 +01:00
Boris Kraut
e1dda886d7 import: fix raw git-over-https urls 2016-12-21 10:12:20 +01:00
Daniel Martí
87c326c401 Merge branch 'master' into 'master'
Makebs: add build tools 25.0.2

See merge request !195
2016-12-17 23:19:50 +00:00
est31
d6da0a283d Makebs: add build tools 25.0.2 2016-12-17 23:36:48 +01:00
Boris Kraut
fd51f7fab0 docs: switch to spdx license list 2016-12-17 11:00:40 +01:00
Hans-Christoph Steiner
7c8823e94e Merge branch 'feature/dscanner' into master
dscanner - drozer scanner work.

closes !187
2016-12-06 14:03:34 +01:00
Kevin C. Krinke
df27bae6a0 dscanner - Drozer based post-build dynamic vulnerability scanner command
* New command `dscanner`, enables one to scan signed APKs with Drozer
 * Drozer is a dynamic vulnerability scanner for Android
 * Drozer runs in a emulator or on-device, this new `dscanner` command...
  * starts a docker image with Drozer and the Android Emulator pre-installed,
  * loads the signed APK into the emulator
  * activates Drozer automated tests for the APK
  * gathers the report output and places it next to the original APK
 * The Drozer docker image can be:
  * cached locally for re-use (just don't run --clean*)
  * retrieved from dockerhub.com for more efficient runtime
  * or be built from scratch (in the new "./docker" directory)
 * New "Vulnerability Scanning" documentation section (run gendocs.sh)
2016-12-06 14:00:44 +01:00
Hans-Christoph Steiner
f439266303 Merge branch 'collection-fixes-and-KnownVuln' into 'master'
add KnownVuln anti-feature, and other fixes

This is a bit of a random collection of things that I have added in the process of working on the drozer/scanner support, YAML support, etc.  The only new things are:

* adding new AntiFeature for security issues: `KnownVuln`
* removing broken, incomplete XML metadata support

Everything else included are just code improvements.  This also includes the first check for `KnownVuln`, which is a scanner to check whether custom OpenSSL binaries in apps are not old with known vulnerabilities.  `KnownVuln` will then ultimately be used for things like the drozer scanner !187

See merge request !189
2016-12-06 12:37:11 +00:00
Hans-Christoph Steiner
e37be9b063 fix fdroid build with non-git repos
HEAD is really only in git.  This was introduced in
a4e4310803
2016-12-05 20:19:56 +01:00
Hans-Christoph Steiner
b1a943d562 convert metadata test dumps to YAML for easy comparison
When making code changes related to the metadata parsing, it is useful to
see how the internal format has changed by seeing the differences in the
dump files.  Those files are currently in the binary .pickle format.  This
just straight converts them to YAML, which is a text format, so that normal
diff tools work to see changes.

The dump files are named .yaml instead of .yml since .yml is used for hand-
edited YAML files for fdroiddata/metadata, while these dump files here are
a human readable form of a Python pickle.
2016-12-05 20:16:54 +01:00
Hans-Christoph Steiner
ce3efe4168 remove support for XML app metadata, its broken
JSON and YAML are very closely related, so supporting both of them is
basically almost no extra work.  Both are also closely related to how
Python works with dicts and pickles. XML is a very different beast, and its
not popular for this kind of thing anyway, so just purge it.
2016-12-05 20:16:54 +01:00
Hans-Christoph Steiner
b91cdffe17 App.get_last_build() method to replace duplicated code
Look @mvdan, I added a method to the App class!
2016-12-05 20:16:54 +01:00
Hans-Christoph Steiner
3db2c9869c do proper checking of versionCode value
versionCode is defined as a Java Integer, so any value between -2147483648
(Integer.MIN_VALUE) and 2147483647 (Integer.MIN_VALUE) is valid, including
0.

https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode
2016-12-05 20:16:54 +01:00
Hans-Christoph Steiner
98297278bd check all APKs for old versions of OpenSSL
This scans all APKs for old versions of OpenSSL libraries that are known to
be vulnerable to issues, or fully unsupported.

This really should be implemented as a per-APK AntiFeature, so that it can
apply to any version that is vulnerable.  Since AntiFeatures are currently
only per-App, this instead sets the AntiFeature only if the latest APK is
vulnerable.

Google also enforces this:
https://support.google.com/faqs/answer/6376725?hl=en

apk['antiFeatures'] has the first letter small, since all build fields
start with a lowercase letter.  app.AntiFeatures has the first
uppercase since all App fields are that way.
2016-12-05 20:16:54 +01:00
Hans-Christoph Steiner
95656e6c61 check aapt version to make sure its new enough #236
Since `fdroid update` parses the output of aapt, and since aapt's output
format changes in non-compatible ways, test to make sure that the version
of aapt is new enough to prevent mystery stacktraces.  This only prints a
warning since in many cases, the old version will work just fine.
2016-12-05 20:16:12 +01:00
Ciaran Gultnieks
32182867ad Merge branch 'master' into 'master'
Add gradle 3.2.1

See merge request !192
2016-12-02 16:09:22 +00:00
est31
d39f54f04d Add gradle 3.2.1 2016-12-02 08:16:04 +01:00
Daniel Martí
6b2aa444d3 Merge branch 'buildtools-25.0.1' into 'master'
makebs: add buildtools 25.0.1

Please verify hash before merging.

See merge request !191
2016-12-01 12:40:25 +00:00
Boris Kraut
51083fdeb4 makebs: add buildtools 25.0.1 2016-12-01 08:44:47 +01:00
Hans-Christoph Steiner
a5cc4d74fc Merge branch 'master' into 'master'
Add ndk 13b

See merge request !190
2016-11-26 08:02:42 +00:00
est31
ddefec33cd Add ndk 13b 2016-11-25 21:18:37 +01:00
Hans-Christoph Steiner
d7ec321198 Merge branch 'fdroid-yml-builds' into 'master'
builds straight from source repo using .fdroid.yml

The overarching theme of the merge request is allowing _.fdroid.yml_ to be included in an app's source repo, then letting `fdroid build` build the app straight out of the git repo without requiring a setup like _fdroiddata_ (e.g. _config.py_, _metadata/packagename.txt_, etc.).  _fdroiddata_ repos can then include source repos with a _.fdroid.yml_ by having _metadata/packagename.txt_ that includes just:

```
Repo Type:git
Repo:https://gitlab.com/upstream/app.git
```

Any other metadata fields that are included in _metadata/packagename.txt_ will override what is in _.fdroid.yml_, giving the repo manager the final say about what is included in their repo.  This setup provides a number of benefits:

* CI systems like jenkins, travis, gitlab-ci can build from _.fdroid.yml_
* very easy to start building apps using `fdroid build`, no separate repo needed
* some maintenance can be offloaded to the upstream dev

See merge request !184
2016-11-24 14:04:09 +00:00
Hans-Christoph Steiner
6cadefbe4e Merge branch 'patch-1' into 'master'
docs: remove one-line requirement for links

See merge request !188
2016-11-24 08:38:04 +00:00
Boris Kraut
d07b88d9f1 docs: remove one-line requirement for links 2016-11-24 07:30:03 +00:00
Hans-Christoph Steiner
28ea33b8d1 if building directly in git repo, use file path for remote
When a git repo has a .fdroid.yml file in it, and `fdroid build` is run
directly in that git repo, then this uses the file path as the remote for
the git repo in build/appid that is actually built.  That makes it possible
to run builds of commits that are only local, and makes things a whole lot
faster.
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
c41daf1e7e ignore files created by tests 2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
a4e4310803 allow metadata to be embedded in source repos via .fdroid.yml
This allows a source repo to include a complete metadata file so that it
can be built directly in place using `fdroid build`.  If that app is then
included in fdroiddata, it will first load the source repo type and URL
from fdroiddata, then read .fdroid.yml if it exists, then include the rest
of the metadata as specified in fdroiddata, so that fdroiddata has
precedence over the metadata in the source code.

This lets `fdroid build` apps without having a whole fdroiddata setup, but
instead just directly in place in the source code.  This also lets devs
optionallu maintain the fdroid metadata as part of their app, rather than
in fdroiddata without loosing any control.  This should make it easier to
spread around the maintenance load.
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
b4a39ee272 switch import test to custom, small test app
The test project should be moved to https://gitlab.com/fdroid/ci-test-app
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
f8dca60a20 convert comments above functions to python docstrings
This is how to write per-function comments.
https://www.python.org/dev/peps/pep-0257/
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
1f55a40caa properly parse build metadata list types like gradle=
Something like `gradle: yes` in YAML will be parsed as a boolean, since
'yes' is officially defined as a boolean true in YAML.  For metadata fields
that need to be lists, this needs to be converted.  Same goes for a single
string like `gradle: customFlavor`.
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
3fb4cba178 include version, commit, and android tools versions in local log
This includes more info to help track down problems with reproducible
builds, like the specific version being built, and which exact versions of
the Android SDK and NDK were used.
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
ad2b9b99c2 log versions of all installed Android SDK/NDK components
Any variation in the Android tools used to build an APK can cause the build
to be unreproducible.  To help troubleshoot these times, this posts the
installed versions of the Android SDK and NDK components to the lastbuild
log, for the long term record.

refs #148
2016-11-16 23:28:03 +01:00
Hans-Christoph Steiner
2237b6f7d3 Merge branch 'makebs' into 'master'
makebs updates

See merge request !185
2016-11-16 21:09:17 +00:00
Daniel Martí
8cdf1b0223 makebs: add gradle 3.2 2016-11-15 21:07:35 +00:00
Daniel Martí
483338843f makebs: update to support repo r40 2016-11-15 20:56:04 +00:00
Daniel Martí
82b1d7ad14 all: make newer pycodestyle happy
Apparently the "two empty lines" rule is now stricter.
2016-11-15 20:55:06 +00:00
Daniel Martí
8ee13a47e4 Merge branch 'node' into 'master'
buildserver: install nodejs

Install nodejs to allow webapps to be build (in the future...). 


Ref: https://gitlab.com/fdroid/fdroidserver/issues/60

See merge request !183
2016-11-08 21:33:38 +00:00
Boris Kraut
c788774d85 buildserver: install nodejs 2016-11-07 22:54:47 +01:00
Daniel Martí
ffb6c97deb Merge branch 'build-FPE-update-zip' into 'master'
Build Privileged Extension OTA update.zip using `fdroid build`

This allows `fdroid build` to build the OTA update ZIP file for F-Droid Privileged Extension, so that the official releases can be built and distributed via the normal F-Droid channels.   This is related to #233 

Ultimately the client will also have to be updated to allow it to handle the non-APK files.

See merge request !181
2016-11-07 15:11:14 +00:00
Hans-Christoph Steiner
fb0c824d3c wp-fdroid: show GPG Signature link for source tarballs
Now that source tarballs can be GPG-signed, the website should also display
a link to fetch them.
2016-11-07 14:53:01 +01:00
Hans-Christoph Steiner
56d51fcd6b gpg-sign all valid files in the repo, including source tarballs
This makes sure there is a GPG signature on any file that is included in
the repo, including APKs, OBB, source tarballs, media files, OTA update
ZIPs, etc.  Having a GPG signature is more important on non-APK files since
they mostly do not have any signature mechanism of their own.

This also adds basic tests of adding non-APK/OBB files to a repo with
`fdroid update`.

closes #232
2016-11-07 14:53:01 +01:00
Hans-Christoph Steiner
84e09cd2a2 allow arbitrary build products, not only APKs
This makes it so that the final build product can be specified in output=
and it'll work no matter if its an APK or not.  This was developed around
the case of building the OTA update.zip for the Privileged Extension. It
should work for any build process in theory but it has not yet been tested.

https://gitlab.com/fdroid/privileged-extension/issues/9
2016-11-07 14:53:01 +01:00
Hans-Christoph Steiner
8ecff5bd61 get_release_filename() to handle any file type, not just APKs
In order to support non-APK files that are built by `fdroid build`, this
function that names the file releases needs to be generic.
2016-11-03 08:07:11 +01:00
Hans-Christoph Steiner
ab8d51012d use versionName unmodified as specified
The versionName is defined as a string or string resource that can be any
arbitrary data.  fdroid should not second guess the developer here, and
should just use the versionName unmodified.  For anything that needs to
compare different versions of apps, versionCode should always be used since
that's what Android uses.

https://developer.android.com/guide/topics/manifest/manifest-element.html#vname
2016-11-03 08:07:11 +01:00
Hans-Christoph Steiner
a8a1333b80 update buildserver scripts in sdist tarball manifest
This was overlooked in previous work on ./makebuildserver
2016-11-03 08:07:11 +01:00
Daniel Martí
7dde16dd11 Merge branch 'support-media-files' into 'master'
Support media files

This is the first step in supporting adding artibitrary files to fdroid repos, targeted add supporting media files and flashable _update.zip_ files like used to install the Privileged Extension.  This reuses the existing metadata fields to keep compatibilty with older versions, but that means that lots of names are confusingly named since they refer to aspects of an APK rather than a generic file.  We can address that later when we refactor the whole index metadata.

See merge request !177
2016-11-02 21:11:05 +00:00
Hans-Christoph Steiner
7d0bd345d1 Merge branch 'master' into 'master'
Scanner: handle utf8 errors more gracefully

Don't throw an error without any info which file caused it.

Fixes #226

See merge request !180
2016-11-02 17:18:02 +00:00
Hans-Christoph Steiner
8e45d30020 reuse os.stat() result when checking for non-APK files
This should make things a bit more efficient when running on lots of files,
unless python was already caching the result...
2016-11-02 18:10:13 +01:00
Hans-Christoph Steiner
07ce948809 support adding arbitrary files to a repo
This adds the most basic level of support for including arbitrary files in
an F-Droid repository.  This is useful for things like including videos,
ebooks, update.zip files for ROM updates, and more.  The aim is to have
this as generic as possible to keep it flexible for unforeseen uses.

Code-wise, this is really just a first effort.  This area of code has not
been touched in a very long time, and the repo parsing is done in a giant
function that is not easy to break apart.  It should be broken up to more
cleanly support arbitrary files.

Also remove the TODO line, we've decided to keep the old permission
format for now, at least until there is a major overhaul of the index
data format.  And the issue tracker the proper place for TODOs.
2016-11-02 18:10:13 +01:00
Hans-Christoph Steiner
36a585c2fc create addElementIfInApk() function for clean up common operation
There are currently a couple different ways this is done in the code, this
commit changes all of them to be like addElementNonEmpty().
2016-11-02 18:10:13 +01:00
est31
af22f18296 Scanner: handle utf8 errors more gracefully
Fixes #226
2016-11-02 16:58:59 +01:00
Hans-Christoph Steiner
47d9fd330d remove unused 'apps' argument from update.scan_apks() 2016-11-02 16:11:52 +01:00
Hans-Christoph Steiner
5faef55d67 support all valid versionCode values, i.e. Java Integer values
versionCode can be any Java Integer value, from Integer.MAX_VALUE
(2147483648) to Integer.MIN_VALUE (-2147483647)
2016-11-02 16:11:46 +01:00
Hans-Christoph Steiner
f90adcc912 Merge branch 'texinfo' into 'master'
CI: use new docker image with texinfo

docs/gendocs.sh uses makeinfo.

See merge request !179
2016-10-31 17:51:16 +00:00
Daniel Martí
2e96fc1cd9 CI: use new docker image with texinfo
docs/gendocs.sh uses makeinfo.
2016-10-31 14:02:39 +00:00
Daniel Martí
559f38cd21 Merge branch 'updates' into 'master'
makebs and CI updates

See merge request !178
2016-10-25 11:06:47 +00:00
Daniel Martí
148f077ad8 Bump ci images and default build-tools 2016-10-23 17:04:58 +01:00
Daniel Martí
98b7538789 makebs: bump m2repo, add api25 and build-tools 25 2016-10-23 16:47:19 +01:00
Ciaran Gultnieks
aa4aa45703 Merge branch 'build-tools' into 'master'
makebs: add build-tools 24.0.3



See merge request !175
2016-10-05 18:09:46 +00:00
Ciaran Gultnieks
749c04c66a Merge branch 'fixes-on-the-way-to-kvm' into 'master'
buildserver fixes on the way to KVM

Here are a couple of relatively basic fixes I found while working on the KVM support (merge request coming soon).

See merge request !174
2016-10-05 18:09:18 +00:00
Daniel Martí
b34cef8776 makebs: add build-tools 24.0.3 2016-10-03 09:10:41 +01:00
Hans-Christoph Steiner
764b99acd6 buildserver: only auto-detect KVM in ./makebuildserver
Having a second, different KVM auto-detect routine in Vagrantfile will only
confuse things.  This also removes the direct call to the systemd utility.
2016-09-28 10:16:30 +02:00
Hans-Christoph Steiner
1b09ab5a79 buildserver: run dir check as very first thing
No point in running any other code if the script is just going to bail
out with an error.  This assumes that ./makebuildserver is only ever
run from a git clone of fdroidserver.git.
2016-09-28 09:52:49 +02:00
Hans-Christoph Steiner
a3d32c65a4 buildserver: use py3's pathlib to generate cache file URL
This should handle edge cases better, like odd characters in the path, etc.
2016-09-28 09:52:49 +02:00
Hans-Christoph Steiner
97be5a1d00 jenkins-build-makebuildserver: remove errant blank line 2016-09-28 09:52:49 +02:00
Hans-Christoph Steiner
84500b0049 Merge branch 'master' into 'master'
Add qt sdk support

Qt SDK extraction on the VM

See merge request !172
2016-09-27 12:54:02 +00:00
est31
91c5fb567a Add qt sdk support 2016-09-27 14:36:12 +02:00
Ciaran Gultnieks
d3a215c12b Merge branch 'checkupdates-crash' into 'master'
checkupdates: avoid crash with --auto and None CVC

As reported by @CiaranG.

See merge request !173
2016-09-26 21:46:16 +00:00
Daniel Martí
bcd31401ac checkupdates: avoid crash with --auto and None CVC
Reproducible via `fdroid checkupdates --auto subreddit.android.appstore`
at fdroiddata HEAD (e76449ab).

WARNING: ...subreddit.android.appstore : Couldn't find package ID
CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/home/mvdan/.bin/fdroid", line 147, in <module>
    main()
  File "/home/mvdan/.bin/fdroid", line 124, in main
    mod.main()
  File "/home/mvdan/git/fsr/fdroidserver/checkupdates.py", line 571, in main
    checkupdates_app(app)
  File "/home/mvdan/git/fsr/fdroidserver/checkupdates.py", line 469, in checkupdates_app
    if int(build.vercode) >= int(app.CurrentVersionCode):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
2016-09-26 21:07:55 +01:00
Ciaran Gultnieks
7cbdaedf2e Merge branch 'fix-post-kvm' into 'master'
Fix post KVM

A couple of fixes to the KVM support that was just merged, as reported by @CiaranG

See merge request !171
2016-09-23 16:33:52 +00:00
Hans-Christoph Steiner
1001e5e9b9 buildserver: bochs can also be used with KVM
jenkins.debian.net is being detected as 'bochs' rather than 'qemu'.
2016-09-23 17:41:41 +02:00
Hans-Christoph Steiner
1e8fd01c1e buildserver: only check cache permissions when using libvirt
VirtualBox runs as the same user as `fdroid`, so the cache does not need to
be accessible by the world.  On libvirt, libvirtd runs the VMs as its own
user, so in that case, the cache dirs must have permissions to let that
user access them.
2016-09-23 15:20:05 +02:00
Hans-Christoph Steiner
f6a487eee4 buildserver: wipe snapshot from libvirt store on --clean 2016-09-23 15:06:41 +02:00
Ciaran Gultnieks
5667d16498 Merge branch 'buildserver-qemu-kvm' into 'master'
buildserver running in qemu/kvm to support KVM on KVM

jenkins.debian.net runs in QEMU/KVM instances, so in order to run the F-Droid buildserver there, it needs to work inside of a KVM guest.  The best way I found to do that is to create QEMU/KVM instances via KVM's "nested" virtualization support.  This collection of commits enables using QEMU/KVM as the buildserver when `./makebuildserver` detects that it is running inside of KVM.  Otherwise, the old behavior is default: running in VirtualBox.

I have run these tests inside of ubuntu/16.04 on bare metal, which uses VirtualBox, and ubuntu/16.04 KVM guest, which uses QEMU/KVM.  It'll also run on the Guardian Project jenkins box, which is Debian/jessie.

@mvdan @CiaranG @krt

See merge request !168
2016-09-23 12:25:12 +00:00
Hans-Christoph Steiner
1216125f6e Merge branch 'master' into 'master'
makebs: add gradle 3.1



See merge request !170
2016-09-23 06:36:58 +00:00
est31
56a0077183 makebs: add gradle 3.1 2016-09-23 07:50:52 +02:00
Daniel Martí
ee54fbc1b8 Merge branch 'vagrant' into 'master'
docs: update vagrant link

As pointed out in https://f-droid.org/forums/topic/documentation-bug-fix-report/#post-21839 , the link to the vagrant doc is 404. I'd assume that this is the correct link, but please verify this before merge.

See merge request !169
2016-09-20 16:19:08 +00:00
Boris Kraut
42031031e6 docs: update vagrant link 2016-09-20 11:38:12 +02:00
Hans-Christoph Steiner
a2a630c83c buildserver: only include latest m2 when provisioning
I think the `android update sdk` tool is installing all of the m2 files
that are present in the temp cache, and it seems to do it in order of
newest to oldest.  Well done, and I thought that tool couldn't get any
worse.  So only include the latest version of android_m2repository*.zip in
the temp cache.
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
0a0ba6de84 buildserver: ensure dirs to mount cache exist in guest VM instance
It seems that the 9p synced folder setup is not as flexible and easy as the
VirtualBox one, so we have to do more little things like this.
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
988647a387 buildserver: fix jenkins build to support QEMU/KVM 2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
3651e7eb9a buildserver: retry apt-get downloads 20 times
Try harder before failing the whole buildserver setup.
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
68ec7c2e88 buildserver: auto-detect and use libvirt's QEMU+KVM
For running in QEMU/KVM guests like on jenkins.debian.net, this sets up the
whole process automatically.  This only really covers the case where this
is running in a KVM guest, and the original case of running VirtualBox on
bare metal.  It could be extended to cover more cases if someone wanted to.
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
f306e32636 buildserver: make sure cachedir is accessible to VM instance
It seems that KVM/QEMU's 9p sharing is more sensitive to file perms.  If
~/.cache is 0700, then ~/.cache/fdroidserver cannot be mounted in the guest
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
0ae2df6646 buildserver: support optionally using qemu+kvm
This makes it possible to run the full build process in a KVM virtual
machine, like jenkins.debian.net.

closes #190
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
5af53238d3 buildserver: ignore android sdk repos of proprietary bits
The Android SDK by default includes some Google repositories of their
proprietary SDKs.  We of course do not want that stuff ever.  We also do
not need the emulator images since this process does not currently install
or run an emulator.
2016-09-19 16:33:12 +02:00
Hans-Christoph Steiner
b5e57a7aa6 example file for public read only S3 bucket policy
This is the locked down S3 policy as created by Benetech for their Secure
App Generator project.
2016-09-15 23:20:18 +02:00
Hans-Christoph Steiner
008b4a31eb skip fdroid import test if gitlab is not available
This prevents CI build failures when gitlab is deploying or has other
issues that might cause a 500.
2016-09-15 23:20:18 +02:00
Daniel Martí
89010a1ba5 Merge branch 'gradle-wrapper' into 'master'
Make the gradle wrapper smarter

@eighthave PTAL

This will help with issues like https://gitlab.com/fdroid/fdroiddata/issues/515

See merge request !166
2016-09-15 20:45:44 +00:00
Hans-Christoph Steiner
8fc27680cb Merge branch 'makebs-updates' into 'master'
Makebs updates



See merge request !167
2016-09-15 20:38:43 +00:00
Daniel Martí
8797cc01a8 makebs: bump support repo to 38 2016-09-15 20:07:25 +01:00
Daniel Martí
02c006a685 makebs: bump tools to 25.2.2 2016-09-15 20:07:16 +01:00
Daniel Martí
737dbc4f0a gradle: support gradle-wrapper.properties version
Brings our wrapper closer to gradlew's functionality.

Updates #98.
2016-09-15 19:16:38 +01:00
Daniel Martí
12653741cc gradle: delay calculating some versions
Simplifies the wrapper script.
2016-09-15 19:10:18 +01:00
Daniel Martí
071376b7f4 Merge branch 'control-errors-warnings' into 'master'
make metadata exceptions optional based on CLI flag

In many cases, there are times where metadata errors need to be ignored, or
at least not stop the command from running.  For example, there will
inevitably be new metadata fields added, in which case a packaged version
of fdroidserver will throw errors on each one.  This adds a standard -W
flag to customize the response: ignore, default, or error.

* by default, the errors are still errors
* `fdroid readmeta -W` will just print errors
* `fdroid readmeta -Wignore` will not even print errors

https://gitlab.com/fdroid/fdroidserver/issues/150

See merge request !164
2016-09-12 14:16:42 +00:00
Daniel Martí
352c1ff448 Merge branch 'buildserver-fixes-pre-kvm' into 'master'
buildserver fixes pre-KVM

This is a collection of little fixes to the buildserver setup that I did while implementing the QEMU+KVM support.  Since I was running the whole process repeatedly, I had opportunity to find and fix little things like this.

See merge request !165
2016-09-12 14:16:15 +00:00
Hans-Christoph Steiner
14de399bb7 buildserver: remove Kivy, unused since 2013 and out of date
This is the last thing using Chef, which adds a lot of time to the time it
takes to fully provision the buildserver.  This slows down development on
the things we are actually using, like running all builds on
jenkins.debian.net.

#210 #165
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner
91c1e8313f buildserver: download apt package first to increase reliability
This does not have the careful result rechecking that chef has, when it
installs each package in the list one at a time.  So to help with failures
caused by a package failing to download, first try downloading all the
package, then run the install.  The install pass will try to download any
missing packages.

Really, this should use ansible or perhaps chef again since those include
lots of tricks around this stuff.
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner
7b64bdcf0b buildserver: only specify lib*-dev to future proof package list
Using libssl-dev will work on all releases of Debian, but Debian/stretch
does not have libssl1.0.0.
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner
73947092fa buildserver: test build of Checkey and old F-Droid
The buildserver should still be able to build old versions of apps, and
Checkey is a verified, reproducible build.
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner
b717271c61 buildserver: force a known-good version of chef
This forces the release channel and version of chef-solo to install on the
guest VM.  I was getting really massive, odd stacktraces without specifying
this, and chef is only used for Kivy now anyway.
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner
dc2f53b48c buildserver: vagrant-cachier conflicts with custom apt cache
The technique where /var/cache/apt is mounted as a shared folder conflicts
with vagrant-cachier's workings.  Therefore, ignore vagrant-cachier if the
user selects ./makebuildserver's custom apt cache.  The shared folder way
has the advantage for CI builds of storing the cache outside of
VAGRANT_HOME, which is set to be in the git project.  That gets wiped by
`git clean -fdx` on each CI build.
2016-09-12 14:58:08 +02:00
Hans-Christoph Steiner
d522988d8c make metadata exceptions optional based on CLI flag
In many cases, there are times where metadata errors need to be ignored, or
at least not stop the command from running.  For example, there will
inevitably be new metadata fields added, in which case a packaged version
of fdroidserver will throw errors on each one.  This adds a standard -W
flag to customize the response: ignore, default, or error.

* by default, the errors are still errors
* `fdroid readmeta -W` will just print errors
* `fdroid readmeta -Wignore` will not even print errors

https://gitlab.com/fdroid/fdroidserver/issues/150
2016-09-12 12:55:48 +02:00
Daniel Martí
34f451361f Bump to 0.7.0 2016-09-11 11:52:11 +02:00
Daniel Martí
9f88bc6324 Merge branch 'updates' into 'master'
all: bump to build-tools 24.0.2

Update the docker image to include it there too.

See merge request !163
2016-09-10 10:06:44 +00:00
Daniel Martí
fd7a8c83c8 all: bump to build-tools 24.0.2
Update the docker image to include it there too.
2016-09-10 11:45:39 +02:00
Hans-Christoph Steiner
12d0fbf8c5 Merge branch 'buildserver-fixes' into 'master'
buildserver fixes

updates to the Android SDK packages used by `./makebuildserver`

See merge request !162
2016-09-05 08:48:49 +00:00
Hans-Christoph Steiner
91ceb5aff3 update to platform-24_r02 in ./makebuildserver 2016-08-30 19:48:07 +02:00
Hans-Christoph Steiner
d831ccab20 add build-tools_r24.0.2-linux.zip to ./makebuildserver 2016-08-30 19:17:30 +02:00
Hans-Christoph Steiner
bf1dff7986 new build-tools_r24.0.1.zip sha256, Google keeps changing it
I validated this versus the Google repository XML downloaded from two
separate paths from:
https://dl.google.com/android/repository/repository-12.xml

Using their SHA1:
84f18c392919a074fcbb9b1d967984e6b2fef8b4
2016-08-30 19:16:31 +02:00
Hans-Christoph Steiner
0bcd4f958b Merge branch 'patch-1' into 'master'
Add buildserver lxml requirement for pEp



See merge request !161
2016-08-30 16:09:10 +00:00
huss
261fde8ac7 Add buildserver lxml requirement for pEp 2016-08-28 12:47:12 +00:00
Daniel Martí
b92ee2b5c6 Merge branch 'fix-push-requests' into 'master'
Fix push requests

Two bug fixes found in the process of implementing the client side of the push requests in https://gitlab.com/fdroid/fdroidclient/merge_requests/386

This is related to !156.

See merge request !160
2016-08-26 22:26:17 +00:00
Hans-Christoph Steiner
c98ce54991 make build reproducible by fixing sort order in docs
From Debian https://bugs.debian.org/835463
 Description: Make the build reproducible
 Author: Chris Lamb <lamby@debian.org>
 Last-Update: 2016-08-26
2016-08-26 13:41:14 +02:00
Hans-Christoph Steiner
6126b55136 rename server request from "delete" to "uninstall"
This matches the Android API's current Intent action for this, rather than
the deprecated one:

https://gitlab.com/fdroid/fdroidclient/blob/v0.101-alpha5/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java#L147
https://developer.android.com/reference/android/content/Intent.html#ACTION_UNINSTALL_PACKAGE
https://developer.android.com/reference/android/content/Intent.html#ACTION_DELETE
2016-08-24 23:05:34 +02:00
Hans-Christoph Steiner
a6a8d34528 sanitize mirror URLs to prevent path segments from being removed
urllib.parse.urljoin() will strip off the last path segment before joining
if that last path segment does not end with /.  That's a "feature" to make
it easy to replace file names.  Here it was stripping off the essential
'fdroid' segment, making URLs like:

https://foo.com/repo

when they should be

https://foo.com/fdroid/repo
2016-08-24 23:05:34 +02:00
Daniel Martí
1c49c3af1d Merge branch 'ci-bump' into 'master'
CI: bump docker image



See merge request !159
2016-08-22 09:25:19 +00:00
Daniel Martí
a006f277bc CI: bump docker image 2016-08-21 11:11:01 +02:00
Daniel Martí
baea79f739 makebs: add gradle 3.0 2016-08-18 17:53:27 +02:00
Daniel Martí
8bcaed37a1 makebs: bump m2repository to r36 (24.2.0) 2016-08-18 17:48:01 +02:00
Daniel Martí
8d6375b1bb makebs: bump tools to r25.2.1 2016-08-18 17:47:49 +02:00
Daniel Martí
b5fcea73c5 gradle: plugins 2.2 and 2.1.3 require 2.14.1 2016-08-18 17:38:36 +02:00
Hans-Christoph Steiner
62c59c8534 Merge branch 'push-install' into 'master'
set up install/delete lists for "push" commands from server

It is now possible for the server operator to specify lists of apps that must be installed or deleted on the client (aka "push installs).  If
the user has opted in, or the device is already setup to respond to these requests, then fdroidclient will automatically install/delete
the packageNames listed.  This is protected by the same signing key as the app index metadata.

It generates single XML elements with the data set in the attributes. This keeps the XML compact and easily extensible, e.g. for adding versionCode, signingKey, etc as attributes:

```xml
    <install packageName="com.fsck.k9"/>
    <install packageName="at.bitfire.davdroid"/>
    <delete packageName="com.facebook.orca"/>
```

See merge request !156
2016-08-17 09:18:31 +00:00
Hans-Christoph Steiner
85632ba00e set up install/delete lists for "push" commands from server
It is now possible for the server operator to specify lists of apps that
must be installed or deleted on the client (aka "push installs).  If
the user has opted in, or the device is already setup to respond to
these requests, then fdroidclient will automatically install/delete
the packageNames listed.  This is protected by the same signing key
as the app index metadata.

It generates single XML elements with the data set in the attributes. This
keeps the XML compact and easily extensible, e.g. for adding versionCode,
signingKey, etc as attributes:

    <install packageName="com.fsck.k9"/>
    <install packageName="at.bitfire.davdroid"/>
    <delete packageName="com.facebook.orca"/>

Copyright: 2016 Blue Jay Wireless
Signed-off-by: Hans-Christoph Steiner <hans@eds.org>

closes #177
2016-08-16 21:02:15 +02:00
Daniel Martí
329e0247d5 Merge branch 'ndk11' into 'master'
Add ndk r11c

NDK11 is required by some apps (some versions of VLC) which will not build with r10e or r12b. As always, please test this before merging: I havent added a NDK before.

See merge request !155
2016-08-14 09:15:04 +00:00
Daniel Martí
76ecacc693 makebs: add automake
Version 1.14 is needed for k9 and some other apps.
2016-08-14 09:57:29 +02:00
Boris Kraut
815961acc5 Add ndk r11c 2016-08-14 00:59:31 +02:00
Daniel Martí
ec685342a4 Merge branch 'gradle-2.14.1' into 'master'
Add gradle 2.14.1

I hope verything is doen correctly, didnt add any gradle versions since moving from chef.. (or at all?)

See merge request !154
2016-08-12 20:36:35 +00:00
Boris Kraut
840cafd151 Add gradle 2.14.1 2016-08-12 20:25:38 +02:00
Hans-Christoph Steiner
abb4c5587f Merge branch 'java-home-lookup' into 'master'
Fix JDK lookup

Fix two cases when JDK path lookup could fail (found those issues on my Fedora 24 box).

See merge request !153
2016-08-09 15:44:06 +00:00
Hans-Christoph Steiner
911297272c Merge branch 'permission-parsing' into 'master'
Parse maxSdkVersion and -23 permission tags

Parse maxSdkVersion and uses-permission-sdk-23 tags and insert them into the index.

AndroidManifest:
```xml
    <uses-permission android:name="android.permission.READ_CALENDAR" />

    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="18" />

    <uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
```

new index format:
```xml
<package>
            <version>1.0</version>
            <versioncode>1</versioncode>
            <apkname>maxmin.apk</apkname>
            <hash type="sha256">526eb6d643050c3fae42fb6c001c704006046db52e98998b21f7646ecae3dae5
            </hash>
            <sig>893fc1f22301c902d05c938b29d21648</sig>
            <size>8681</size>
            <sdkver>14</sdkver>
            <targetSdkVersion>24</targetSdkVersion>
            <added>2016-08-01</added>
            <permissions>READ_EXTERNAL_STORAGE,READ_CALENDAR,WRITE_EXTERNAL_STORAGE</permissions>
                <uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE"
                    maxSdkVersion="18" />
                <uses-permission name="android.permission.READ_CALENDAR" />
                <uses-permission name="android.permission.READ_EXTERNAL_STORAGE" />
                <uses-permission-sdk-23 name="android.permission.ACCESS_FINE_LOCATION" />
</package>
```

old format:
```xml
<permissions>READ_CALENDAR,ACCESS_FINE_LOCATION,WRITE_EXTERNAL_STORAGE</permissions>
```

This generates both formats for backward compatibility with old clients.

Also increase version of index format.

This is a proposal for the issues discussed in https://gitlab.com/fdroid/fdroidclient/issues/704

@eighthave @mvdan 

See merge request !150
2016-08-09 15:33:19 +00:00
Dominik Schürmann
cb965dcb07 Parse maxSdkVersion and -23 permission tags
Parse maxSdkVersion and uses-permission-sdk-23
tags and insert them into the index, e.g.,
<package>
 <permissions>READ_EXTERNAL_STORAGE,READ_CALENDAR,WRITE_EXTERNAL_STORAGE</permissions>
  <uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE"
   maxSdkVersion="18" />
  <uses-permission name="android.permission.READ_CALENDAR" />
  <uses-permission name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission-sdk-23 name="android.permission.ACCESS_FINE_LOCATION" />
</package>

Also increase version of index format
2016-08-09 10:14:57 +02:00
relan
162808a4cc Check javac existence when looking for JDK
Empty JDK directories can remain from previous JDK installations. For
example in RHEL/Fedora when RPM upgrades a package it can leave modified
files (usually configs) and, consequently, their directories. So we could
end up selecting a bad JDK path.
2016-08-08 07:25:26 +03:00
Ciaran Gultnieks
83951d0ed5 Merge branch 'fix-ndk' into 'master'
Re-add NDK r12b and fix build-tools 24.0.1



See merge request !152
2016-08-04 09:16:43 +00:00
relan
07660fdb13 Fix JAVA_HOME environment variable handling
Append JAVA_HOME to pathlist as a string, not as a list of characters.
2016-08-03 08:21:46 +03:00
Daniel Martí
4b5b1fca6f makebs: work around build-tools 24.0.1 version bug
The zip contains 24.0.0 as the version, which means our magic was
installing 24.0.0 twice and skipping 24.0.1.
2016-08-02 18:08:48 +02:00
Daniel Martí
662aa2c938 all: switch to build-tools 24.0.1 as default 2016-08-02 11:12:01 +02:00
Daniel Martí
059d216aff Re-add NDK r12b, now fixed. 2016-08-02 11:10:31 +02:00
Ciaran Gultnieks
bf153ec247 Revert "all: add NDK r12b and set it as default"
This reverts commit 82d09560c6.

It doesn't work - the setup scripts are expecting a ".bin" file (which
is apparently a 7z archive), but what's actually got is a ".zip".

Conflicts:
	buildserver/provision-android-ndk
2016-08-01 12:38:52 +01:00
Ciaran Gultnieks
e99454868a Catch another case of invalid wiki page names 2016-08-01 12:25:22 +01:00
Daniel Martí
5e6b986c40 Merge branch 'bump-ci' into 'master'
CI: bump docker image



See merge request !151
2016-08-01 06:07:26 +00:00
Daniel Martí
70777233d0 CI: bump docker image 2016-08-01 00:57:32 +02:00
Daniel Martí
690711e7f8 Merge branch 'pep' into 'master'
bs: add sqlite3 and asn1c

Ref: https://gitlab.com/fdroid/fdroiddata/merge_requests/1557

See merge request !149
2016-07-31 17:15:58 +00:00
Daniel Martí
e46debe12e common: extra checks for NDK in local.props
The previous commit fixed it in local setups, this fixes it in broken
buildservers too and makes it more reliable.
2016-07-28 08:26:51 +02:00
Daniel Martí
957f01f1d6 makebs: fix config crash
Without this, running makebuildserver from a clean master results in the
following:

	 $ ./makebuildserver
	Traceback (most recent call last):
	  File "./makebuildserver", line 74, in <module>
	    del(config['__builtins__'])  # added by compile/exec
	KeyError: '__builtins__'

This is because a clean checkout has no config, thus exec is never
actually ran.
2016-07-27 11:20:17 +02:00
Daniel Martí
7b36ffa2a6 wp-fdroid: add 7.0 (24) to the versions list 2016-07-25 14:56:54 +02:00
Daniel Martí
dee3e85098 common: don't insert $ANDROID_NDK to local.props
See the comment.

Updates #171.
2016-07-25 13:07:46 +02:00
Daniel Martí
11f30223d6 makebs: update android support repo 2016-07-25 12:45:56 +02:00
Daniel Martí
9a4af61a53 makebs: add build-tools-24.0.1
Fixes #196.
2016-07-25 12:40:44 +02:00
Daniel Martí
79a1f2919a makebs: "fix" platform v24 zip for r02
Google replaced the r01 zip instead of adding the r02 one. Oh well.
2016-07-25 12:40:17 +02:00
Boris Kraut
998c016925 bs: add sqlite3 and asn1c 2016-07-23 19:14:28 +02:00
Daniel Martí
8a8c139aa9 makebs: revert platform-tools change in 2227cc6d
Amusingly, the commit changed more than just this so a simple git revert
is not possible.

The problem is that the zip is replaced with each point release (24.0.1
at the time of writing) and there is no way to get a URL to a single,
non-changing version. Hence any caching or checksums are completely
worthless and will break every few weeks.
2016-07-19 20:38:09 +02:00
Hans-Christoph Steiner
9be1c75e58 Merge branch 'ndk-r12' into 'master'
NDK r12



See merge request !147
2016-07-18 14:50:51 +00:00
Hans-Christoph Steiner
ad966c5bd9 Merge branch 'ndk-error' into 'master'
build: error properly if an invalid ndk is used



See merge request !146
2016-07-18 14:47:45 +00:00
Daniel Martí
89eb7166fe Merge branch 'patch-2' into 'master'
Server manual phrasing matches client. "beta" -> "unstable"

Fixes #193 

See merge request !148
2016-07-13 20:48:33 +00:00
Stephen Michel
60dcc55273 Server manual phrasing matches client. "beta" -> "unstable" 2016-07-13 17:25:33 +00:00
Daniel Martí
d375318550 all: remove 32-bit buildserver code
We dropped support for 32-bit, so remove all the now unused code and
references.
2016-07-13 16:47:58 +01:00
Daniel Martí
82d09560c6 all: add NDK r12b and set it as default 2016-07-13 16:45:05 +01:00
Daniel Martí
a0e4245443 build: error properly if an invalid ndk is used
Currently, if buildjni is not used but ndk is set to an invalid value,
the build would start but $ANDROID_NDK would be empty. This is happening
in VLC, which results in very confusing errors.

If a build uses a ndk= value that is not set up, such as r11/r12 which
we do not have yet, it should error with "NDK version could not be
found". It does with this change.
2016-07-13 16:32:52 +01:00
Daniel Martí
0f708f367c Merge branch 'precommit-fixes' into 'master'
pre-commit script fixes



See merge request !145
2016-07-13 15:32:34 +00:00
Daniel Martí
b53e56916c pre-commit: pep8 is now pycodestyle
See https://github.com/PyCQA/pycodestyle/issues/466.
2016-07-13 14:42:23 +01:00
Ciaran Gultnieks
21404e8622 Merge branch 'use_date_from_apk_in_known_apks' into 'master'
Pass a date from APK to KnownApks.recordapk()

... if --use-date-from-apks option is used.

Essentially, it just expands influence of `--use-date-from-apks` option to `stats/known_apks.txt`.

See merge request !141
2016-07-13 11:43:33 +00:00
Daniel Martí
d8a8c24584 pre-commit: fix warnings and errors
Properly print warnings to stderr. Also, use : instead of 'echo' as a
fallback as the latter spits out garbage to stdout.

Examples without pep8 installed.

Before:

	 $ ./hooks/pre-commit
	./hooks/pre-commit: line 97: WARNING:: command not found
	ERROR: pep8 tests failed!

After:

	 $ ./hooks/pre-commit
	WARNING: pep8 is not installed, using dummy placeholder!
2016-07-13 12:15:22 +01:00
Daniel Martí
64d9eb3b13 Merge branch 'apk-extension-obb-support' into 'master'
support APK Extension OBB files

Google Play specifies OBB aka "APK Extension" files for apps that need more than 100 MBs, which is the Play APK size limit.  They also provide a mechanism to deliver large data blobs that do not need to be part of the APK.  For example, a game's assets do not need to change often, so they can be shipped as an OBB, then APK updates do not need to include all those assets for each update.
    
https://developer.android.com/google/play/expansion-files.html

See merge request !143
2016-07-13 11:01:42 +00:00
Hans-Christoph Steiner
5f8beaa2c6 tests for finding the proper OBB files for each APK 2016-07-07 22:34:41 +02:00
Hans-Christoph Steiner
2201df150f add SHA-256 hashes of each OBB file 2016-07-07 22:34:41 +02:00
Hans-Christoph Steiner
5074be224a support .obb files for Opaque Binary Blog APK Expansions
OBB files provide a mechanism to deliver large data blobs that do not need
to be part of the APK.  For example, a game's assets do not need to change
often, so they can be shipped as an OBB, then APK updates do not need to
include all those assets for each update.

https://developer.android.com/google/play/expansion-files.html
2016-07-07 22:34:41 +02:00
Ciaran Gultnieks
0c5725b5a9 Merge branch 'standalone-vagrantfile' into 'master'
Standalone Vagrantfile

@mvdan @CiaranG as a follow up on our work moving to a 64-bit build server VM, this moves the buildserver config to a standalone YAML file and commits a static _Vagrantfile_ to git.  This makes it a lot easier to work with, especially for people who normally use git.  The buildserver config is already a Python _dict_, and its trivial to export a _dict_ to a YAML file.  _Vagrantfile_ is a Ruby script, where its trivial to load a YAML file.  This moves some of the logic into _Vagrantfile_ itself.  This means that someone can mess with _Yagrantfile.yaml_ and/or _Vagrantfile_ to work on the buildserver setup, without having to run `./makebuildserver`.  Then once something is working, it can be ported to the current `./makebuildserver` setup that generates _Vagrantfile.yaml_.

This is important for working on getting this whole thing running in a KVM instance like jenkins.debian.net and elsewhere.  From what I read, VirtualBox in KVM is only possible if VirtualBox is running in 32-bit mode, so that's a dead end for us.  We need to be able to run the buildserver as KVM in KVM #190.  This merge request doesn't get us there yet, but it makes the process a lot easier.

This also moves everything but Kivy to provisioning shell scripts, since the existing chef scripts were really just shell scripts wrapped in Chef wrapped in Vagrant wrapped in `./makebuildserver`.

This passes the gpjenkins CI build that creates the buildserver from scratch, then builds F-Droid and AdAway:
http://qssio5fppcrojdh3.onion:8080/job/fdroidserver-makebuildserver-eighthave/602/

I tried adding Amaze and Retrolambda as test apps for the buildserver too, we'll see how that goes:
http://qssio5fppcrojdh3.onion:8080/job/fdroidserver-makebuildserver-eighthave

See merge request !144
2016-07-07 15:37:26 +00:00
Hans-Christoph Steiner
8b53ae0ad0 buildserver: delete corrupt files from the cache
In order to make CI and other automation easier, delete any corrupt files
from the cache if they fail the SHA-256 check.

https://jenkins.debian.net/view/reproducible/job/reproducible_setup_fdroid_build_environment_profitbricks3/112/console
2016-07-06 22:16:55 +02:00
Hans-Christoph Steiner
d4c6fffb30 buildserver: buildserver/Vagrantfile is configed by .yaml file
Vagrantfile is now committed and not changed between configurations. It is
configed by translating the python config file's dict to a YAML file, which
Vagrantfile now loads and uses.  This makes it a lot easier for vagrant
users and python programmers to understand, and hopefully makes it easier
to maintain and test with.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
2e1ec71404 buildserver: send config to vagrant via YAML file
Python can easily output dicts as YAML, and a Vagrantfile is a ruby script,
which can easily read YAML.  Going this route means that Vagrantfile can
ultimately be committed to git, and the configuration will happen all via
Python dicts output as YAML.  That makes it drastically easier to follow
the code, and to make modifications.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
4e787cc750 buildserver: make provision scripts output name to log 2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
0171dd60fd buildserver: use pip instead of easy_install for caching
easy_install does not provide any download caching, while pip does. This
also moves the python module installing a shell script that takes python
packages as args.  That will allow for future uses like allowing app
metadata to include pip modules that they need.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
aafad6b909 buildserver: move apt setup to a shell script
This makes it so there is only a single `apt-get install` command run,
instead of one command per-package like with the chef script.  It also adds
`apt-get upgrade` to make sure that the base box is fully up-to-date.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
2374b12a77 buildserver: move trusty/paramiko hack to its own shell script
This is part of the effort to remove moving parts from the whole build
server setup.  Why wrap shell scripts in ruby and chef if we can just
directly run a shell script?
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
1b8dec32ae buildserver: enable debug log for provision-android-sdk 2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
588e6e5534 buildserver: android --silent hides errors, so remove
--silent seem to prevent `android update sdk` from exiting with an error,
so its kind of useless.  I just wanted it to suppress the verbose logs.
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
2227cc6d1a buildserver: download and cache latest platform-tools and m2repository
Also, by having our own checksums for all the bits means that we can safely
add support for local mirrors, like a bunch in China, for example:
http://mirrors.neusoft.edu.cn/android/repository/
2016-07-04 23:54:52 +02:00
Hans-Christoph Steiner
e44f6380e9 buildserver: test builds against fdroid and adaway
The other apps are too flaky on gpjenkins right now, and that's our
only box for running full buildserver tests.  Once we get the
buildserver tests running on jenkins.debian.net, then we can add a
bunch more apps to the test script.  gpjenkins is an extra locked down
box, so that's why the builds are flaky: gradle and maven downloads
regularly fail because they are blocked.
2016-07-04 23:52:53 +02:00
Hans-Christoph Steiner
2daf00abb7 buildserver: remove last vestige of 32-bit buildserver 2016-07-04 23:52:52 +02:00
Hans-Christoph Steiner
d8bf2bb312 jenkins-build: switch buildserver to new 64-bit base 2016-07-04 13:16:15 +02:00
Daniel Martí
a573688a44 makebs: flip arch64 bool
The last commit was missing this.
2016-07-04 12:01:58 +01:00
Hans-Christoph Steiner
bfd80d12d9 switch to new 64-bit base box image: https://f-droid.org/jessie64.box
build-tools and other SDK bits from android-24 require 64-bit GNU/Linux
2016-07-04 12:34:00 +02:00
Ciaran Gultnieks
1da89dc1f1 Various changes to get makebuildserver to work with a 64 bit base box
Note that the apt packages are split into two halves, because it takes
too long (on 64 bit!) to install them all. The sensible fix would be
to simply up the timeout on the package installation section, but this
is completely broken in chef.
2016-07-01 12:00:38 +00:00
Hans-Christoph Steiner
8691bd9cf9 Merge branch 'java8-and-other-fixes' into 'master'
Java8 and other fixes

This fixes the OSX travis-ci job for the Java8 update, and also two other fixes as described in the commit message.  @CiaranG I think the _/etc/profile_ approach in 7b466b6266a466a954c845968271283ad60e43ea gets us closer to the idea of having the `fdroid build` jobs run in the same environment as `vagrant ssh`.

See merge request !138
2016-06-27 18:48:19 +00:00
Hans-Christoph Steiner
d522bb7e17 handle APKs with filenames encoded with CP437
The ZIP format has no official encoding :-| so we have to do hacks.  The
zipfile devs couldn't even sort this out:
https://bugs.python.org/issue10614

closes #167
2016-06-27 20:30:32 +02:00
Hans-Christoph Steiner
1be263e870 FDroidPopen must have a locale to support UTF-8 filenames
`fdroid update` should be able to handle any valid filename (hopefully
aapt doesn't barf on them).  To handle that, the environment where the
shell commands are run in needs to have a UTF-8 locale set. If LANG is
not set, things default to ASCII and UTF-8 filenames fail.

This also renames test APK with lots of Unicode chars as a test case.

closes #167
2016-06-27 20:30:32 +02:00
Hans-Christoph Steiner
82e2689246 ignore commonly used files for testing in place 2016-06-27 14:00:49 +02:00
Hans-Christoph Steiner
e638f599e7 travis-ci: use most recent OSX image to get Java8
https://gitlab.com/fdroid/fdroidserver/merge_requests/137
2016-06-27 14:00:49 +02:00
Hans-Christoph Steiner
498489c570 load bash profile using --login when running builds on server
This will make `vagrant ssh` and `fdroid build --server` be the same env,
so troubleshooting should be easier.  !135  Here's what `man bash` says:

 When bash is invoked as an interactive login shell, or as a
 non-interactive shell with the --login option, it first reads and
 executes commands from the file /etc/profile, if that file
 exists.  After reading that file, it looks for ~/.bash_profile,
 ~/.bash_login, and ~/.profile, in that order, and reads and
 executes commands from the first one that exists and is readable.
 The --noprofile option may be used when the shell is started to
 inhibit this behavior. When a login shell exits, bash reads and
 executes commands from the file ~/.bash_logout, if it exists.
2016-06-27 14:00:49 +02:00
Hans-Christoph Steiner
d6c9a8466b properly close opened images
This stops these errors:

fdroid/fdroidserver/fdroidserver/update.py:744: ResourceWarning: unclosed
 file <_io.BufferedReader
 name='repo/icons-320/info.guardianproject.urzip.100.png'>

fdroid/fdroidserver/fdroidserver/update.py:721: DeprecationWarning: The
 'warn' function is deprecated, use 'warning' instead
2016-06-27 14:00:49 +02:00
Daniel Martí
1210dc7769 Merge branch 'api-24' into 'master'
Api 24, gradle versions

CC @krt @eighthave 

See merge request !140
2016-06-27 07:03:58 +00:00
Daniel Martí
8a34d23758 Merge branch 'permission-fix' into 'master'
Make permission parsing more specific

Get name only and ignore maxSdkVersion

Fixes #188

See merge request !142
2016-06-27 06:41:49 +00:00
Dominik Schürmann
51a6d1602f Make permission parsing more specific
Get name only and ignore maxSdkVersion

Fixes #188
2016-06-26 18:03:37 +02:00
Dmitriy Bogdanov
b7f28fa576 Pass default date to KnownApks.recordapk()
... if --use-date-from-apks option is used
2016-06-26 19:18:50 +04:00
Daniel Martí
be4953be02 Add Gradle 2.2 and 2.14 to the buildserver
2.2 can be specifically requested by an app, and in some extreme cases
those apps don't build with 2.2.1.
2016-06-24 17:06:17 +01:00
Daniel Martí
06003d3c04 Add platform-24 to the buildserver 2016-06-24 17:06:17 +01:00
Daniel Martí
b026874353 all: add and switch to build-tools v24 2016-06-24 17:06:16 +01:00
Hans-Christoph Steiner
063d581b71 Merge branch 'jdk8' into 'master'
all: switch to jdk8 as default

@eighthave this will probably require some action on the jenkins machine to replace jdk7 with jdk8.

Any thoughts @CiaranG?

See merge request !137
2016-06-21 14:02:19 +00:00
Daniel Martí
5de678e48b all: switch to jdk8 as default
Also, remove jdk7 as it will become unused. We added jdk8 for
retrolambda, and now that we will use jdk8 as the default, jdk7 is
unnecessary as retrolambda can work fine with just jdk8.

This removes it from the buildserver, and the new CI image also only has
jdk8 from jessie-backports.

Fixes #185.
2016-06-21 11:47:37 +01:00
Daniel Martí
d11135b441 Merge branch 'some-build-fixes' into 'master'
Some build fixes

This includes a couple of fixes discussed with @mvdan including removing the `ANDROID_NDK_HOME` env var from the buildserver and removing the default behavior to force the build-tools version.

See merge request !136
2016-06-21 10:12:54 +00:00
Hans-Christoph Steiner
c352605768 add force_build_tools config option
This replaces the current default behavior of always forcing the
build_tools version and allows the user to set build-tools forcing in
config.py.

closes #147
2016-06-21 10:29:56 +02:00
Hans-Christoph Steiner
400acdefab check whether metadata file is a duplicate before parsing it
By checking first, this prevents a stacktrace when the duplicate metadata
file is not valid.  For example, in the tests, the duplicate is just a zero
length file, which was causing a stacktrace.
2016-06-21 10:29:56 +02:00
Hans-Christoph Steiner
226237c5f7 buildserver: do not set NDK env vars, they are handled by fdroid build
`fdroid build` handles setting the NDK env vars since the NDK version can
change depending on the app being build.  Unlike ANDROID_HOME, there is no
single global NDK location.  The NDK installs are all versioned.
2016-06-21 10:29:56 +02:00
Hans-Christoph Steiner
a88771cf30 buildserver: run tests with verbose logs 2016-06-21 10:29:56 +02:00
Hans-Christoph Steiner
ecab81d69d buildserver: suppress unzip file list when unpacking SDK/NDK
Just too much pointless info in the log.
2016-06-21 10:29:56 +02:00
Hans-Christoph Steiner
323ad5e0ad Merge branch 'fix-buildserver' into 'master'
Fix buildserver, broken by e449d2f

Switching to a script /etc/profile.d to set up the environment is all
well and good, except that doesn't get run when you directly execute a
command directly via ssh, which means that the buildserver didn't work
at all (at least for anything that used gradle, or relied on the
environment variables.

This fix doesn't look very nice, but it works - it just forces the
appropriate script to run before build.py is executed on the server.

(Side note, I thought we had tests for this, how did it get past them?)

See merge request !135
2016-06-21 08:22:34 +00:00
Hans-Christoph Steiner
8aacbb6b4f Merge branch 'master' into 'master'
Tone down makebuildserver terminal spamming

The progress bar updating at each 1k chunk spams the terminal to such an
extent it stops responding to keypresses (at least with a fast
connection). It also seems extremely inefficient to be writing the file
in 1k chunks. This makes it 64k, which is more reasonable but quite
probably still too small.

See merge request !134
2016-06-21 06:34:20 +00:00
Ciaran Gultnieks
d7e6e335f3 Fix buildserver, broken by e449d2f
Switching to a script /etc/profile.d to set up the environment is all
well and good, except that doesn't get run when you directly execute a
command directly via ssh, which means that the buildserver didn't work
at all (at least for anything that used gradle, or relied on the
environment variables.

This fix doesn't look very nice, but it works - it just forces the
appropriate script to run before build.py is executed on the server.

(Side note, I thought we had tests for this, how did it get past them?)
2016-06-18 12:15:16 +01:00
Ciaran Gultnieks
9a2e06fd5c Tone down makebuildserver terminal spamming
The progress bar updating at each 1k chunk spams the terminal to such an
extent it stops responding to keypresses (at least with a fast
connection). It also seems extremely inefficient to be writing the file
in 1k chunks. This makes it 64k, which is more reasonable but quite
probably still too small.
2016-06-17 13:39:01 +01:00
Hans-Christoph Steiner
d6ab05c567 Merge branch 'add-sig-algs-1' into 'master'
Adding support for DSA and ECDSA signatures in binaries

Before this patch only RSA signature files was supported when using the Binaries metadata directive as described in https://f-droid.org/wiki/page/Deterministic,_Reproducible_Builds.

This patch simply makes .DSA and .EC files also be recognised as signature files.

See merge request !133
2016-06-17 12:05:22 +00:00
Markus Kilås
cf320f2e9a Adding support for DSA and ECDSA signatures. 2016-06-17 12:58:52 +02:00
Daniel Martí
3e88b7444d lint: only check unused exlibs if using all apps 2016-06-17 11:35:44 +01:00
Ciaran Gultnieks
720d40ac1c Merge branch 'use-android-update-sdk' into 'master'
switch SDK/NDK/gradle buildserver provisioning to shell scripts

This converts the SDK, NDK, and gradle chef recipes to vagrant provisioning shell scripts.   Those recipes were just shell scripts anyway, forced into that ugly ruby/chef syntax.  Hopefully this will make things easier to maintain since simple bash is easier for most devs than ruby/chef. Also, it might speed up the provisioning a little bit since the whole script is sent to the VM then executed, rather than sent line-by-line.  Additionally, the SDK components are now installed using `android update sdk` so we do not need to duplicate Google's crazy kludges with that stuff.

See merge request !132
2016-06-17 09:15:33 +00:00
Daniel Martí
882afebf76 common: always set android ndk env vars
Also, add the ndk to PATH at the beginning, in case any other ndks are
already in it.

Fixes #176.
2016-06-16 21:36:31 +01:00
Hans-Christoph Steiner
8e57f2737d invalidate apkcache if the metadata version is different
When the metadata changes, different things will be stored about each APK.
So invalidate the cached info parsed from APKs if the cache's metadata
version does not match the metadata version of the currently running tools.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner
c11edc3022 include new provisioning shell scripts in syntax checks 2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner
d0bb6f73bf buildserver: /vagrant/cache writeable only by root
Prevent build processes from modifying the cache, it is only needed
during provisioning anyway. A malicious build could still use sudo to
change the cache, but this is more to prevent mistaken modifications.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner
6ea2508127 buildserver: unpack gradle versions with provisioning shell script
This was not using anything special from chef, so do it in a shell script
instead.  This makes the script easier for the python/shell people, and
probably uses less memory, since chef is a memory hog.  This might even
make the provision go faster since it uploads the whole script as a file to
the VM, then runs it there.  I think chef sends each command via SSH.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner
02a835ff95 buildserver: unpack NDK with a provisioning shell script
This makes the process closer to ./jenkins-build scripts and .gitlab-ci.yml
files.  Hopefully it uses less RAM than chef too.
2016-06-15 16:35:00 +02:00
Hans-Christoph Steiner
e47396b403 buildserver: use android update sdk to install Android SDK
`android update sdk --no-ui` is the standard command line tool for
installing the Android SDK.  By symlinking into the $ANDROID_HOME/temp dir,
the cached files can still be used.  This converts the chef recipe to a
vagrant shell provisioning script since it was all bash anyway.

Some file names no longer officially have a -linux in them, so those were
changed to keep the cache working with the default filename.
2016-06-15 15:26:35 +02:00
Hans-Christoph Steiner
e449d2f583 buildserver: setup env vars using standard script
bash provides a standard file location for a script to be run when the
shell starts: /etc/profile.d/  This converts the scattered bits of code for
making ~/.bsenv into a single provisioning script to generate
/etc/profile.d/bsenv.sh, which gets automatically executed when bash starts
2016-06-15 15:26:35 +02:00
Hans-Christoph Steiner
721b3b79a6 buildserver: extract NDK rather than executing it
Then the NDK archive doesn't need execute permissions.
2016-06-15 15:26:35 +02:00
Hans-Christoph Steiner
14b702b23b githooks: do not run syntax checks on files being deleted 2016-06-15 14:59:56 +02:00
Ciaran Gultnieks
90ac5d3fa8 Merge branch 'fix-makebuildserver' into 'master'
Fix ./makebuildserver CI build

In order to get reproducible builds work reliably, we need to have buildserver create be fully automatic, and be able to run in VMs.  It should also handle caching downloads well, so that people can easily rebuild their buildserver, and CI builds don't have to download gigs and gigs for each run.  These are some related fixes.

See merge request !131
2016-06-15 09:30:42 +00:00
Hans-Christoph Steiner
51e8776a88 REBASE buildserver: handle loops in bash, not ruby, to save memory 2016-06-14 23:21:53 +02:00
Hans-Christoph Steiner
85b65f0941 tests: pyvenv --system-site-packages is too buggy on python 3.4
It always wants to install packages into /usr/lib/python3.4/site-packages

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 295, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/usr/lib/python3/dist-packages/pip/req.py", line 1436, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/pip/req.py", line 672, in install
    self.move_wheel_files(self.source_dir, root=root)
  File "/usr/lib/python3/dist-packages/pip/req.py", line 902, in move_wheel_files
    pycompile=self.pycompile,
  File "/usr/lib/python3/dist-packages/pip/wheel.py", line 214, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/lib/python3/dist-packages/pip/wheel.py", line 176, in clobber
    os.makedirs(dest)
  File "/usr/lib/python3.4/os.py", line 237, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.4/site-packages'
2016-06-14 22:40:50 +02:00
Hans-Christoph Steiner
a4615b1def buildserver: handle loops in bash, not ruby, to save memory
Apparently, ruby is quite a memory hog when it forks.  I've been getting
errors like this with ./makebuildserver:

Errno::ENOMEM - script[add_btools_17] (android-sdk::default line 72) had an
  error: Errno::ENOMEM: Cannot allocate memory - fork(2)

So instead of looping in ruby and forking for each loop, handle the looping
in the bash script, so ruby is just calling a single bash script.
2016-06-14 16:34:13 +02:00
Hans-Christoph Steiner
fc0df30404 remove app.openconnect from ./makebuildserver tests
Turns out this one is a pain to get running on the locked down Guardian
Project Jenkins box since it uses git:// rather than https:// for the git
submodules.
2016-06-14 14:22:00 +02:00
Hans-Christoph Steiner
714b3b9ff6 makebuildserver: use original names for downloaded SDK components
It will make it a lot easier to manage the cache if we use the original
file names, which often include the file version.  This also changes the
download process to be resumable if there is a partial file in the cache,
and switches from calling wget on the command line to using the python libs
'requests' and 'clint' to provide a similar experience.  While its not so
important for this particular bit of code to use those libraries, I think
those two will allow us to provide a better user experience throughout the
whole of fdroidserver.

In this case, it is already doing special tricks fetching the file size
from the server before trying to download it.  I suppose this code could
instead check if the file exists, and if so, check the hash sum.  I think
that would be slower for most people since checking the hash on large files
takes a noticeable about of time, while a HTTP HEAD request is pretty tiny.
2016-06-14 14:21:59 +02:00
Hans-Christoph Steiner
2fab013393 Merge branch 'targetSdkVersion' into 'master'
support targetSdkVersion

In order to provide the proper Android-6 permissions experience, the client needs to know which `targetSdkVersion` any APK has before it downloads it.  So this adds it to the metadata.

https://gitlab.com/fdroid/fdroidclient/issues/682

See merge request !128
2016-06-14 10:39:50 +00:00
Hans-Christoph Steiner
1b7a8f85fc parse targetSdkVersion from APKs
The default targetSdkVersion is minSdkVersion, according to the docs:
https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target

https://gitlab.com/fdroid/fdroidclient/issues/682
2016-06-14 11:43:07 +02:00
Hans-Christoph Steiner
032dbc3e8d official Android default minSdkVersion is 1 not 0
https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#min
2016-06-14 10:06:02 +02:00
Hans-Christoph Steiner
1feccf9eb8 rename 'sdkversion' var to 'minSdkVersion' to avoid confusion
'sdkversion' is confusing when there is also 'targetSdkVersion' and
'maxSdkVersion'.
2016-06-14 10:06:02 +02:00
Hans-Christoph Steiner
0ae257db15 rename maxSdkVersion variables to match Android
Since this variable is already different than the XML name ('maxsdkver'),
this eliminates one more name for the same thing.
2016-06-14 10:06:02 +02:00
Hans-Christoph Steiner
547a57e693 fix "DeprecationWarning: Please use assertEqual instead."
They've been deprecated since python 3.2, which was released a long time
ago.
2016-06-14 10:06:02 +02:00
Daniel Martí
f68830127e CI: bump docker image 2016-06-13 19:45:12 +01:00
Daniel Martí
4ed95b1fa6 CI: remove debug ls 2016-06-13 19:44:52 +01:00
Daniel Martí
83a0be960d Merge branch 'fix-file-read-write-encoding' into 'master'
Fix file read/write encoding

This hopefully provides a reasonably complete set of fixes for handling file encoding when reading and writing files.  It is not perfect since it does not handle _.java_, _.gradle_, or _pom.xml_ in any encoding, as is allowed.  But I think it should only be an improvement of the current state, and at worst, should work only as bad as the current setup for most language setups 

See merge request !129
2016-06-09 15:13:27 +00:00
Hans-Christoph Steiner
733ef52424 gitlab-ci: make sure pip3 install dirs exist
It doesn't want to create them itself.
2016-06-09 12:15:11 +02:00
Hans-Christoph Steiner
2b6d692f06 use UTF8 as default instead of ASCII for .java .gradle pom.xml
.java .gradle and XML files all can use any encoding.  Most code is ASCII,
but authors' names, etc. can easily be non-ASCII.  UTF-8 is by far the most
common file encoding.  While UTF-8 is the default encoding inside the code
in Python 3, it still has to deal with the real world, so the encoding
needs to be explicitly set when reading and writing files. So this switches
fdroidserver to expect UTF-8 instead of ASCII when parsing these files. For
now, this commit means that we only support UTF-8 encoded *.java, pom.xml
or *.gradle files.  Ideally, the code would detect the encoding and use the
actual one, but that's a lot more work, and its something that will not
happen often. We can cross that bridge when we come to it.

One approach, which is taken in the commit when possible, is to keep the
data as `bytes`, in which case the encoding doesn't matter.

This also fixes this crash when parsing gradle and maven files with
non-ASCII chars:

ERROR: test_adapt_gradle (__main__.BuildTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/var/lib/jenkins/workspace/fdroidserver-eighthave/tests/build.TestCase", line 59, in test_adapt_gradle
    fdroidserver.build.adapt_gradle(testsdir)
  File "/var/lib/jenkins/workspace/fdroidserver-eighthave/fdroidserver/build.py", line 445, in adapt_gradle
    path)
  File "/var/lib/jenkins/workspace/fdroidserver-eighthave/fdroidserver/common.py", line 188, in regsub_file
    text = f.read()
  File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 9460: ordinal not in range(128)
2016-06-07 20:13:54 +02:00
Hans-Christoph Steiner
afd528731a read/write F-Droid files always as UTF-8
This makes UTF-8 the sole supported encoding for F-Droid's files. This is
mostly codifying the already existing practice for config.py and index.xml.
The other files where always just ASCII before.

* config.py
* metadata/*.txt
* known_apks.txt
* categories.txt
* latestapps.txt
* latestapps.dat
* index.xml

Note: this does not change the read/write encoding of stats files.  That is
still ASCII.
2016-06-07 14:10:04 +02:00
Hans-Christoph Steiner
444e8ad982 read/write Java .properties files in proper encoding
They are officially defined as always in ISO 8859-1:
https://docs.oracle.com/javase/6/docs/api/java/util/Properties.html
2016-06-07 13:37:32 +02:00
Daniel Martí
3eca9dd773 README: fix badge 2016-06-03 16:59:24 +01:00
Ciaran Gultnieks
401649e036 Add extra debug logging for move to/from archive 2016-05-29 15:36:58 +01:00
Ciaran Gultnieks
e410e7018e Merge branch 'bs-updates' into 'master'
buildserver updates



See merge request !127
2016-05-27 13:14:52 +00:00
Daniel Martí
ec7beb8388 Bump platform-23 to r03 2016-05-27 14:08:57 +01:00
Daniel Martí
fa9aa5d10f Do not install extra-android-support in the VM
It's m2repository that is actually used by maven-based builds. This one
is pretty much useless.
2016-05-27 14:08:57 +01:00
Daniel Martí
d5d22dbc99 Update android sdk version
Install version 25 now. Also use the smaller tools zip. While at it,
also remove the tools re-install - it's not worth it, as long as we keep
the initial tools zip up to date.
2016-05-27 14:08:57 +01:00
Daniel Martí
1edd9cde3c Add gradle 2.13 2016-05-27 14:08:57 +01:00
Daniel Martí
a7e227d0e3 Merge branch 'libtool' into 'master'
Add libtool to deps list



See merge request !126
2016-05-26 16:33:39 +00:00
Boris Kraut
3a45f6ebe0 Add libtool to deps list 2016-05-17 23:04:20 +02:00
Daniel Martí
bad9c3e804 Merge branch 'lint-unused-files' into 'master'
lint: error on unused files

For now, this is just patch files.

See merge request !124
2016-05-05 23:31:04 +00:00
Daniel Martí
3aeea6fc90 lint: Add check for missing and unused extlibs 2016-05-05 13:42:07 +01:00
Daniel Martí
0711ddb376 lint: make the check for format a regular check 2016-05-05 13:23:30 +01:00
Daniel Martí
0c6269bb67 lint: error on unused files
For now, this is just patch files.
2016-05-05 12:40:16 +01:00
Daniel Martí
736391d3d9 Merge branch 'ci-bump' into 'master'
CI: Bump image

This is basically just an SDK update. We're now using the tools zip,
which is about 200MB smaller. Not entirely sure why, but things still
work.

See merge request !123
2016-05-05 11:14:27 +00:00
Daniel Martí
38790830f4 CI: Update image, not using base anymore
Since base is now 200MB smaller, this one is smaller too. The
fdroidserver-only deps are now in the client image - mainly python3-dev,
gcc and all the build deps for stuff like pillow.
2016-04-29 20:27:39 +01:00
Daniel Martí
5117562df4 lint: gradle does have target= support 2016-04-20 11:23:27 +01:00
Daniel Martí
a2edc9da43 Merge branch 'fix-ci' into 'master'
CI: Install venv instead of virtualenv



See merge request !122
2016-04-15 10:30:24 +00:00
Daniel Martí
8dea6b896c gradle: forgot to actually install 2.12 2016-04-14 16:19:35 +01:00
Daniel Martí
bf0e5dde71 CI: Install venv instead of virtualenv 2016-04-14 16:16:58 +01:00
Daniel Martí
fd9ac1ad36 Merge branch 'defaults' into 'master'
docs: add archive-policy default



See merge request !121
2016-04-14 08:35:54 +00:00
Boris Kraut
00f940e937 docs: add archive-policy default 2016-04-14 10:28:24 +02:00
Daniel Martí
1539b67537 Merge branch 'fix-virtualenv' into 'master'
Prefer pyvenv instead of virtualenv for Python 3.3+

`virtualenv` uses python2 by default on my machine.
Using `pyvenv` (see https://docs.python.org/3/library/venv.html#module-venv) instead of `virtualenv` fixes the problem and let's me perform `python3 setup.py install` in the virtual environment.

See merge request !119
2016-04-14 08:04:28 +00:00
Lode Hoste
0da94fbf58 Prefer pyvenv instead of virtualenv for Python 3.3+ 2016-04-13 08:30:41 +02:00
Daniel Martí
e2ea213887 Merge branch 'apkcache_compatibility' into 'master'
Add a workaround to open apkcache created with Py2

A workaround for #163.
*May* help in some rare cases, should not break anything.

See merge request !120
2016-04-12 18:35:23 +00:00
Dmitriy Bogdanov
3f75c95e5f Add an encoding parameter to open apkcache created with Py2 2016-04-12 12:42:41 +04:00
Ciaran Gultnieks
4eb5fa88be Fix gradle download url for 2.12 2016-04-07 08:30:10 +01:00
Daniel Martí
1e6069e20e Merge branch 'fix-jpeg' into 'master'
Added libjpeg and zlib dependency in README

It seems these dependencies are also required.

See https://github.com/python-pillow/Pillow/issues/1457

See merge request !118
2016-04-06 06:56:32 +00:00
Lode Hoste
1ba346aa5a Added libjpeg and zlib dependency in README
See https://github.com/python-pillow/Pillow/issues/1457
2016-04-06 00:46:48 +02:00
Hans-Christoph Steiner
6846b77259 Merge branch 'ci-update' into 'master'
Gradle 2.12, build-tools 23.0.3



See merge request !117
2016-04-05 10:42:59 +00:00
Daniel Martí
ec9087d057 Add and switch to build-tools 23.0.3
Also bump to the CI image which contains it.
2016-04-05 10:49:30 +01:00
Daniel Martí
a345e351ba Add Gradle 2.12 to the buildserver 2016-04-05 10:49:15 +01:00
Daniel Martí
7dfc1c0449 common: never pass None to replace_config_vars
This fixes fdroid build com.umang.dashnotifier:18:

	ERROR: Could not build app com.umang.dashnotifier due to unknown error: Traceback (most recent call last):
	  File "/home/mvdan/git/fsr/fdroidserver/build.py", line 1121, in main
	    options.onserver, options.refresh):
	  File "/home/mvdan/git/fsr/fdroidserver/build.py", line 950, in trybuild
	    build_local(app, build, vcs, build_dir, output_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh)
	  File "/home/mvdan/git/fsr/fdroidserver/build.py", line 480, in build_local
	    extlib_dir, onserver, refresh)
	  File "/home/mvdan/git/fsr/fdroidserver/common.py", line 1335, in prepare_source
	    srclibpaths.append(getsrclib(lib, srclib_dir, build, preponly=onserver, refresh=refresh))
	  File "/home/mvdan/git/fsr/fdroidserver/common.py", line 1258, in getsrclib
	    cmd = replace_config_vars(srclib["Prepare"], None)
	  File "/home/mvdan/git/fsr/fdroidserver/common.py", line 1822, in replace_config_vars
	    cmd = cmd.replace('$$NDK$$', build.ndk_path())
	AttributeError: 'NoneType' object has no attribute 'ndk_path'
2016-04-02 13:43:49 +01:00
Daniel Martí
e822627fd1 Fix build crash introduced in 3768d7a4
get_ndk_path was removed long ago when App and Build were introduced.
Now Build.ndk_path() should be used. Trying to use the object as a dict
resulted in a nasty crash:

	TypeError: 'Build' object is not subscriptable

This is probably a result from faulty rebasing and not enough test
coverage.
2016-03-30 22:54:37 +01:00
Hans-Christoph Steiner
7082e2f209 Merge branch 'base-image' into 'master'
CI: Use the new base image

Lighter, since it doesn't include all the stuff required to build and
test the client that we don't need here.

See merge request !116
2016-03-29 16:53:51 +00:00
Daniel Martí
a6e857985a CI: Use the new base image
Lighter, since it doesn't include all the stuff required to build and
test the client that we don't need here.
2016-03-29 12:44:00 +01:00
Hans-Christoph Steiner
b72fa0d5a2 Merge branch 'master' into 'master'
Fix error in build.py



See merge request !115
2016-03-28 08:01:00 +00:00
mimi89999
593a94ea7f Fix error in build.py 2016-03-27 21:36:16 +02:00
Daniel Martí
f46253a79f rewritemeta: fix after !62 breakage 2016-03-24 19:48:15 +00:00
Hans-Christoph Steiner
9e96a288c2 Merge branch 'fdroid-build-in-git-repo' into 'master'
run `fdroid build` straight out of an app's git repo

This creates a new metadata file type that is meant to be included in the git repo of the app to be built.  It uses the same formats as `metadata/`, e.g. `.txt`, JSON, XML, YAML.  The filename is instead `.fdroid.(json|txt|xml|yml)`.  This metadata then lets the user run `fdroid build` directly in the git repo of the app, and it will run the build as any other fdroid build.

@mvdan @CiaranG @krt @pserwylo @NicoAlt @parmegv feedback, flames, comments wanted

Given the very raw state of testing Android apps with gitlab-ci, I think this is a great opportunity for fdroidserver to become the standard method for testing Android apps with gitlab-ci, starting with this merge request to provide fdroid metadata embedded in the project.  What still needs to added is something like `fdroid builddepends debian` and `fdroid builddepends android` which reads the metadata and dumps out a list to be fed to `apt-get install` and `android update sdk --no-ui --filter` respectively, so that a *.gitlab-ci.yml* can look like:

```
apt-get -y install fdroidserver
apt-get -y install `fdroid builddepends debian`
echo y | android update sdk --no-ui --all --filter `fdroid builddepends android`
fdroid build
```

Then that would become a template *.gitlab-ci.yml* that should work on most Android apps.

This was marked Work-In-Progress because it depends on !57

See merge request !62
2016-03-23 20:12:22 +00:00
Hans-Christoph Steiner
9cd6b444f8 standardize on .yml as the file extension for YAML
Though the YAML people recommend .yaml for the file extension, in Android
land it seems clear that .yml has won out:

* .travis.yml
* .gitlab-ci.yml
* .circle.yml
* Ansible main.yml
2016-03-23 17:16:28 +01:00
Hans-Christoph Steiner
19189b9b04 import app into fdroid directly from git clone
This adds a new method for `fdroid import` that will generate the fdroidserver
metadata based on a local git repo.  This new mode generates the metadata in
the new .fdroid.yaml format in the git repo itself.  It is intended as a quick
way to get starting building apps using the fdroidserver tools.
2016-03-23 17:16:28 +01:00
Hans-Christoph Steiner
994488ad47 rename metadata.write_metadata() to match metadata.parse_*_metadata()
This changes the function name to include the format of the metadata file,
and also changes the order of the args to match the parse_*_metadata()
functions.
2016-03-23 17:16:28 +01:00
Hans-Christoph Steiner
3b20153cd7 document new fdroid build behavior with .fdroid.* metadata 2016-03-23 17:16:28 +01:00
Hans-Christoph Steiner
578218a8b0 build: set default config for .fdroid.* metadata
The default config for .fdroid.* metadata that is included in a git repo is
different than for the standard metadata/ layout because the expectations
are different.  In this case, the most common user will be the app
developer working on the latest update of the app on their own machine.
2016-03-23 17:16:28 +01:00
Hans-Christoph Steiner
3e6b263c8e do not require if config.py if using local metadata
Since you can have a .fdroid.* metadata file included directly in an
app's git repo, it seems annoying to force developers to also include
a blank config.py in order to run `fdroid build` from their git repo.

The next step after this is some kind of global config file for
setting paths and things that need to be customized that would apply
to all git repos, for example, to enable using a buildserver.

This also required moving all of the env setting for FDroidPopen into
a single place so that it is properly setup when using the local
metadata.
2016-03-23 17:16:27 +01:00
Hans-Christoph Steiner
3768d7a4d6 refactor env handling for FDroidPopen to support .fdroid.* metadata
The start up sequence of processes that are based on the .fdroid.* metadata
is a bit different, so this ensures that the environment variables get
properly initialized in all cases.

This also creates a single function where the environment is set.  Before
it was being set in multiple places across multiple files.
2016-03-23 17:16:27 +01:00
Hans-Christoph Steiner
9abb80b3b7 support .fdroid.* metadata file in source root of app being built
This allows app makers to include a .fdroid.(json|xml|yaml|txt) metadata
file in the root of the git repo of their app, then they can build it using
`fdroid build`.  This is useful for developers who want to maintain the
fdroid build recipe themselves, and run the fdroid build process for their
own builds.
2016-03-23 17:16:27 +01:00
Hans-Christoph Steiner
98809fc38f Merge branch 'master' into 'master'
Remove extra blank lines in makebuildserver output

These seem to have appeared during the py3 conversion.

See merge request !114
2016-03-21 22:01:54 +00:00
Ciaran Gultnieks
009a926ea4 Remove extra blank lines in makebuildserver output
These seem to have appeared during the py3 conversion.
2016-03-21 08:45:42 +00:00
Daniel Martí
a6d4081822 Merge branch 'ci-image' into 'master'
CI: Bump image, now has -dev and gcc

Also, use a specific tag instead of "latest" to avoid breaking old
tags/commits when updating the image.

See merge request !111
2016-03-17 14:14:45 +00:00
Daniel Martí
221ec07a69 CI: Bump image, now has -dev and gcc
Also, use a specific tag instead of "latest" to avoid breaking old
tags/commits when updating the image.
2016-03-17 13:36:06 +00:00
Daniel Martí
23ef5b072a checkupdates: don't ignore repeated tags
If multiple tags point at the same commit, limiting the regex search to
one tag per line would only catch one tag. This broke org.wikipedia's
update check.
2016-03-16 18:15:08 +00:00
Daniel Martí
f57e61821c Merge branch 'master' into 'master'
py3 fixes for the buildserver

some fixes to get the buildserver working with the new py3 changes.  I'm assigning it to @mvdan since he did most of the py3 stuff, but @CiaranG will probably be the user of these changes.

See merge request !113
2016-03-16 13:06:31 +00:00
Hans-Christoph Steiner
90f547eb5d update buildserver debian packages for py3 2016-03-15 20:04:50 +01:00
Hans-Christoph Steiner
b5cc35c44f jenkins-build-makebuildserver: com.amaze.filemanager instead of org.xcsoar
org.xcsoar hosts its own git repo.  Self-hosted git repos can be flaky, and
they are blocked by the Guardian Project jenkins server, so use an app from
github.com instead.
2016-03-15 13:47:56 +01:00
Hans-Christoph Steiner
ebc8ffa7d0 jenkins-build-makebuildserver: throw error if app build fails 2016-03-15 13:37:06 +01:00
Hans-Christoph Steiner
4422dca528 fix py3 bug when running fdroid build with a buildserver
File "/var/lib/jenkins/workspace/fdroidserver-makebuildserver/fdroidserver/build.py", line 1119, in main
    options.onserver, options.refresh):
  File "/var/lib/jenkins/workspace/fdroidserver-makebuildserver/fdroidserver/build.py", line 954, in trybuild
    build_server(app, build, vcs, build_dir, output_dir, force)
  File "/var/lib/jenkins/workspace/fdroidserver-makebuildserver/fdroidserver/build.py", line 403, in build_server
    output += get
TypeError: Can't convert 'bytes' object to str implicitly

closes #164 https://gitlab.com/fdroid/fdroidserver/issues/164
2016-03-15 13:21:19 +01:00
Hans-Christoph Steiner
016fa78111 fix stab at a Cygwin port (aaaahh Windows!)
This gets `fdroid init` and `fdroid readmeta` working on Cygwin.
2016-03-15 11:30:27 +01:00
Daniel Martí
8041e34957 Merge branch 'master' into 'master'
makebuildserver: buildserverid should always be a string

missed one subprocess issue in !110

See merge request !112
2016-03-14 23:37:51 +00:00
Ciaran Gultnieks
5d296f8c61 Fix python3 checkupdates crashes 2016-03-14 22:29:46 +00:00
Ciaran Gultnieks
6cecb69bf2 Fix another python3 build crash 2016-03-14 22:23:19 +00:00
Hans-Christoph Steiner
8f99400064 makebuildserver: buildserverid should always be a string 2016-03-14 17:35:44 +01:00
Daniel Martí
c1ac6f4e88 Merge branch 'master' into 'master'
post-py3 fixes

This is a collection of fixes related to running on py3 on various platforms.

See merge request !110
2016-03-14 12:54:10 +00:00
Hans-Christoph Steiner
aa0ea46465 not all UNIX echo commands support -n
FreeBSD and OSX's does not, for example, and the shell should just treat
the '\n' as white space in the command line.
2016-03-14 12:49:38 +01:00
Hans-Christoph Steiner
7039d16046 always parse versions as strings, not bytes
Fixes a couple errors like:
  File "./makebuildserver", line 30, in vagrant
    out += line
  TypeError: Can't convert 'bytes' object to str implicitly

If universal_newlines=False, the default, then Popen will return bytes if
the newlines in the data do not match the system's newlines.  Setting it to
true enables auto-conversion, and then guarantees that the data is always
str.

"If universal_newlines is True, the file objects stdin, stdout and stderr
are opened as text streams in universal newlines mode, as described above
in Frequently Used Arguments, otherwise they are opened as binary streams."
https://docs.python.org/3/library/subprocess.html#subprocess.Popen
2016-03-14 12:49:38 +01:00
Hans-Christoph Steiner
20d082dfed travis-ci: move python deps to 3 2016-03-14 12:48:58 +01:00
Hans-Christoph Steiner
0fef06a5c9 jenkins-build-makebuildserver: make sure fdroiddata is on master
on the GP jenkins, I got this:

+ git pull
From https://gitlab.com/fdroid/fdroiddata
   1df2d03..621ef4f  master     -> origin/master
You are not currently on a branch. Please specify which
branch you want to merge with. See git-pull(1) for details.

    git pull <remote> <branch>
2016-03-14 09:35:23 +01:00
Hans-Christoph Steiner
baad79f9e8 travis-ci osx: make sure build-tools are always installed
It seems that sometimes build-tools packages will not be installed unless
the --all flag is specified.
2016-03-14 09:27:26 +01:00
Ciaran Gultnieks
bc131856d2 Fix python2/makebuildserver breakage 2016-03-13 20:49:38 +00:00
Daniel Martí
fc0746712d Merge branch 'master' into 'master'
makebuildserver: support running VirtualBox in a VM

For debian.jenkins.net, our test environment is a kvm instance that does not expose the hardware virtualization instructions.  So this auto-detects whether the current machine, virtual or not, supports the hardware virtualization.  If not, it uses VirtualBox's software emulator, which should run everywhere, even in a kvm instance.

See merge request !108
2016-03-11 23:53:25 +00:00
Daniel Martí
f267a1d7c9 Merge branch 'py3' into 'master'
Python 3

I tried to keep commits separate, so if anything causes trouble, it can be reverted or changed easily.

* pre-commit hooks pass
* all tests pass
* My use of `build`, `checkupdates`, `lint`, `import`, `publish` and `update` work as usual
* 2to3 does not report anything useful anymore (only useless parentheses and list() encapsulation of iterators)
* rewritemeta works exactly as usual

CC @eighthave

See merge request !88
2016-03-11 23:51:56 +00:00
Daniel Martí
eb22714818 Merge branch 'checkupdates-speedup' into 'master'
checkupdates: sort tags by date in one go

This greatly speeds up checkupdates when UCM:Tags is used on git
repositories, especially on ones with lots of tags. The old method ran a
command per tag. The new method runs a single command and doesn't
require any sorting.

Test runs show that `fdroid checkupdates org.adaway` is down from ~13s
to ~10s on my laptop.

See merge request !109
2016-03-11 20:50:59 +00:00
Daniel Martí
375af1b844 README: It's virtualenv that we want
virtualenv is the Debian package that holds the executables.
2016-03-11 13:27:01 +00:00
Daniel Martí
f2681dcb36 CI: Use pip install to grab all deps 2016-03-11 13:27:01 +00:00
Daniel Martí
a023a235a2 metadata: always open metadata files in UTF-8
For some reason, Python uses whatever encoding the system is using via a
locale. Since CI uses an ascii locale, stuff breaks. I can't find a way
to make all of fdroidserver ignore the locale and just use UTF-8, so for
now force it where it's bothering CI.
2016-03-11 13:27:01 +00:00
Daniel Martí
23a950bd00 Fix issue related to creating fdroidvcs file 2016-03-11 13:27:01 +00:00
Daniel Martí
b786c6de20 gitignore: ignore all test-generated tmp dirs 2016-03-11 13:27:01 +00:00
Daniel Martí
84568c15a6 Fix detection of pyflakes3 found in Debian 2016-03-11 13:27:01 +00:00
Daniel Martí
d98b4d1b83 metadata: slightly speed up post_metadata_parse
Iterating over all the fields and checking which are modified is slower
than just iterating over the modified ones.
2016-03-11 13:27:01 +00:00
Daniel Martí
7f6276889e metadata: Sorting builds twice is not necessary 2016-03-11 13:27:00 +00:00
Daniel Martí
d4f806d757 Undo utf-8 text wrap workaround
This was added to fix unicode support in Python2. No longer needed in
Python3.
2016-03-11 13:27:00 +00:00
Daniel Martí
3371aa2116 Switch README and docs to indicate python 3 2016-03-11 13:27:00 +00:00
Daniel Martí
74197a9a2d pep8: start obeying E226
We nearly did already anyway.
2016-03-11 13:27:00 +00:00
Daniel Martí
72288345e3 pep8: Don't ignore rules we already obey 2016-03-11 13:27:00 +00:00
Daniel Martí
031bb39961 import: switch to python3 urllib 2016-03-11 13:27:00 +00:00
Daniel Martí
a51d849a5b update test: replace decode('hex') with unhexlify 2016-03-11 13:27:00 +00:00
Daniel Martí
5c40e3ab99 metadata test: load pickle in bytes, not str 2016-03-11 13:27:00 +00:00
Daniel Martí
4e28fa78fc Fix python headers in some source files
These were missing the python2 header, so they went under my radar when
doing the switch go python3.
2016-03-11 13:27:00 +00:00
Daniel Martí
24ad0418e3 tests: switch to python3 2016-03-11 13:27:00 +00:00
Daniel Martí
a1703f1204 update: fix encoding issues with the xml index 2016-03-11 13:27:00 +00:00
Daniel Martí
24266d48e1 update: get output bytes, not str, from keytool 2016-03-11 13:27:00 +00:00
Daniel Martí
4cb5ff0247 common: Introduce FDroidPopenBytes
* We can now get the output bytes directly if desired
* FDroidPopen remains with str output
* Ouptut is now buffered efficiently with a BytesIO instead of
  concatenating strings
2016-03-11 13:27:00 +00:00
Daniel Martí
63f8718cf5 Replace iterkeys() with keys() 2016-03-10 16:43:37 +00:00
Daniel Martí
8b3c27cb47 update: replace encode('hex') with hexlify 2016-03-10 16:43:37 +00:00
Daniel Martí
b31e20ee8b publish: fix hashing of strings 2016-03-10 16:43:37 +00:00
Daniel Martí
a78341d8e5 init: fix writing into file 2016-03-10 16:43:37 +00:00
Daniel Martí
da258dad57 Replace md5 with hashlib.md5 2016-03-10 16:43:37 +00:00
Daniel Martí
dd8ad7a4fd common: fix str fetching from manifest xml 2016-03-10 16:43:37 +00:00
Daniel Martí
d39bf37ce8 Port urllib and HTMLParser imports to python3 2016-03-10 16:43:37 +00:00
Daniel Martí
fc21dbc667 Replace remaining file() usage 2016-03-10 16:43:37 +00:00
Daniel Martí
5026d4e08b FDroidPopen: return str again
In the future we might want to instead return bytes, but for now the
easiest for the port to python3 is to continue to return str.
2016-03-10 16:43:37 +00:00
Daniel Martí
b73cc8e0b3 Replace itervalues() with values() 2016-03-10 16:43:37 +00:00
Daniel Martí
ce18d1cc85 Port to python3's configparser 2016-03-10 16:43:37 +00:00
Daniel Martí
2493e705f2 lint: remove sets usage 2016-03-10 16:43:37 +00:00
Daniel Martí
ec301b8566 common: update base64 encoding of bytes 2016-03-10 16:43:37 +00:00
Daniel Martí
920ae4692f Port all imports to python3 2016-03-10 16:43:37 +00:00
Daniel Martí
11b8b1ca4f update: replace ord() with bytearray 2016-03-10 16:43:37 +00:00
Daniel Martí
ee9a296b64 Make pre-commit hook pass after python3 switch 2016-03-10 16:43:37 +00:00
Daniel Martí
49ac25270e Run 2to3 on makebuildserver
Mostly just print conversion.
2016-03-10 16:43:37 +00:00
Daniel Martí
d42c612c9a pre-commit: port to python3 2016-03-10 16:43:37 +00:00
Daniel Martí
099b45fcca Remove import workarounds for Python2 2016-03-10 16:43:37 +00:00
Daniel Martí
f1f5836a66 Remove code that worked around python2 unicode 2016-03-10 16:43:37 +00:00
Daniel Martí
e829b0f9e7 Get readmeta and rewritemeta running under python3 2016-03-10 16:43:37 +00:00
Daniel Martí
832b1224b9 Replace basestring with str 2016-03-10 16:43:37 +00:00
Daniel Martí
75419c1f04 Replace iteritems() with items() 2016-03-10 16:43:37 +00:00
Daniel Martí
6819c109fe Replace execfile with open+compile+exec 2016-03-10 16:43:37 +00:00
Daniel Martí
ca5ee87b16 Switch to io.StringIO 2016-03-10 16:43:37 +00:00
Daniel Martí
e3591cb7b8 Fix imports in Python 3
Since common and metadata import each other, we must import via
"fdroidserver.*".
2016-03-10 16:43:37 +00:00
Daniel Martí
99edd64372 Switch all headers to python3 2016-03-10 16:43:36 +00:00
Hans-Christoph Steiner
6f254ff7b6 makebuildserver: use VB software virt if hardware is not available
This checks the local CPU settings to see if it has the right virtualizing
CPU instructions, and only uses VirtualBox hardware virtualization on
setups where it is available.  VMs instances usually do not provide these
instructions.  Where the CPU features are not available, it will use VB's
software virtualization.
2016-03-10 12:28:31 +01:00
Hans-Christoph Steiner
6e98a420d5 corrected word order in release alias 2016-03-10 12:28:31 +01:00
Hans-Christoph Steiner
b0ffc5ce4c Merge branch 'jenkins-makebs' into 'master'
Jenkins makebs improvements



See merge request !105
2016-03-10 11:27:15 +00:00
Daniel Martí
3317cb3654 jenkins: build a variety of apps 2016-03-10 11:22:43 +00:00
Daniel Martí
5374c1e332 jenkins: only build one version per app
Use a specific vercode instead of --latest since we want this to be as
stable as possible.
2016-03-10 11:22:12 +00:00
Daniel Martí
896d7240aa jenkins: update fdroiddata if existing
Also, when cloning, no need to specify the branch and only download that
one. We already have only a single branch. And forcing master isn't
necessary.
2016-03-10 11:21:13 +00:00
Daniel Martí
2a73b74603 checkupdates: sort tags by date in one go
This greatly speeds up checkupdates when UCM:Tags is used on git
repositories, especially on ones with lots of tags. The old method ran a
command per tag. The new method runs a single command and doesn't
require any sorting.

Test runs show that `fdroid checkupdates org.adaway` is down from ~13s
to ~10s on my laptop.
2016-03-10 11:14:08 +00:00
Daniel Martí
261cbcd3ee build: don't remove wrapper dir gradle/
The point of removing these was to make sure that gradlew wasn't used,
and that our gradle was used instead. Removing the scripts already
accomplishes this.

Removing gradle/ should be harmless, but some apps like I2P re-use this
directory to also hold other stuff that is actually needed. So be safer
and don't remove it at all.
2016-03-08 23:50:14 +00:00
Daniel Martí
ace4834cf7 lint: Also warn about gitlab links missing /issues 2016-03-07 22:30:52 +00:00
Daniel Martí
38d8778200 README: Use new CI badge url 2016-03-07 20:53:58 +00:00
Daniel Martí
3c3e8e5b85 Merge branch 'import' into 'master'
import: Fix usage of .git suffix for gitlab urls



See merge request !107
2016-03-06 11:32:05 +00:00
Boris Kraut
f4ce1737d9 import: use .git suffix only for repo-url 2016-03-06 11:20:10 +01:00
Daniel Martí
495b2057ed README: Fix CI badge
The old /ci link no longer works. Use the builds page instead.
2016-03-05 23:54:33 +00:00
Daniel Martí
c2cf6b1982 CI: Install missing gcc and python-dev packages 2016-03-05 19:22:23 +00:00
Daniel Martí
920f11d047 lint: error on fdroid import disable line 2016-03-03 14:19:32 +00:00
Daniel Martí
d4f7097638 CI: No longer needed to install any deps
All the deps come installed in the image now. This saves up a little
time (especially the apt-get update) and makes the CI script much
simpler.
2016-02-29 23:38:54 +00:00
Daniel Martí
6264222fb6 CI: Use our own image 2016-02-29 19:56:02 +00:00
Daniel Martí
bf32477433 Merge branch 'p1' into 'master'
Fix pubkey extraction on update

Replacement of !86.

Fix pubkey extraction in case of non-empty _JAVA_OPTIONS. Fixes #133.

I didn't actually run the test suite (it looks like there are some preparations to be done for that), but I checked the commands from `test_fdroid_popen_stderr_redirect` in ipython.

See merge request !103
2016-02-28 13:37:17 +00:00
Daniel Martí
9f95c0bbdb Merge branch 'faster-ci' into 'master'
CI: Install Android SDK only if necessary



See merge request !106
2016-02-28 13:35:57 +00:00
Daniel Martí
8106d4ffde CI: Install Android SDK only if necessary 2016-02-27 19:56:32 +00:00
Daniel Martí
e3f60e2b78 common: make jdk detection more strict
We weren't using ^ and $, so stuff like java-8-openjdk-i386 would match
both the Arch and the Debian regexes. A list with one regex per line in
the same format is also easier to read and maintain.

This might be why java8 isn't being detected properly on our Debian
stable buildserver.
2016-02-23 12:43:58 +00:00
Daniel Martí
3fbe4cc8f2 config.buildserver.py: use new java_paths keys 2016-02-23 12:26:00 +00:00
Daniel Martí
3e124c8105 build: don't error on .fdroid* files in fdroiddata
This avoids the following incorrect error:

	fdroidserver.common.FDroidException: Only one local metadata file allowed! Found: .fdroid.keystorepass.txt .fdroid.keypass.txt
2016-02-23 12:03:26 +00:00
Daniel Martí
2e5c96dcfa Merge branch 'scanner-repos' into 'master'
Allow commonsware and gradle plugin repos

This is in a MR because I'm uneasy about adding a semi-random AWS url to the list. But seems like the commonsware guy only publishes jars there, which doesn't make any sense to me.

Any idea @eighthave?

See merge request !102
2016-02-20 07:29:12 +00:00
Daniel Martí
25eb4626e7 docs: add missing maven repos 2016-02-20 07:21:17 +01:00
Daniel Martí
cb6928978a Merge branch 'p2' into 'master'
Fix update crash in case of unset dates in APK; add an option to use APK's entry date

I encountered an error when I tried to add [TrackID APK](https://play.google.com/store/apps/details?id=com.sonyericsson.trackid) (files in the APK don't have dates set): as far as I can remember `datetime(*manifest.date_time)` was raising `ValueError`.

Also add an option to use date from APK as this APK's entry date (may be useful in case of a simple binary repo): `fdroid update --use-date-from-apk`.

I should have split this commit, but I hope this would be OK too.

See merge request !104
2016-02-18 13:35:33 +00:00
Dmitriy Bogdanov
476502fe8d Add '--use-date-from-apk' option to bash-completion 2016-02-18 16:42:16 +04:00
Dmitriy Bogdanov
0fdeade4d4 Add an option to use dates from APK 2016-02-18 16:41:43 +04:00
Dmitriy Bogdanov
a8b1472a43 Fix update crash in case of unset dates in APK 2016-02-18 16:40:51 +04:00
Hans-Christoph Steiner
3685ba16f7 setup.py: fix missing comma in classifiers 2016-02-18 11:47:02 +01:00
Hans-Christoph Steiner
506f1bfb70 python setup.py release alias for making official releases 2016-02-18 11:40:47 +01:00
Daniel Martí
05bcf8abd6 Bump to 0.6.0 2016-02-18 09:15:47 +00:00
Dmitriy Bogdanov
5d54b761af Add FDroidPopen usage test 2016-02-18 00:45:06 +04:00
Dmitriy Bogdanov
7fc55a3847 Fix pubkey extraction on update
Fix pubkey extraction in case of non-empty _JAVA_OPTIONS
2016-02-17 22:22:57 +04:00
Ciaran Gultnieks
8135760554 Change can't update category name - closes #80 2016-02-17 14:38:44 +00:00
Daniel Martí
163044648c Allow commonsware and gradle plugin repos 2016-02-17 13:00:05 +00:00
Daniel Martí
86d41dfe82 Merge branch 'debian-import-freeze' into 'master'
Debian import freeze

These are the issues as discussed in today's meeting.  More in the commit messages, and mostly, in the related issues.

See merge request !101
2016-02-17 11:40:12 +00:00
Hans-Christoph Steiner
e0312897c7 make "Current Version Code" default to most recent APK
closes #36 https://gitlab.com/fdroid/fdroidserver/issues/36
2016-02-17 10:40:07 +01:00
Hans-Christoph Steiner
3967a0068b added 'mirrors' option to config for giving official mirror URLs
serverwebroot has long supported uploading to multiple servers, this bit of
metadata communicates those official mirrors to the client so that it can
automatically do something useful with that information.

closes #14 https://gitlab.com/fdroid/fdroidserver/issues/14
2016-02-17 10:40:07 +01:00
Hans-Christoph Steiner
a7a053c4f5 use utf-8 as default encoding for config.py
This makes it easy to add all languages to the description.
2016-02-17 00:26:16 +01:00
Hans-Christoph Steiner
f861faa86d Merge branch 'full-bsd-osx-port' into 'master'
Full BSD/OSX port

This finishes up the OSX port by getting the full test suite running on OSX.  It also sets up an OSX CI job travis-ci.org, run as part of the github mirror here: https://github.com/f-droid/fdroidserver  You can see those CI builds here: https://travis-ci.org/f-droid/fdroidserver

This should translate entirely to *BSD since OSX's user land is merged with FreeBSD.

See merge request !100
2016-02-15 22:09:55 +00:00
Hans-Christoph Steiner
78151c04c5 travis-ci: make pip install deps based on setup.py 2016-02-15 23:06:32 +01:00
Hans-Christoph Steiner
a28ede2b67 PEP8 fix E225 missing whitespace around operator 2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
46d754416d travis-ci: run test suite on OSX and GNU/Linux 2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
0bdbadabff init: check if examples/ exists in layout before using the path
There is definitely some odd stuff that happens in all these paths, so
let's just check that examples/ exists, and move on from there.
2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
c9394b1c99 pre-commit: make pyflakes optional to support older platforms
Travis-CI defaults to Ubuntu/precise, which has a very old version of
pyflakes that throws false positives.
2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
2983f3505d support BSD and GNU sed in tests 2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
c91b715a15 run-tests: use OSX/BSD compatible mktemp -d
-d requires an arg on BSD
2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
ff30bded21 only test ./gendocs on GNU/Linux
This helps with getting the tests running on OSX and other platforms.
2016-02-15 23:06:31 +01:00
Hans-Christoph Steiner
5f1e57c7e6 complete-ci-tests: exit with error if setup is not correct 2016-02-15 23:06:31 +01:00
Daniel Martí
f06afe7884 Forgot to remove the output= debug prints 2016-02-15 13:49:12 +00:00
Daniel Martí
437d06c51e pre-commit: fix multiple file issue
When using -z, you should always quote. If not, stuff like this happens:

	.git/hooks/pre-commit: line 10: [: too many arguments
2016-02-15 12:04:34 +00:00
Daniel Martí
9800ed1a1a output= is now a glob path and can do gradle 2016-02-15 12:02:45 +00:00
Daniel Martí
da0a787879 Add gradle 2.11 2016-02-15 12:02:45 +00:00
Daniel Martí
9520839984 gradle wrapper script: add plugin 1.5 2016-02-15 12:02:45 +00:00
Daniel Martí
c2270f8434 Merge branch 'master' into 'master'
a couple fixes

these are three fixes, one related to my previous merge request, as discussed with @mvdan in IRC

See merge request !99
2016-02-12 09:13:53 +00:00
Hans-Christoph Steiner
5780c14df2 fix PEP9 E713 test for membership should be 'not in' 2016-02-12 08:33:22 +01:00
Hans-Christoph Steiner
dfca237329 fix errors in pre-commit hook when run in test suite 2016-02-12 08:33:22 +01:00
Hans-Christoph Steiner
8489047bcf build: check that metadata is present before creating tmp dirs
Before, `fdroid build` would create some subdirs, then fail when it could
not read the metadata via metadata.read_metadata().  This checks before
whether there is any metadata available, and warns the user accordingly.
2016-02-12 08:33:22 +01:00
Hans-Christoph Steiner
751fd3fb0a common: do not crash if the java_paths are not what is expected
Many commands work without the JDK installed, and it is also possible that
someone is using only JDK 8 or 9.
2016-02-12 08:33:21 +01:00
Daniel Martí
7feeaad095 common: add regexp for arch oracle paths 2016-02-11 21:48:51 +00:00
Daniel Martí
28db5b82c2 common: fix JDK detection on latest arch 2016-02-11 21:34:44 +00:00
Hans-Christoph Steiner
6fc62fe609 Merge branch 'auto-detect-java-homes' into 'master'
Auto detect java homes

There are a wide variety of possible JDKs (OpenJDK, Oracle, OSX, etc.) as well as standard paths for the JDK.  This includes code to look in standard paths for various platforms and enumerate the installed JDKs (e.g. 6, 7, 8, 9).  That is then used for `JAVA[6-9]_HOME` env vars and the path for `jarsigner` and `keytool`.

See merge request !98
2016-02-11 20:47:29 +00:00
Hans-Christoph Steiner
69c81c3817 use jarsigner and keytool from same JDK as is being set in JAVA7_HOME
Using the same JDK throughout should prevent weird bugs where a setup might
use Java8's jarsigner and Java7's keytool.  This also allows the user to
set java_paths and have jarsigner and keytool used from that specified JDK.

This incorporates almost all of the patch that is in the Debian package
that forces fdroidserver to use the default JDK on that Debian release.

closes #93 https://gitlab.com/fdroid/fdroidserver/issues/93
2016-02-11 21:17:23 +01:00
Hans-Christoph Steiner
fdf17e809c automatically detect various installed JDKs and set JAVA[6-9]_HOME
This checks for which JDKs are installed in common locations, then sets the
JAVA[6-9]_HOME env vars needed by some build environments.
2016-02-11 21:17:23 +01:00
Hans-Christoph Steiner
7f451a815b makebuildserver: add workaround to Ubuntu/trusty's old paramiko
Ubuntu trusty 14.04's paramiko does not work with jessie's openssh's
default settings, so they need to be tweaked in order to provide working
ssh to the instance.

https://stackoverflow.com/questions/7286929/paramiko-incompatible-ssh-peer-no-acceptable-kex-algorithm/32691055#32691055
2016-02-11 20:27:30 +01:00
Daniel Martí
1f59d6f0cf Merge branch 'jmastr/use_tag_if_version_name_is_unknown' into 'master'
use tag if version name is unknown

If we don't find the version name neither in the AndroidManifest.xml nor
in the build.grade file, we fallback to the tag the user specified to
search for.

That way we have a better version name than 'Unknown'.

See merge request !97
2016-02-11 19:06:22 +00:00
Julian Strobl
dd0b38a7e5 use tag if version name is unknown
If we don't find the version name neither in the AndroidManifest.xml nor
in the build.grade file, we fallback to the tag the user specified to
search for.

That way we have a better version name than 'Unknown'.
2016-02-11 19:50:16 +01:00
Daniel Martí
45d99d1cc9 Merge branch 'prevo' into 'master'
Add libexpat1-dev and libglib2.0-dev to the default recipe

These are needed to build the PrevoDB srcdep of
uk.co.busydoingnothing.prevo.

See merge request !96
2016-02-10 15:57:19 +00:00
Neil Roberts
c9404c8e39 Add libexpat1-dev and libglib2.0-dev to the default recipe
These are needed to build the PrevoDB srcdep of
uk.co.busydoingnothing.prevo.
2016-02-10 14:59:13 +00:00
Daniel Martí
a26a057b90 Merge branch 'jenkins-makebuildserver-works' into 'master'
Jenkins ./makebuildserver works!

These commits get `./makebuildserver` running in a Jenkins job. It builds the whole setup from scratch every time, including the vagrant and virtualbox setups.

Also, this modifies the git pre-commit hook to only run on the files being committed when called by git.

See merge request !95
2016-02-08 16:07:27 +00:00
Hans-Christoph Steiner
2ea38fa7e3 test ./makebuildserver by running a build in jenkins 2016-02-04 20:18:03 +01:00
Hans-Christoph Steiner
2d2ac66a26 script to run ./makebuildserver on Jenkins instances
This is being used to run it on both Guardian Project's and Debian's
Jenkins instances.
2016-02-04 20:16:35 +01:00
Hans-Christoph Steiner
09daa5eee0 makebuildserver: default memory to 1024MB, so it runs on normal machines
4 gigs is still a common amount of RAM these days for laptops, if the VM
takes almost all of that, it makes the machine drag to almost a halt. Most
apps build fine in 1gig of RAM, indeed that's the default for most CI
instances, like travis-ci and gitlab-ci.
2016-02-03 14:54:14 +01:00
Hans-Christoph Steiner
dd93505fce allow setting up an apt package cache for the build server setup
This creates a cache folder which will store the apt cache from the VM.
2016-02-03 14:54:14 +01:00
Hans-Christoph Steiner
b6a5978b11 makebuildserver: make chef find the custom cache locations 2016-02-03 14:54:14 +01:00
Hans-Christoph Steiner
7c30569aed make git pre-commit hook only test files to be committed
Right now, the git pre-commit hook is pretty annoying to work with when
development since it tests every single file.  That means notes, incomplete
stuff, etc. will be run through the tests.  So all of the files need to be
clean in order to commit even a single trivial fix.  This commit changes it
so that the pre-commit hook is only run on the files staged to be committed.
2016-02-03 14:54:14 +01:00
Daniel Martí
f586161361 lint: also check for trailing spaces in names
I was wrong - we don't check for trailing whitespaces on lines. That
would have to happen at parse time, not in the linter, so it would slow
things down and would become an error, not a warning. Not really worth
it.
2016-01-31 21:29:31 +00:00
Daniel Martí
8f36adfd7b Merge branch 'authorregex' into 'master'
lint: check whitespaces in "Author Name"



See merge request !94
2016-01-31 21:26:31 +00:00
Boris Kraut
5858ba5680 lint: check whitespaces in "Author Name" 2016-01-31 21:37:25 +01:00
Daniel Martí
d180f4f8c4 Merge branch 'licenses' into 'master'
wp-fdroid: Linkify more licenses



See merge request !90
2016-01-31 13:26:26 +00:00
Daniel Martí
0c68d13560 Merge branch 'patch-1' into 'master'
Support 'gpgkey' option as announced in sample config.



See merge request !93
2016-01-31 13:25:03 +00:00
Marvin W
6130e6eaf0 Support 'gpgkey' option as announced in sample config. 2016-01-27 15:51:03 +00:00
Ciaran Gultnieks
3629437b09 Tidy up/fix some vagrant issues
1. It is packaged in modern versions of distros, update docs accordingly
2. 1.1 is hopelessly outdated - support 1.4 onwards
3. Check the version properly, and write a better config (previously it
   wrote the 1.1 config for 1.1 and 1.3+
4. Ensure that the default share from later versions is not present when
   building, it's only required for provisioning.
2016-01-26 22:05:31 +00:00
Ciaran Gultnieks
f6b9e46246 Handle with invalid manifests better
In other words, don't blow up and kill a whole checkupdates run just
because one version of one package has some invalid xml.
2016-01-26 22:05:31 +00:00
Daniel Martí
5952c46bd0 Merge branch 'makebuildserver-jenkins-fixes' into 'master'
Makebuildserver jenkins fixes

more stuff related to the Debian jenkins build

See merge request !92
2016-01-26 19:52:12 +00:00
Hans-Christoph Steiner
90d81eba2d makebuildserver: settable vm boot timeout, plus longer default
On slow machines or VMs like the Debian jenkins box, the VM boot timeout
needs to be a lot longer, otherwise vagrant times out before setting up
the VM.
2016-01-26 17:47:17 +01:00
Hans-Christoph Steiner
3511c44357 makebuildserver: explicitly set debian_mirror by default
There needs to be a default, otherwise it crashes.  I should have included
this in 8d66742dd7
2016-01-26 17:46:51 +01:00
Daniel Martí
88d369e293 Merge branch 'makebuildserver-caching-fixes' into 'master'
./makebuildserver CI fixes

These are fixes for caching and flexible config related to the work of getting `./makebuildserver` running on Debian's and Guardian Project's Jenkins boxes.  @mvdan and I have been working with h01lger to get that going, here's the latest build log: https://jenkins.debian.net/view/reproducible/job/reproducible_setup_fdroid_build_environment_profitbricks3/lastBuild/console

See merge request !91
2016-01-26 11:00:58 +00:00
Hans-Christoph Steiner
980339d2f5 make all apt repos in build server use the configured debian mirror 2016-01-26 11:31:40 +01:00
Hans-Christoph Steiner
8d66742dd7 makebuildserver: set debian mirror in config file only
Setting it in the config file was not working, and right now, all of the
options are in the config file and not as command line flags, so remove
--debian-mirror to keep that consistent.
2016-01-26 11:31:40 +01:00
Hans-Christoph Steiner
82e26cf59e makebuildserver: use jessie32.box from cache, if present 2016-01-26 11:31:40 +01:00
Daniel Martí
1ff4f63de3 scanner: Allow clojars.org maven repository
See https://github.com/inorichi/tachiyomi/issues/46.
2016-01-24 18:13:45 +00:00
Boris Kraut
c773fdf633 wp-fdroid: Linkify more licenses 2016-01-24 13:27:15 +01:00
Hans-Christoph Steiner
16c220517d Merge branch 'master' into 'master'
Reproducibly build documentation

The two commits fix reproducibility problems detected by the Debian CI:

https://reproducible.debian.net/rb-pkg/unstable/amd64/fdroidserver.html

See merge request !84
2016-01-22 10:27:54 +00:00
Daniel Martí
0003e4c742 Merge branch 'makebuildserver-for-debian-jenkins' into 'master'
Makebuildserver for debian jenkins

@mvdan and I worked out a plan with Holger, the Debian Developer running the reproducible builds jenkins build farm.  The idea is for that to just run `./makebuildserver` in the jenkins script.  Then we'll make sure that it works.  This also makes it easy for anyone to set up and run an FDroid build instance, which is important for things like the verification server and for people to be able to run reproducible builds on their own machine.

This does change some of the defaults, but they can all be overridden in the `makebs.config.py` for f-droid.org.

More comments in the commits.


See merge request !89
2016-01-21 15:49:37 +00:00
Hans-Christoph Steiner
24a9f3b816 makebuildserver: delete cached files with zero size
If download fails to connect, it'll make a zero size file.  Then the next
run on ./makebuildserver will fail because the checksum will not be right.
2016-01-21 15:41:26 +01:00
Hans-Christoph Steiner
cda8fa00f5 makebuildserver: cache defaults to ~/.cache/fdroidserver
This also provides a config option to override that default.  ~/.cache is
a standard location on GNU/Linux machines for cached content.  It is also
good to have the cache outside of the git repo in case `git clean -fdx` is
run, which would delete all files in the directory that are not part of the
git repo, including buildserver/cache/
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner
3bd8ef2c8c makebuildserver: set defaults in script so it can run without config
This makes it so that ./makebuildserver will run without any config file,
using the defaults that are embedded in the script itself.  This is like
how `fdroid` works.
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner
50713c7ce9 makebuildserver: set default Debian mirror to http.debian.net
This host automatically detects which is the closest mirror, then uses that
one.  It does so dynamically, so it'll work on machines that move too. Now
that we are pushing more people to run F-Droid build servers, the defaults
should take those use cases into account.
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner
b33add9ce7 name makebuildserver config the same as the script
This keeps the numbers of names down to a minimum, and since the config
is placed right next to the script, this keeps tab completion working
nicely when the config file is in place.

The old file name is still supported.
2016-01-21 15:34:55 +01:00
Hans-Christoph Steiner
25caa09420 run-tests: verbose output for fdroid update to aid debugging
I'm stumped by this stacktrace, hopefully debug logging will help:

Unknown exception found!
Traceback (most recent call last):
  File "./fdroidserver-0.4.0/fdroid", line 141, in <module>
    main()
  File "./fdroidserver-0.4.0/fdroid", line 119, in main
    mod.main()
  File "<http://localhost:18080/job/fdroidserver/ws/.testfiles/tmp.9hr9NiSmZs/fdroidserver-0.4.0/fdroidserver/update.py",> line 1146, in main
    apks, cachechanged = scan_apks(apps, apkcache, repodirs[0], knownapks)
  File "<http://localhost:18080/job/fdroidserver/ws/.testfiles/tmp.9hr9NiSmZs/fdroidserver-0.4.0/fdroidserver/update.py",> line 543, in scan_apks
    thisinfo['sig'] = getsig(os.path.join(os.getcwd(), apkfile))
  File "<http://localhost:18080/job/fdroidserver/ws/.testfiles/tmp.9hr9NiSmZs/fdroidserver-0.4.0/fdroidserver/update.py",> line 361, in getsig
    with zipfile.ZipFile(apkpath, 'r') as apk:
  File "/usr/lib/python2.7/zipfile.py", line 770, in __init__
    self._RealGetContents()
  File "/usr/lib/python2.7/zipfile.py", line 857, in _RealGetContents
    x._decodeExtra()
  File "/usr/lib/python2.7/zipfile.py", line 388, in _decodeExtra
    tp, ln = unpack('<HH', extra[:4])
struct.error: unpack requires a string argument of length 4
2016-01-21 12:26:50 +01:00
Daniel Martí
0be343273d Apparently Python cannot handle Unicode
I really hope I can revert this in the near future. Having to mutilate
my name just so that pip will work is a terrible workaround.

For better or worse, this only affects scripts defined in setup.py.
2016-01-14 23:15:05 +01:00
Daniel Martí
fff658ba19 stats: use a stable sort that doesn't randomize
Since we only sorted by count, ignoring the string, it meant that items
with the same count might be arranged in different manners. Hence the
`stats` behaviour was not predictable at all. Now it sorts first by
count, then by string.
2016-01-11 02:43:06 +01:00
Daniel Martí
68e2b46cb0 build: don't add extra clean tasks
It is a good idea in theory, especially for extra tasks specified by the
user. But in practice, tasks specified by developers often don't have a
clean counterpart. So this just breaks the build.
2016-01-11 02:05:43 +01:00
Daniel Martí
0cf2539c89 metadata: fix text wrapping on unicode characters
We were passing the utf-8 encoded string to textwrap, which took the
bytes as characters. Hence multi-byte unicode characters (in utf-8)
would count as multiple columns, which is clearly wrong.
2016-01-10 17:54:38 +01:00
Daniel Martí
309660423c fdroid: python2 doesn't like print()
It just prints "()", which is stupid.
2016-01-09 13:24:13 +01:00
Daniel Martí
bd29fce13b Add Gradle 2.10 to the BS 2016-01-05 09:15:54 +01:00
Daniel Martí
e8eda55d9d metadata: Always use regex to verify values
Lists can be made into regexes very easily. Major code simplification.
Also no need to construct sets to avoid iterating over lists.
2016-01-04 13:44:00 +01:00
Daniel Martí
7ff833b948 Remove redundant AntiFeatures bool check 2016-01-04 13:26:48 +01:00
Daniel Martí
2cd3958526 Merge branch 'master' into 'master'
Add Author Name and Author Email fields. (Closes: #90)

Adds the two new fields as discussed in issue #90. Both are optional.

Mind that the Wiki template needs to be extended before merging.

See merge request !87
2016-01-04 08:29:17 +00:00
Dominik George
7f3434ea50
Add Author Name and Author Email fields. (Closes: #90) 2016-01-03 23:00:03 +01:00
Daniel Martí
622195bf16 lint: warn about spaces in summaries too 2015-12-31 11:21:47 +01:00
Daniel Martí
3ac535108a README: Note that Python 2.7.7+ is supported 2015-12-31 10:11:41 +01:00
Daniel Martí
4482ba971d gradle: stop trying to patch outputFile
This often breaks since we're just removing a single line. Instead, use
a much more reliable way of finding output apks.
2015-12-31 09:47:14 +01:00
NeroBurner
1683df0cf8 handle Queue 2015-12-29 20:11:47 +01:00
NeroBurner
0e0767492e Octal numbers 0600 to 0o600 2015-12-29 20:10:04 +01:00
NeroBurner
5ca182a20d except named exception handling 2015-12-29 20:09:27 +01:00
NeroBurner
af38f151a2 Change print-function to have brackets 2015-12-29 20:06:46 +01:00
Daniel Martí
967472408b Add NonFreeAssets anti-feature 2015-12-29 12:39:48 +01:00
Daniel Martí
20ced3f303 Small gradle wrapper fix
It broke on cases like:

	if (gradle.gradleVersion >= "2.2") {
2015-12-24 23:08:31 +01:00
Daniel Martí
5b8d593275 gradle: Completely get rid of gradlepluginver
We can support multiple output dirs without having to detect/infer the
plugin version. Much simpler and more robust too.
2015-12-24 16:41:39 +01:00
Daniel Martí
138618937f gradle: Never add lintOptions workaround
This breaks on newer plugin versions. Instead of complicating this logic
even further to support them, upstream devs should instead use gradle
configs that actually work.

If their build fails because of lint, it's theirs to fix, not ours.
2015-12-24 16:40:36 +01:00
Daniel Martí
adff5615f5 Fix issues spotted by older pyflakes 2015-12-16 16:42:50 +01:00
Daniel Martí
03b6662324 Merge branch 'docs' into 'master'
docs: Add information on binary verification

I added a section about `Binaries:` metadata field. However, my information might be wrong or outdated, since I barely used it by now. Maybe even this field was left out on purpose...

See merge request !83
2015-12-10 11:50:36 +00:00
Daniel Martí
020160f1e8 Merge branch 'summarylength' into 'master'
docs: Adjust summary length



See merge request !85
2015-12-10 11:47:48 +00:00
Boris Kraut
531a165daf docs: Adjust summary length 2015-12-10 12:42:05 +01:00
Daniel Martí
013315bf10 Open metadata files in only one place
Also get rid of the useless get_default_app_info func.
2015-12-07 20:31:23 +01:00
Daniel Martí
c2304b3315 lint: optionally check format 2015-12-07 20:12:26 +01:00
Daniel Martí
fa0dcf5449 lint: fix issue found by older version of pyflakes 2015-12-07 13:58:29 +01:00
Daniel Martí
5541cb83ac checkupdates: fix --auto build copy
Also, remove origlines which hasn't been used in some time.
2015-12-07 12:39:04 +01:00
Daniel Martí
02c59a327b stats: fix a few dict accesses left over 2015-12-07 12:33:24 +01:00
Daniel Martí
ae5b8ed496 import: fix get_default_app_info usage
Closes #129
2015-12-05 19:20:41 +01:00
Daniel Martí
7a7d36feef scanner: remove jni check
buildjni=no is the default. Moreover, some apps now run ndk-build via
gradle, so this was just in the way.
2015-12-04 19:32:01 +01:00
Daniel Martí
3101ad6c39 Set all list defaults to an actual list
Iterating over the defaults will crash otherwise. Update pickle files.
2015-12-04 00:08:42 +01:00
Daniel Martí
cb8d93e443 Fix tests by not checking private attributes
All attrs starting with '_' (e.g. _foo or __bar) are used internally, so
not very relevant for the metadata test anyway.
2015-12-03 19:31:20 +01:00
Daniel Martí
2711f1c868 Also skip unmodified fields in the regex checks
Now it's close to 1s.
2015-12-03 17:02:24 +01:00
Daniel Martí
ea99add3da Keep track of what attrs were modified in apps/builds
This allows us to run checks and fix types only on those that were
really modified. On our fdroiddata repo, with 2k apps with many unset
fields and flags, this reduces readmeta runtime from ~1.3s to ~1.1s.
2015-12-03 16:46:21 +01:00
Daniel Martí
8c2e1fedfc Actually check that bools are valid
The metadata check was omitting booleans and lists, as it was only
taking strings. Fix this.
2015-12-03 16:35:46 +01:00
Daniel Martí
7b575e3fdd Remove need for rstrip() of txt description 2015-12-03 16:19:33 +01:00
Daniel Martí
a9bb5f9713 metadata: write strings directly to txt file 2015-12-03 14:00:47 +01:00
Daniel Martí
28566f6e57 Rename metafieldtype to fieldtype
For consistency with flagtype. Also less redundant.
2015-12-03 13:53:49 +01:00
Daniel Martí
2c095df947 Use dicts for field/flag types 2015-12-03 13:52:53 +01:00
Daniel Martí
cd4e43c3c2 Some more readability/performance tweaks
* Use set() instead of dict()
* No 'if foo: True else: False'
* Don't check for invalid fields twice
2015-12-03 13:02:54 +01:00
Daniel Martí
b1a9180d12 Use constants for field/flag types
Avoids typos, such as one I just found which was 'strsng' isntead of
'string'. The static analyzer can catch those if they are constants.
Comparing ints is also faster than strings, which adds up in readmeta.
2015-12-03 12:55:19 +01:00
Daniel Martí
992406de0e Avoid conflicting func/var names 2015-12-03 12:41:50 +01:00
Daniel Martí
1b43d8e33c Make text formatting faster via StringIO
Avoid concatenating strings over and over. Also, the wiki formatting
wasn't necessary at all since it was just joining lines.
2015-12-03 12:02:47 +01:00
Daniel Martí
088929711c Represent multiline fields as str, not list
Only keep lists in metadata files in the json format, since they don't
support multiline strings that are readable.

This makes the internal code easier, and a bit faster.
2015-12-03 11:36:15 +01:00
Daniel Martí
c8cc054c8b Fix tests 2015-12-03 11:16:27 +01:00
Daniel Martí
97c991c4b6 Some more txt parsing tweaks after profiling 2015-12-03 11:06:27 +01:00
Daniel Martí
490da2da22 Remove duplicate build_flags check
It's already checked in set_flag
2015-12-03 10:59:48 +01:00
Daniel Martí
1987ee7f54 Remove gradle=main
It was only supported in txt metadata, and was unused in fdroiddata
anyway.
2015-12-03 10:56:59 +01:00
Daniel Martí
5e0bc7f2c3 Properly close all metadata files once read 2015-12-03 10:51:27 +01:00
Daniel Martí
96f1fc5355 Never use exit/log in metadata 2015-12-02 22:59:58 +01:00
Daniel Martí
b9ac6fb69a Speed up metadata reading
Total time for `fdroid readmeta` went down from ~1.6s to ~1.4s on my
machine.
2015-12-02 22:38:40 +01:00
Daniel Martí
528e45d22b Simplify post_metadata_parse usage 2015-12-02 22:29:31 +01:00
Daniel Martí
c975531d87 metadata: properly store nums as strs and bools as bools 2015-12-02 20:49:42 +01:00
Daniel Martí
71a5eac494 Pre-compile more regexes 2015-12-02 20:40:30 +01:00
Daniel Martí
7e28e0ed90 lint: warn about target= in gradle builds 2015-12-02 20:28:08 +01:00
Daniel Martí
a566ee4475 Fix default update= on ant builds 2015-12-02 20:16:25 +01:00
Daniel Martí
bf8518ee8f Rework build into a class
This simplifies usage, goes from

    build['flag']
to
    build.flag

Also makes static analyzers able to detect invalid attributes as the set
is now limited in the class definition.

As a bonus, setting of the default field values is now done in the
constructor, not separately and manually.

While at it, unify "build", "thisbuild", "info", "thisinfo", etc into
just "build".
2015-12-02 20:03:11 +01:00
Daniel Martí
2c12485aeb gradle script: properly iterate over known versions 2015-12-02 19:17:08 +01:00
Daniel Martí
6e87a8c45a Add documentation to new App class 2015-11-28 17:19:59 +01:00
Daniel Martí
ab614ab442 Rework app into a class
This simplifies usage, goes from

	app['Foo']
to
	app.Foo

Also makes static analyzers able to detect invalid attributes as the set
is now limited in the class definition.

As a bonus, setting of the default field values is now done in the
constructor, not separately and manually.
2015-11-28 17:11:05 +01:00
Daniel Martí
de12cfdbe1 Handle duplicate apps in a much cleaner way
Don't log and exit in an inner metadata function. Handle it at a higher
level and do a proper exception. This also avoids unnecessary passing of
apps all around.
2015-11-28 14:04:21 +01:00
Daniel Martí
ce2f4a115c lint: more versatile /HEAD warning
Now catches many more github/gitlab/bitbucket links
2015-11-28 11:58:56 +01:00
Daniel Martí
0f06044770 lint: catch links at the beginning too 2015-11-28 11:58:55 +01:00
Daniel Martí
41690b7508 lint: also catch gitlab master links 2015-11-28 09:52:55 +01:00
Daniel Martí
301302d76e update: remove icons when removing disabled builds
They were just left there forever.
2015-11-27 00:23:59 +01:00
Daniel Martí
47812ccc24 update: move apk icons to and from archive too
They all were stuck in repo/ for this reason. This resulted in apps that
were only in the archive to seem like they didn't have icons, when in
fact they did but were in the wrong dir.
2015-11-27 00:23:57 +01:00
Daniel Martí
95ad265836 update: lower apps without apks logs to debug
If you run 'fdroid update', 6k+ warning messages are output. This is
definitely wrong. They can still be shown if one enables -v.
2015-11-26 23:47:22 +01:00
Daniel Martí
7e82b044fe Don't use paramiko with DEBUG
It outputs way, way too much info. Thousands of lines only when copying
the files over, which is not useful at all.
2015-11-20 17:35:34 -08:00
Daniel Martí
326e299e15 Fix ndk always being reinstalled 2015-11-20 17:35:34 -08:00
Daniel Martí
73c680dfcf Add gradle 2.9 to the BS 2015-11-20 14:08:54 -08:00
Daniel Martí
882cfe3912 Install build-tools from the cache too 2015-11-20 14:08:54 -08:00
Daniel Martí
7842b08f40 Download platforms via makebuildserver 2015-11-20 12:21:31 -08:00
Daniel Martí
953a1e4396 Add qt5 to the buildserver 2015-11-20 05:52:17 -08:00
Daniel Martí
cac9b8a009 fdroidbuild-general: split packages in lines
This improves readability, but more importantly makes changes in git a
lot easier to track.
2015-11-20 05:51:33 -08:00
Daniel Martí
5e1b07dce3 import: don't crash due to missing id
Fixes #129
2015-11-18 15:33:30 -08:00
Daniel Martí
3a616e2d9f Don't crash if AM.xml has no application element 2015-11-16 07:21:19 -08:00
Daniel Martí
97a637b9b4 Don't crash if no auto name is found 2015-11-14 22:05:28 +01:00
Daniel Martí
ae146ff2a2 build: don't treat FDroidExceptions as unknown 2015-11-14 13:05:37 +01:00
Daniel Martí
c97b0e7ed9 common: error if any glob paths are unused
Like rm=foo and foo doesn't exist.
2015-11-14 13:05:16 +01:00
Daniel Martí
f604d845f5 checkupdates: find new subdirs for autonames too
The same method used for Tags and RepoManifest.
2015-11-14 10:24:43 +01:00
Daniel Martí
b84688af7a scanner: don't warn about ignored files 2015-11-12 20:02:40 +01:00
Daniel Martí
23b7f544c1 Bump to 0.5.0 2015-11-12 19:09:50 +01:00
Daniel Martí
0d758daa22 install: filter out log messages better 2015-11-11 13:09:29 +01:00
Daniel Martí
af7178f2fe scanner: Ignore certain binary executable files
These were warnings, so the behaviour doesn't really change.
2015-11-10 21:59:54 +01:00
Daniel Martí
c94b0342ad scanner: ignore .DS_Store files
They are binary and sometimes executable, so they trigger false
positives.
2015-11-10 21:49:46 +01:00
Daniel Martí
87c7da03ee Fix buildserver debian stable java paths 2015-11-07 18:23:30 +01:00
Ciaran Gultnieks
f3497553e7 Root required to set default java 2015-11-07 10:40:51 +00:00
Ciaran Gultnieks
b9bd3cafe8 Fix 'set default java' 2015-11-07 09:27:12 +00:00
Daniel Martí
66e82cb077 Bump build-tools to 23.0.2 2015-11-05 11:56:13 +01:00
Ciaran Gultnieks
d9d11ba11b If we're using a jessie buildserver, we need backports (for java 8) 2015-11-05 10:51:54 +00:00
Daniel Martí
a4d1fa22f7 Install Java 1.8 alongside 1.7 for retrolambda
Fixes #103.
2015-11-03 11:08:34 +01:00
Daniel Martí
6812390e39 Fix example config default 2015-11-03 10:53:03 +01:00
Daniel Martí
20470556f7 run-tests: Don't set -x until option parsing is done 2015-11-01 14:09:11 +01:00
Daniel Martí
c115f71640 run-tests: Don't show echo_header commands 2015-11-01 14:09:06 +01:00
Daniel Martí
27c717e764 tests: allow running ./tests/run-tests 2015-11-01 13:48:25 +01:00
Daniel Martí
c8627764e3 checkupdates: check packages in AM.xml files too 2015-11-01 12:35:36 +01:00
Daniel Martí
d17da074e9 scanner: allow apache.org maven repo
Since it has the same free software and source code publishing
requirements that oss.sonatype and maven.org repos have.
2015-10-31 09:59:38 +01:00
Reiner Herrmann
a2b20f4c84 docs: reproducibly build docs by using deterministic timestamp
Use the SOURCE_DATE_EPOCH timestamp [1] if it is available for
timestamps in the tarballs and the HTML documentation.

Also fix permissions inside tarballs to normalize umask
variations.

[1]: https://reproducible-builds.org/specs/source-date-epoch/
2015-10-30 19:27:32 +01:00
Reiner Herrmann
f3d0d44a60 docs: clear timestamp embedded in DVI comment field 2015-10-30 19:27:18 +01:00
Daniel Martí
3ace102bd5 checkupdates: work around multiple package ids
If there are multiple package ids in a build.gradle file and the first
one we don't want, checkupdates would get stuck. Make it ignore any
package id that we don't want so that it can get past that.
2015-10-30 19:03:53 +01:00
Daniel Martí
2de274326a checkupdates: better "no tags" messages 2015-10-27 13:42:02 +01:00
Daniel Martí
ece3317be0 checkupdates: no need to sort tags if len()<=5 2015-10-27 13:41:09 +01:00
Daniel Martí
37b13c37d5 Also fix local.prop files before subdir
If subdir=foo/bar and there is a foo/local.properties file, it would not
get treated.
2015-10-26 16:49:11 +01:00
Daniel Martí
d141bd1be0 checkupdates: don't blindly accept subdir
This is unnecessary because dirs_with_manifest will pick it up anyway.
But the problem manifested because we weren't checking the package id
here.
2015-10-26 16:29:26 +01:00
Daniel Martí
da92845f9c checkupdates: compare CVs as ints, not strs 2015-10-26 16:13:35 +01:00
Daniel Martí
9017328698 Add an extra strip() to work around tostring issue
In cases like this xml code:

	<string name="app_name">"OpenKeychain"</string>
	<!-- title -->
	<string name="title_encrypt_text">"Encrypt"</string>

tostring() returns trailing whitespaces (including newlines). Which
aren't removed until the very end, after we try to remove enclosing
quotes. So strip right after tostring() too, since we never really care
about whitespaces anyway.
2015-10-26 00:28:29 +01:00
Daniel Martí
995afdcbfd checkupdates: never auto-update to older versions 2015-10-25 19:14:23 +01:00
Daniel Martí
6ea51abfaa common: Compile more regexes only once 2015-10-25 19:10:49 +01:00
Daniel Martí
8812e9339d Don't double check package name 2015-10-25 19:10:23 +01:00
Daniel Martí
1f42b83120 checkupdates: don't ignore root directory 2015-10-25 19:09:55 +01:00
Daniel Martí
d5ec039dec checkupdates: Make RepoManifest change subdir too 2015-10-25 12:09:01 +01:00
Daniel Martí
af947809b5 checkupdates: let Tags detect subdir changes
Up until now, this was done only if no overall version could be found. But in
tags, we would get stuck with an old version from an old tag and not see
subdir changes in new tags.
2015-10-25 12:00:02 +01:00
Daniel Martí
fa55ec0e87 Be consistent about root_dir/build_dir naming 2015-10-25 11:41:46 +01:00
Daniel Martí
7e7d67f0d7 Fix a small indentation issue 2015-10-25 11:32:18 +01:00
Daniel Martí
7d96602df2 Fix gradle-2.8 checksum
I once again did the -all.zip hash, not the -bin.zip one.
2015-10-25 10:48:17 +01:00
Daniel Martí
db31eddd7e lint: fix unlinkified links regex
It was incorrectly matching:

	foo [http://bar

and not matching:

	http://foo (start of line)
2015-10-25 00:07:33 +02:00
Daniel Martí
ab667992c7 update: fix for 0fa6aac288
For some reason, my up to date pyflakes didn't catch this.
2015-10-24 20:13:49 +02:00
Daniel Martí
2872027835 Also replace git@gitlab.com submodule urls 2015-10-24 19:42:40 +02:00
Daniel Martí
231339ba80 Add gradle 2.8 2015-10-24 19:05:21 +02:00
Daniel Martí
82624cd7ca Bump sdk to 24.4.1 2015-10-24 19:02:39 +02:00
Daniel Martí
16ca7f3be3 tests: we now replace "buildToolsVersion var" too
See d706cfa7d8
2015-10-24 18:47:43 +02:00
Daniel Martí
78a661fc7d Typo fix for 91daacb889 2015-10-24 18:37:57 +02:00
Daniel Martí
91daacb889 common: don't crash if an sdk binary is not found 2015-10-24 17:02:53 +02:00
Daniel Martí
0fa6aac288 Remove densities getter 2015-10-24 16:34:55 +02:00
Daniel Martí
a92f9a3a4c scanner: allow sonatype groups/public repo
See http://central.sonatype.org/pages/ossrh-guide.html
2015-10-22 12:23:57 +02:00
Daniel Martí
6dcee2924a scanner: escape urls 2015-10-22 12:23:52 +02:00
Daniel Martí
d706cfa7d8 Fix build-tools patching when it uses variables
Like:

	buildToolsVersion FOO_VERSION
2015-10-14 19:34:30 +02:00
Daniel Martí
c877d4524a tests: Comment values are lists, not strings
Since there can be multiple lines.
2015-10-08 16:39:47 +02:00
Ciaran Gultnieks
e3ee7ba329 Fix shasum for gradle 2.7 (see a229afe1) 2015-10-08 14:16:35 +01:00
Daniel Martí
5d180b8858 tests: adapt to new comments dict 2015-10-08 13:20:48 +02:00
Daniel Martí
00bd75aa8c tests: close files 2015-10-08 13:20:35 +02:00
Daniel Martí
f7e9022217 scanner: ignore gradle comment lines
Useful to detect:

	maven {
		// foo
		url "http://foo.bar"
	}
2015-10-08 12:16:45 +02:00
Daniel Martí
75b1c029ac Remove unwanted files in a more consistent way 2015-10-08 12:10:55 +02:00
Daniel Martí
21117b77d2 scanner: error on unknown maven repos
This finds maven repos of the format:

	maven {
		url 'http://foo.bar'
	}

And checks if the repository is one that we allow. As usual, scanignore can be
used, or the list modified, if there are exceptions or more repositories to
allow.
2015-10-07 18:15:33 +02:00
Ciaran Gultnieks
42e5b5cfeb Fix moving of gpg sigs between repo and archive 2015-10-06 08:32:00 +00:00
Daniel Martí
a229afe178 buildserver: Add gradle 2.7 2015-10-05 23:40:19 +02:00
Daniel Martí
73f9c1d1c2 Always use the same logging format
This helps differentiate errors, warnings and regular messages.
2015-10-05 21:43:08 +02:00
Daniel Martí
48645072ee extension simplifications 2015-10-04 18:01:32 +02:00
Daniel Martí
aa3ca80ae6 write_metadata fixes 2015-10-04 18:01:23 +02:00
Daniel Martí
53ed335d4b Final touches to yaml writing
Now it writes and reads properly.
2015-10-04 07:56:32 -07:00
Daniel Martí
23747edb25 bash-completion: add appid support for all formats 2015-10-04 07:55:55 -07:00
Daniel Martí
ac37e3084e More improvements to yaml writing 2015-10-04 07:55:55 -07:00
Daniel Martí
9c5b5f7b60 Don't leave an empty line at the end 2015-10-04 07:55:42 -07:00
Daniel Martí
1aa891c4fd Add basic yaml metadata writing 2015-10-04 07:55:42 -07:00
Daniel Martí
082e275aa1 Rename write_metadata to specify txt 2015-10-03 23:13:44 -07:00
Daniel Martí
885a3a73f1 Simplify format parsing logic 2015-10-03 23:00:18 -07:00
Daniel Martí
d8e1f296e0 scanner: don't error on partially used globs
This meant that using something like `scanignore=*` would error if there were
ignores happening in some directories/files, but not all.

Fixes #110
2015-10-03 17:00:22 -07:00
Daniel Martí
59f5d19dfe Rework path glob expansion
Slightly simplifies the whole thing and lets us map what each resulting path
comes from. This will be useful to fix #110 later on.
2015-10-03 16:52:23 -07:00
Daniel Martí
75bde83fb8 import: fix issue tracker links 2015-10-03 16:28:48 -07:00
Daniel Martí
712deb4396 Don't use exists() on symlinks
If they are broken, exists() will return false. islink() will return true in
both cases.
2015-09-30 17:05:44 -07:00
Daniel Martí
1ed33bfa96 Smarter archive policy apk moving
* Move apks back from the archive repo (e.g. if builds are disabled thus the
  number of apks on the main repo decreases)
* Also move apk signatures back and forth
2015-09-30 17:05:44 -07:00
Daniel Martí
4ea5ce8889 checkupdates: Ignore xml tags in string content
This allows us to fetch strings like the following:

<string name="app_name">foo <xliff:g>bar</xliff:g></string>

Up until now, using .text would only return "foo ", but if we use .tostring()
with the text method, it converts everything into plain text for us resulting
in "foo bar".
2015-09-30 16:35:41 -07:00
Daniel Martí
79475d055f Fetch string contents in a safer way 2015-09-30 16:35:41 -07:00
Daniel Martí
cc017d70d2 Fix for bb2cbd527b 2015-09-29 20:39:36 -07:00
Daniel Martí
bb2cbd527b Increase wiki error detail length limit
8k is too small, e.g. when make -jN errors or when there are a lot of scanner
errors and warnings. 16k should be better. Also, use "[...]" to make it
obvious that the output is truncated.
2015-09-29 12:51:11 -07:00
Boris Kraut
a0ee23bdb2 docs: Add information on binary verification 2015-09-29 02:19:17 +02:00
Daniel Martí
9c3fd97530 fdroid: don't treat MetaDataException as unknown
Up until now, if it was thrown, fdroid would crash with a full stacktrace as
if the program had stopped unexpectedly. Now it just prints the metadata
error, as intended.
2015-09-26 16:53:08 -07:00
Daniel Martí
811fcd320f rewritemeta: add -l option to list files 2015-09-24 22:54:52 -07:00
Daniel Martí
911994fc99 Make write_metadata take a writer
This will let rewritemeta report format issues without writing to disk.
2015-09-24 22:38:33 -07:00
Daniel Martí
d88914b466 Replace MD5withRSA with SHA1withRSA. Fixes #26.
Looks to me like we were using SHA1withRSA all along. Tested that everything
still works with a test repo.

As Hans reports, SHA1withRSA has been the default on Android tools for a long
time and it's supported on all Android versions.
2015-09-24 18:53:04 -07:00
Ciaran Gultnieks
84573e4e5c Push a more complete/standard fdroidserver layout to buildserver 2015-09-24 09:19:17 +00:00
Daniel Martí
27a5dc8429 checkupdates: ignore gradle comments 2015-09-23 18:52:59 -07:00
Daniel Martí
80a8a39f6f build: make sure .gradle/ is removed at clean 2015-09-23 13:02:22 -07:00
Daniel Martí
1b8e33f714 Update build status badge to new CI url 2015-09-22 21:46:14 -07:00
Daniel Martí
b589595e45 scanner: skip symlinks to avoid issues
If they resolve to a missing file, we don't care about them. If they resolve
to an existing file, we'll scan that file anyway.
2015-09-22 13:03:42 -07:00
Daniel Martí
b9b5b5d1b0 scanner: don't crash on unused gradle files 2015-09-22 13:02:26 -07:00
Daniel Martí
83daf71338 gradle: don't strip out comments
This was never intended. Comments can help sed usage, and can still be useful
in source tarballs.
2015-09-22 11:52:16 -07:00
Daniel Martí
21bdd2941c Merge branch 'asynchronous_reader' into 'master'
Add asynchronous filereader, fix python3 lockups

with the current implementation of AsynchronousFileReader with Python 3 FDroidPopen deadlocks with 100% CPU-utilization

The code is from https://github.com/soxofaan/asynchronousfilereader

I hope the MIT-Licence makes no problems




See merge request !80
2015-09-21 22:09:23 +00:00
Daniel Martí
39e3bfa0ce Merge branch 'docs' into 'master'
docs: Add list of trusted maven repos



See merge request !81
2015-09-21 19:58:50 +00:00
Boris Kraut
22bdcb7acf docs: Add list of trusted maven repos 2015-09-21 21:51:35 +02:00
Daniel Martí
6c5bbb2431 Merge branch 'master' into 'master'
Added support for gradle flavor specific dependencies in usual suspects check

When you have flavor specific dependencies in your project, you specify them in the build.gradle file with a prefixed *compile* command:

```
compile 'normal dependency'
myflavorCompile 'only for myflavor'
```

The usual suspects check just searches for some often used library names in the whole build.gradle file. I added another condition, so dependencies for not build flavors are not checked.

See merge request !77
2015-09-21 17:06:38 +00:00
NeroBurner
694a4ce7da Add asynchronous filereader, fix python3 lockups 2015-09-20 20:57:53 +02:00
Jan Kühle
450409ef14 Added support for gradle flavor specific dependencies in usual suspects check. 2015-09-19 14:43:42 +02:00
Daniel Martí
e285a8ac31 Remove Dogecoin donation support
Not nearly as popular as bitcoin and litecoin. To the point where it hadn't
been used yet.

Bump index version to 14 to mark its removal.
2015-09-18 19:06:10 -07:00
Daniel Martí
d07bf0754a metadata: fix html paragraph tag regression
Spotted in fdroid/fdroidclient#422
2015-09-17 14:14:54 -07:00
Daniel Martí
d7d9e38ef7 scanner: use a blacklist instead of a whitelist
This is much closer to what we did before with mimetypes. Using a whitelist
turns out to be a bad idea since repositories seem to be randomly filled with
executable images and documents, which trigger the scanner.

In an ideal world the scanner would complain about all of those. For now, just
warn about the possibility of them being hidden binaries.
2015-09-16 17:23:34 -07:00
Daniel Martí
feaf3d04e5 scanner: also ignore ttf and otf files 2015-09-16 17:14:06 -07:00
Daniel Martí
da2a4f2cf5 scanner: improve usual suspect output 2015-09-16 17:13:54 -07:00
Daniel Martí
d155648a01 Merge branch 'fix_licence_setup' into 'master'
Update Licence in setup.py to AGPLv3

See merge request !79
2015-09-16 21:29:41 +00:00
NeroBurner
9e8d9bebfa Update Licence in setup.py to AGPLv3 2015-09-16 22:55:22 +02:00
Daniel Martí
2bf04f8054 import: fix import -u from fdroiddata
Have -u take precedence over .git checking to fix import -u being run from
fdroiddata.
2015-09-15 14:06:31 -07:00
Daniel Martí
41370a12b0 Deduplicate statsdir 2015-09-14 18:13:03 -07:00
Daniel Martí
5cb47203b3 Replace some hard-coded paths with os.path.join 2015-09-14 18:12:15 -07:00
Daniel Martí
2c0be49124 import: do set root_dir if running from a repo 2015-09-14 17:40:44 -07:00
Daniel Martí
eda0c965e9 Merge branch 'dont-use-sudo-brew' into 'master'
Don't recommend using sudo with Homebrew

Homebrew [doesn't recommend using `sudo`][1], so update the README to reflect that.

 [1]: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/FAQ.md#why-does-homebrew-say-sudo-is-bad-

See merge request !78
2015-09-14 16:40:41 +00:00
Daniel Martí
15e14075cf scanner: avoid checking if usual files are binary 2015-09-13 22:22:03 -07:00
Daniel Martí
055759cf76 Rewrite scanner logic
Initially, the scanner used libmagic which used magic numbers in the file's
content to detect what kind of file it appears to be. Since that library isn't
available on all systems, we added support for two other libraries, mimetypes
amongst them.

The issue with mimetypes is that it only uses the file's extension, not its
actual content. So this ends in variable behaviour depending on what system
you're using fdroidserver on. For example, an executable binary without
extension would be ignored if mimetypes was being used.

We now drop all libraries - mimetypes too as it depends on the system's
mime.types file - and instead check extensions ourselves. On top of that, do
a simple binary content check to find binary executables that don't have an
extension.

The new in-house code without any dependencies doesn't add any new checks, so
no builds should break. The current checks still work:

 % fdroid scanner app.openconnect:1029
[...]
Found executable binary at assets/raw/armeabi/curl
Found executable binary at assets/raw/mips/curl
Found executable binary at assets/raw/x86/curl
Found JAR file at lib/XposedBridgeApi-54.jar
Found JAR file at libs/acra-4.5.0.jar
Found JAR file at libs/openconnect-wrapper.jar
Found JAR file at libs/stoken-wrapper.jar
Found shared library at libs/armeabi/libopenconnect.so
Found shared library at libs/armeabi/libstoken.so
Found shared library at libs/mips/libopenconnect.so
Found shared library at libs/mips/libstoken.so
Found shared library at libs/x86/libopenconnect.so
Found shared library at libs/x86/libstoken.so
2015-09-13 22:17:37 -07:00
Daniel Martí
1a3816acfb scanner: support apps using srclib repo type 2015-09-13 22:05:41 -07:00
Alex Jordan
e62a9c5cbb Don't recommend using sudo with Homebrew 2015-09-13 14:53:34 -07:00
Daniel Martí
576da1d048 all: deduplicate -v/-q setup 2015-09-11 23:42:50 -07:00
Daniel Martí
b42b45f762 lint: small cleanup 2015-09-11 23:35:32 -07:00
Daniel Martí
ecad89dc05 lint: catch more duplicate links 2015-09-11 23:30:59 -07:00
Daniel Martí
3638acddc4 checkupdates: Avoid variable/string names as CV 2015-09-11 23:17:46 -07:00
Daniel Martí
7a79b000bf Allow slashes in tags
The wikipedia app uses them, for example.
2015-09-11 23:17:36 -07:00
Daniel Martí
fb23b2cff4 metadata: don't break words nor on hyphens 2015-09-11 22:52:50 -07:00
Daniel Martí
df9b044a3b lint: add dumb support for multiline links 2015-09-11 22:40:16 -07:00
Daniel Martí
b9b4880b49 lint: move regex closer to usage 2015-09-11 22:07:51 -07:00
Daniel Martí
223db1588b metadata: allow links spanning multiple lines
This allows for nicer text wrapping.
2015-09-11 22:07:20 -07:00
Daniel Martí
e6b14c8995 lint: remove now obsolete description checks 2015-09-11 21:54:39 -07:00
Daniel Martí
3413965eaa Wrap descriptions to 80 chars 2015-09-11 21:36:18 -07:00
Daniel Martí
ade5036e23 metadata: rewrite multiline field writing
Now description text wrapping can be added.
2015-09-11 19:12:51 -07:00
Daniel Martí
cd202e59b1 Ensure that builds are always sorted when writing
This might not be true if builds are appended by e.g. checkupdates --auto.
This ensures that we sort them again before writing.
2015-09-11 18:21:07 -07:00
Daniel Martí
cc48d2828c lint: overhaul, cleaner and saner output 2015-09-10 18:41:10 -07:00
Daniel Martí
acfc48970d lint: move lastbuild into separate function 2015-09-10 17:55:09 -07:00
Daniel Martí
a5c2e503b2 lint: remove "no recommended build" check
In some cases we do want to not recommend any version. The client should more
or less gracefully handle this.
2015-09-10 17:54:41 -07:00
Daniel Martí
13b5966062 Merge branch 'import-tweaks-and-tests' into 'master'
Import tweaks and tests

This makes the code for `fdroid import` a bit more flexible and adds tests for the first time.  It also comments out options in `examples/config.py` that just mirror the defaults to make it clear that they are defaults, and help illustrate other options (this is standard procedure in default config files).

More details in the commit messages.

See merge request !76
2015-09-11 00:23:42 +00:00
Daniel Martí
e9e2713cde lint: cleanup, remove stale sites 2015-09-10 17:05:13 -07:00
Hans-Christoph Steiner
491d2d75a2 comment out things that are default values in examples/config.py
Since these are already defaults, there is no need to set them as defaults
in the default config.
2015-09-10 11:08:40 +02:00
Hans-Christoph Steiner
707930ce0a add a basic test of fdroid import 2015-09-10 11:08:40 +02:00
Hans-Christoph Steiner
48397bfa3c import: append .git to gitlab URLs, git sometimes freaks out otherwise
From my experience, gitlab URLs need to end in .git for git to always be
happy using them.
2015-09-10 11:08:39 +02:00
Hans-Christoph Steiner
c80c1bf017 import: split out URL handling into its own function
This is preparation to add other import methods, like checking if the
command was run in a currently checked out git repo.
2015-09-10 11:08:39 +02:00
Daniel Martí
9489e80f09 Merge branch 'replace_optparse_with_argparse' into 'master'
replace deprecated optparse with argparse

squashed and rebased merge request fdroid/fdroidserver!74

following guidelines from:
https://docs.python.org/2/library/argparse.html#upgrading-optparse-code
except, still using option = parse.parse_args() instead of args = ...

- using the following script in folder fdroidserver:
	```
	for i in *.py; do
		sed -i -e 's/optparse/argparse/' \
			-e 's/OptionParser/ArgumentParser/' \
			-e 's/OptionError/ArgumentError/' \
			-e 's/add_option/add_argument/' \
			-e 's/(options, args) = parser/options = parser/' \
			-e 's/options, args = parser/options = parser/' \
			-e 's/Usage: %prog/%(prog)s/' $i;
	done
	```
- use ArgumentParser argument to replace (option, args) = parser.parse()
  call
- use parser.error(msg) instead of raise ArgumentException as suggested
  in https://docs.python.org/2/library/argparse.html#exiting-methods
- in fdroid catch ArgumentError instead of OptionError

See merge request !75
2015-09-10 02:08:24 +00:00
Daniel Martí
4c8e986139 rewritemeta: move debug logs to logging.debug 2015-09-09 13:24:18 -07:00
Daniel Martí
b07e6c343c checkupdates: log vercode operation activity 2015-09-09 10:26:33 -07:00
Daniel Martí
2fe0327beb checkupdates: don't auto update to older versions
If for whatever reason the update check results in an older version that we
didn't package, don't "update" to that version if we already packaged newer
versions.
2015-09-09 09:27:18 -07:00
Ciaran Gultnieks
803a3ebbac Make builds work after 04e6f2eb and 120be433 2015-09-09 11:50:32 +00:00
Daniel Martí
664f6e4adb manual: Don't reuse scanignore doc in scandelete 2015-09-08 15:36:18 -07:00
Daniel Martí
a782a615c6 manual: be explicit about what scandelete does 2015-09-08 15:23:45 -07:00
Ciaran Gultnieks
0f4d26c2ed Merge branch 'master' of https://gitlab.com/fdroid/fdroidserver 2015-09-08 21:00:31 +00:00
Daniel Martí
29dea4aad5 lint: Warn about links left off from old sites 2015-09-08 13:33:43 -07:00
Daniel Martí
03deda914f checkupdates improvements for gradle projects
* Let the package name override the one found in AndroidManifest.xml
* Support the newer applicationId
2015-09-08 13:12:28 -07:00
Ciaran Gultnieks
131487f214 Add python-yaml to buildserver 2015-09-08 09:54:21 +00:00
nero-tux
d23ecf1b35 replace deprecated optparse with argparse
following guidelines from:
https://docs.python.org/2/library/argparse.html#upgrading-optparse-code
except, still using option = parse.parse_args() instead of args = ...

- using the following script in folder fdroidserver:
	for i in *.py; do
		sed -i -e 's/optparse/argparse/' \
			-e 's/OptionParser/ArgumentParser/' \
			-e 's/OptionError/ArgumentError/' \
			-e 's/add_option/add_argument/' \
			-e 's/(options, args) = parser/options = parser/' \
			-e 's/options, args = parser/options = parser/' \
			-e 's/Usage: %prog/%(prog)s/' $i;
	done
- use ArgumentParser argument to replace (option, args) = parser.parse()
  call
- use parser.error(msg) instead of raise ArgumentException as suggested
  in https://docs.python.org/2/library/argparse.html#exiting-methods
- in fdroid catch ArgumentError instead of OptionError
2015-09-06 10:34:50 +02:00
Daniel Martí
41443edd55 Bump build-tools 2015-09-05 23:02:03 -04:00
Daniel Martí
f4e96cfd7a Specify that disabled builds aren't failing builds 2015-09-05 10:10:48 -04:00
Daniel Martí
de1c599127 Fix regression introduced in 2831b3e93
An empty list of antifeatures should not be written.
2015-09-05 10:10:37 -04:00
Daniel Martí
f70d74e3e8 End sentence spacing madness in sample config 2015-09-03 22:06:43 -07:00
Daniel Martí
60aea2ca1e Simplify markdown code blocks 2015-09-03 21:51:37 -07:00
Daniel Martí
9eef437bca completion: set up _fdroid_* funcs at load time
This fixes an issue where these functions would not be created until fdroid
was completed at least once.
2015-09-02 21:23:08 -07:00
Daniel Martí
f23011f408 CI: set up all SDK components in PATH 2015-09-01 21:12:41 -07:00
Daniel Martí
0b0197dba3 Merge branch 'ci-split-packages' into 'master'
CI: Split up package installing

Advantages:
* Easier to tell why we need each package
* apt-get install output is less scary/huge
* CI job is split in more, smaller steps easier to debug

See merge request !72
2015-09-01 22:42:10 +00:00
Daniel Martí
91f36acaa6 Even examples/config.py with default_config 2015-09-01 15:30:41 -07:00
Daniel Martí
c633b21f6c CI: Split up package installing
Advantages:
* Easier to tell why we need each package
* apt-get install output is less scary/huge
* CI job is split in more, smaller steps easier to debug
2015-09-01 15:23:06 -07:00
Daniel Martí
96bcd1c77d Merge branch 'fix-pillow-gitlab-ci' into 'master'
install build dependencies for Pillow

When Pillow is installed with pip, it needs to compile the C code against a few libraries, like libjpeg.  Pillow is included in Debian/Ubuntu as 'python-imaging', so just install the build
dependencies of that, and it should all be golden.

See merge request !71
2015-09-01 22:02:54 +00:00
Hans-Christoph Steiner
9855d4089c install build dependencies for Pillow
When Pillow is installed with pip, it needs to compile the C code
against a few libraries, like libjpeg.  This also adds python-git
as a dep.
2015-09-01 23:48:28 +02:00
Daniel Martí
88dcc9d272 CI: add missing python-virtualenv package 2015-09-01 11:34:04 -07:00
Daniel Martí
6f05529dac Merge branch 'fdroid-version' into 'master'
fdroid --version and shared tests between gitlab and jenkins

This adds a `fdroid --version` flag for people to easily see the exact version of fdroidserver in use.  It'll also report the version using `git describe` when running from git.

The other moves the extended tests out of `./jenkins-build` into a common script for both gitlab-ci and jenkins.

See merge request !70
2015-09-01 18:27:55 +00:00
Hans-Christoph Steiner
f87b17139b pep8: on *.TestCase, skip "E402 module level import not at top of file"
The tests use a little hack in order to cleanly import the fdroidserver
package locally like a regular package.  pep8 doesn't see that, so this
changes the pep8 to skip E402 on *.TestCase
2015-09-01 20:10:01 +02:00
Hans-Christoph Steiner
242e9d2fb9 gitlab-ci: install all android packages at once
the `android` utility is pretty stupid, it doesn't really cache the
package index info.  So each time it is run, it tries to fetch the
indexes from the network.  This combines all android package installs
to a single command to make things run quicker.
2015-09-01 19:57:40 +02:00
Hans-Christoph Steiner
e6c0be8898 move tests into common script for jenkins and gitlab-ci 2015-09-01 19:52:37 +02:00
Hans-Christoph Steiner
3fc2a99d71 fdroid --version for installed releases and running from git
This will report the version embedded in the module if it is installed, and
will report `git describe` if being run from git.  If someone installs from
git using pip, this will probably report the version in setup.py, which
will be wrong.  But that is not a documented install method, and I haven't
heard of anyone using it.  The recommended way is to run straight from git.
2015-09-01 19:45:00 +02:00
Daniel Martí
4a4bb3e7a5 CI: Add missing yaml dependency 2015-09-01 10:42:16 -07:00
Daniel Martí
ca8ab7675d Merge branch 'support-xml-json-yaml-for-metadata' into 'master'
Support XML, JSON, and YAML for metadata

Add support for app metadata files in JSON, XML, and YAML data formats.  All of the formats use the exact same metadata tags, so there is no translation layer needed.  They all just parse the data into the same internal data format: Python dicts.  Supporting these standard formats will make it much easier for people to write recipes since they can choose a data format that they are familiar with.  It also makes it much easier to generate metadata programmatically, since there are good libraries for working with all three formats in basically every language (unlike FDroid's .txt format).

Here are the same tags in .txt, JSON, XML, and YAML:

    Source Code:https://github.com/SMSSecure/SMSSecure
    "Source Code": "https://github.com/SMSSecure/SMSSecure",
    <string name="Source Code">https://github.com/SMSSecure/SMSSecure</string>
    Source Code: https://github.com/SMSSecure/SMSSecure

Looking for comments, suggestions, flames, etc. from @CiaranG, @mvdan, and everyone else.

See merge request !57
2015-09-01 17:29:11 +00:00
Daniel Martí
64baa558bf Merge branch 'liblzma' into 'master'
Add liblzma-dev to buildserver

Ref:https://gitlab.com/fdroid/fdroiddata/merge_requests/954/

See merge request !69
2015-09-01 17:28:06 +00:00
Hans-Christoph Steiner
325db90918 set "accepted formats" for metadata in config.py
For a bit repo like f-droid.org, it makes sense to standardize on a single
format for metadata files.  This adds support for enforcing a single data
format, or a reduced set of data formats.  So f-droid.org would run like
this if it changed to YAML:

  accepted_formats = ['txt', 'yaml']

Then once everything was converted to YAML, it could look like this:

  accepted_formats = ['yaml']
2015-09-01 11:53:37 +02:00
Hans-Christoph Steiner
19ac44c189 rewritemeta only applies to the original .txt metadata format 2015-09-01 11:53:37 +02:00
Hans-Christoph Steiner
6c44bff78b make note of JSON, XML, and YAML in the manual 2015-09-01 11:53:37 +02:00
Hans-Christoph Steiner
beb217b6ae add 'gradleprops' to .pickle files for the metadata tests 2015-09-01 11:53:37 +02:00
Hans-Christoph Steiner
8d6e0aebb9 exit with error if duplicate metadata file is found
In order to prevent confusion caused by multiple metadata files for a given
app, fdroid will exit with an error if it finds any app metadata file with
the same package ID as one that has already been parsed.
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
6f334558df metadata: rename metafile to metadatapath when it is a path
To keep the code clear, change the code to use separate variables for the
path to the metadata file, and for the file object of the opened metadata.
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
285c06d156 metadata: use unified method for getting default app metadata dict
This puts process of setting up the defaults for the internal dict
that represents a parsed app into a single method that is reused for all
metadata formats.
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
32e257d742 support app metadata in YAML format
YAML is a format that is quite similar to the .txt format, but is a
widespread standard that has editing modes in popular editors.  It is also
easily parsable in python.

The .pickle for testing is a lightly edited version of the real metadata
for org.videolan.vlc:

 * comments were removed
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
0b62e7f22a set appid in get_default_app_info_list() 2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
0425788b7d consolidate all post-parse metadata checks
This puts all of the needed post parsing checks on the metadata into a
single method that is used by all parsing methods (.txt, JSON, XML, YAML).
This provides the single place to normalize the internal representation of
the metadata.

It would be good to also change the internal representation to use more Python
bool/int types so that less post parsing is needed for JSON, XML, and YAML.

The SMSSecure test .pickle was changed to account for the use of lstrip()
and rstrip() on all 'script' types.

This also changes the example JSON to use ints for versionCodes
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
014df8426f eliminate Boolean metadata type, only 'bool' is needed
No need for a specific metadata type for 'Requires Root'.  Just use 'bool',
then convert on output.  This keeps the internal representation consistent
since all boolean-ish values will be Python bools.  This in turn makes
parsing metadata in various formats easier.  This also makes setting
booleans more tolerant since all these values are valid:

 Yes yes No no True true False false
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
ab145de6bc support app metadata in XML format
While the current text metadata format is good for human readability and
editability, it is difficult to produce and parse using code.  XML is a
widespread standard format for easy automatic parsing and creating, while
having decent human readability.

The .pickle for testing is a lightly edited version of the real metadata
for net.osmand.plus:

* comments were removed
* "NonFreeNet" was added as an AntiFeature
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
2831b3e93f convert internal representation of AntiFeatures to list
The AntiFeatures metadata is a comma-separated list of tags, like
Categories, so it should also be stored internally as a list.  This makes
parsing XML and JSON easier.

The test cases' .pickle files look like they change a lot, but they really
don't, its only the change of default AntiFeatures value from None to []
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
cc29d39f0a metadata: store comments in lists since lists are used everywhere else
The only data produced by parsing metadata that was stored as a tuple was
the comments' key/values.  Everywhere else, lists are used.  This changes
the comments to also only use lists to keep the data consistent internally.
That makes it vastly easier to produce the exact same metadata dict when
parsing .txt, JSON, XML, etc.
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
dabb7e42b7 add test case for JSON parsing, based on parsed .txt metadata
The .pickle was created by dumping the output from parsing the current .txt
metadata for org.adaway.  The JSON started from that pickle dump, but was
then hand edited to be more proper JSON, e.g. using boolean values.
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
61f6be1a7b in JSON metadata, convert unicode to str to match the internal format
fdroidserver currently uses plain python 2.x strings rather than unicode
strings, so the parsed JSON should produce the same format as the parsed
.txt metadata.
2015-09-01 11:39:51 +02:00
Hans-Christoph Steiner
1bbae4cd9e add test for metadata parsing based on a parse output to a pickle
This is a test to cover future modifications of the .txt metadata parsing.
The pickle file was generated by just dumping the current parsed metadata,
so this test will always succeed if the parsing is not changed.
2015-09-01 11:39:50 +02:00
Hans-Christoph Steiner
eeb8ba02b0 move metadata post-parse processing to reusable function 2015-09-01 11:39:50 +02:00
Hans-Christoph Steiner
9e5dd19fc8 add test files to pre-commit hook and fix pep8 errors 2015-09-01 11:39:50 +02:00
Hans-Christoph Steiner
84c9777e9e support app metadata in JSON format
While the current text metadata format is good for human readability and
editability, it is difficult to produce and parse using code.  JSON is a
widespread standard format for easy automatic parsing and creating, while
having decent human readability.
2015-09-01 11:39:50 +02:00
Hans-Christoph Steiner
2b72634120 use common method to set up defaults in metadata dict
This is needed for the upcoming metadata formats: JSON, XML, etc.
2015-09-01 11:39:50 +02:00
Hans-Christoph Steiner
141e0e24c7 metadata: rename parse_metadata() to parse_txt_metadata()
This makes the code clear as support for other metadata formats is added.
2015-09-01 11:39:50 +02:00
Daniel Martí
04e6f2ebfd Move requests code out of common.py, closes #114 2015-08-31 17:05:08 -07:00
Daniel Martí
3bc0d43786 lint: fixed list false positives, no need for utf 2015-08-31 15:39:07 -07:00
Daniel Martí
19a281d7cb lint: warn about duplicate lines 2015-08-31 15:32:52 -07:00
Daniel Martí
23794446f7 lint: catch more incorrect lists 2015-08-31 15:25:41 -07:00
Daniel Martí
12926420a6 lint: stop accepting Office as valid category 2015-08-30 16:29:03 -07:00
Daniel Martí
18fe72bb0d lint: accept new category Sports & Health 2015-08-30 16:08:22 -07:00
Boris Kraut
28fd99f7ac Add liblzma-dev to buildserver 2015-08-30 12:50:30 +02:00
Daniel Martí
377199d241 Follow-up to 5a0129d8: also replace file mentions 2015-08-29 20:19:32 -07:00
Daniel Martí
9d75b130bc lint: accept all new categories 2015-08-29 18:37:08 -07:00
Daniel Martí
d83d0c2520 lint: new category 2015-08-29 18:24:18 -07:00
Daniel Martí
3a331c5be1 lint: Wallpaper is now called Theming 2015-08-29 17:56:45 -07:00
Daniel Martí
518ba10b9f lint: remove Children as valid category 2015-08-29 17:52:15 -07:00
Daniel Martí
120be4334d Move scan_source into scanner.py
Not really a common.py thing.
2015-08-28 19:20:39 -07:00
Daniel Martí
925fbee3b9 lint: complain about unwrapped descriptions 2015-08-28 19:05:47 -07:00
Daniel Martí
6fe8d96e85 Simplify some file logic with "with" 2015-08-28 18:37:23 -07:00
Daniel Martí
2894786ec9 stats: better exit message 2015-08-28 18:29:28 -07:00
Daniel Martí
05316e3292 stats: write known apks in natural order
By using natural instead of alphabetical sorting, we support sorting by
vercodes properly and thus app versions show in the correct order.
2015-08-28 18:28:39 -07:00
Daniel Martí
f4cbb6b3f8 Simlify known_apks writing 2015-08-28 18:26:23 -07:00
Daniel Martí
79749fe8b4 GitLab CI: Java is required to set up the SDK 2015-08-28 16:34:42 -07:00
Daniel Martí
9e99270680 Gitlab CI: install SDK 2015-08-28 16:11:54 -07:00
Daniel Martí
1eb83dcfea Gitlab CI: run tests too 2015-08-28 16:08:01 -07:00
Daniel Martí
bace7e912f Add missing -v and -q to readmeta 2015-08-28 15:53:59 -07:00
Daniel Martí
a4236d62cd lint: better footer output logic 2015-08-28 15:53:10 -07:00
Daniel Martí
ce8f74c98e lint: warn about unlinkified links 2015-08-28 15:50:34 -07:00
Daniel Martí
e0870f6e76 metadata: error on url titles that aren't 2015-08-28 15:48:53 -07:00
Daniel Martí
2c52f67cb1 lint: complain if link url isn't a url
Moving this check from metadata into lint is perhaps overkill, but at least it
doesn't break fdroid update because of the maintainer notes.
2015-08-28 14:23:30 -07:00
Daniel Martí
ecd0e07e93 Revert "metadata: complain if link url isn't a url"
I already tried this once. It had to be reverted because Maintainer Notes
often don't obey this. I had forgotten.

This reverts commit 97ba94903e.
2015-08-28 14:10:05 -07:00
Daniel Martí
e4219dd438 lint: format descriptions too
Like readmeta. This makes it error if any links are badly formatted or wrong.
2015-08-28 11:09:37 -07:00
Daniel Martí
97ba94903e metadata: complain if link url isn't a url 2015-08-28 11:08:59 -07:00
Daniel Martí
2253399190 Merge branch 'native' into 'master'
wp-fdroid: Don't imply 32bit code does not work on 64bit systems

Maybe someone could also check if the client lists app with 32bit code as incompatible with 64bit systems, even if they can run it (arm->arm64, i386->x64, mips->mips64 etc.).

Ref: https://f-droid.org/forums/topic/accordion-and-melodeon-2/

See merge request !68
2015-08-28 16:10:36 +00:00
Boris Kraut
52e67fa2a1 wp-fdroid: Don't imply 32bit code does not work on 64bit systems 2015-08-28 16:10:24 +02:00
Daniel Martí
e99ae53538 metadata: fix harmless typo 2015-08-27 20:41:18 -07:00
Daniel Martí
ae321f21bc Add build status badge, closes #99 2015-08-27 16:08:36 -07:00
Daniel Martí
4e14d9ceb4 Gitlab CI: Rename static analyzers task to "check" 2015-08-27 16:07:45 -07:00
Daniel Martí
12aea08580 First try at Gitlab CI integration 2015-08-27 16:00:02 -07:00
Ciaran Gultnieks
c46f0a58cc Merge branch 'per-app-repos' into 'master'
config option to enable per-app repos for nightly builds

For Guardian Project, we've been running an fdroid repo for the nightly builds for each of our apps: https://dev.guardianproject.info/debug  This is built using a big, hacked up shell script: [update-debug-fdroid-repo](https://github.com/guardianproject/fdroid-repo-tools/blob/master/update-debug-fdroid-repo).  It has proven very useful to us to be able to subscribe to the nightly build for a single app, so this the first step of porting that horrid shell script to `fdroidserver`.

This also helps make the fdroidserver tool suite the single set of tools for all types of builds and releases. That will hopefully drive more free software developers to make f-droid.org the core channel for official releases.

See merge request !66
2015-08-27 18:04:13 +00:00
Ciaran Gultnieks
9cb95d1eb5 Ensure makebuildserver provisions on an update 2015-08-27 10:12:22 +00:00
Daniel Martí
41b716ed7a Also force https on bitbucket 2015-08-26 18:57:13 -07:00
Daniel Martí
34f06dff24 Don't use lint to warn about google code
There are just too many. There is a script in fdroiddata to find google code
repos that have moved to github.
2015-08-26 18:35:50 -07:00
Hans-Christoph Steiner
0f03de80fa standardize on HTTPS for github.com links
fdroid link already checks HTTPS in build metadata, so this should also use
HTTPS.  It makes firewall rules easier when everything is HTTPS.
2015-08-27 00:28:47 +02:00
Ciaran Gultnieks
76b86560f4 Merge branch 'caching-for-makebuildserver' into 'master'
two quick kinds of caching for makebuildserver

I've been running `./makebuildserver` on a machine that only connects to the internet via Tor.  That means slow internet and other issues.  These two small changes made it easier to run `./makebuildserver` in this setup.  In combination with !25, this would give good support for working in low bandwidth environments.

See merge request !67
2015-08-26 12:49:35 +00:00
Hans-Christoph Steiner
f47677ef36 makebuildserver: allow setting apt mirror from command line
On some setups, using a custom apt mirror is essential, so this adds a
command line flag to override the default one:
http://ftp.uk.debian.org/debian/

For example, someone who runs a local mirror for offline and low bandwidth
situations.

This uses a % rather than a .format() to avoid escaping { and }, which have
meaning when using .format().
2015-08-26 14:46:54 +02:00
Hans-Christoph Steiner
4b0a6ed29f makebuildserver: allow a list/tuple for baseboxurl to support local copy
config.vm.box_url can be a list/tuple of URLs, which is useful to specific
a locally cached copy.  This is needed on slow connections, so that if it
fails, the download of jessie32.box does not have to start from the
beginning of the file again.
2015-08-26 14:46:53 +02:00
Hans-Christoph Steiner
99d0c55fe9 Merge branch 'support-vagrant-cachier' into 'master'
Add optional support for vagrant-cachier plugin

Building the basebox is excruciating for people on slow connections. I'm particularly sensitive to this after living in Central America for awhile :)

This won't affect anyone who hasn't installed the plugin. For those who do, it creates a persistent shared folder for each box (ie. testing23.box) and detects directories to cache between VM builds (apt, gems, pip, chef cache, etc.)

(The only downside is that, for those following server setup does who are not aware what vagrant-cachier does, it might be unexpected that artifacts persist between vagrant destroys.)

See merge request !25
2015-08-26 12:44:36 +00:00
Hans-Christoph Steiner
3af38569a2 server: switch Amazon AWS S3 upload to streaming mode
This keeps memory usage low because it only has to read a chunk at a time
into memory while before it read the whole file into memory before
uploading it.

This also seems to handle setting the permissions ACL better.
2015-08-25 16:55:52 +02:00
Hans-Christoph Steiner
b5cbb4382f new config option: per-app repos to support nightly build repos
For devs that want to build and distribute nightly builds of their apps
using the fdroid tools.  The core idea here is to make the fdroidserver
tool suite the single set of tools for all types of builds and releases.
That will hopefully drive more free software developers to make f-droid.org
an core channel for official releases.
2015-08-25 16:55:52 +02:00
Hans-Christoph Steiner
e614863c69 scan_apks() sets cachechanged, so no tricks needed 2015-08-25 16:49:52 +02:00
Daniel Martí
e88816bbe3 lint: warn about /master/ usage 2015-08-24 16:34:39 -07:00
Daniel Martí
0fb7acdd1d checkupdates: be more verbose with tags 2015-08-24 16:24:05 -07:00
Daniel Martí
06c94b3a44 Add support for gradle properties via gradleprops 2015-08-24 15:54:05 -07:00
Daniel Martí
5a0129d835 Rename COPYING to LICENSE
See fdroid/fdroidclient#384
2015-08-24 10:54:20 -07:00
Daniel Martí
a8d2c0a8d2 Prepare for sdk level 23 2015-08-20 09:56:14 -07:00
Daniel Martí
f44a1c89f1 config: bump default build_tools after update in BS 2015-08-20 09:48:12 -07:00
Daniel Martí
bc70f78ef9 Remove default config settings from the BS 2015-08-20 09:48:12 -07:00
Daniel Martí
bca7986600 Merge branch 'two-fixes' into 'master'
Two fixes

I pulled two commits out of !57 since it would be good to have them included, and specifically the `buildToolsVersion` issue was just discussed.

The current state of the `buildToolsVersion` replacement is not good.  It will replace this:

```
buildToolsVersion '21.0.1'
```

with this:

```
buildToolsVersion = '21.0.1'
```

That is incorrect, since the first form is more like a function call than a variable assignment.  So most likely that is causing the `buildToolsVersion` to be unset.  The commit here includes a fix that works for both the rare, non-standard variable assignment way, i.e. `buildToolsVersion = '21.0.1'` as well as the standard way: `buildToolsVersion '21.0.1'`.  It also includes tests for both cases.

See merge request !65
2015-08-20 16:39:38 +00:00
Hans-Christoph Steiner
d53a5af715 build: improve regsub pattern for setting buildToolsVersion
This addresses the discussion in !64
https://gitlab.com/fdroid/fdroidserver/merge_requests/64

Sometimes, buildToolsVersion is a kind of gradle macro call, and other
times it is a variable assignment.  This regsub pattern now handles both of
those cases.
2015-08-19 17:55:17 +02:00
Hans-Christoph Steiner
6db6433e97 fix syntax error in manual generation and add ./gendocs.sh to the tests 2015-08-19 17:51:29 +02:00
Daniel Martí
46b1f09de3 Only do the magic import/except dance once
No need to do it for every file, once per app is enough
2015-08-18 23:46:35 -07:00
Daniel Martí
41fd1e86af lint: also do http warnings on descriptions 2015-08-18 18:14:48 -07:00
Daniel Martí
80371da133 lint: better type safety 2015-08-18 18:07:01 -07:00
Daniel Martí
d0559f864e Warn about url shorteners being used 2015-08-18 17:54:32 -07:00
Daniel Martí
b9397733c3 Warn about misplaced flattr donation links 2015-08-18 17:53:56 -07:00
Daniel Martí
57ba6f0307 import: remove support for gitorious
Same as google code.
2015-08-18 16:28:58 -07:00
Daniel Martí
e8a7a56d2e import: remove google code support
Google code is dead and going read-only. import is just a helper program, and
we don't want to help people add apps from google code anymore. Apps should
move to other hosting sites.
2015-08-18 16:26:27 -07:00
Daniel Martí
261ed09d7c lint: Update Check Name with unchanged app id 2015-08-18 14:01:14 -07:00
Daniel Martí
d59ecb3d18 Add gradle 2.6 to the buildserver 2015-08-18 13:40:21 -07:00
Daniel Martí
d2ccea8246 Update buildserver for android-23 2015-08-18 13:39:00 -07:00
Daniel Martí
c813ad0594 Fix type issue 2015-08-17 22:04:20 -07:00
Daniel Martí
ab6d6a3d0b Also enforce https on urls without path 2015-08-14 15:30:03 -07:00
Daniel Martí
4ef3875bf0 Specify that CVC 0 means infinity 2015-08-14 14:25:06 -07:00
Daniel Martí
712c3aaae9 lint: warn about CVCs that don't make sense 2015-08-14 14:16:43 -07:00
Daniel Martí
6cc91e2ded Line numbers start at 1, not 0 2015-08-14 10:30:27 -07:00
Daniel Martí
bb2598d358 Add "Update Check Name:Ignore" 2015-08-14 10:27:16 -07:00
Daniel Martí
e5bc581d0d lint: Fix unicode issues in list warnings 2015-08-13 22:37:42 -07:00
Daniel Martí
12fc0640df lint: don't warn multiple times about lists 2015-08-13 22:14:59 -07:00
Daniel Martí
fbff41234f lint: warn about incorrect lists 2015-08-13 22:13:58 -07:00
Daniel Martí
90a926dfb0 Fix test that broke with c813a3cdbb 2015-08-13 12:44:35 -07:00
Daniel Martí
3b43e27cb8 Add gradle 2.5, fixes #108 2015-08-13 11:28:01 -07:00
Daniel Martí
24f6cc604b Always end config list items with a comma 2015-08-13 11:02:09 -07:00
Ciaran Gultnieks
47032cb4e9 Fix multiple errors in get_mime_type
Closes #111
2015-08-13 19:16:28 +02:00
Daniel Martí
576135ff8f Merge branch 'fix-custom-buildToolsVersion' into 'master'
Fix gradle adaptation for custom buildToolsVersion configurations

I have ```build_tools = "22.0.1"``` configured in my config.py, however a recent fdroidserver update broke this. This PR fixes it for me.

See merge request !64
2015-08-09 01:40:20 +00:00
Lode Hoste
c813a3cdbb fix gradle adaptation for custom buildToolsVersion configurations 2015-08-08 21:29:48 +02:00
Hans-Christoph Steiner
c1598b04da Merge branch 'master' into 'master'
Add configuration for pypi

See: [http://peterdowns.com/posts/first-time-with-pypi.html](http://peterdowns.com/posts/first-time-with-pypi.html)

See merge request !63
2015-08-07 18:15:37 +00:00
Nico Alt
09d686ebe7 Add configuration for pypi 2015-08-07 11:41:38 +02:00
Daniel Martí
9fc583289e lint: complain about UCMs that haven't been used
Mainly for MRs from people who don't fill the automatic fields
2015-08-05 10:52:53 -07:00
Daniel Martí
bad611ce5a Properly default to NDK r10e 2015-08-05 10:33:42 -07:00
Daniel Martí
c8806a3235 Merge branch 'master' into 'master'
final 0.4.0 fixes

Because `setup.py` is broken because `MANIFEST.in` is still pointing to `README` and not `README.md`, the 0.4.0 tag needs to be deleted.  This merge requests fixes that and two other minor issues.  This has passed multiple runs of the test suite, both on my machine and the jenkins box.

See merge request !61
2015-08-05 16:38:27 +00:00
Hans-Christoph Steiner
70848301aa fix fdroid rewritemeta reference in manual 2015-08-05 14:05:17 +02:00
Hans-Christoph Steiner
1bb14d2f82 run-tests: fix quoting to prevent spurious execution of fdroid update 2015-08-05 13:36:21 +02:00
Hans-Christoph Steiner
6f1d1b81be rename README to README.md in MANIFEST.in
this stops `python setup.py` from failing...
2015-08-05 10:35:14 +02:00
Daniel Martí
59883851ae Bump to 0.4.0 2015-08-04 23:01:16 -07:00
Hans-Christoph Steiner
21b79cdea5 Merge branch 'master' into 'master'
Port README to markdown

Also add instructions for Arch-Linux.

You can take a look on it [here](https://gitlab.com/NicoAlt/fdroidserver/blob/master/README.md).

See merge request !60
2015-08-04 20:56:16 +00:00
Nico Alt
94881ba10d Correct filename in setup.py 2015-08-04 21:02:06 +02:00
Nico Alt
1560235424 Port README to markdown
Also add instructions for Arch-Linux.
2015-08-04 13:00:01 +02:00
Daniel Martí
9fa5fe15f1 Add automake1.11 for gpg 2015-08-03 21:49:32 -07:00
Daniel Martí
01cd81e19b Merge branch 'master' into 'master'
let setuptools determine the base install path on OSX

This is the last commit from me before the 0.4.0 release.  Its ready to go!

A gentle reminder:
* sign the tag: `git tag -s 0.4.0 -m "tagging release 0.4.0"`
* release tags are `0.4.0` format, not `v0.4.0`
* change the version in `setup.py` to match the tag exactly, char by char

Then I'll post the update to pypi.python.org

See merge request !59
2015-08-03 21:02:56 +00:00
Hans-Christoph Steiner
82acf3a0f8 let setuptools determine the base install path on OSX
Instead of trying to guess which absolute path and .egg name
everything will be installed into, just use a relative path and the
setup process will do the right thing (so far, at least).
2015-08-03 22:17:20 +02:00
Daniel Martí
00ace20d9b Add gradle plugin version 1.3 to our wrapper 2015-08-03 11:34:20 -07:00
Ciaran Gultnieks
944d38d79e Merge branch 'update-install' into 'master'
README: ppa only works for Ubuntu based systems

See merge request !58
2015-08-03 12:44:30 +00:00
Ciaran Gultnieks
581bc3c541 Merge branch 'bsd-osx-porting-and-tests' into 'master'
BSD/OSX porting and tests

This makes `fdroid init` and `fdroid update` work on BSD/OSX and maybe Cygwin also (I didn't test Cygwin).  It also makes the install process more tolerant, like not requiring `python-magic` to run, while using it if its available.

Some fixes and additional tests are also included.  The commit messages have more info.

See merge request !56
2015-08-03 12:43:15 +00:00
Hong Xu
fef4d8a227 README: ppa only works for Ubuntu based systems 2015-08-02 17:11:44 -07:00
Hans-Christoph Steiner
e2cbaff377 jenkins-build: run test suite from pip install using source tarball
Since `python setup.py sdist` provides the actual tarball that will be
installed via `easy_install`, `pip install`, etc. it should also be tested.
The existing `pip install -e $WORKSPACE` tests the .egg-link install format
2015-08-01 12:30:58 +02:00
Hans-Christoph Steiner
a020625462 support egg-link format when installed from git repo
If you run `python setup.py install` from the git repo, then it will be
installed using the .egg-link format, which just points to the git repo.
`fdroid init` needs to handle that when looking for example files to copy.
2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
45ffaac3f2 update install instructions in README 2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
f38619ef5f chmod keystore after checking whether it was created
On OSX, when Java is not installed, it'll fail to create the keystore, but
then give an error from chmod failing.  This changes things so that the
missing Java is reported instead.
2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
1c1f481fcc support installing as a Python .egg
For platforms where easy_install is a good option, like OSX, support
the Python .egg library format.
2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
752b258ba7 get MIME types without strictly requiring python-magic
There are two forms of python-magic, one included in libmagic that is
default on Debian, and another Python wrapper for libmagic that is
called 'python-magic' on pypi.  Those both rely on the compiled binary
library libmagic.  For platforms without good package management, fallback
to using the built-in 'mimetypes' library if 'magic' is not available.

This supports OSX, Windows, and BSD.
2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
37694a6155 fix installing via OSX's easy_install 2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
176029aefb remove non-existant files from the MANIFEST.in 2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
64a9c93ce7 test new common.regsub_file() method that replaces sed calls 2015-08-01 00:38:41 +02:00
Hans-Christoph Steiner
85febd40d1 use common.regsub_file() instead of Popen(sed)
Python libraries work better in Python than running external commands, and
it also makes the code much more portable.  For example, the GNU and BSD
sed commands have different, and sometimes conflicting, flags.

This also reworks the regexp patterns to be more tightly focused, and not
change the same variable name in comments or elsewhere.
2015-08-01 00:38:41 +02:00
Alex Burka
4a478528c2 tests: short args for mktemp to support BSD
*BSD and OSX do not have compatible long args
2015-08-01 00:38:40 +02:00
Hans-Christoph Steiner
316d71d46c show commented out examples for setting sdk_path and ndk_paths
Instead of just mirroring the defaults in the example config.py, show a
useful example of how they might be set.
2015-08-01 00:38:40 +02:00
Hans-Christoph Steiner
b8a3bce430 run-tests: fix copying of urzip.apk into new repo 2015-08-01 00:38:40 +02:00
Hans-Christoph Steiner
d01e814e36 run-tests: run fdroid readmeta after each --create-metadata
Just another basic check, this time for `fdroid readmeta`.
2015-07-30 22:19:10 +02:00
Daniel Martí
fd6e323ba9 lint: exit with an error code if any errors are found 2015-07-30 12:46:42 -07:00
Daniel Martí
bc5d5cbd83 Also use OptionParser in readmeta to add -h/--help 2015-07-30 11:35:25 -07:00
Daniel Martí
b4d768b225 Merge branch 'some-compatibility-fixes' of https://gitlab.com/eighthave/fdroidserver 2015-07-27 10:41:23 -07:00
Daniel Martí
8917382e4f Add --no-refresh to the completion 2015-07-24 18:15:39 -07:00
Daniel Martí
343c7de29f Merge branch 'no-refresh' of https://gitlab.com/aelmahmoudy/fdroidserver 2015-07-24 18:11:15 -07:00
Daniel Martí
db7eda3b47 Be more specific about empty build flags 2015-07-24 18:08:48 -07:00
Hans-Christoph Steiner
f625005ec3 remove dependency on wget for 'build' and 'verify'
To make the core tools portable to platforms like Mac OS X and Windows,
remove the dependency on wget and instead use Python Requests, which
probably has better performance anyway.
2015-07-24 11:53:14 -07:00
Hans-Christoph Steiner
cef7553873 update: warn if APK has a date that is newer than the system clock
If the date in an APK is in the future, that could cause confusion.  If the
system clock is wrong, then the APK will also have a date in the future.
This is most likely on offline signing machines, since they do not have a
time source to sync to.
2015-07-23 10:39:30 -07:00
Hans-Christoph Steiner
bd3ae88608 extend text char limits to match other app stores
We should be compatible with other apps stores unless there is a specific
reason not to be.

* Google Play, Amazon, and iTunes all have 4000 char descriptions

For the summary, we can just bump it up to the same as what Play has
* Google Play allows an 80 char "Short Description"
  https://support.google.com/googleplay/android-developer/answer/113469?hl=en
* Amazon allows a 1200 char "Short Description"
  https://developer.amazon.com/public/support/submitting-your-app/tech-docs/submitting-your-app#Add Metadata and Image Assets
2015-07-23 10:39:30 -07:00
Ciaran Gultnieks
fba632cf07 Update recommended base box 2015-07-21 22:12:52 +02:00
أحمد المحمودي (Ahmed El-Mahmoudy)
44335b64be Add an option to disable repository refresh
This is useful for testing builds with no internet connection, and the
repositories were already fetched previously
2015-07-14 17:43:07 +02:00
Daniel Martí
09a0aa2eb9 Also find usual suspects in gradle files 2015-07-05 14:26:41 -07:00
Ciaran Gultnieks
0bd5be2ea3 Fix update fail when icons are missing
Introduced yesterday, I believe.
2015-06-29 11:17:59 +02:00
Daniel Martí
b848b99bab Always clean and reset all submodules 2015-06-28 19:37:28 -07:00
Daniel Martí
3492ec6eff Hotfix: Client 0.92 breaks if web/source/tracker are missing
Revert this commit after a few stable releases
2015-06-28 11:45:06 -07:00
Daniel Martí
af692dd3bd Stable clients understand UpstreamNonFree now 2015-06-26 18:00:34 +02:00
Daniel Martí
7b2f7077bc Hotfix for 7b68b90569 - don't cal .split() on None 2015-06-26 17:58:57 +02:00
Daniel Martí
7b68b90569 update: never include empty elements in the index 2015-06-26 17:41:19 +02:00
Ciaran Gultnieks
d866ab4cef Fix imagemagick (broken in d9bbb507) 2015-06-25 22:53:11 +02:00
Daniel Martí
00668b254c Replace some FDroid strings with F-Droid 2015-06-21 13:51:23 +02:00
Daniel Martí
e55d1450d1 Update the Android SDK to 24.3.3 2015-06-19 21:17:43 +02:00
Daniel Martí
5aa9e2289d Improve xml string extracting support
* Shield ourselves from newlines that would break metadata files
* Properly use string resources for version names
2015-06-18 17:54:56 +02:00
Daniel Martí
52c2ca1fe7 Replace NDK r10d with r10e 2015-06-18 17:05:48 +02:00
Daniel Martí
5985bb4a0b Add gradle 2.4 2015-06-18 16:57:00 +02:00
Daniel Martí
e608975f78 Bump build-tools to 22.0.1 2015-06-18 16:56:56 +02:00
Daniel Martí
1fa9ec60a1 lint: start warning about invalid categories 2015-06-17 19:55:30 +02:00
Daniel Martí
6c85f9d2fa Bump index version to 13: <changelog> added 2015-06-09 23:11:42 +02:00
Daniel Martí
d5f705bd9c update: don't always place the changelog element
It's not that common, so often it'd just be <changelog/>
2015-06-09 23:10:10 +02:00
Daniel Martí
5af099eb08 lint: take forcevercode into account for UCM warnings 2015-06-07 14:14:56 +02:00
Daniel Martí
d0a10e05d9 lint: get rid of -p/--pedantic
Only one check was left, and it's of little use anyway.
2015-06-07 14:05:29 +02:00
Daniel Martí
5f894f1d38 lint: complain about useless Name: fields 2015-06-07 14:03:15 +02:00
Daniel Martí
4db4a86420 Always make sure that we don't encode None
Apparently, we can have a non-nil element that has a nil text.
2015-06-07 14:02:50 +02:00
Daniel Martí
f9b7a260af lint: Move the UCM:Tags warning out of pedantic
It's much more reliable now
2015-06-05 17:15:13 +02:00
Daniel Martí
a8ec149cd4 lint: Improve UCM:Tags warning
If the vercode is higher than CVC, then we're probably only following stable
versions or something like that
2015-06-05 17:04:05 +02:00
Daniel Martí
7e529c495e lint: don't be pedantic about downloading code
We don't really control this if run via a script, which happens more often.
2015-06-05 16:59:01 +02:00
Daniel Martí
c70e03f67c lint: don't assume trailing slashes in urls are redundant 2015-06-05 16:56:51 +02:00
Daniel Martí
4a4c05e21a Merge branch 'graphviz' into 'master'
Add graphviz to buildserver

Add graphviz to buildserver. Like inkscape and imagemagick it is used to "build" images from "source code".

See merge request !53
2015-06-05 14:52:35 +00:00
Boris Kraut
d9bbb507d1 Add graphviz to buildserver 2015-06-05 15:41:21 +02:00
Ciaran Gultnieks
368a6ae514 Stop fdroid update saying it requires signing keys when it doesn't
Again!
2015-06-04 15:00:31 +01:00
Daniel Martí
d0b5e60369 Properly support escaped strings
See:
https://developer.android.com/guide/topics/resources/string-resource.html
2015-06-04 15:56:20 +02:00
Daniel Martí
2231e72812 Remove now unnecessary regex_pedantic 2015-06-04 15:49:00 +02:00
Daniel Martí
56c855c6b1 lint: enforce https on gitlab too 2015-06-04 15:47:25 +02:00
Daniel Martí
46adf486c9 lint: Remove duplicate code.google.com TODO 2015-06-04 15:46:54 +02:00
Daniel Martí
ce5922d0a1 lint: move punctuation warnings out of pedantic 2015-06-04 15:45:33 +02:00
Daniel Martí
184ae8e2f6 "Changelog:" will be empty often, so only put it if present 2015-06-04 01:01:52 +02:00
Daniel Martí
7018e32b2c Move github .git lint warning to http_warnings 2015-06-03 22:51:05 +02:00
Daniel Martí
9061f71dc4 Re-add https enforcings to Repo: 2015-06-03 22:17:57 +02:00
Daniel Martí
128b19e010 Enforce https uniformly in all http links 2015-06-03 21:00:15 +02:00
Daniel Martí
756f4a2363 Simplify lint http warnings 2015-06-03 20:55:08 +02:00
Daniel Martí
5cab5956e3 Don't accept non-integer vercodes 2015-06-03 19:40:43 +02:00
Daniel Martí
cd93d23062 Work around encoding issues when using xml files
The xml package returns "unicode" objects instead of strings in utf-8.
2015-06-03 18:42:24 +02:00
Daniel Martí
dd37061b41 Don't crash if an <application> has no android:label 2015-06-03 18:30:31 +02:00
Daniel Martí
1b2354858b Fix PEP8 E225 2015-06-03 18:05:17 +02:00
Daniel Martí
beb17ad84a Don't use the commits feed as a changelog link in import
If it's often not a replacement for a proper changelog, do not advise its
usage.
2015-06-03 15:52:46 +02:00
Daniel Martí
4b59f913f1 Merge branch 'changelog' of https://gitlab.com/krt/fdroidserver 2015-06-03 15:52:01 +02:00
Daniel Martí
9be9b7e919 No need to walk the entire src/main subtree in gradle apps 2015-06-03 15:43:55 +02:00
Daniel Martí
50a3564989 Also use proper xml parsing when retrieving string resources - #58 2015-06-03 15:42:45 +02:00
Daniel Martí
7ab4712892 Also use xml parsing to obtain version from AM.xml - #58 2015-06-03 15:23:18 +02:00
Daniel Martí
7c2bd34c49 Use proper AndroidManifest.xml parsing for labels - #58 2015-06-03 14:35:50 +02:00
Daniel Martí
87d409a55c Revert back to always updating Auto Name 2015-06-03 14:35:31 +02:00
Daniel Martí
439cabb7f3 Remove "Srclibs:" from srclib metadata files
They are handled per build, this feature is of little help and practically
unused in master.
2015-06-03 13:52:47 +02:00
Ciaran Gultnieks
7a3baa01ed Allow gpg home directory to be overridden 2015-06-02 09:17:08 +01:00
Daniel Martí
3b78147b2c Merge branch 'pandoc' into 'master'
Add pandoc to buildserver

Closes #64.

See merge request !52
2015-05-26 13:35:13 +00:00
Boris Kraut
b853609ee1 Add pandoc to buildserver 2015-05-23 17:48:05 +02:00
Daniel Martí
7b0e8bd01d lint: be more strict about redundant summaries 2015-05-22 09:33:15 +02:00
Daniel Martí
550d907b8c fix E713 test for membership should be 'not in' 2015-05-22 09:29:51 +02:00
Ciaran Gultnieks
6196e8acc1 Formatting fix for f345b24 2015-05-15 21:55:20 +01:00
Ciaran Gultnieks
4178b34351 Fix 'fdroid update' regression
This is from MR !48. It refuses to update because there is no 'keypass'
or 'keystorepass' in the config. These shouldn't be in the config of any
properly set up existing repo in the first place. They certainly aren't
in any of mine (as a result of which, it refused to work on any of
them!)
2015-05-15 21:38:12 +01:00
Daniel Martí
f345b24816 lint: warn about extra empty lines 2015-05-15 17:09:21 +02:00
Daniel Martí
7c0228d89c Warn about empty categs 2015-05-15 17:09:21 +02:00
Daniel Martí
ac004264f0 Make comma-separated list parsing code common 2015-05-15 17:09:21 +02:00
Ciaran Gultnieks
76332e7c0e Merge branch 'support-all-signing-key-types' into 'master'
support all APK signing key types: DSA, EC, RSA

The lovely python getsig replacement was only looking for .RSA files, but the signing key is defined as: "A signature block file with a .DSA, .RSA, or .EC extension"
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html

For more info:
https://f-droid.org/forums/topic/binary-repo-whatsapp-error

See merge request !51
2015-05-14 16:12:04 +00:00
Ciaran Gultnieks
82ab109066 Merge branch 'debug-builds' into 'master'
support plain paths as a serverwebroot

For use cases where there is a web server running on the same machine where the `fdroid update` is being run, allow plain paths in the serverwebroot list.  This is useful for debug repos from build servers, like:

https://dev.guardianproject.info/fdroid

This also includes small change in the `fdroid server update` delete behavior: it delays the delete phase until after the new APKs are uploaded.  This is keep things working for a long as possible while the repo is being updated.

See merge request !49
2015-05-14 16:11:32 +00:00
Ciaran Gultnieks
afa7254a83 Merge branch 'master' into 'master'
make it really easy to upgrade unsigned repos to signed

As a key step to removing support for unsigned repos from fdroidclient (https://gitlab.com/fdroid/fdroidclient/issues/12), this merge request makes `fdroid update` require a signing key.  If there is no keystore, it'll prompt the user to create one using `fdroid update --create-key`.

This closes #13

See merge request !48
2015-05-14 16:09:40 +00:00
Hans-Christoph Steiner
fd0e2ab97e support all APK signing key types: DSA, EC, RSA
"A signature block file with a .DSA, .RSA, or .EC extension"
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html
2015-05-14 12:04:46 -04:00
Daniel Martí
255afa3894 ACCESS_SUPERUSER is now deprecated 2015-05-14 12:31:10 +02:00
Daniel Martí
dd70c9441c Detect most bad URLs
Also [appid] links that should really be [[appid]]
2015-05-13 13:06:10 +02:00
Daniel Martí
bd3303c43d Merge branch 'vars' into 'master'
Update documentation to cover COMMIT, VERSION and VERCODE vars

See merge request !50
2015-05-10 13:42:07 +00:00
Boris Kraut
f3339daeee Update documentation to cover COMMIT, VERSION and VERCODE vars 2015-05-10 15:29:41 +02:00
Daniel Martí
e916e5df4e Add COMMIT, VERSION and VERCODE recipe vars. Fixes #69 2015-05-10 13:55:16 +02:00
Hans-Christoph Steiner
cc0908bdbb common.write_to_config(): if key doesn't exist in config.py, append it
This lets `fdroid update --create-key` add key/value pairs to config.py
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
ff48c6b7f9 tests: no need to dump the index.xml to the build log
This should make the build log a lot shorter.
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
de1c80f9b4 fdroid update --create-key to create a keystore/key
This provides the final option in this series, allowing the user to just
add --create-key to `fdroid update, and thereby upgrade an unsigned repo to
a proper signed repo.  It also might be useful

closes #13 https://gitlab.com/fdroid/fdroidserver/issues/13
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
276123856c move keystore gen logic to common function
This moves the method for generating a new keystore for the repo signing
key to a common function so that it can be used in more subcommands beyond
`fdroid init`.  The immediate idea is to make `fdroid update --create-key`
upgrade unsigned repos to signed ones so we can make fdroidclient only use
signed repos.
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
af360199f1 move default keystore location to keystore.jks, i.e. in the fdroid repo
This makes `fdroid init` create a complete, self-contained repo in a single
folder.  That makes it easily transferable, backupable, etc.  It also means
that `fdroid update` can add a keystore to an existing unsigned repo
without having to worry about finding the right folder or overwriting any
other existing files.
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
4861595288 move genkey() and genpassword() to common.py for use in multiple sections
genkey() and genpassword() are now going to be used by `fdroid update` as
well as `fdroid init`, so they should be in common.py
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
86865faa62 make fdroid update check that it can sign the repo, or exit with error
There is no good reason to run unsigned repos any more.  It is trivially
easy to create and use a signed repo, and having to support unsigned repos
in the client makes some security-critical parts of the code a lot more
complicated.

refs #13 https://gitlab.com/fdroid/fdroidserver/issues/13
https://gitlab.com/fdroid/fdroidclient/issues/12
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
0d62c3093a jenkins-build: always use speced dir for APK source
Otherwise, the test process can pick up lots and lots of APKs from various
places like a ~/fdroid folder or various ~/workspace/fdroidserver Jenkins
projects.
2015-05-08 16:13:15 -04:00
Hans-Christoph Steiner
c941bf3215 server: support plain paths as a serverwebroot
For use cases where there is a web server running on the same machine where
the `fdroid update` is being run, allow plain paths in the serverwebroot
list.  This is useful for debug repos from build servers, like:

https://dev.guardianproject.info/fdroid
2015-05-08 16:11:29 -04:00
Hans-Christoph Steiner
463bfc5639 server: delay deleting on the server for as long as possible
In order to keep things working as much as possible during the update, the
rsync should only delete the obsolete APKs after it has finished uploading
the new APKs.
2015-05-08 16:11:29 -04:00
Ciaran Gultnieks
f63ea5cb86 Use --safe-links with rsync 2015-05-08 14:55:50 +01:00
Daniel Martí
ce48e8f78d Don't match gradle plugin import lines which are commented 2015-05-08 00:58:52 +02:00
Daniel Martí
3e04a44941 Add plugin version 1.2 to our gradle wrapper 2015-04-29 22:15:57 +02:00
Daniel Martí
577211dae7 Sort debian packages to be installed 2015-04-28 17:39:26 +02:00
Daniel Martí
8de6b79c60 Add scons, make-like tool used by godot 2015-04-28 17:36:15 +02:00
Daniel Martí
ca483069c0 Order counter stats by value, not key 2015-04-23 16:42:22 +02:00
Daniel Martí
e7ac90b6b8 stats: Don't confuse app with appid 2015-04-20 18:26:23 +02:00
Daniel Martí
3c2f84fb15 stats: sort counter outputs 2015-04-20 18:25:40 +02:00
Daniel Martí
41539d6a1b Add stats/disabled_apps.txt (closes #87) 2015-04-20 18:20:24 +02:00
Daniel Martí
504163b170 lint: warn about None category 2015-04-19 17:04:44 +02:00
Daniel Martí
74f12ab641 lint: Remove NOP 2015-04-19 17:04:34 +02:00
Daniel Martí
1af774811d Merge branch 'projectproperties' into 'master'
Fix project.properties dependency issue

Correctly place scrlib references also
in the case there is no project.properties file
present in the original repository.

This commit fixes a problem, which was introduced with
021df3c424: If no
project.properties file exists in the original
project's source repo, place_srclib will not place
a dependency --- even if there should be one:

>    if not os.path.isfile(proppath):
>        return

Example app: fdroiddata/metadata/org.berlin_vegan.bvapp.txt

See merge request !47
2015-04-17 17:28:35 +00:00
Daniel Martí
3f9d6b2947 Don't try reading lines from directories 2015-04-17 13:05:12 +02:00
micu
96e4062bcf Fix project.properties dependency issue
Correctly place scrlib references also
in the case there is no project.properties file
present in the original repository.

This commit fixes a problem, which was introduced with
021df3c424: If no
project.properties file exists in the original
project's source repo, place_srclib will not place
a dependency --- even if there should be one:

>    if not os.path.isfile(proppath):
>        return

Example app: fdroiddata/metadata/org.berlin_vegan.bvapp.txt
2015-04-17 01:10:23 +02:00
Daniel Martí
d1d257bef4 lint: add commented out warnings about google code 2015-04-14 14:18:44 +02:00
Daniel Martí
4888339a9d Also run main gradle clean task in case it's got dependencies 2015-04-10 00:14:52 +02:00
Daniel Martí
b416795166 Start supporting gradle tasks that belong to subprojects 2015-04-10 00:14:25 +02:00
Daniel Martí
ed5c2fd33d Add gradle 2.3 to the buildserver
Fixes apps that explicitly require 2.3 via gradleVersion
2015-04-09 16:02:35 +02:00
Daniel Martí
f8c32ce045 Add android version 5.1 2015-04-06 22:18:54 +02:00
Daniel Martí
acd49c6e4d When patching or checking plugin versions, use *.gradle
Apparently all *.gradle files are valid, e.g. global.gradle.
2015-04-06 17:42:26 +02:00
Daniel Martí
021df3c424 Other minor file reading fixes 2015-04-03 00:14:32 +02:00
Daniel Martí
241a3f02ac Always check that files actually are files before reading
This fixes crashes with e.g. broken symlinks
2015-04-03 00:05:22 +02:00
Daniel Martí
85b48a5c25 Fix buildTools versions that reference variables 2015-03-31 23:08:32 +02:00
Ciaran Gultnieks
c6434476e9 Work when cpu count is not defined 2015-03-27 20:49:43 +00:00
Daniel Martí
45925c6816 Forgot to bump build_tools in the configs 2015-03-24 21:36:42 +01:00
Daniel Martí
71d8888308 Merge branch 'import' into 'master'
Importer: Fix duplicated urls

Importer uses provided URL for the "website" as default. If "sourcecode" is set to the same, this causes a lint error. For Github the website is now empty while Gitlab's sourcecode is no longer the bas project url.

See merge request !46
2015-03-22 17:18:45 +00:00
Boris Kraut
6353dd1a09 Importer: Fix duplicated urls 2015-03-22 03:24:43 +01:00
Daniel Martí
66487272cd Update build tools to 22.0.0 2015-03-21 23:42:31 +01:00
Daniel Martí
92fdcd3e6a Update sdk to 24.1.2 2015-03-21 23:41:08 +01:00
Daniel Martí
4c0ee6ddce Add android-22 target 2015-03-21 23:28:09 +01:00
Daniel Martí
4feedb7c6b Gradle plugin version 1.1 still uses gradle 2.2 2015-03-15 16:25:41 +01:00
Ciaran Gultnieks
c2c628273c Merge branch 'update-readme' into 'master'
Update readme

Updated the main README file to include a list of dependencies.

Forgot to update my e-mail address, so I closed Merge Request !44 first.

See merge request !45
2015-03-11 13:32:09 +00:00
Schneider Werner-Walter
3c5af7e0d9 Update README file. 2015-03-11 10:28:47 +02:00
Daniel Martí
fdb71e2a41 lint: don't take commas as punctuation 2015-03-05 15:32:45 +01:00
Daniel Martí
3b7b8b9bde Don't take placeholders commits as possible tags 2015-03-05 15:25:21 +01:00
Daniel Martí
edd3a787aa Also set ANDROID_NDK_HOME since gradle may need it 2015-03-05 15:25:09 +01:00
Daniel Martí
8510961db9 Also ignore PEP8 W503 2015-03-05 15:24:52 +01:00
Daniel Martí
9be0d35bd1 Ignore all the pep8 errors ignored by the default config 2015-02-07 21:58:24 -08:00
Ciaran Gultnieks
c7f3d65997 Merge branch 'LOffice' into 'master'
Add LibreOffice build-deps.

These are the dependencies that i needed in a VM with a "Debian Jessie netinst" installation. I had in the system the "Standard system utilities", fdroidserver, all the packages listed in "buildserver/cookbooks/fdroidbuild-general/recipes/default.rb", and "build-essential". I assume that the BS has build-essential  installed as its needed to build the "VirtualBox Guest Additions".

See merge request !42
2015-02-05 09:10:52 +00:00
Matías Zúñiga
3d791e4c9e Add dependencies needed by "LibreOffice Viewer Beta" 2015-02-03 23:45:26 +00:00
Ciaran Gultnieks
ad1e936ad7 Failed to update what page? 2015-02-01 20:32:03 +00:00
Ciaran Gultnieks
ea17f08112 Note about required python version 2015-02-01 20:31:46 +00:00
Ciaran Gultnieks
b71433e66b Allow buildserver CPU count to be configured 2015-02-01 09:00:04 +00:00
Ciaran Gultnieks
d3f8a9f276 Signature file names are not fixed 2015-01-31 16:16:21 +00:00
Ciaran Gultnieks
d254fb81f2 Use jarsigner-based verification in publish 2015-01-31 15:59:00 +00:00
Ciaran Gultnieks
94edef3b34 Need the information about what's different from verify_apks 2015-01-31 15:58:08 +00:00
Parménides GV
f26a908dab Add function to verify apks via jarsigner 2015-01-31 15:55:18 +00:00
Ciaran Gultnieks
3e7046e23b Use pre-retrieved Binary when publishing
This allows this system to work when the machine that runs 'fdroid
publish' is offline.
2015-01-31 15:36:57 +00:00
Ciaran Gultnieks
d1c03fbdbf Retrieve Binaries at build time 2015-01-31 15:36:26 +00:00
Ciaran Gultnieks
95ff6de599 Improve validation of fdroid import page parsing 2015-01-31 12:07:42 +00:00
Ciaran Gultnieks
e26ad377a6 Handle not-found package name gracefully 2015-01-31 12:07:42 +00:00
Ciaran Gultnieks
8c1e1b1d24 Merge branch 'fxbuilddeps' into 'master'
Add firefox build-deps.

See merge request !40
2015-01-31 12:04:16 +00:00
Ciaran Gultnieks
384f97e998 Ensure package names are valid 2015-01-26 18:30:01 +00:00
Ciaran Gultnieks
fe7f6cfe50 Remove shell option from FDroidPopen 2015-01-26 18:30:01 +00:00
Ciaran Gultnieks
43ccdce0ac wp-fdroid: Properly escape fdfilter
Resolves an XSS issue identified by Cure53 (https://cure53.de)
2015-01-26 18:30:01 +00:00
Boris Kraut
abdc97142b Add compare-locales via easy_install for Firefox 2015-01-25 19:33:02 +01:00
Boris Kraut
ffd5263b58 Add build-deps for Firefox 2015-01-25 19:32:14 +01:00
Ciaran Gultnieks
7fdddb729e Merge branch 'master' into 'master'
fix build issues

Fixed three build issues: one PEP8 and two small errors in the tests.

See merge request !39
2015-01-21 16:30:43 +00:00
Hans-Christoph Steiner
2a87ae5127 fix update.TestCase: remove unused SilentPopen import, that class was removed 2015-01-21 10:21:54 +01:00
Hans-Christoph Steiner
3b3d026ee3 fix install test by making sure common.options is set 2015-01-21 10:21:54 +01:00
Hans-Christoph Steiner
e3628b2d74 fix PEP8 E124 closing bracket missing visual indentation 2015-01-21 10:21:54 +01:00
Ciaran Gultnieks
2656ea230c Merge branch 'antifeature' into 'master'
Update docs: AntiFeatures

See merge request !38
2015-01-21 09:19:12 +00:00
Ciaran Gultnieks
6a780a5a27 Fix no-checksum option type for local sync (fixes #67) 2015-01-21 09:16:08 +00:00
Boris Kraut
ab84076154 Update docs: Add UpstreamNonFree; apps with AFs are not hidden. 2015-01-17 01:11:43 +01:00
Ciaran Gultnieks
581ad7f2a8 Merge branch 'update_docs' into 'master'
Added docs how to get platform cache files (closes #53)

See merge request !37
2015-01-16 21:05:02 +00:00
Rancor
a144edc455 Added docs how to get platform cache files (closes #53) 2015-01-16 21:59:33 +01:00
Daniel Martí
3b3704710e Fix adding paths to the PATH env variable 2015-01-13 16:37:10 +01:00
Daniel Martí
ff2b061351 Fix issue introduced in 49549f4cad (fixes #62) 2015-01-13 16:15:11 +01:00
Ciaran Gultnieks
24aaa568da Fix PEP8 issues from latest pull request 2015-01-13 08:26:30 +00:00
Ciaran Gultnieks
12f65953e6 Correction to 5b868c8a4 2015-01-13 08:25:27 +00:00
Daniel Martí
c60cca57cf Don't limit gradle's forceversion to string literals 2015-01-13 00:28:19 +01:00
Ciaran Gultnieks
5b868c8a4c Only set Auto Name if one isn't set already 2015-01-12 18:58:21 +00:00
Ciaran Gultnieks
dffaaccbc4 Merge branch 'master' into 'master'
streamline verify process in `fdroid publish`

This is a collection of small fixes to streamline the process of verifying a build against a provided APK as set in the `Binaries:` metadata.

See merge request !35
2015-01-12 10:06:26 +00:00
Hans-Christoph Steiner
4e68655437 if a build did verify against Binaries:, delete the comparison dirs
If the comparison between the provided APK and the built APK is verified,
then there is no need to keep the old comparison files around. On big build
servers like f-droid.org, there will be thousands of leftover dirs from all
the builds, so this is necessary.
2015-01-12 10:51:54 +01:00
Hans-Christoph Steiner
2458577209 if meld is available, use it to show differences on failed APK compare
meld is much easier to browse when comparing directory trees.
2015-01-12 10:46:04 +01:00
Hans-Christoph Steiner
fc4679cebb if apktool is available, use it to decompress APKs when verifying
apktool decompiles the binary XML to regular XML, so it is much easier to
read for differences.
2015-01-12 10:46:04 +01:00
Hans-Christoph Steiner
6bc6ba05b2 fix typo in error message 2015-01-12 10:46:04 +01:00
Hans-Christoph Steiner
74a785a888 uncompress using jar xf in a folder with the same name
This makes it easier to compare the whole APK folders when there are
multiple methods of uncompressing the APK.
2015-01-12 10:46:04 +01:00
Hans-Christoph Steiner
b53746dc7b make resulting dirs of compare_apks() have clearer dir names
This makes it a lot easier to remember which APK is which when trying to
make sense of the differences.
2015-01-12 10:46:04 +01:00
Hans-Christoph Steiner
a14f82c49e prevent fdroid publish from repeatedly downloading the developer binary
wget's --continue makes wget not overwrite the existing file, or create a
new version with a .1 extension.  Instead it tries to finish an incomplete
download, or does nothing if the download is complete and matching.
2015-01-12 10:46:03 +01:00
Ciaran Gultnieks
b5ed40684f Detect apk cache changes to avoid having to blow the whole thing 2015-01-11 18:22:00 +00:00
Ciaran Gultnieks
75aa384e80 Correction to no-checksum 2015-01-11 17:46:42 +00:00
Ciaran Gultnieks
49549f4cad Remove support for git-svn with authentication 2015-01-11 17:46:10 +00:00
Ciaran Gultnieks
e8d7e69630 Add option to not use rsync --checksum 2015-01-11 15:35:04 +00:00
Ciaran Gultnieks
52de223435 Documentation fix 2015-01-11 15:33:52 +00:00
Daniel Martí
6f4ffefb05 Complete missing server options 2015-01-11 14:24:45 +01:00
Daniel Martí
443af0bba4 scanner --nosvn was removed 2015-01-11 14:22:30 +01:00
Daniel Martí
bf7a93ecf0 Complete update --nosign 2015-01-11 14:21:22 +01:00
Daniel Martí
679f3e0661 complete -h/--help for all commands implicitly 2015-01-11 14:19:31 +01:00
Daniel Martí
3c9dd9bc86 Add bash-completion to pre-commit bash checks 2015-01-11 14:17:25 +01:00
Daniel Martí
50a146bf6f Add signindex to bash-completion 2015-01-11 14:16:57 +01:00
Ciaran Gultnieks
ba177472da Add fdroid signindex to sign previously unsigned indexes 2015-01-11 08:20:14 +00:00
Ciaran Gultnieks
cad82ad669 Add ability to not sign the indexes when doing fdroid update 2015-01-11 08:20:14 +00:00
Ciaran Gultnieks
4ae896511e Allow repo pubkey to defined directly in config 2015-01-11 08:20:14 +00:00
Ciaran Gultnieks
1cc1ee32ee Extra debug logging when parsing manifests 2015-01-11 08:20:14 +00:00
Ciaran Gultnieks
1fa6ecc1eb Sanitise tags at point of reading 2015-01-11 08:20:14 +00:00
Ciaran Gultnieks
38f975dd49 More detail for package ID mismatches 2015-01-11 08:20:14 +00:00
Boris Kraut
b1ec8cc47a Add "Changelog:" metadata field. 2015-01-11 02:26:41 +01:00
Daniel Martí
d1cf1c37b4 fd-commit: read entire metadata files 2015-01-10 20:04:49 +01:00
Daniel Martí
2edddda234 scanner: adapt to new scan_source format (fixes #59) 2015-01-10 13:49:54 +01:00
Daniel Martí
e830b25561 pre-commit: differentiate sh and bash files 2015-01-09 16:08:27 +01:00
Daniel Martí
547661fd3a hooks/pre-commit: Fix message 2015-01-09 15:36:17 +01:00
Daniel Martí
6819e3c30e Set up the ndk in $PATH before each build 2015-01-06 19:41:55 +01:00
Daniel Martí
9b200f47d8 Don't allow --skip-scan if scandelete is set up 2015-01-06 14:40:31 +01:00
Daniel Martí
347ff7b876 Error if any scanignore/delete paths are useless 2015-01-06 14:37:13 +01:00
Daniel Martí
0ffc53fa9a Merge branch 'fix_build_exception' of https://gitlab.com/Rancor/fdroidserver 2015-01-06 14:03:23 +01:00
Rancor
8a09ebc446 Removed second parameter in replace_config_vars call 2015-01-06 12:37:34 +01:00
Daniel Martí
cd7ae381a5 Properly capitalize all flavours (fixes org.ligi.fast) 2015-01-05 13:07:22 +01:00
Daniel Martí
24a8523c0b Gradle cleaner: support multilines with backslashes 2015-01-05 12:59:33 +01:00
Daniel Martí
371e64dfc2 Fix build passing madness (closes #55) 2015-01-05 00:29:27 +01:00
Daniel Martí
388665ff43 Remove trailing whitespace 2015-01-04 20:52:27 +01:00
Daniel Martí
0ee2efd3e7 Merge branch 'fix_permission' of https://gitlab.com/Rancor/fdroidserver 2015-01-04 20:51:56 +01:00
Rancor
80957c625f Fixes #52 : Fix permission for executing android-ndk bin 2015-01-04 20:41:43 +01:00
Daniel Martí
3645471a1c Never let build['ndk_path'] be None 2015-01-04 20:41:22 +01:00
Daniel Martí
e9be413d3c Add apis 20 and 21 to wp-fdroid's androidversion() 2015-01-04 04:26:24 +01:00
Daniel Martí
f31ca7c852 Create the ndk_loc dir first (fixes #52) 2015-01-04 04:19:19 +01:00
Daniel Martí
d5af8ec8e6 Don't crash if no suitable NDK is found 2015-01-04 01:45:52 +01:00
Daniel Martí
526813eae6 Plaintext descriptions are no longer needed 2015-01-03 00:08:21 +01:00
Daniel Martí
f60f1bc59e Add NDK r10d, this time alongside r9b
Specified per-build with ndk=<version> defaulting to the oldest, r9b.
2015-01-03 00:07:01 +01:00
Daniel Martí
43092407a3 Don't run a global "gradle clean" which configures all projects
Also properly capitalize words for gradle tasks
2015-01-02 22:26:22 +01:00
Daniel Martí
b1053ac1a7 Bump to 0.3.0 2015-01-02 22:19:24 +01:00
Daniel Martí
cba9f25c49 One remaining dump badging without output=False 2014-12-31 17:18:19 +01:00
Daniel Martí
14f654fabc Apply some autopep8-python2 suggestions 2014-12-31 16:44:06 +01:00
Daniel Martí
e39602586f Make dump xmltree and dump badging silent again 2014-12-31 16:34:11 +01:00
Daniel Martí
d9c6609925 Fix gradleVersions without = 2014-12-31 13:30:53 +01:00
Ciaran Gultnieks
0360e96d4d Merge branch 'doc-update-v1' into 'master'
Update documentation re: testing32 image

Use different subsections for the Debian base box setup (which can be bypassed using the prebuilt image) and the F-Droid / SDK setup (which cannot be bypassed).

Side note: would it be possible to offer a torrent for testing32.box?  The direct download is taking over 2 hours on a 50Mbps link.

See merge request !32
2014-12-30 22:48:58 +00:00
Daniel Martí
6e2bc85518 Add nasm to the buildserver box (fixes: #51) 2014-12-30 23:42:26 +01:00
Daniel Martí
e8fb3a143e Fix FDroidPopen refactor typo 2014-12-23 12:54:16 +01:00
Daniel Martí
52c3bf46a5 Catch new version of outputFile 2014-12-23 12:24:07 +01:00
Daniel Martí
3662dfd145 lint: warn (pedantic) about potentially dangerous auto updates 2014-12-22 18:18:07 +01:00
Daniel Martí
fe0af55a6a lint: find the current build like checkupdates does 2014-12-22 18:17:29 +01:00
Kevin Cernekee
d899783884 manual: Clarify separation of Debian base box vs. F-Droid base box 2014-12-21 12:33:59 -08:00
Kevin Cernekee
8d04b93852 Update comment referring to old "raring32.box" image 2014-12-21 11:03:06 -08:00
Daniel Martí
606cda591d Don't break os.symlink if app names contain '/' 2014-12-14 15:43:22 +01:00
Daniel Martí
1268da7ac6 Remove SilentPopen for consistency with SdkToolsPopen 2014-12-14 15:38:24 +01:00
Daniel Martí
1a0831b5c0 Merge branch 'master' of https://gitlab.com/eighthave/fdroidserver 2014-12-14 15:18:30 +01:00
Hans-Christoph Steiner
5f5bcd2e11 do not set sdk_path in config.py if using system-provided aapt
By not setting sdk_path when /usr/bin/aapt is found, sdk_path then defaults
to $ANDROID_HOME when its used.  Since in this case, aapt will be used from
the system path, using aapt entirely ignores sdk_path.  If the user runs
`fdroid build` in this setup, sdk_path will be $ANDROID_HOME, so it should
check the env vars for it, but maybe that doesn't actually work like that
yet.
2014-12-14 13:26:50 +01:00
Hans-Christoph Steiner
fa1cc48d57 run all SDK tools commands using SdkToolsPopen 2014-12-14 13:25:20 +01:00
Hans-Christoph Steiner
9244256461 find cmds from SDK build-tools in a more flexible way, on the fly
This is a more flexible approach than testing for the complete SDK and
build-tools up front.  This will only test for the commands that are
actually being run, so that if you only have `aapt` installed, you can do
`fdroid update` without errors, but other commands will still give
appropriate errors.

This also makes the build_tools item in config.py optional, it is only
needed if you want to force a specific version of the build-tools.
2014-12-14 13:25:20 +01:00
Hans-Christoph Steiner
298a88a498 added test case for common.isApkDebuggable()
Just getting into the habit of adding tests to everything that I change...
Also, it should be useful to have an unsigned APK in the test collection,
since `fdroid update` should handle it gracefully and give a warning of
some kind.
2014-12-14 13:25:20 +01:00
Hans-Christoph Steiner
f7c9eccc1f switched last aapt call to use central config['aapt'] 2014-12-14 13:25:20 +01:00
Hans-Christoph Steiner
0f71929e71 remove redundant test_sdk_exists() call, its called by test_build_tools_exists()
No need to call test_sdk_exists() before test_build_tools_exists() since
test_build_tools_exists() calls test_sdk_exists() as the first thing it
does.
2014-12-14 13:25:20 +01:00
Daniel Martí
16601a0be3 Bump build-tools again to 21.1.2 2014-12-12 12:57:12 +01:00
Daniel Martí
aaf36f654d Update build-tools to 21.1.1 2014-12-12 12:40:09 +01:00
Daniel Martí
e10b2dd382 Update sdk to 24.0.1 2014-12-12 12:39:04 +01:00
Daniel Martí
5e15d8ff47 Add ruby tests to the pre-commit hook 2014-12-12 12:34:28 +01:00
Daniel Martí
05a7a872b6 Add gradle 2.2.1 for plugin versions 1.0.X 2014-12-12 12:29:16 +01:00
Ciaran Gultnieks
3aaa5c9603 Add inkscape to buildserver 2014-12-04 11:38:02 +00:00
Daniel Martí
b2f4aa31fe Merge branch 'master' into 'master'
fix bugs in run-tests scripts

This fixes a couple of subtle bugs in `./run-tests` that only showed up recently.

See merge request !30
2014-11-17 17:03:22 +00:00
Hans-Christoph Steiner
14cd835929 run-tests: properly handle zero and multiple args
The test for the help flag threw an error if there were 0 args, or if arg 1
was set to a space-separated list.  The -z tests would fail if the arg was
set to a space-separated list.
2014-11-17 17:40:48 +01:00
Hans-Christoph Steiner
49b343d024 run-tests: make sure not to include the bad APKs in tests/
These APKs are meant for specific tests, not the tests that want just a
collection of good APKs.
2014-11-17 17:24:02 +01:00
Ciaran Gultnieks
031b4a74e7 Merge branch 'current-version-links' into 'master'
Current version links

This is the automatic generation of "current version" symlinks that @ciarang and I chatted about, and is discussed here: https://f-droid.org/forums/topic/static-urls-to-current-version-of-each-app/

See merge request !29
2014-11-17 09:01:11 +00:00
Daniel Martí
bf20d5af88 Fix issue where the wrong gradle version may be used 2014-11-15 21:38:48 +01:00
Hans-Christoph Steiner
7a07f59731 server: always use same rsync destination path to allow for strict setups
for more info on how:
http://positon.org/rsync-command-restriction-over-ssh
http://ramblings.narrabilis.com/using-rsync-with-ssh
2014-11-11 15:06:53 +01:00
Hans-Christoph Steiner
8e9e17892d server: upload "current version" symlinks if requested
If `fdroid update` generates the "current version" symlinks, then
`fdroid server update` should upload them to the server.
2014-11-11 15:06:53 +01:00
Hans-Christoph Steiner
b33cae375a remove url-unsafe characters from "current version" symlink names
This prevents the URL from having ugly %20 stuff in the app name.
2014-11-11 15:06:53 +01:00
Hans-Christoph Steiner
803ec39e23 when symlinking current version of app, include gpg sig if it exists
Let's make it easy for people to also find the GPG signature, and promote
easy verification!
2014-11-11 15:06:52 +01:00
Hans-Christoph Steiner
e826938734 static URLs to "Current Version" of each app
I wrote up the feature to automatically generate symlinks with a constant name
that points to the current release version. I have it on by default, with a
*config.py* option to turn it off. There is also an option to set where the
symlink name comes from which defaults to app['Name'] i.e. F-Droid.apk, but
can easily be set to app['id'], i.e. _org.fdroid.fdroid.apk_. I think the best
place for the symlinks is in the root of the repo, so like
https://f-droid.org/F-Droid.apk or https://guardianproject.info/fdroid/ChatSecure.apk

For the case of the current FDroid static link https://f-droid.org/FDroid.apk
it can just be a symlink to the generated one (https://f-droid.org/F-Droid.apk
or https://f-droid.org/org.fdroid.fdroid.apk). Right now, this feature is all
or nothing, meaning it generates symlinks for all apps in the repo, or none. I
can’t think of any problems that this might cause since its only symlinks, so
the amount of disk space is tiny. Also, I think it would be useful for having
an easy “Download this app” button on each app’s page on the “Browse” view. As
long as this button is less prominent than the “Download F-Droid” button, and
it is clear that it is better to use the FDroid app than doing direct
downloads. For the f-droid.org repo, the symlinks should probably be based on
app['id'] to prevent name conflicts.

more info here:
https://f-droid.org/forums/topic/static-urls-to-current-version-of-each-app/
2014-11-11 15:06:52 +01:00
Daniel Martí
c91fca7bb4 Properly catch return codes since -x is no longer used 2014-11-09 14:36:58 +01:00
Daniel Martí
d3faacf9b0 Don't accept pyflakes/pep8 not being installed, common err func 2014-11-09 14:34:24 +01:00
Daniel Martí
cf4635e655 List sh files to check like the python files 2014-11-09 14:31:50 +01:00
Daniel Martí
92a4bacbf6 git pre-commit hooks are always run from the root
No need to find out the basedir. We don't do it for the python tests anyway.
2014-11-09 14:29:28 +01:00
Ciaran Gultnieks
2e56f4ecbf Merge branch 'some-bug-fixes' into 'master'
Some bug fixes and things

A couple of useful bug fixes and commits.

See merge request !28
2014-11-07 14:49:07 +00:00
Ciaran Gultnieks
05c2d18709 Merge branch 'update-vagrantfile' into 'master'
Update Vagrantfile and docs to clarify v1.4.3 is ok

Saw in the server docs that we were recommending 1.3.x and saying 1.4.x was broken. I've confirmed that 1.4.x works, and updated things accordingly. Higher version might work, but figured minimal change to build stuff was best :)

See merge request !24
2014-11-07 14:44:58 +00:00
Hans-Christoph Steiner
18db382c47 include test cases for python getsig replacement
This includes the old getsig.java since that is the canonical implementation
of that algorithm.

fixes #5 https://gitlab.com/fdroid/fdroidserver/issues/5
2014-11-07 09:20:33 +00:00
Hans-Christoph Steiner
d74235564f move apk signature verification into getsig() function
This makes the python replacement behave like an all-in-one replacement
for getsig.java.

fixes #5 https://gitlab.com/fdroid/fdroidserver/issues/5
2014-11-07 09:20:23 +00:00
Daniel Martí
6e2d0a9e1e Replace getsig.java with a pure python implementation
Special thanks to deki for helping out with the certificate encodings:
https://gitlab.com/snippets/1842

fixes #5 https://gitlab.com/fdroid/fdroidserver/issues/5
2014-11-07 09:20:14 +00:00
Hans-Christoph Steiner
c88eff9af7 use jarsigner to verify the APK signature is valid
By using jarsigner here, we can get rid of getsig.java, since the rest of
what getsig.java does can easily be handled in python.  This simplifies
installation and deployment, and makes things work better cross-platform.
This also means that the fdroidserver Debian package no longer needs to
Build-Depends: on default-jdk, which makes builds in pbuilder run a lot
faster. :-)

refs #5 https://gitlab.com/fdroid/fdroidserver/issues/5
2014-11-07 09:20:04 +00:00
Daniel Martí
80cc8ef5f0 Add support for gradle plugin version 0.14 in the wrapper 2014-11-05 21:30:00 +01:00
Ciaran Gultnieks
872e57c8da Set correct defaults for Binaries metadata field 2014-10-27 17:21:04 +00:00
Ciaran Gultnieks
3f63435318 Move build/fdroidserver info to META-INF 2014-10-24 22:20:42 +01:00
Daniel Martí
5df1d89c8e Make lint report total app counts as well 2014-10-24 22:24:11 +02:00
Daniel Martí
3829896a8a Fix all pep8 warnings 2014-10-24 22:23:58 +02:00
Ciaran Gultnieks
8568805866 Support for publishing signed binaries from elsewhere
Done after verifying that they match ones built using a recipe.
Everything in the metadata should be the same as normal, with the
addition of the Binaries: directive to specify where (with pattern
substitution) to get the binaries from.

Publishing only takes place if there is a proper match. (Which seems
very unlikely to be the case unless the exact same toolchain is used, so
I would imagine that unless the person building and signing the incoming
binaries uses fdroidserver to build them, probably the exact same
buildserver id, they will not match. But at least we have the
functionality to support that.)
2014-10-24 21:04:15 +01:00
Hans-Christoph Steiner
e8e94e1020 add debug message to mark when syncing to Amazon S3 starts 2014-10-23 14:26:11 -04:00
Hans-Christoph Steiner
d2b5b86ed5 fix rsync's chmod on local copy
rsync's --chmod works a bit oddly, it only affects the source files. To
make it set the destintation with the perms set in --chmod, the --perms
flag must also be included.
2014-10-23 14:26:11 -04:00
Hans-Christoph Steiner
e8a5d2b354 check the syntax of included shell scripts in the pre-commit hook 2014-10-23 14:26:11 -04:00
Hans-Christoph Steiner
93adee0e2b do not include timestamps in .gz files of docs
The timestamps in the .gz files are not used for anything, and they break
the reproducibility of the build.  Giving --no-name means gzip will not
save the filename and timestamp in the gz file itself.  When gunziping, the
current file name will be used, minus the .gz suffix.
2014-10-23 14:26:11 -04:00
Hans-Christoph Steiner
455e76b9e7 jenkins: don't scan fdroidserver/ project for APKs
This was causing a number of problems:

* it would spend lots of time sorting through the tmp folders of APKs
  created by previous runs of this script
* it would include the bad test APKs in tests/ as normal APKs
2014-10-23 14:26:11 -04:00
Daniel Martí
311ec604f8 Also bump build-tools in the example config 2014-10-23 15:22:40 +02:00
Daniel Martí
fa465e2428 Forgot to bump the build tools in the server config 2014-10-23 15:21:07 +02:00
Daniel Martí
57efa16f3f Bump build-tools to 21.0.2 2014-10-22 15:01:01 +02:00
Daniel Martí
e3856882b7 Add android-21 (5.0) target sdk to the buildserver 2014-10-18 11:55:06 +02:00
Daniel Martí
ed9564023f Use '\s' instead of ' ' to identify spaces in regex 2014-10-15 15:00:45 +02:00
Daniel Martí
f90ba4747f Make lint check for trailing spaces 2014-10-15 14:36:59 +02:00
Daniel Martí
ea62609a80 Fix gradle 2.1 2014-10-10 12:53:44 +02:00
Daniel Martí
135e15bde3 Add support for gradle plugin version 0.13 via gradle 2.1 2014-10-07 16:36:10 +02:00
Daniel Martí
c77c9f06fc 'ndk_path' will always be in the config 2014-09-25 18:13:16 +02:00
Daniel Martí
c9daf93f69 Create local.properties if it doesn't exist 2014-09-25 18:11:56 +02:00
Daniel Martí
5798887d53 Try using Auto Name before falling back to appid for Name 2014-09-23 09:56:09 +02:00
Daniel Martí
7d21417286 Fix 'fdroid import' flavours crasher 2014-09-20 22:35:58 +02:00
Daniel Martí
007e3eee27 Add the python3-gnupg package 2014-09-18 15:37:30 +02:00
Daniel Martí
c99f15ac86 Remove .egg-info dir when tests succeed 2014-09-17 08:54:02 +02:00
Daniel Martí
2397c13d30 Fix --android-home in 'fdroid init' when ANDROID_HOME is set 2014-09-17 00:20:37 +02:00
Daniel Martí
9327adfe74 Name config args thisconfig to avoid confusion with the global config 2014-09-17 00:12:24 +02:00
Daniel Martí
9c4a529f5b Fix gradle builds without flavours 2014-09-16 08:38:18 +02:00
Daniel Martí
ce61186cd2 Fix issue where gradle=yes would be removed by rewritemeta 2014-09-15 17:03:45 +02:00
Daniel Martí
e038b4424c config['sdk_path'] will never be None, behave properly if ANDROID_HOME is unset 2014-09-15 12:49:36 +02:00
Daniel Martí
37aa3a7b99 Only expand paths on config items that can actually be paths 2014-09-15 12:39:42 +02:00
Daniel Martí
88dc0b2bb5 Keep consistency in config defaults and writes
* Default paths are not expanded
* When writing to config.py in "fdroid init", don't write expanded paths
  either
* Support changes in e.g. $ANDROID_HOME after a config.py is generated thanks
  to the fix above
2014-09-15 12:34:40 +02:00
Daniel Martí
8d1c4c1d60 Fix a few remaining gradle flavour crashes 2014-09-15 11:52:12 +02:00
Daniel Martí
1757017b8a More list comprehension fixes 2014-09-13 13:07:21 +02:00
Daniel Martí
34a3405208 Centralise handling of default gradle flavours 2014-09-13 13:04:24 +02:00
Daniel Martí
a195556378 Make gradle and antcommands (previously antcommand) proper lists 2014-09-13 13:01:08 +02:00
Daniel Martí
ce25054648 docs: Properly explain gradle= with multiple flavors 2014-09-13 12:27:10 +02:00
Daniel Martí
93a0d9918d Closes #34: Catch OSErrors when running Popen 2014-09-11 23:08:51 +02:00
Patrick Connolly
57c6deff01 Restrict vagrant-cachier caches to only apt and chef. 2014-09-09 12:38:26 -03:00
Patrick Connolly
d1b5c4353d Add optional support for vagrant-cachier plugin. 2014-09-09 12:38:26 -03:00
Ciaran Gultnieks
16df9c6aec Fix urlencoding of category in next page links, etc 2014-09-04 14:31:37 +01:00
Ciaran Gultnieks
b454ea3c6f Make stats retrieval more configurable 2014-09-02 18:53:36 +01:00
Daniel Martí
27edbd56a7 Discard descriptions longer than one line when checking duplicates 2014-09-01 10:34:12 +02:00
Daniel Martí
b5c363b6c8 Sort builds by vercode when reading them
Then, when written, the order will be enforced.
2014-08-31 00:21:29 +02:00
Daniel Martí
a1f51ebb4d Fix typo in app link hrefs 2014-08-28 15:36:09 +02:00
Patrick Connolly
c08d2092f6 Update Vagrantfile and docs to clarify v1.4.3 is ok. 2014-08-27 11:35:31 -03:00
Daniel Martí
5822df9231 metadata: Simplify the writing of optional fields 2014-08-26 14:06:59 +02:00
Daniel Martí
cb63a5a62b Properly obey build --force. Fixes #29. 2014-08-26 13:49:42 +02:00
Daniel Martí
3d50ecf5fe Don't accept empty commits
With SCMs like git, "git checkout ''" doesn't actually fail, so one may
commit builds without noticing that they left the commit empty.
2014-08-26 13:40:18 +02:00
Daniel Martí
298934afa5 lint: warn about redundant links too 2014-08-26 13:33:17 +02:00
Daniel Martí
0da8c2c365 lint: fix duplicate usage of appid 2014-08-26 13:33:17 +02:00
Ciaran Gultnieks
102cbd20b3 Don't print tracebacks for option errors 2014-08-25 16:48:31 +01:00
Daniel Martí
5e988eb84d common: discard wrapping quotes in strings
Fixes auto names that shouldn't have wrapping quotes like '"PassDroid"'
instead of just 'PassDroid'.
2014-08-25 08:45:46 +02:00
Daniel Martí
96f49f2a9e lint: Also warn about descriptions that are just the summary 2014-08-25 00:41:25 +02:00
Daniel Martí
3d1213b602 lint: remove pedantic warnings that are often wrong 2014-08-25 00:41:01 +02:00
Daniel Martí
858c1eabc1 Add lint warning for empty summaries 2014-08-25 00:28:40 +02:00
Daniel Martí
f7f8c80018 Fix "no such package" search logic 2014-08-25 00:28:18 +02:00
Ciaran Gultnieks
b43f7bea1a Add ability to filter asshattery from stats 2014-08-22 21:18:55 +01:00
Daniel Martí
58a88acd92 Make the scanner log scanignore as well 2014-08-21 20:02:52 +02:00
Daniel Martí
c5cab888e4 Revert some stuff from 94c29f9c37 that shouldn't have been commited 2014-08-18 11:25:39 +02:00
Daniel Martí
97d1724ca0 fd-commit: don't break when non-metadata files show up in git status 2014-08-16 17:51:32 +02:00
Daniel Martí
18ac3044c7 Fix return in parse_metadata(None) 2014-08-16 16:01:00 +02:00
Daniel Martí
94c29f9c37 Map apps in memory from appid to appinfo
Instead of storing them in a list and doing linear searches by appinfo['id']
2014-08-16 12:46:02 +02:00
Daniel Martí
880f75110e Add setup.py to pep8+pyflakes hook, fix it 2014-08-16 11:51:23 +02:00
Daniel Martí
eb81375630 stats: simpler repo type logic 2014-08-16 11:42:51 +02:00
Daniel Martí
51c93c9576 Be more specific about when git svn is used 2014-08-16 10:55:21 +02:00
Daniel Martí
80a4edc748 Add Update Check Name to docs 2014-08-15 14:03:33 +02:00
Daniel Martí
2845cb56cc Also warn about HEAD, ignore disabled builds 2014-08-15 12:29:03 +02:00
Daniel Martí
1af98e9f09 Try to fix apk path matching with newer maven plugin versions 2014-08-12 12:56:59 +02:00
Ciaran Gultnieks
4c7c410d6e Remove gpg sig when removing disabled builds 2014-08-11 12:48:41 +01:00
Daniel Martí
7c0185fab5 Don't assume that Result: will be in the first line
Fixes nasty bugs with _JAVA_OPTIONS
2014-08-10 19:56:45 +02:00
Daniel Martí
bf227948a9 Make use of Popen.wait() return value 2014-08-10 12:28:19 +02:00
Daniel Martí
2116dee6d2 install: don't error if there are bin apks in repo/ 2014-08-10 01:09:44 +02:00
Ciaran Gultnieks
b2f1cedb40 Fix update, broken in 7ac0c5abb2 2014-08-08 12:34:37 +01:00
Ciaran Gultnieks
1c5d5c0bce Improve 'no sdk version found' output 2014-08-08 12:34:16 +01:00
Daniel Martí
6767c3f987 Revert "Add android-L target to the buildserver"
This reverts commit 7809ef419f.

android-L is a preview, we want to add android-20 when it comes out.
2014-08-07 10:29:44 +02:00
Ciaran Gultnieks
27cd65fde5 Merge branch 'master' into 'master'
Manual - fix name and location of sample files

It seems name and location of the sample files were changed. The documentation tells about "config.sample.py" and "makebs.config.sample.py". I did not find these while setting up the environment today.

The files are now located inside the "exmaples" directory and named as the real files.

See merge request !21
2014-08-05 21:51:52 +00:00
Daniel Martí
7ac0c5abb2 update: use sets for permissions and features to avoid duplicates 2014-08-05 23:04:21 +02:00
Daniel Martí
7809ef419f Add android-L target to the buildserver 2014-08-03 09:51:19 +02:00
Daniel Martí
b66ff53976 Bump version to 0.2.1 2014-08-02 13:44:48 +02:00
Ciaran Gultnieks
87b04c6921 Add python-gnupg to buildserver 2014-07-31 18:49:34 +01:00
Tilman Beitter
9307f87627 fixed name and location of config.py sample file 2014-07-25 14:20:56 +02:00
Daniel Martí
94e2b120e4 Remove extra argument in magic warning call 2014-07-24 08:55:54 +02:00
Daniel Martí
52a0773d71 stats: don't include disabled apps 2014-07-23 19:55:45 +02:00
Daniel Martí
a5f0f439c5 Use --before when using find-rev in git-svn 2014-07-23 17:26:33 +02:00
Daniel Martí
5167e3d771 Don't crash if a magic number can't be used
This should fix the anki build crashing.
2014-07-22 10:06:51 +02:00
Daniel Martí
0283fa0aa6 Merge branch 'master' of https://gitlab.com/eighthave/fdroidserver 2014-07-18 13:21:40 +02:00
Daniel Martí
78ff22d952 Drop svn support in favour of git-svn
Reasons:

* Cloning a svn repo via svn doesn't fetch the entire history
* Svn checkout is incredibly slow
* Svn doesn't have important features such as a 'clean' command

The only reason why we kept svn was for anonymous logins to repositories. This
is no longer a reason since git-svn also supports them.
2014-07-18 12:39:24 +02:00
Daniel Martí
13987b5c77 Use os.path.join instead of adding strings more often 2014-07-18 12:21:52 +02:00
Daniel Martí
d3ae163152 Fix Tags UCM on newer git-svn versions 2014-07-18 12:12:16 +02:00
Hans-Christoph Steiner
1bde10a642 default to Pillow for Python Imaging, that's what most people use now
PIL is the old standard Python Imaging.  Pillow is a fork where development
is actually continuing.  It seems that all the distros are also switching
from PIL to Pillow, including Debian, Ubuntu, Fedora, brew, MacPorts, etc.
2014-07-17 12:32:35 -04:00
Ciaran Gultnieks
f5890646e6 Put lastbuild log on wiki by vercode (with redirect) 2014-07-17 14:05:16 +01:00
Ciaran Gultnieks
40945aded7 Merge branch 'support-multiple-serverwebroots-and-fixes' into 'master'
Support multiple serverwebroots and fixes

This adds support for lists of serverwebroots in config.py, and cleans newlines and spaces in the repo_description and archive_description.
2014-07-16 21:07:10 +00:00
Daniel Martí
18b105ac70 Make FlattrID a hexadecimal value
This adds support for flattr "things" that are not direct flattr numeric ids,
but hexadecimal hashes representing web pages outside of flattr.
2014-07-16 00:02:01 +02:00
Hans-Christoph Steiner
8c8fb8b156 support lists/tuples in 'serverwebroot' config item
This allows the user to specify multiple servers to put the repo to, and
`fdroid server update` will automatically push to them all.

fixes #22 https://gitlab.com/fdroid/fdroidserver/issues/22
2014-07-14 15:04:30 -04:00
Hans-Christoph Steiner
35ee4b1bc5 update local_copy_dir rsync to handle FAT and filesystems with perms
With FAT filesystems, the user, group, and permissions will not be at all
preserved.  With file systems like ext4 that have perms, the umask might
not be set to something that makes sense for the public repo files, which
are meant to be published and therefore readible by all.

If need be, it would be easy enough to add a config option for rsync's
chmod string, to address setups that have specific permissions needs.

fixes #23 https://gitlab.com/fdroid/fdroidserver/issues/23
2014-07-14 15:02:20 -04:00
Hans-Christoph Steiner
f34c842f55 auto-clean newlines and spaces in repo/archive descriptions
This gives us flexibility in how the blocks of text can be formatted in
config.py, but also provides a more useful format for displaying since the
client can decide where to wrap the text.
2014-07-14 15:01:57 -04:00
Hans-Christoph Steiner
c7962e7c6d server init: replace ssh subprocess with paramiko
It is easier to handle programming with python rather than subprocess calls
so I replaced the subprocess call to 'ssh' with paramiko.  This also makes
fdroid more portable since it no longer relies on the local system having
ssh installed.
2014-07-14 15:01:57 -04:00
Daniel Martí
d69f93e5b2 Don't use the error-prone -x method to avoid lint usage 2014-07-10 12:07:10 +02:00
Daniel Martí
3d923a6718 Use p.wait() instead of p.communicate()
The latter calls the former anyway, and we don't need to fetch the output nor
send any stdin.
2014-07-09 19:22:39 +02:00
Daniel Martí
a834ff4ab2 Make a few Popens silent 2014-07-09 19:15:39 +02:00
Daniel Martí
69725c3f4c Much cleaner and nicer way to ignore vcs dot dirs
We now discard their entire subtree directly
2014-07-09 19:11:13 +02:00
Daniel Martí
f3dd6d9510 More generic usual suspects regex 2014-07-09 18:17:28 +02:00
Daniel Martí
4ffa13167e Only catch metadata exceptions from description_html 2014-07-09 16:48:28 +02:00
Daniel Martí
d5b06ec008 Revert "If given --verbose, don't print the whole error log again"
This reverts commit 29ab3cf64d.
2014-07-09 11:14:01 +02:00
Daniel Martí
acbbc6a973 Revert "Always print command output when --verbose"
This reverts commit a4cdd92448.
2014-07-09 11:11:41 +02:00
Daniel Martí
fad659921f Remove some gradle @dir leftovers 2014-07-09 11:11:13 +02:00
Daniel Martí
7b8948f932 Simplify the finding of gradle output apks 2014-07-09 11:08:11 +02:00
Daniel Martí
b404e1b69c Support git-svn refs in the form of rN 2014-07-09 10:41:35 +02:00
Daniel Martí
2c55fb499c Do write .fdroidvcs if the clone succeeded
If the clone succeeded but the checkout failed, it didn't. Now it does, by
keeping the exception and raising it a bit later.
2014-07-09 10:30:28 +02:00
Daniel Martí
f857169317 Support origin/ checkouts with tags as well in gitsvn 2014-07-08 12:04:24 +02:00
Daniel Martí
a4cdd92448 Always print command output when --verbose 2014-07-08 11:16:03 +02:00
Daniel Martí
ff06694adc Don't use generic Exception raises
That hides bugs, since all exceptions (including bugs that cause raises that
weren't our doing) fall under the "Exception" except
2014-07-07 15:41:50 +02:00
Daniel Martí
b56360512c Fix silly var name typo 2014-07-06 23:28:25 +02:00
Daniel Martí
8f08487839 Stop at the summary when parsing a file for the app name 2014-07-06 11:38:32 +02:00
Daniel Martí
69bb03cd71 Use 'case' instead of if/elif in the line matching logic 2014-07-06 11:37:52 +02:00
Daniel Martí
1bcf7c7ce1 Revert "Rewrite fd-commit in POSIX Shell"
This reverts commit 62ba9dc07e.
2014-07-06 11:29:31 +02:00
Daniel Martí
353e8dda00 More log level fixes 2014-07-05 15:29:12 +02:00
Daniel Martí
d8cd9a3163 Move more logging.info stuff to debug 2014-07-05 15:25:39 +02:00
Daniel Martí
4814238baf Use logging with proper format when warning about improper verbose/quiet usage 2014-07-05 14:17:02 +02:00
Daniel Martí
5bf5ba04a6 Using $(levelname) in --quiet makes no sense 2014-07-05 14:15:31 +02:00
Daniel Martí
17dc21b69b All logging goes to stderr, FDroidPopen should too 2014-07-05 14:10:26 +02:00
Daniel Martí
9d96ad3478 Don't directly print FDroidPopen output unless verbose 2014-07-05 14:07:53 +02:00
Daniel Martí
8249324a7b Use counters in lint 2014-07-05 14:04:51 +02:00
Daniel Martí
905e58f54c Simpler fd-commit arg logic 2014-07-05 13:06:01 +02:00
Daniel Martí
62ba9dc07e Rewrite fd-commit in POSIX Shell 2014-07-05 13:01:17 +02:00
Daniel Martí
7d07e52e1f Try the old git svn find-rev format as well 2014-07-05 12:15:20 +02:00
Daniel Martí
452c13907c Little doc fixes 2014-07-05 12:05:54 +02:00
Daniel Martí
801f10c86f checkupdates: don't print traces independently 2014-07-04 09:55:06 +02:00
Daniel Martí
faa35fb7c4 Avoid lint on all new plugin versions, remove TODO 2014-07-04 08:59:30 +02:00
Daniel Martí
8595e216f4 Add support for gradle plugin version 0.12 2014-07-04 08:50:20 +02:00
Daniel Martí
8b469a79f8 Fix the test suite 2014-07-03 22:33:40 +02:00
Daniel Martí
4e0e830038 Add android-20 to the SDK 2014-07-03 22:30:30 +02:00
Daniel Martí
b891689bc5 Add config.buildserver.py to the pre-commit hook 2014-07-03 18:28:49 +02:00
Daniel Martí
ec8291ba77 No need to print a trace when the user did a ^C 2014-07-03 18:26:49 +02:00
Daniel Martí
8306bac7de Also check that platform-tools and tools exist 2014-07-03 18:23:35 +02:00
Daniel Martí
a8d4c8705f Also use adb via a full path 2014-07-03 18:21:33 +02:00
Daniel Martí
3dbf99a7f2 Use shorter and non-redundant 'or' clauses for 'if True else' assignments 2014-07-03 17:35:28 +02:00
Daniel Martí
eaf3216e40 Recognise changes in subdirs in Tags and RepoManifest 2014-07-03 17:25:31 +02:00
Daniel Martí
00066a9b45 Use any of the branches that point to origin/HEAD if there are multiple
'set-head origin --auto' fails if there are multiple branches that are the
same as origin/HEAD:

error: Multiple remote HEAD branches. Please choose one explicitly with:
  git remote set-head origin develop
  git remote set-head origin master

So we want to grab any of them, e.g. the first branch that it gives us, and
just use that as it will work just fine.
2014-07-03 16:25:24 +02:00
Daniel Martí
ebfce778bc Update the SDK to 23.0.2, supposedly fixing all issues 2014-07-03 15:36:43 +02:00
Daniel Martí
73142c740b Make use of FDroidException in the main fdroid script
This should improve the output shown when exceptions are found
2014-07-03 14:01:22 +02:00
Daniel Martí
d9d5f30d7b vcs_* stuff should not raise BuildExceptions 2014-07-03 13:54:23 +02:00
Daniel Martí
ee99d55e30 Also make the Tags UCM complain about unknown package id 2014-07-03 13:44:27 +02:00
Ciaran Gultnieks
327422af09 Fix failure to do anything when ndk_path is not defined 2014-07-03 08:56:56 +01:00
Daniel Martí
1d6b2378db Some more slight logging improvements 2014-07-03 00:43:03 +02:00
Daniel Martí
a67d80a011 Remove more prints in favour of logging 2014-07-03 00:35:43 +02:00
Daniel Martí
6e515ed34e Find the 'android' executable in the same manner 2014-07-03 00:34:16 +02:00
Daniel Martí
d73f2b9368 Also find zipalign at the start 2014-07-03 00:31:10 +02:00
Daniel Martí
d110c24eff Find aapt as part of the main config initialisation 2014-07-03 00:31:07 +02:00
Daniel Martí
5aad7b5d38 Refuse to try downloading a repo twice 2014-07-02 17:21:45 +02:00
Daniel Martí
d132adf63c Exception handling improvements
* Replace some prints with proper logging messages
* Make VCSException as verbose as BuildException, including error output
2014-07-02 15:44:46 +02:00
Daniel Martí
c64aafaf42 Don't set $SDK, it's too ambiguous with e.g. the Java SDK 2014-07-02 15:01:08 +02:00
Daniel Martí
70d77a1cce Set up SDK and NDK env vars from python
No need to make the buildserver do it
2014-07-01 21:03:50 +02:00
Daniel Martí
e8284225c9 Improve some log levels 2014-07-01 20:32:49 +02:00
Daniel Martí
76ac2f591c Remove @dir support from gradle 2014-07-01 19:39:41 +02:00
Daniel Martí
7be0634a52 Simpler way to get the available gradle versions
Also, sort by version names instead of alphabetically
2014-07-01 19:18:12 +02:00
Daniel Martí
b0fef49328 Fix the default config.py descriptions following the tuple syntax 2014-07-01 18:22:05 +02:00
Daniel Martí
1a1bdfc3d9 Merge branch 'bug-fixes-for-v0.2.1' of https://gitlab.com/eighthave/fdroidserver 2014-07-01 18:13:00 +02:00
Daniel Martí
8888962ace Rename PopenResult.stdout to output since it also contains stderr 2014-07-01 18:04:41 +02:00
Daniel Martí
22f4ed4b7a Fix very silly typo that broke all apps using buildjni 2014-07-01 17:51:17 +02:00
Hans-Christoph Steiner
d0c767ce5e only move GPG signature if APK exists
The .asc moving code just needed to be indented so it only runs when
'srcname' exists in apk[], otherwise it just throws a KeyError
2014-06-30 23:01:48 -04:00
Hans-Christoph Steiner
a58a9bff18 run pre-commit hook as part of test suite 2014-06-30 23:01:48 -04:00
Hans-Christoph Steiner
4d913d646a replace redundant build_tools check that breaks fdroid init
This reverts b637568a62 since it added a
redundant check that broke `fdroid init` when the default version dir of
build_tools does not exist on the local system.  It then uses the function
that was already in place for checking the build_tools setup in a way that
does not break `fdroid init`.

Now that the fake android home version is not matching the default version,
the tests will catch this bug in the future.
2014-06-30 23:01:47 -04:00
Hans-Christoph Steiner
9dd138b253 fix bad syncing from local copy, force trailing slash to make rsync happy
It seems that paths for rsync must have a trailing slash in order to sync
rather than make a subdir, i.e. this makes a duplicate subdir:

  rsync /tmp/fdroid/repo repo

While this syncs the dirs

  rsync /tmp/fdroid/repo/ repo/
2014-06-30 23:01:47 -04:00
Hans-Christoph Steiner
3dbe503071 check repo icons exist now before running through all of fdroid update
Before, if repo_icon or archive_icon pointed to a non-existent file, then
`fdroid update` would run through the whole process of building a repo,
then fail at the very end because of the non-existent file.  On the next
run, `fdroid update` then starts from the beginning.

This just checks for those files at the beginning, and exits with an error
if they are not found.
2014-06-30 23:01:47 -04:00
Hans-Christoph Steiner
7a3992aa1a use 'python2' everywhere since fdroidserver has not been tested with 3.x 2014-06-30 23:01:47 -04:00
Hans-Christoph Steiner
40d4e30010 tests: create_fake_android_home should create old build-tools version
This is testing the build-tools version auto-detect in `fdroid init`, so it
should be kept as an older version.  This is not meant to test the current
version of the build tools.
2014-06-30 21:19:55 -04:00
Hans-Christoph Steiner
afb98f9327 fix PEP8 fdroidserver/common.py:65:13: E126 continuation line over-indented for hanging indent 2014-06-30 21:19:55 -04:00
Ciaran Gultnieks
1a11982897 Move gpg signatures to archive along with the other files 2014-06-30 22:53:02 +01:00
Ciaran Gultnieks
693cb7ce70 Generate gpg signatures for apks in archive repo also 2014-06-30 22:49:54 +01:00
Ciaran Gultnieks
b1192f7b66 Fix indent 2014-06-30 21:32:43 +01:00
Daniel Martí
34151241f4 Don't change the behaviour in debian setups 2014-06-30 19:52:59 +02:00
Daniel Martí
cef7cd2888 Support calling of 'fdroid init' from other places
e.g. from a symlink to fdroid or from a script. Also more reliable in other
cases where argv[0] is not what we want.
2014-06-30 19:38:38 +02:00
Daniel Martí
348c6a1085 Update the SDK to version 23.0.0 2014-06-30 17:03:26 +02:00
Daniel Martí
cbdcdd1e78 Update build-tools to 20.0.0 2014-06-30 17:03:16 +02:00
Daniel Martí
fdb53b75f4 Report the vercode as well as the version name when building 2014-06-30 16:34:26 +02:00
Daniel Martí
4d63ed0568 Add optipng, useful for some apps
Specifically, for cz.jirkovsky.lukas.chmupocasi
2014-06-30 16:22:31 +02:00
Daniel Martí
c750b02a6c Always run aapt with SilentPopen 2014-06-30 16:15:14 +02:00
Daniel Martí
49208b257d Always run read_srclibs as part of read_metadata 2014-06-30 14:39:52 +02:00
Ciaran Gultnieks
dc8eb49b31 Recognise published .asc signatures in web repo browser 2014-06-30 12:04:22 +01:00
Ciaran Gultnieks
07006e4c00 Generate gpg signatures with .asc extension 2014-06-30 12:04:04 +01:00
Ciaran Gultnieks
3cb4a80efb Fix stats update bug 2014-06-30 12:03:45 +01:00
Daniel Martí
2bab6b83c1 Fix the copyright notice in gpgsign.py 2014-06-30 00:08:10 +02:00
Daniel Martí
4ba9da0906 git-svn: use 'origin/' when passing a treeish (branches) to find-rev
This fixes the builds of de.blau.android. This worked before for some reason.
Git-svn probably changed in some way.
2014-06-29 01:29:31 +02:00
Daniel Martí
6dd19063e9 Merge branch 'fix-and-test-source-tarball-process' of https://gitlab.com/eighthave/fdroidserver 2014-06-28 19:57:45 +02:00
Daniel Martí
a831d484e6 Place more examples/config.py stuff into the defaults 2014-06-28 19:57:14 +02:00
Hans-Christoph Steiner
25a94dced2 tests: create a source tarball and use that to build a repo
This tests that setup.py is in working order and creating a functional
source tarball.
2014-06-27 20:31:28 -04:00
Hans-Christoph Steiner
0e47d62024 tests: by default, run on included urzip.apk
This means you can just do `cd tests/ && ./run-tests` to run the tests now.
You can still override the APK source with the first argument, like:

cd tests/ && ./run-tests /path/to/lots/of/apks/dir
2014-06-27 20:31:28 -04:00
Daniel Martí
df6d511a8e Merge branch 'add-local_copy_dir-and-v0.2-fixes' of https://gitlab.com/eighthave/fdroidserver 2014-06-27 21:11:52 +02:00
Hans-Christoph Steiner
22473e2052 set version to v0.2 2014-06-26 20:47:36 -04:00
Hans-Christoph Steiner
9b30e2665d include getsig.java and opensc-fdroid.cfg in the source tarball 2014-06-26 20:47:36 -04:00
Hans-Christoph Steiner
0466d4aa4f server update: mkdir 'archive' if it does not exist
If `fdroid server update` is run with config that includes an archive, but
the 'archive' subdir does not exist, create it.  This mirrors the code that
is in `fdroid update`.  Seems to trivial to move to common.py.
2014-06-26 20:47:36 -04:00
Hans-Christoph Steiner
25f6b0c246 server: --sync-from-local-copy-dir for updating from offline signing repo
To support a fully offline build/signing machine, there is the "local copy
dir".  The repo is generated on the offline machine and then copied to a
local dir where a thumb drive or SD Card is mounted.  Then on the online
machine, using `fdroid server update --sync-from-local-copy-dir` allows
the whole server update process to happen in a single command:

0. read config.py on online machine's repo
1. rsync from the local_copy_dir to the current dir
2. copy to serverwebroot, awsbucket, etc.
2014-06-26 20:47:36 -04:00
Hans-Christoph Steiner
fd24416f4e switch serverwebroot rsync to --archive for guaranteed full sync
In `fdroid server update`, the rsync command used --update, which
`man rsync` says: "skip files that are newer on the receiver".  That could
cause issues of the public repo getting out of sync with the private,
master repo.  --archive is a better sync method since it aims to exactly
reproduce the sending dir to the receiving dir.
2014-06-26 20:47:36 -04:00
Hans-Christoph Steiner
d73b43c5fc server: 'local_copy_dir' config/options to automate offline repo signing
This allows a dir to be specified in config.py that `fdroid server update`
will automatically rsync the repo to.  The idea is that the path would
point to an SD card on a fully offline machine that serves as the secure
repo signing machine.
2014-06-26 20:47:36 -04:00
Daniel Martí
0ee6fc8c22 Raise gotorevision exceptions with more useful info 2014-06-26 13:07:49 +02:00
Daniel Martí
e49b7aafda Always try to recover origin/HEAD in case it's not there 2014-06-26 13:03:51 +02:00
Daniel Martí
4ad7e8be06 Easier multiline strings 2014-06-26 12:52:16 +02:00
Daniel Martí
4e153cc60d Error if UCM:Tags is used with git-svn without tags set up 2014-06-26 12:41:50 +02:00
Daniel Martí
33ed7f077d Simplify check_metadata 2014-06-26 12:39:42 +02:00
Ciaran Gultnieks
9a70575feb Fix pep8 error in previous commit 2014-06-25 12:38:25 +01:00
Ciaran Gultnieks
95d8f29479 Fix nasty problem caused by 7c2e61a4 2014-06-25 11:43:44 +01:00
Daniel Martí
c0f026c9c4 Use origin/HEAD as the default checkout for git
This should fix many RepoManifest UCMs where 'master' is not the default
branch
2014-06-25 11:13:28 +02:00
Ciaran Gultnieks
c9638cf7dd Be more specific when logging repository deletes 2014-06-25 09:54:14 +01:00
Ciaran Gultnieks
9df3a491de Fix popen command logging 2014-06-25 09:25:55 +01:00
Daniel Martí
2c8df2c1ef Small buildjni= fixes 2014-06-24 22:31:39 +02:00
Daniel Martí
53aba5365f Don't error about native code if buildjni=no 2014-06-24 22:21:04 +02:00
Daniel Martí
26154127e6 Only report files that were actually cleaned of signing stuff 2014-06-22 21:34:14 +02:00
Daniel Martí
7c2e61a407 Set the FDroidOpen output default back to true
Having it at False just makes SilentPopen useless.
2014-06-22 21:29:07 +02:00
Daniel Martí
14f865a5b1 Don't use logging.info with verbose ifs 2014-06-22 21:28:33 +02:00
Daniel Martí
0bce840571 Warn about config permissions before loading the defaults
Now, configs that don't contain passwords don't trigger the warning.
2014-06-22 21:24:29 +02:00
Daniel Martí
2686fa6faa A bit more None magic to fix some UCMs 2014-06-22 17:36:00 +02:00
Daniel Martí
25268a728d Don't output everything when using --verbose
This is especially painful when using stuff like aapt to obtain data
2014-06-21 23:03:36 +02:00
Daniel Martí
5500787935 Revert "Keep version names even if found separate from the code"
This reverts commit 75381ef147.
2014-06-20 11:10:52 +02:00
Daniel Martí
04b61302dc Better support for gradle plugin versions 2014-06-19 12:44:01 +02:00
Daniel Martí
69da721f02 Use gradle_dir, not root_dir, to fetch the plugin version 2014-06-19 12:43:05 +02:00
Daniel Martí
1c9ee1d3bf Merge branch 'master' into 'master'
run-tests: find current version of aapt in folder rather than in PATH

The Jenkins server did not yet have 19.1.0 build-tools installed yet, so your fixed commits failed to build.  This commit fixes the build:

Not everyone adds the build-tools to their PATH, so this makes it so this script will find aapt in the most recent build-tools version that is installed on the local system.
2014-06-17 08:48:28 +00:00
Hans-Christoph Steiner
35ea01cbd6 run-tests: find current version of aapt in folder rather than in PATH
Not everyone adds the build-tools to their PATH, so this makes it so this
script will find aapt in the most recent build-tools version that is
installed on the local system.
2014-06-16 19:18:28 -04:00
Daniel Martí
1fcf81b1f4 Current build-tools is 19.1.0, not 19.1 2014-06-16 23:12:47 +02:00
Daniel Martí
1ca4bda4ef Fix create_fake_android_home with the new build-tools 2014-06-16 13:09:28 +02:00
Daniel Martí
a1c3c2033a Bump default build_tools, small fixes 2014-06-16 12:42:43 +02:00
Daniel Martí
b637568a62 Warn if build_tools is not set up properly 2014-06-16 12:40:04 +02:00
Daniel Martí
75381ef147 Keep version names even if found separate from the code 2014-06-16 12:30:33 +02:00
Daniel Martí
596b3b44c5 Avoiding lintVital is no longer necessary in 0.11 2014-06-15 13:34:41 +02:00
Daniel Martí
fcface673e Fix crash in 'fdroid import' 2014-06-15 12:30:03 +02:00
Daniel Martí
0f6cb94041 Fix bug in reading old recipes 2014-06-15 12:16:10 +02:00
Daniel Martí
14f6e519d1 Update fdroid init completion 2014-06-12 21:51:33 +02:00
Daniel Martí
0c8512ca26 Install and lint were missing -q 2014-06-12 21:48:45 +02:00
Daniel Martí
71a09b700e Apk output path is build/outputs/apk/*.apk since 0.11 2014-06-12 10:04:20 +02:00
Daniel Martí
9779979e3a lintVital was added in 0.8, only exclude it then 2014-06-12 10:00:46 +02:00
Daniel Martí
3c08b51dfb Add support for plugin version 0.11 2014-06-12 10:00:29 +02:00
Daniel Martí
a50e6dbfbd Update sdk and build-tools 2014-06-11 22:48:12 +02:00
Daniel Martí
b63ce63017 Fix small issue in import.py 2014-06-11 22:48:12 +02:00
Ciaran Gultnieks
9bde500765 Merge branch 'rsync-improvements-for-fdroid-server-update' into 'master'
rsync improvements for fdroid server update

This is a couple of improvements to how `fdroid server update` uses `rsync`.

(also, please remove the branch when accepting any of my merge requests)
2014-06-09 22:14:34 +00:00
Daniel Martí
4fa5d9063a Add faketime, needed by lildebi 2014-06-08 10:24:37 +02:00
Daniel Martí
ef73fd8920 Exclude lint from gradle build tasks 2014-06-08 00:50:19 +02:00
Daniel Martí
7d8e9bbcaa jni problem is critical, so make it an error 2014-06-08 00:38:11 +02:00
Hans-Christoph Steiner
97334286ea tests: turn off unneeded debug logging during APK copying
The whole process of finding and copying APKs can be very verbose, so turn
of the bash verbose logging during that process.
2014-06-05 16:55:52 -04:00
Hans-Christoph Steiner
e68413a752 server: specify an identity file for SSH when rsyncing
This allows the SSH key used to sync with the server to be specified via
the config.py or the command line.  I need it for running automated tests
and setups.
2014-06-05 16:21:12 -04:00
Hans-Christoph Steiner
0adb2575fe update: add stricter checking when updating repo index using rsync
rsync uses the modification time and size of the file when deciding whether
to update a file.  These are relatively easy to control in malicious code,
so instead make rsync use a full MD5 checksum when decided whether the
index needs to be updated.  I suppose we could add an option to use
checksum checking on all files, but since the signed repo already provides
a checksum check, it seems not worth the added load on the process.

Also, renamed 'index' to 'indexxml' to make it clear what is the XML and
what is the JAR.
2014-06-05 15:50:21 -04:00
Ciaran Gultnieks
b86bfb94fb Merge branch 'test-updates-and-related-bug-fixes' into 'master'
Test updates and related bug fixes

I just set up some big tests of generating repos based on feeding as many random APKs into `fdroid update` as possible.  On our jenkins server, the tests copy all of the APKs that the jenkins server has generated and builds a repo from them.  This process caught lots of little glitches in the whole process.  While these little glitches are usually caused by problematic APKs, `fdroid update` should handle them gracefully.  Hopefully this set of fixes accomplishes that.
2014-06-05 15:51:24 +00:00
Daniel Martí
6aeb57e950 Be less clumsy when removing signingConfigs 2014-06-05 10:02:30 +02:00
Hans-Christoph Steiner
0272124248 tests: fix --android-home test to actually work
In this case, ANDROID_HOME is set to a fake, non-working version that will
be detected by fdroid as an Android SDK install.  It should use the path
set 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.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
479e194976 update name/description in examples/config.py
It was confusing that by default, repos created with `fdroid init` had the
same name/description as f-droid.org/repo
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
13baea9558 some APKs do not have a name, like system APKs
It is not necessarily a good idea to try to distribute system APKs via
FDroid, but `fdroid update` should just ignore APKs it cannot handle rather
than die and prevent a repo from being fully created.  This is necessary to
handle the automatic creation of repos, like for debug builds from a
Jenkins server.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
c81ff764a3 update: improve warning about APKs set to be debuggable
This uses the actual XML code used to set this flag making the warning
message easily searchable on the interwebs.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
d68830418b apps with no <uses-sdk> get strange values of minSdkVersion
Using this example app which does not have <uses-sdk>:
https://android.googlesource.com/platform/development/+log/master/samples/ApiDemos/assets/HelloActivity.apk

aapt then returns "sdkVersion:'IceCreamSandwich'".  minSdkVersion is only
ever supposed to be an integer, so this is a bizarre APK.  It is included
only as a binary in the git repo for Android sample code.  But who knows
what else is out there, so report and error and carry on with the update
process.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
57a4e03277 update: skip APKs that cannot be parsed instead of exiting
Some APKs can be corrupt or some system APKs do not have all the normal
info.  Instead of quitting, `fdroid update` skips the non-parsable APKs and
optionally deletes them if --delete-unknown is specified.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
ed73db65ae make FDroidPopen output based on --verbose
FDroidPopen outputs by default, this should be controlled by the --verbose
flag so that most of the time, only meaningful messages are shown like
errors and such.  For command output that should be shown everytime,
output=True can be set.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
c6d946ed54 update: remove overly verbose message about icon sizing being correct
This seems like purely a debug message, I can't see why its useful in general
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
6085556a7b jenkins: run git pre-commit hook for pep8, pyflakes, etc
This provides a central script for running certain checks at commit time,
and in jenkins automated builds.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
9b313e76bb tests: specify dir for APKs as cmd line arg, and set jenkins to ~
This lets people easily set whatever dir they want, while letting jenkins
search through its whole workspace for any APKs that have been built. Also,
only include the latest version of a given packageName+versionCode.
2014-06-04 22:01:25 -04:00
Hans-Christoph Steiner
78d5ebf26c use 'metadata' name throughout: --createmeta to --create-metadata
To keep the naming used within fdroid consistent, I renamed this long flag
to use the whole word 'metadata' since that is what is used everywhere else
2014-06-04 21:54:56 -04:00
Hans-Christoph Steiner
0e2f4d54d0 tests: try fdroid update after adding an APK to an existing repo
Yes, this includes a binary file, but it is only for the tests, and it is
free software since I wrote it.  The source is here:

https://github.com/eighthave/urzip
2014-06-04 21:54:55 -04:00
Hans-Christoph Steiner
ed7a0576c2 test: make sure fdroid update -c creates a full index.xml
Previously, `fdroid update -c` would only create the new metadata, but
would not add the new apps/apks to the repo.  That required a second run of
`fdroid update`.  This has been fixes, so this test makes sure it stays
fixed, in a very generic way.
2014-06-04 21:54:55 -04:00
Hans-Christoph Steiner
bc8ad37249 init: make prompt for SDK path exit cleanly on Ctrl-C
This just makes a clean exit rather than showing a python stacktrace.
2014-06-04 21:54:55 -04:00
Hans-Christoph Steiner
6ca060e10d 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.
2014-06-04 21:54:55 -04:00
Daniel Martí
3690b89e0a Fix crash in checkupdates with auto-updates 2014-06-04 13:29:01 +02:00
Daniel Martí
9198cd4127 Add warnings for repo clonings in build recipes 2014-06-01 19:12:00 +02:00
Daniel Martí
67cbd1fba4 Fix the script defaults 2014-06-01 19:11:49 +02:00
Daniel Martí
9f1c075119 No need to check for non-default build items 2014-06-01 19:05:18 +02:00
Daniel Martí
8fd02e3fcf Remove dead mvnflags code 2014-06-01 19:05:10 +02:00
Daniel Martí
8675d50261 Add support for gitlab.com repos to import 2014-06-01 16:37:33 +02:00
Daniel Martí
67630b6c72 Store build comments by vercode, not version
vercodes are unique, versions aren't
2014-06-01 15:40:33 +02:00
Daniel Martí
a544907bef Don't allow for duplicate build entries 2014-06-01 15:38:11 +02:00
Daniel Martí
3d72c30fe5 Use ordered dicts for defaults in apps and builds 2014-05-31 23:54:50 +02:00
Daniel Martí
c125ab9b7f Enable pep8 in pre-commit 2014-05-31 23:09:58 +02:00
Daniel Martí
e5854b7e13 Fix pep8 warnings in makebuildserver 2014-05-31 23:00:27 +02:00
Daniel Martí
b594558811 Re-order app_defaults to match the writing order
Also fix a couple of issues:

* Update Check Name was never written to disk
* Maintainer Notes had no default and was used differently
2014-05-30 19:51:10 +02:00
Daniel Martí
e93017569f Simplify field/flag checking and bool flag usage 2014-05-30 18:52:30 +02:00
Daniel Martí
5933880a90 Make unspecified license use regex 2014-05-30 18:52:30 +02:00
Daniel Martí
969a568430 Merge branch 'recent-bug-fixes' into 'master'
Recent bug fixes

Fix a couple of bugs from the tracker.
2014-05-29 20:24:39 +00:00
Hans-Christoph Steiner
6839f9a9ed fixes #12: make fdroid update -c do complete update like fdroid update
Since the new metadata created by -c is added after the existing metadata
was already parsed, `fdroid update -c` was not doing a complete update of
the repo.  This moves the metadata creation as early as possible, then
reruns the metadata parsing if new metadata was created.

refs #12 https://gitlab.com/fdroid/fdroidserver/issues/12
2014-05-29 15:29:57 -04:00
Hans-Christoph Steiner
af22962572 Fixes #8: if unknown APKs found, prompt to use -c or use --delete-unknown
This adds the option --delete-unknown for the current default behavior of
`fdroid update`: to delete any unknown APKs.  Instead, it just outputs a
warning about the unknown APKs and suggests -c for adding it.

Fixes #8 https://gitlab.com/fdroid/fdroidserver/issues/8
2014-05-29 13:40:06 -04:00
Hans-Christoph Steiner
2f3022ff65 fix PEP8 E128 continuation line under-indented for visual indent 2014-05-29 13:10:28 -04:00
Daniel Martí
0f0ccdb1e1 Fix some more pep8 warnings 2014-05-28 09:33:14 +02:00
Daniel Martí
fd417425ae Fix E265 in config.py 2014-05-28 09:30:55 +02:00
Daniel Martí
709ead7db7 Add pre-commit hook with installer
Will enable pep8 once all the problems are gone
2014-05-28 09:28:28 +02:00
Daniel Martí
1d5280d528 Fix pyflakes errors in readmeta 2014-05-27 15:56:57 +02:00
Daniel Martí
ecb2a2a969 Make readmeta use srclibs and check for config.py too 2014-05-27 15:17:37 +02:00
Daniel Martí
9301c50e3b More strict string search regex 2014-05-27 10:10:15 +02:00
Daniel Martí
5bbbda71a3 Also use srclibs in checkupdates
Needed when Repo Type is srclib
2014-05-27 09:53:58 +02:00
Daniel Martí
a129ef5f9f Warn about summaries that are not capitalized 2014-05-26 08:09:22 +02:00
Daniel Martí
93a56e4f51 Fall back to launchable-activity label if application has none
This fixes apps like MiniZip not having a name
2014-05-23 09:47:11 +02:00
Daniel Martí
295cddcddb Add android targets 5, 6 and 9
They are nice to have, and will be needed to build support-v4 from source
2014-05-21 11:45:16 +02:00
Ciaran Gultnieks
3a73654d49 Centralise management of srclib metadata 2014-05-20 22:44:47 +01:00
Ciaran Gultnieks
e29da6b023 Restore friendly error messages
Use --verbose if you really want a full traceback with your 'you made a
typo in an package ID' messages.

It would be better to do this based on exception types (i.e. our own
exceptions - MetadataException, BuildException, VCSException) would not
print a traceback, but unexpected exceptions would. But the types are
not available at the 'fdroid' level currently.
2014-05-20 22:14:19 +01:00
Ciaran Gultnieks
6391f204e1 Lose the other unused read_metadata parameter 2014-05-20 21:07:54 +01:00
Ciaran Gultnieks
720ec22e9a Remove mysterious keyword arguments 2014-05-20 17:55:48 +01:00
Ciaran Gultnieks
277d95f57d Fix several read_metadata-related issues
Various calls with the wrong parameters, and also an unused parameter on
the function itself.
2014-05-20 17:48:45 +01:00
Daniel Martí
9cb5bbd1ee Add gradle 1.12 for the plugin version 0.10
Also, use https for the gradle.org links
2014-05-20 16:40:43 +02:00
Daniel Martí
a36865e9b1 lint: warn about empty descriptions
If some app has the default description because it's not going to be published
or will never have a working build, the whole app should be disabled.
2014-05-16 13:04:31 +02:00
Ciaran Gultnieks
d104f2e1fb Support https://code.google.com in fdroid import 2014-05-15 10:26:35 +01:00
Ciaran Gultnieks
946e79f2ce Minor manual typo fix 2014-05-13 22:14:19 +01:00
Ciaran Gultnieks
693f1e2a81 Add documentation for Update Check Ignore 2014-05-13 21:13:10 +01:00
Ciaran Gultnieks
0113f85448 Add ability to ignore updates based on version name matching 2014-05-13 20:04:22 +01:00
Ciaran Gultnieks
751daf0cda Fix too long lines in publish 2014-05-12 23:01:53 +01:00
Ciaran Gultnieks
b18d1b422e Remove excess usage description from gpgsign 2014-05-12 23:00:20 +01:00
Ciaran Gultnieks
d69b7ce338 Remove unused imports 2014-05-12 22:58:54 +01:00
Ciaran Gultnieks
f8cc84282e Correct logging output for gpgsign when already signed 2014-05-12 22:57:23 +01:00
Ciaran Gultnieks
ffdebd9516 Add 'fdroid gpgsign' command
Creates detached gpg signatures for any apks that don't have them
yet. Relevant configuration fields need to be set first.
2014-05-12 21:57:09 +01:00
Daniel Martí
6cd21c108c Stop the gradle version searches once one is found 2014-05-12 15:52:02 +02:00
Ciaran Gultnieks
cf1201833b Add proprietary samsung jar to usual suspects 2014-05-11 22:14:32 +01:00
Daniel Martí
17a4f5c00f A few more PEP8 fixes 2014-05-07 16:17:46 +02:00
Ciaran Gultnieks
7a699e4a48 Merge branch 'master' into 'master'
last PEP8 fixes (everything but E501 line too long and E123 close bracket indent)

These two commits fix all the rest of the PEP8 errors and warnings except for:

* E123 closing bracket does not match indentation of opening bracket's line
* E501 line too long (x > 79 characters)

Almost all of the fixed issues were these errors:

* E124 closing bracket does not match visual indentation
* E125 continuation line does not distinguish itself from next logical line
* E126 continuation line over-indented for hanging indent
* E127 continuation line over-indented for visual indent
* E128 continuation line under-indented for visual indent
* E226 missing whitespace around arithmetic operator

If you would like to make it run as part of the automated builds, it would just be a matter of adding this line to `jenkins-build`:

```
pep8 --ignore=E123,E501,W fdroid fdroidserver/*.py examples/*.py
```
2014-05-07 13:55:38 +00:00
Hans-Christoph Steiner
37d6d87ff7 fix PEP8 "E226 missing whitespace around arithmetic operator" 2014-05-06 14:36:33 -04:00
Hans-Christoph Steiner
0e00b36db5 fix PEP8 E124/E125/126/127/128 indentation issues
* E124 closing bracket does not match visual indentation
* E125 continuation line does not distinguish itself from next logical line
* E126 continuation line over-indented for hanging indent
* E127 continuation line over-indented for visual indent
* E128 continuation line under-indented for visual indent
2014-05-06 14:36:33 -04:00
Ciaran Gultnieks
ae3d1b036f Merge branch 'master' into 'master'
fix pyflakes error and a bunch of PEP8 fixes

lots of little fixes here, the first commit fixes the minor error that `pyflakes` raised, then the rest are all PEP8 fixes, as reported by the `pep8` command line tool.
2014-05-06 16:14:20 +00:00
Hans-Christoph Steiner
6abb390547 fix PEP8 "E261 at least two spaces before inline comment" 2014-05-06 11:45:04 -04:00
Hans-Christoph Steiner
aa5f317c26 fix PEP8 "W391 blank line at end of file" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
16dc3b27d6 fix PEP8 "E303 too many blank lines (2)" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
69989d4758 fix PEP8 "E302 expected 1 blank lines, found 0" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
3f4f7a544b fix PEP8 "E302 expected 2 blank lines, found 1" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
2f2618e06c fix PEP8 "E401 multiple imports on one line" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
fcca0ddb1f fix PEP8 "E712 comparison to True should be 'if cond is True:' or 'if cond:'" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
d8bae963a9 fix PEP8 "E703 statement ends with a semicolon" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
7e17fafc14 fix PEP8 "E225 missing whitespace around operator" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
c54cabe741 fix PEP8 "E228 missing whitespace around modulo operator" 2014-05-06 11:45:03 -04:00
Hans-Christoph Steiner
2d271806f1 fix PEP8 "E251 unexpected spaces around keyword / parameter equals" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
58a484e74e fix PEP8 "W291 trailing whitespace" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
62204d1fe5 fix PEP8 "E202 whitespace before ']' or '}'" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
4af2e0004f fix PEP8 "E201 whitespace after '(' or '[' or '{'" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
998011d535 fix PEP8 "E231 missing whitespace after ','" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
f1812d5935 fix PEP8 "E203 whitespace before ':' or ','" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
fccb990521 fix PEP8 "E711 comparison to None should be 'if cond is None:'" 2014-05-06 11:45:02 -04:00
Hans-Christoph Steiner
d564c37c35 fix "fdroidserver/build.py:41: redefinition of unused 'paramiko' from line 39"
pyflakes gave this error based on the `paramiko = None` statement. I used
a different way to test whether paramiko was successfully imported that is
directly based on the relevant Exceptions.
2014-05-06 11:45:02 -04:00
Daniel Martí
17b7f192b5 Add missing -q/--quiet completions 2014-05-06 16:19:05 +02:00
Daniel Martí
42bfe13be4 Also pre-compile list regex warnings 2014-05-06 16:08:53 +02:00
Daniel Martí
65205a6ec3 Warn about leading spaces in descriptions 2014-05-06 16:08:53 +02:00
Ciaran Gultnieks
225c644b3e Remove the other explicit vagrant references
Aside from the VM setup (which is now self-contained) the build process
only cares that it's handed a clean VM that it can access via ssh, given
a host/port/user/pubkey combination. There's no dependency outside the
getvm/releasevm functions on what kind of vm it is, what user the build
runs as, etc.
2014-05-01 23:33:17 +01:00
Ciaran Gultnieks
ee157b7c83 Remove some explicit references to the vagrant user 2014-05-01 23:24:54 +01:00
Ciaran Gultnieks
6db75545ef Separate the VM setup process from the build 2014-05-01 23:04:51 +01:00
Ciaran Gultnieks
d7cee19c02 Fix a few whitespace errors in build.py 2014-05-01 22:09:17 +01:00
Ciaran Gultnieks
2f6ce712f5 More PEP8 compliance (build.py, partial) 2014-04-30 23:23:57 +01:00
Ciaran Gultnieks
bd34fc2530 Remove the rest of the PEP8 errors from stats.py 2014-04-30 20:53:34 +01:00
Ciaran Gultnieks
5849b43e02 Remove strange semicolons 2014-04-30 11:46:28 +01:00
Ciaran Gultnieks
2a5c8a4aa2 Cache aggregate stats to save time 2014-04-29 15:33:34 +01:00
Daniel Martí
63ce679a9d Also remove 'disable' from auto-update builds 2014-04-29 16:06:24 +02:00
Daniel Martí
13af519069 Run git submodule sync before git submodule update
Fixes changes in submodule urls
2014-04-29 12:00:03 +02:00
Daniel Martí
965c767d8b Update 'fdroid build' args on bash-completion 2014-04-29 09:28:44 +02:00
Ciaran Gultnieks
73c73db0e9 Add extra options to import completion 2014-04-29 07:41:48 +01:00
Daniel Martí
bb4211b0be Revert "Don't auto update apps with the latest build disabled"
This reverts commit 32ae8bc565.
2014-04-29 00:00:40 +02:00
Daniel Martí
b2ef2b1b65 Small glob fix to fd-commit 2014-04-28 23:48:12 +02:00
Daniel Martí
83557583cb Add support for new files 2014-04-28 23:36:49 +02:00
Ciaran Gultnieks
a0dbddc6da Add config entry for optional gpg key 2014-04-28 21:32:32 +01:00
Daniel Martí
bfb549d101 Merge branch 'master' of https://gitlab.com/eighthave/fdroidserver 2014-04-27 14:26:03 +02:00
Daniel Martí
4592cece2f Slightly better summary/name warning message 2014-04-27 14:14:49 +02:00
Ciaran Gultnieks
fdd7123c55 Show detached gpg sigs for apks in repo browser 2014-04-27 09:30:26 +01:00
Hans-Christoph Steiner
5e93b6c80b update: report signing key fingerprint in same format as client
fdroidclient now uses SHA256 fingerprints internally, and they are shown in
the repo details view.  This changes the digest algorithm to SHA256 and
changes the format to match what is shown in the repo details view.
2014-04-25 21:07:47 -04:00
Hans-Christoph Steiner
a66bf2037c server: fix logging of file upload to awsbucket
Thanks to Adam Pritchard for reporting this
2014-04-23 20:10:02 -04:00
Hans-Christoph Steiner
21769e9f0a server: test using config.get() in case dict value is None
If a key 'foo' is set to None, `if config.get('foo'):` will be false while
`if 'foo' in config:` will be true.  A None value is not useful here, so
config.get() is the better check.

Thanks to Adam Pritchard for the suggestion.
2014-04-23 20:10:02 -04:00
Hans-Christoph Steiner
ef7c9d89d2 init: --no-prompt to skip sdk_path prompt
For running the tests and in other scripted setups, the user prompt is an
annoying. Using --no-prompt means the script can test for failure.
2014-04-23 20:10:02 -04:00
Hans-Christoph Steiner
66df02d5f8 init: --android-home for forcing the path to the Android SDK
This allows the user to set the path to their Android SDK from the command
line. This option is named after the standard env var ANDROID_HOME, as used
in the build.xml generated by `android update project`.  --android-home
takes precendence over the ANDROID_HOME env var if it is set.
2014-04-23 19:33:10 -04:00
Hans-Christoph Steiner
cc089b49b1 init: only overwrites config.py, so run even if repo/ exists
Previously, `fdroid init` would exit if a repo/ subdir existed.  Since it
only changes config.py, that test just caused confusion. Now, only exit if
config.py exists, and if repo/ does not exist, create it.
2014-04-23 19:33:01 -04:00
Hans-Christoph Steiner
186aec46ba init: split out defconfig and sdk test to run before config is loaded
`fdroid init` runs before any config.py exists, but it still needs to have
the default config and the SDK path tests.  So split those two bits out of
common.read_config() so that they can be run separately before config.py
is in place.
2014-04-23 19:32:04 -04:00
Ciaran Gultnieks
088b7dfa2a Merge branch 'master' into 'master'
support cloud storage, and assorted other improvements

I just finished support for `fdroid server update` to push to Amazon AWS S3 cloud store. It uses libcloud, so there could be lots of other cloud storage services added.  This would be used for alternative hosting locations for repos.  For example, for the Guardian Project repo, we'd include the URLs to various cloud storage options like https://s3.amazonaws.com/guardianproject/fdroid/repo
Services like https://s3.amazonaws.com/ are often not blocked when other things are.

It does not need to be Amazon-specific.  I went with libcloud because it supports like 10 cloud storage and is under active development.  What is there is just the start. I'm new to cloud stuff, so I just started based on a script that Adam Prichart of psiphon gave me. I had to do a fair amount of packaging work to get the python-libcloud Debian package updated. I almost have the 0.14.1 update done, I hope that'll be in Debian tonight.

Lots more info in the commit messages.
2014-04-23 07:31:56 +00:00
Hans-Christoph Steiner
c429751a1e add generic installation instructions to README 2014-04-22 23:13:38 -04:00
Hans-Christoph Steiner
7248432d2d make awsbucket upload only new or changed files, ignore existing
Since it is possible to check the file size and MD5 hash of the file up on
the AWS S3 bucket, `fdroid server update` can check that a file needs to be
updated before actually deleting and uploading the new file.

fixes #3137 https://dev.guardianproject.info/issues/3137
2014-04-22 23:13:38 -04:00
Hans-Christoph Steiner
98033f3270 if the AWS S3 bucket does not exist, create it
This makes the AWS S3 setup dead simple: just put in a awsbucket name of
your choosing, set the AWS credentials, and it'll do the rest, whether the
bucket exists already or not.  S3 buckets are trivial to delete too, in
case of error: `s3cmd rb s3://mybadbucketname`.
2014-04-22 23:13:38 -04:00
Hans-Christoph Steiner
f0def08add support cloud storage with libcloud, starting with Amazon AWS S3
apache-libcloud enables uploading to basically any cloud storage service.
This is the first implementation that allows `fdroid server` to push a repo
up to a AWS S3 'bucket'.  Supporting other cloud storage services should
mostly be a matter of finding the libcloud "Provider" and setting the
access creditials.

fixes #3137 https://dev.guardianproject.info/issues/3137
2014-04-22 23:13:37 -04:00
Hans-Christoph Steiner
d1cd817759 implement -q and -v for fdroid server
The --quiet and --verbose options that are standard with the fdroid tools
were not implemented yet with the `server` command.
2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
5ce3b61a2a reorg fdroid server to allow for multiple server types
Right now, ssh+rsync is the only supported server upload type.  Things like
cloud storage services are useful storage bins for fdroid repos since they
are often not blocked while specific websites like Google Play are.
2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
6b65257516 make fdroid server check whether serverwebroot is set
Having serverwebroot optional in `fdroid server` means that it can support
multiple methods of hosting, like cloud storage services.  `fdroid server`
can also then support multiple repo hosting options at the same time.
2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
1ca7949bb1 if using crypto smartcard, remind user to plug it in 2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
a7d1d9a54d overwrite password files if they exist
The .fdroid.*.txt password files are only meant to be a conduit for the
passwords, so blow them away everytime.  The canonical password is stored
in config.py.

It might makes sense to replace these files with env vars using
-storepass:env and -keypass:env.  I figured that the passwords are already
in a file, config.py, so adding more files in the same location with the
same perms would not increase the risk at all.
2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
0cbe9690c9 update manual to use public https:// URLs to git repos
git@gitlab.com URLs require a gitlab login, https:// URLs do not
2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
e59e900a64 fix warnings in python files manifest
warning: no files found matching 'jenkins-build.sh'
    warning: no files found matching 'buildserver/cookbooks'
2014-04-22 22:59:27 -04:00
Hans-Christoph Steiner
6f6c074a6b when running pip install tests, cache downloads from pypi
Since this runs frequently without much change, it makes sense to cache the
downloaded source packages as much as possible.  There are probably better
ways to do this, but this is really easy.

https://stackoverflow.com/questions/4806448/how-do-i-install-from-a-local-cache-with-pip
2014-04-22 22:59:27 -04:00
Daniel Martí
82e88fbcf6 Support custom maven/gradle resource paths 2014-04-22 11:39:29 +02:00
Daniel Martí
5b10409967 Run maven with jar.sign.skip=true too 2014-04-22 11:22:53 +02:00
Daniel Martí
b2406c3b57 Reflect new summary char limit 2014-04-20 19:15:40 +02:00
Daniel Martí
cd666bb8e8 Properly complete partially written vercodes 2014-04-18 23:56:25 +02:00
Daniel Martí
2f3a92cd29 Count warnings and apps in lint 2014-04-18 21:17:06 +02:00
Daniel Martí
6d8dd4bed2 Add summary-related lint warnings 2014-04-18 20:54:44 +02:00
Daniel Martí
00fa44e916 Only do the latest five tags when using UCM:Tags on git 2014-04-17 21:05:18 +02:00
Daniel Martí
3736da3761 No longer use universal_newlines
It was added in an attempt to get git clone/fetch output, which did not
succeed.
2014-04-17 20:47:13 +02:00
Ciaran Gultnieks
181fc3d07b Fix donate/flattr links in web repo browser 2014-04-17 12:12:50 +01:00
Ciaran Gultnieks
4e90e002f0 Change widget implementation to allow multiple instances 2014-04-17 12:06:16 +01:00
Ciaran Gultnieks
11e5cc1b03 Merge branch 'master' into 'master'
add Flattr button to app details pageMaster
2014-04-17 11:06:35 +00:00
Daniel Martí
f79ded4a26 Also ignore .bzr when scanning 2014-04-16 21:06:24 +02:00
Daniel Martí
559ad9ef5b Also glob the 'rm' field 2014-04-15 23:58:12 +02:00
Daniel Martí
d4f9f341ed Glob scanignore and scandelete
These fields can still be used without globbing, but globbing can be very
useful in some cases.
2014-04-15 23:53:44 +02:00
Daniel Martí
8f0f896d91 Rewrite much of the source scanner
* Group apk, jar and zip files in the same case
* Use regex to support more patterns and be more flexible
* Only check for usual suspects in jar files (saves time)
* Also catch unknown zip-like files as warnings
2014-04-15 23:33:54 +02:00
Daniel Martí
b92b722c6d Fix: some apks have a zip mimetype instead of a jar one 2014-04-15 17:50:08 +02:00
Daniel Martí
5c483a5484 Fix apk path on gradle builds with many subdirs 2014-04-15 11:50:02 +02:00
Ciaran Gultnieks
a520076331 Merge branch 'master' into 'master'
Updated manual with gitlab repo links
2014-04-13 18:57:05 +00:00
viccuad
64e5e1dd9d updated gitorious repo links to gitlab repo links 2014-04-12 17:07:31 +02:00
Torsten Grote
05b61cc57d remove border around Flattr button 2014-04-12 13:33:07 +02:00
Torsten Grote
0e09686405 add Flattr button to app details page 2014-04-12 13:27:34 +02:00
Daniel Martí
5f2c348b40 Support gradle variables without an equals sign 2014-04-12 01:00:59 +02:00
Daniel Martí
67054c7c6f Fix counting of scanner problems 2014-04-12 00:18:20 +02:00
Ciaran Gultnieks
81e6fb8eb5 Point wiki current/history links to gitlab 2014-04-11 16:44:33 +01:00
Ciaran Gultnieks
c3a9b1b0c5 Merge branch 'master' into 'master'
fix tests

this fixes the copying of APKs in the test script
2014-04-10 16:46:17 +00:00
Hans-Christoph Steiner
49387b7108 use FDroid-standard naming when copying APKs for tests
This makes sure that there are no APKs with duplicate version codes.
2014-04-10 12:37:07 -04:00
Hans-Christoph Steiner
234736f306 move run-tests to /bin/bash so we can use bashisms 2014-04-10 12:31:23 -04:00
Daniel Martí
f4ee767013 Fix Categories: default value 2014-04-10 17:27:53 +02:00
Ciaran Gultnieks
5b21f86af2 Add buildserver details to AndroidManifest.xml 2014-04-10 13:59:17 +01:00
Ciaran Gultnieks
f95eccf307 Put commit hash of fdroidserver in use onto buildserver 2014-04-10 13:58:42 +01:00
Ciaran Gultnieks
b7420192eb Support different identity file structures
Something to do with vagrant/paramiko versioning.
2014-04-10 13:57:16 +01:00
Ciaran Gultnieks
8fdfc47f84 Fix snapshot logging error 2014-04-10 13:56:45 +01:00
Daniel Martí
2f43d30884 Specify that scanner warnings are not counted 2014-04-08 18:49:59 +02:00
Ciaran Gultnieks
e8c47765ae Merge branch 'master' into 'master'
implemeted support for using a smartcard for the repo signing key

This changeset implements using a smartcard (HSM) as the keystore for the signing key.  It also fixes lots of little bugs in the `fdroid init` process.
2014-04-08 08:26:37 +00:00
Hans-Christoph Steiner
0dd8116059 add note about automatically generated signing key after init 2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
00b89c05c5 warn user if smartcard keystore is set but opensc is not installed 2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
3829d37d34 support repo signing with a key on a smartcard
This assumes that the smartcard is already setup with a signing key.  init
does not generate a key on the smartcard, and skips genkey() if things are
configured to use a smartcard.

This also does not touch APK signing because that is a much more elaborate
question, since each app is signed by its own key.
2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
9945045f1b fix bug setting repo_keyalias in init 2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
f582cd7a9e fix bug listing new key created in init
Oops, a typo with a ] in e53092cffa
2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
faf0c4381f add test case were init generates a keystore and uses it 2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
b41f9e67a9 if keystore is given as arg to init, create keystore if it does not exist
Previously, `fdroid init --keystore /tmp/foo` expected the keystore to
exist, or it quit with an error.  But I've changed my mind, I think it is
useful to have it generate a new keystore at that location if it does not
exist.  For example, in tests/run-tests.sh. It still will not clobber an
existing file at that location.
2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
2bd62239f7 'smartcardoptions' config item for setting up HSMs with fdroid
These options are needed to configure Java's keytool and jarsigner to use
a Hardware Security Module aka HSM aka smartcard.  The defaults provided
are meant to make things work as easily as possible.
2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
0950cdac09 make repo_keyalias like a config option: leave it commented out
Before, the code relies on repo_keyalias being None, which does not feel
conffile-like.  Now, its commented out if its not set.
2014-04-07 16:00:18 -04:00
Hans-Christoph Steiner
f1ae3d3fd0 use default keystore path when generating a new setup with init
Before, the path to the keystore was also hardcoded in init.py, this makes
init now get it from the defaults set in common.py.
2014-04-07 16:00:17 -04:00
Hans-Christoph Steiner
0736367675 when generating config.py during init, uncomment changed options
The defaults are set in config.py and are often commented out.  Before, the
regex would only change the value, but leave it commented out.  Now, it
will also uncomment it.
2014-04-07 16:00:17 -04:00
Hans-Christoph Steiner
40fdc2a943 improved error messages related to missing/non-functional SDK paths 2014-04-07 16:00:17 -04:00
Daniel Martí
56b7326b9a Stop looking for builds when Maintainer Notes is found 2014-04-07 18:14:36 +02:00
Ciaran Gultnieks
7f822b01bf Validate publish-related file existence before proceeding 2014-04-04 15:37:18 +01:00
Ciaran Gultnieks
e4ad174399 Use keystore options correctly
Corrects error in 525759b235
2014-04-04 15:31:07 +01:00
Ciaran Gultnieks
9ccdd209ac Merge branch 'master' into 'master'
build and test fixes

various fixes for the build process and tests
2014-04-03 16:51:15 +00:00
Hans-Christoph Steiner
947a6d57d2 'ssh' python module no longer needed, only 'paramiko' 2014-04-03 12:34:01 -04:00
Hans-Christoph Steiner
5ee4f3d72d enable Jenkins reporting of pylint errors and warnings
fatals still can not be enabled because of a bug in pylint when running in
a virtualenv:
https://bitbucket.org/logilab/pylint/issue/73/pylint-is-unable-to-import

running pylint in the virtualenv would not be needed once mwclient is
packaged for Debian and installed that way.
2014-04-03 12:33:22 -04:00
Hans-Christoph Steiner
e9dc2ddd51 jenkins-build: make pylint handle the hashlib hash classes properly
hashlib uses some magic to load whatever is built into the local openssl.
pylint gets confused by this, so we need a pylint plugin to trick pylint
into thinking everything is good.
2014-04-03 12:33:22 -04:00
Ciaran Gultnieks
c353a69231 Switch back to paramiko for all modules 2014-04-03 17:14:59 +01:00
Daniel Martí
c08987cf4b Avoid printing the dir '' 2014-04-03 16:10:54 +02:00
Daniel Martí
fb933ebafd Make pylint happy about re-using the 'added' var 2014-04-03 16:05:15 +02:00
Daniel Martí
0c11f7bc49 scan_source: print problems, only return the total count 2014-04-03 16:04:06 +02:00
Daniel Martí
d6289b7832 Merge commit 'refs/merge-requests/140' of gitorious.org:f-droid/fdroidserver 2014-04-03 13:01:09 +02:00
Hans-Christoph Steiner
9ece46d32f use the virtualenv python so pylint checks against its installed libs 2014-04-02 19:52:47 -04:00
Hans-Christoph Steiner
5b22e11872 make jenkins script use bash so we can use bashisms 2014-04-02 19:49:02 -04:00
Hans-Christoph Steiner
bb15611ed1 setup.py: include 'ssh' and 'mwclient' as required libraries 2014-04-02 19:49:02 -04:00
Daniel Martí
3e12ec93a5 Merge commit 'refs/merge-requests/139' of gitorious.org:f-droid/fdroidserver 2014-04-03 00:12:11 +02:00
Hans-Christoph Steiner
f918323e91 build and install getsig.class with setup.py 2014-04-02 17:54:21 -04:00
Hans-Christoph Steiner
1b130950fd include prefix in data_files install path so it installs correctly
setuptools wants to stick any relative install path in data_files into the
.egg package.  Things are not setup to use the egg now.  We might want to
consider using sticking files into the egg via pkg_resource in the future.
2014-04-02 17:54:21 -04:00
Hans-Christoph Steiner
0663d7b197 include a setuptools MANIFEST to make sure things get installed
Using `python setup.py install`, things in non-standard python paths need
to be added to the MANIFEST in order for them to be included and installed.
There might be a better solution for this, but I haven't found it.
2014-04-02 17:54:21 -04:00
Hans-Christoph Steiner
21fca70d8b add script for running build and tests in Jenkins 2014-04-02 17:54:21 -04:00
Hans-Christoph Steiner
bfa21fb630 add script to do a test run of creating a new repo
This tests/ folder can then be used for all sorts of tests, including
standard python tests.
2014-04-02 17:49:07 -04:00
Hans-Christoph Steiner
434eab6606 downcase setup.py name to match the name in the repo, Debian package, etc. 2014-04-02 17:49:07 -04:00
Hans-Christoph Steiner
92c1e44dba ignore files created by setup.py processes 2014-04-02 17:48:16 -04:00
Daniel Martí
3905143252 Add default repotype() to make pylint happy 2014-04-02 23:37:29 +02:00
Daniel Martí
8e87feff26 Fix output naming, remove redundant lstrip() 2014-04-02 01:05:33 +02:00
Daniel Martí
fa37c3b2f8 Merge commit 'refs/merge-requests/138' of gitorious.org:f-droid/fdroidserver 2014-04-02 01:03:36 +02:00
Hans-Christoph Steiner
e53092cffa fix genkey key listing in fdroid init
FDroidPopen() does not have a way to send to stdin, so we will use the
password file for now.  In the long run, at least the keypass should always
be sent via stdin rather than via a file.  Ideally, storepass would be too,
but if they are different, then storepass is less important.
2014-04-01 18:04:36 -04:00
Hans-Christoph Steiner
ed3bd25bb5 oops, include common. to call write_password_file() 2014-04-01 18:04:36 -04:00
Hans-Christoph Steiner
8ef6546f81 move fdroid-icon.png to examples/ 2014-04-01 18:04:36 -04:00
Hans-Christoph Steiner
d21bddc159 improved warning when trying to init a dir with stuff in it 2014-04-01 17:51:54 -04:00
Daniel Martí
802d5e298c Merge commit 'refs/merge-requests/137' of gitorious.org:f-droid/fdroidserver 2014-04-01 23:47:11 +02:00
Daniel Martí
870ed87a36 Fix bankdroid build
All console stuff should be avoided already with just readLine
2014-04-01 19:29:37 +02:00
Daniel Martí
5dc29c8a05 Fix apk path on gradle builds where both subdir and flavour@dir are used 2014-04-01 19:25:43 +02:00
Daniel Martí
d8374b3efa Add keyaliases config default 2014-04-01 18:58:20 +02:00
Ciaran Gultnieks
f10d16f734 Remove ruby packages from buildserver 2014-04-01 17:40:11 +01:00
Hans-Christoph Steiner
7bb490221a set the default keystore to the same as the default in fdroid init
This should keep things simple and consistent.
2014-03-31 21:42:46 -04:00
Hans-Christoph Steiner
a31f4571c2 fix example files install in setup.py
This also makes the file layout in git basically the same as the installed
file layout, using an examples/ dir.  I'm not sure if config.buildserver.py
is an example conf file, or a conf file that is actually in use, so I did
not move it.
2014-03-31 21:29:51 -04:00
Hans-Christoph Steiner
525759b235 stop passing passphrases via args, instead use prepared files
Any process can read the process table, and can therefore see the entire
command line of any other process.  That means its a bad idea to ever put
passwords as part of a command line.  Python is executing keytool and
jarsigner command lines here, so now instead of putting the password on the
command line, a file is passed instead with suitable file permissions.
This should reduce the exposure a lot.  But still, sensitive passwords
should not be written to any text file.

This change requires OpenJDK-7 since the :file option to -storepass and
-keypass was only added in Java 7's keytool and jarsigner.
2014-03-31 21:02:42 -04:00
Daniel Martí
caa88ec388 Fix indexing issue with recursive srclibs 2014-03-31 19:23:48 +02:00
Daniel Martí
214d63e48f Better identify empty licenses 2014-03-28 11:40:58 +01:00
Daniel Martí
edda052000 Error if buildjni= is present but no native code was packaged 2014-03-27 19:22:21 +01:00
Daniel Martí
25a8dd5af4 Start rewriting git@github submodues to use https 2014-03-27 18:38:12 +01:00
Daniel Martí
65d796c93a Only make lists if a space follows the # or * sign
This prevents making a list item out of lines such as:

*.rom images and allows using...
2014-03-27 17:51:34 +01:00
Daniel Martí
6c6a9c4bb2 Revert "Wrap maintainer notes in <pre> to keep newlines and formatting"
This reverts commit 94bb9d9355.
2014-03-25 09:41:55 +01:00
Daniel Martí
94bb9d9355 Wrap maintainer notes in <pre> to keep newlines and formatting 2014-03-24 15:11:05 +01:00
Daniel Martí
02a835931a Formatting fail 2014-03-24 10:19:39 +01:00
Daniel Martí
eb343fe212 Always run ndk-build with -j1 2014-03-24 10:09:12 +01:00
Daniel Martí
eee7f8b4f6 Avoid some false positives in the punctuation check 2014-03-24 01:02:11 +01:00
Daniel Martí
29ab3cf64d If given --verbose, don't print the whole error log again 2014-03-23 00:10:33 +01:00
Daniel Martí
b23b560c72 Also show error messages when coming from UCM:Tags 2014-03-21 19:19:17 +01:00
Daniel Martí
7cf368df70 Better gradle signing keys regexes 2014-03-21 19:11:52 +01:00
Daniel Martí
22142138a6 Include possible src/AndroidManifest.xml gradle manifest path 2014-03-21 19:11:38 +01:00
Daniel Martí
90d60cc8ff Properly show checkupdates error messages 2014-03-21 19:11:21 +01:00
Daniel Martí
685eb188b1 Fix checkupdates appid managing 2014-03-21 19:11:08 +01:00
Daniel Martí
758f88af7b Don't use 'yes' as flavour 2014-03-21 19:10:50 +01:00
Daniel Martí
c63fef2af3 Don't crash when using gradle=yes 2014-03-19 17:25:57 +01:00
Daniel Martí
0b50566f0f Add "Update Check Name" for Tags/RM apps that programmatically change their appid 2014-03-18 23:37:15 +01:00
Daniel Martí
167d9df3a0 Support auto names on gradle projects 2014-03-18 15:44:39 +01:00
Daniel Martí
d570422f6d Make SilentPopen use FDroidPopen, switch a few from silent to regular 2014-03-18 12:47:35 +01:00
Daniel Martí
b94a772ad9 Print version names and srclibs for reference 2014-03-18 12:46:40 +01:00
Daniel Martí
03975808a3 A couple more rules for lint 2014-03-18 12:26:24 +01:00
Daniel Martí
f8805d88ae Make "reading config.py" a debug print 2014-03-18 12:20:51 +01:00
Daniel Martí
d5c62d3bbd Separate lint messages into warnings and pedantic warnings 2014-03-18 12:20:40 +01:00
Daniel Martí
945d8b126f Properly use logging.warn in some places 2014-03-18 08:22:36 +01:00
Daniel Martí
5d6baedbc9 Try to fix <pre> issues on large lastbuilds 2014-03-17 14:52:01 +01:00
Daniel Martí
6cdf509c9e Capitalize gradle flavour commands to avoid confusion 2014-03-17 14:37:57 +01:00
Daniel Martí
9014206b76 Properly identify jar files 2014-03-16 23:38:00 +01:00
Ciaran Gultnieks
93987eac17 Correction to 6b309aff 2014-03-16 22:34:13 +00:00
Ciaran Gultnieks
6b309aff41 Don't use an autoname if it's not found 2014-03-16 22:12:37 +00:00
Ciaran Gultnieks
f2a1a83455 Don't look for strings in unrelated projects 2014-03-16 08:43:54 +00:00
Ciaran Gultnieks
e642561676 Extra debug logging for autoname gathering 2014-03-16 08:43:24 +00:00
Ciaran Gultnieks
44e9ee436b Simplify/unify checkupdates file write and commit message 2014-03-16 08:22:35 +00:00
Ciaran Gultnieks
e6842d0078 Formatting 2014-03-15 17:28:34 +00:00
Ciaran Gultnieks
99bf37302a Don't skip checkupdates commits due to no message 2014-03-15 17:23:20 +00:00
Daniel Martí
9962074cf3 Also strip project.properties of ant keysigning options 2014-03-13 10:31:22 +01:00
Daniel Martí
13c79e8e46 Fix buildserver build_tools version 2014-03-11 17:37:42 +01:00
Daniel Martí
7f1acadaf1 Properly default to the highest version of gradle 2014-03-11 17:33:19 +01:00
Daniel Martí
fa0f9bf1af Treat None and Static UCMs equally when doing checkupdates 2014-03-11 09:03:18 +01:00
Ciaran Gultnieks
d4d7a9957d Clarify non-auto-update error message 2014-03-11 07:55:46 +00:00
Ciaran Gultnieks
0b31a7a37c Don't do autoname when update checking is disabled
Much of that stuff has checking set to None because the source repo is
not accessible. Attempting to pull it is just filling logs with
exception messages which are likely to be masking real errors.
2014-03-11 07:53:30 +00:00
Daniel Martí
06d75f8473 Always write Auto Name changes 2014-03-11 08:32:10 +01:00
Daniel Martí
524404db61 Bump default build-tools version 2014-03-09 23:11:10 +01:00
Daniel Martí
426d85d0b8 Bump build-tools version 2014-03-07 15:38:24 +01:00
Daniel Martí
fa7b9690ec Clean up the gradle script a bit 2014-03-07 15:37:14 +01:00
Daniel Martí
3003695053 Bump sdk to 22.6 2014-03-07 15:21:28 +01:00
Daniel Martí
c76d2321f3 Add support for gradle 1.11 (and plugin ver 0.9) 2014-03-07 15:21:18 +01:00
Daniel Martí
0709df985f Update BV notation in the manual 2014-03-06 11:10:54 +01:00
Daniel Martí
19c99feb16 Don't reset a repo if its .fdroidvcs file ends with a newline 2014-03-05 13:22:58 +01:00
Daniel Martí
496d3d1650 Remove gradle wrapper binaries and scripts 2014-03-05 12:32:58 +01:00
Ciaran Gultnieks
2a7e0f4abe Same again, for native code message 2014-03-04 23:55:55 +00:00
Ciaran Gultnieks
50ee21727a Improve min/max sdk messages in repo browser 2014-03-04 23:51:26 +00:00
Ciaran Gultnieks
a7cdc69dae Fix for 28773ea 2014-03-04 23:46:25 +00:00
Ciaran Gultnieks
a082b3c631 Minor typo fix 2014-03-04 23:36:50 +00:00
Ciaran Gultnieks
78bee1990c Remove apks with no metadata (unless told to create it) 2014-03-04 23:36:50 +00:00
Daniel Martí
28773ea7de Add basic support for min/max sdk on the web repo 2014-03-04 09:22:16 +01:00
Daniel Martí
fc09d23ad0 Add basic support for abis on the web repo 2014-03-04 09:21:58 +01:00
Daniel Martí
67d75e550b Don't add an extra space to git svn clone 2014-03-02 13:39:48 +01:00
Daniel Martí
d7ca28bbbe Fix gradle patching in a more generic way 2014-02-28 11:27:10 +01:00
Ciaran Gultnieks
9d59184d94 Fix a few build-time logging levels 2014-02-27 08:55:06 +00:00
Ciaran Gultnieks
c1df8b5bef Correct error in 8d95091f 2014-02-26 15:18:28 +00:00
Ciaran Gultnieks
8d95091f4d Set ssh logging level appropriately 2014-02-25 12:46:32 +00:00
Ciaran Gultnieks
a6c1b33a8c Remove unused import 2014-02-25 12:46:22 +00:00
Ciaran Gultnieks
76492ee9da Correction to bb16e37 2014-02-23 22:37:10 +00:00
Ciaran Gultnieks
a8cf0fa724 Fix stats (broken in f3db000) 2014-02-23 22:34:27 +00:00
Daniel Martí
e13b483d99 Speed up ndk-builds by using all cores 2014-02-23 23:33:19 +01:00
Daniel Martí
a4ab105234 Look for strings in all xml dirs properly 2014-02-23 20:09:42 +01:00
Daniel Martí
858f89e3ac Update build-tools to 19.0.2 2014-02-23 12:21:28 +01:00
Daniel Martí
45bd80634c Fix srclib 'Srclibs:' regression 2014-02-23 11:57:03 +01:00
Daniel Martí
6cd34a1d21 Better gradle signingConfig patching
This fixes the building of impeller 0.8.7
2014-02-23 11:54:58 +01:00
Ciaran Gultnieks
5cd47137dd Improved some logging levels for stats 2014-02-22 10:05:07 +00:00
Ciaran Gultnieks
bb16e37a24 Improve checkupdates output further 2014-02-22 10:03:19 +00:00
Ciaran Gultnieks
cb92ea1598 Fixed some logging levels for wiki update, apk cache, etc 2014-02-22 10:00:29 +00:00
Ciaran Gultnieks
37dda9414c Add --quiet option, restricting output to warnings/errors 2014-02-22 09:46:24 +00:00
Ciaran Gultnieks
5920d636dc Fix some checkupdates logging levels 2014-02-22 09:32:29 +00:00
Ciaran Gultnieks
75b787b9ce Revert "Avoid auto-name exception noise"
This reverts commit ce8bca7971.
2014-02-22 09:13:00 +00:00
Ciaran Gultnieks
ce8bca7971 Avoid auto-name exception noise 2014-02-22 09:11:50 +00:00
Daniel Martí
01ccc54b29 Update complete AM.xml file from master as of February 20th 2014
Taken from:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/AndroidManifest.xml
2014-02-20 20:52:17 +01:00
Ciaran Gultnieks
9f333fafa7 Fix list/grid switching retaining page 2014-02-20 10:43:15 +00:00
Daniel Martí
f2aaf9e928 Add support for AGPL, LGPL and WTFPL in the web client 2014-02-20 10:34:13 +01:00
Ciaran Gultnieks
b56cc26b16 Fix search/category change retaining page 2014-02-20 09:29:00 +00:00
Daniel Martí
4dec28e0bc Fix dumb wp-fdroid added bug 2014-02-20 09:25:39 +01:00
Daniel Martí
2ff3308f84 Fix writing of categories 2014-02-19 18:09:54 +01:00
Daniel Martí
8888cd6339 Add support for maxSdkVersion, bump index version integer 2014-02-19 17:30:06 +01:00
Daniel Martí
32ae8bc565 Don't auto update apps with the latest build disabled 2014-02-19 11:05:55 +01:00
Daniel Martí
0c2104039b Iterate over srclib Srclibs with indexes properly 2014-02-19 10:27:46 +01:00
Daniel Martí
3483bad392 Make app['Categories'] a list, get unique categories via a set 2014-02-19 10:27:38 +01:00
Daniel Martí
be7c6aceec Do the rest of the stats with counters too 2014-02-19 10:03:42 +01:00
Daniel Martí
f3db0003e7 Use Counter objects when processing logs
This should somewhat speed things up, and makes the code simpler
2014-02-19 09:59:44 +01:00
Daniel Martí
27c0caba60 Fix bash-completion header 2014-02-19 01:22:38 +01:00
Daniel Martí
9d8c576cb1 Don't use logging before it's set up 2014-02-19 01:14:40 +01:00
Daniel Martí
687057a473 Implement proper fdroid --help 2014-02-19 00:38:09 +01:00
Daniel Martí
a1d85e32f1 Some JARs have zip mimetype 2014-02-18 16:16:46 +01:00
Daniel Martí
3f485e509f git-svn fix: run fetch to actually get new tags and branches 2014-02-18 10:34:49 +01:00
Daniel Martí
b9728b2980 Warn about zip files like with jar files 2014-02-18 08:32:35 +01:00
Daniel Martí
d185e04d9e Also catch compiled java classes in the scanner 2014-02-18 08:32:16 +01:00
Daniel Martí
e1581d0d38 Catch all jar files 2014-02-18 08:25:30 +01:00
Daniel Martí
15f2eada8e Move config.py keystore checks to after vars have been expanded 2014-02-17 20:04:39 +01:00
Daniel Martí
263731e9bc Complain if buildjni is used but the NDK isn't available 2014-02-17 20:03:55 +01:00
Daniel Martí
f6ffbb5997 Small config fixes 2014-02-17 20:01:55 +01:00
Daniel Martí
f6f23030e2 Move config.buildserver.py into buildserver subdir 2014-02-17 19:16:14 +01:00
moparisthebest
8e40b59c00 Support both debian's and pypi's python-magic libraries, which are different... 2014-02-16 22:42:16 -05:00
Daniel Martí
9fb006b567 Remove python-magic pip dep to avoid magic modules confusion
We use the one from the 'file' package, not the standalone one found on PIP.
2014-02-17 17:26:32 +01:00
Daniel Martí
b752aff8ed Don't crash if an apk got built without source (e.g. with --no-tarball) 2014-02-17 16:51:42 +01:00
Daniel Martí
d192b40687 Can't update an app if there is no CV 2014-02-17 16:51:22 +01:00
Daniel Martí
9064942d06 Remove leftover debug prints 2014-02-17 15:42:21 +01:00
Daniel Martí
a051ea9b93 Don't send a string as cmds to SilentPopen
Also, rm= checks for the validity of the paths. That's not useful, since one
could easily do "init=rm -rf ." without that same error popping up.
2014-02-17 14:59:55 +01:00
Daniel Martí
8533b8c44e Continue using FDroidPopen and SilentPopen more, support shell= 2014-02-17 13:30:11 +01:00
Daniel Martí
cc0943777e Start implementing SilentPopen 2014-02-17 13:12:25 +01:00
Daniel Martí
0ecd5172b1 Make the 'update' flag a list too 2014-02-17 13:09:44 +01:00
Daniel Martí
f894ac3b29 Docs '@' fix 2014-02-17 13:06:13 +01:00
Daniel Martí
63d7cbee9f Fix a buildjni regression 2014-02-17 13:04:39 +01:00
Daniel Martí
aa4fec9ca1 Remove stdin from FDroidPopen 2014-02-17 11:23:53 +01:00
Daniel Martí
517ce3a274 Don't git reset if nothing is to be done 2014-02-17 08:26:29 +01:00
Daniel Martí
898e4485c2 Add another build option to skip source scanning
It can be very slow on large source code dirs, and if one is trying to get an
application building and the scan already succeeded once, running it again and
again is a waste of time.
2014-02-16 17:40:54 +01:00
Ciaran Gultnieks
cb3a08ff4b Improve build output situation since logging changes 2014-02-15 23:27:19 +00:00
Ciaran Gultnieks
995e5c84f0 Minor docs typo fix 2014-02-15 23:26:45 +00:00
Daniel Martí
ea4190e241 Also strip comma-separated build flags 2014-02-15 11:00:19 +01:00
Daniel Martí
67acf4c3fc buildjni is a list field too, some server fixes 2014-02-15 10:56:35 +01:00
Daniel Martí
d0cde659ca Let the no such package logs in first 2014-02-15 00:40:25 +01:00
Daniel Martí
8b5d510fe2 Append apk dates on the same line as verison names 2014-02-15 00:10:40 +01:00
Daniel Martí
adaa460082 readmeta doesn't take any arguments 2014-02-15 00:00:05 +01:00
Daniel Martí
a49f04a947 Minor fixes to lint.py 2014-02-14 23:59:39 +01:00
Daniel Martí
7f2c0e27ca Unify Build and Buildv2 parsing into one
Fixes:

* Buildv2 errors
* Buildv2 now checks with ordered_flags like Build
* Build now has more descriptive exceptions like Buildv2
2014-02-14 18:33:00 +01:00
Daniel Martí
0da4667bad Don't clean the main ant project twice 2014-02-13 09:19:26 +01:00
Daniel Martí
c2963c9cde Prettier fd-commit indenting 2014-02-13 08:17:58 +01:00
Hans-Christoph Steiner
b706ec986f lint.py: add checks for https:// in various URLs
Many times, the http:// URL automatically redirects to https://, like with
github and gitorious.  For git repos, using https:// reduces metadata
leakage for more privacy, and increases the security a little bit.  For SVN
repos, using https:// is much more important since the repo format itself
does not provide the same level of verification as git, hg, etc. do.
2014-02-12 22:43:27 -05:00
Daniel Martí
24c9232398 Have all multi-value build flags work similarly
Semicolons are still supported, but commas are now the better standard.
2014-02-12 11:15:19 +01:00
Daniel Martí
5125b52e39 Remove fixapos and fixtrans
These are legacy fixes for very old versions of the Android SDK tools. These
issues have been fixed in stable versions for years.
2014-02-12 10:23:02 +01:00
Daniel Martí
7309b3c198 Show <filename>:<line> when complaining about metadata errors 2014-02-11 20:48:14 +01:00
Daniel Martí
e5539303ff Get rid of all the debugging flags, not just the ones in the main project 2014-02-11 17:56:36 +01:00
Daniel Martí
255d4a03ef 'Category' isn't accepted, so don't do backwards support of it 2014-02-11 17:08:58 +01:00
Daniel Martí
25d22fdd3f Remove update=force
It is broken (doesn't support auto or multiple paths), generally useless and
builds using it can easily be fixed via init=rm -f build.xml
2014-02-11 16:46:54 +01:00
Daniel Martí
f7c77ac584 Move project updating to after prebuild (and before clean+build)
With this, the legacy echos of android.library.reference... work with
update=auto again.
2014-02-11 16:30:49 +01:00
Daniel Martí
2f1094b5cc Deprecate "Update Project" in favour of update=auto 2014-02-11 16:30:44 +01:00
Daniel Martí
ff8fa2305e Update ant projects more elegantly 2014-02-11 16:26:06 +01:00
Daniel Martí
86aa3d1530 Fix Tags <pattern> stats 2014-02-11 08:47:47 +01:00
Daniel Martí
0cef32a407 Small automatic ant updating rewrite
* Support two levels of subprojects
* Do lower level libraries first, doing '.' last
* Run 'ant clean' AFTER android update, since a missing build.xml results in ant clean doing nothing
2014-02-10 23:03:02 +01:00
Daniel Martí
e5915072c0 Don't crash if cwd==None 2014-02-10 20:17:48 +01:00
Daniel Martí
6e89e68f76 Fix local.properties sdk-location inserting 2014-02-10 18:26:33 +01:00
Daniel Martí
ff87af1933 Always run normpath on cwd in FDroidPopen 2014-02-10 17:44:31 +01:00
Daniel Martí
1e80ebef6d Fix texinfo syntax 2014-02-10 16:42:04 +01:00
Daniel Martí
fd1b708ef2 Finish fixing orderings 2014-02-10 16:39:56 +01:00
Daniel Martí
098b8f433d Fix archive policy ordering 2014-02-10 16:39:04 +01:00
Daniel Martí
cc9314732f Fix auto name ordering 2014-02-10 16:35:36 +01:00
Daniel Martí
a239a60c31 Add "Tags [pattern]" doc 2014-02-10 12:36:10 +01:00
Daniel Martí
6489ef070b Add srclib numbers doc 2014-02-10 12:31:53 +01:00
Daniel Martí
24cd80ae80 Forgot a dev print (again) 2014-02-10 12:21:42 +01:00
Daniel Martí
409188a4e5 Simplify 'Tags <pattern>' by using regex on top of vcs.gettags()
This automagically enables support for pattern-based tags for all vcs types
that support Tags
2014-02-10 12:20:22 +01:00
Daniel Martí
08607a3cd4 Support UCM:Tags <pattern> using git tag -l <pattern> 2014-02-10 11:29:12 +01:00
Daniel Martí
3f0dbe232c Don't add package ids to commit messages
The package id is already in the name of the file changed, plus it makes most
commit messages too long. Also of little interest to most people.
2014-02-10 10:55:29 +01:00
Daniel Martí
dbb7f63906 Add quilt for csipsimple 2014-02-10 09:41:04 +01:00
Daniel Martí
7a70dea2c9 Also search by app id on the website 2014-02-10 09:34:25 +01:00
Daniel Martí
51fc868b5c Add swig as osmand dependency 2014-02-09 22:48:40 +01:00
Daniel Martí
083eab579f Check for subdir after doing submodules 2014-02-09 19:11:15 +01:00
Daniel Martí
d949b9ffbb Don't show INFO: when not doing verbose runs 2014-02-09 12:39:43 +01:00
Daniel Martí
ec0de6b370 Do some warnings properly 2014-02-07 21:38:28 +01:00
Daniel Martí
0b6faa5f22 Try to fix some TypeErrors 2014-02-07 21:36:19 +01:00
Daniel Martí
1f3653af15 Strip Auto Name: name to avoid extra spacing errors 2014-02-07 21:08:04 +01:00
Daniel Martí
d661b7a877 Fix UCD writing 2014-02-05 16:10:03 +01:00
Daniel Martí
e81d1da774 Support ':' in names/autonames 2014-02-05 15:33:20 +01:00
Daniel Martí
18deea2ac8 Error when extra spacings are found 2014-02-05 09:47:55 +01:00
Daniel Martí
f36e7bff29 Also check for the validity of build flags 2014-02-05 09:39:09 +01:00
Daniel Martí
56a80483e9 Make f-droid barf on unrecognised field names 2014-02-05 09:29:26 +01:00
Daniel Martí
1ff5f1b2f8 Add readmeta completion 2014-02-05 09:21:28 +01:00
Daniel Martí
b8a841a7e4 Fix vagrant popen error 2014-02-04 10:55:14 +01:00
Ciaran Gultnieks
b8e48f32f7 Partly revert c7f2cbd to make stats work again 2014-02-04 07:34:55 +00:00
Daniel Martí
49ec09a78b Add missing -v/--verbose flag to import 2014-02-03 23:38:33 +01:00
Daniel Martí
b8e5e0a0ec Revert "Reflect python imaging package change in docs"
This reverts commit 4de065fc38.
2014-02-03 23:04:37 +01:00
Daniel Martí
2efce6cc69 Revert "Switch to python-magic from PIL"
This reverts commit 8541cdf893.
2014-02-03 23:04:33 +01:00
Ciaran Gultnieks
f69dbd3e9e Revert "Switch to python-pgmagick on buildserver too"
This reverts commit f012165c69.
2014-02-03 22:01:33 +00:00
Ciaran Gultnieks
f012165c69 Switch to python-pgmagick on buildserver too 2014-02-03 21:51:22 +00:00
Daniel Martí
4de065fc38 Reflect python imaging package change in docs 2014-02-03 14:25:27 +01:00
Daniel Martí
8541cdf893 Switch to python-magic from PIL 2014-02-03 14:14:42 +01:00
Daniel Martí
7bf74d47bb Typo 2014-02-03 14:07:01 +01:00
Daniel Martí
9a4fe8c7cd Merge branch 'master' into logging 2014-02-02 19:45:17 +01:00
Daniel Martí
96c5afa03f New command: readmeta, like lint but without warnings 2014-02-02 15:11:26 +01:00
Daniel Martí
f2ca1327f4 Fix a couple copyright notices 2014-02-02 15:11:16 +01:00
Daniel Martí
18ef1b53bc Don't output when checking repo 2014-01-31 11:40:03 +01:00
Daniel Martí
5525c5cd5f Don't print cmd info if output is false 2014-01-31 09:22:30 +01:00
Daniel Martí
8b26f4b319 Merge branch 'master' into logging 2014-01-31 09:14:03 +01:00
Hans-Christoph Steiner
5cdb428a2f makebuildserver: use https uris whenever available
* pypi now defaults to https
* dl.google.com works well with https
2014-01-30 20:33:37 -05:00
Hans-Christoph Steiner
2d6f3f8cec use https URI for f-droid.org everywhere and avoid redirects
Now that f-droid.org defaults to https, use only https URIs to save
redirects and leak less info.
2014-01-30 20:32:38 -05:00
Daniel Martí
430cd42f80 Merge branch 'master' into logging
Conflicts:
	fdroidserver/common.py
2014-01-30 23:58:23 +01:00
Daniel Martí
c31d3f0581 Fix 'added' apk key 2014-01-30 09:31:44 +01:00
Daniel Martí
0f06f07b89 Forgot vorbis-tools dep for xcsoar 2014-01-30 08:44:38 +01:00
Daniel Martí
8a5b2e41f1 Forgot to remove verbose print 2014-01-30 00:17:26 +01:00
Daniel Martí
1b0fb05337 Handle dirs to be ignored in scan_source more gracefully 2014-01-30 00:16:03 +01:00
Daniel Martí
3f47b4914d Remove newline in list of pkgs to install 2014-01-29 19:11:07 +01:00
Ciaran Gultnieks
85de75e345 Centralise and improve query input validation 2014-01-29 13:44:48 +00:00
Daniel Martí
72fa1891bf Merge branch 'master' into logging
Conflicts:
	fdroidserver/build.py
2014-01-29 13:57:57 +01:00
Daniel Martí
63a0e859ff Run submodule reset and clean before update. Also do --recursive for these. 2014-01-29 12:38:21 +01:00
Daniel Martí
9fa73faf2e Add missing xcsoar deps 2014-01-29 00:55:53 +01:00
Daniel Martí
c06fafdb6f Do submodules recursively, do init and update at the same time 2014-01-28 23:49:36 +01:00
Daniel Martí
f054cf4973 Add output= into the docs 2014-01-28 22:26:20 +01:00
Daniel Martí
13bcd38372 New build flag: output= for e.g. full make builds 2014-01-28 22:15:20 +01:00
Daniel Martí
8bbe38f172 Avoid default cases in build types 2014-01-28 22:14:28 +01:00
Daniel Martí
d42dd276a0 New build option: --no-tarball 2014-01-28 22:13:18 +01:00
Daniel Martí
61dca767f4 Fix typo in fd-commit 2014-01-28 16:59:27 +01:00
Daniel Martí
2f93ba9bd6 Merge branch 'master' into logging
Conflicts:
	fdroidserver/common.py
2014-01-28 14:14:59 +01:00
Daniel Martí
d5859fab32 Fix a couple gradle python mistakes 2014-01-28 14:14:18 +01:00
Daniel Martí
3687147997 Update my own copyright notices 2014-01-28 14:07:19 +01:00
Daniel Martí
02f314b7bd Better Vercode Operation example 2014-01-28 14:03:51 +01:00
Daniel Martí
3e789bd6b5 Merge compilesdk= into target=, better documentation about target= 2014-01-28 14:01:32 +01:00
Daniel Martí
778b15322c fd-commit support for disabled updates
Also fix support for replacement builds
2014-01-28 00:00:34 +01:00
Daniel Martí
1b792c78de Remove support for 'bindir' 2014-01-27 23:43:28 +01:00
Daniel Martí
dfd0ecc740 When using placed srclibs, don't fail if proj.prop doesn't exist 2014-01-27 22:34:34 +01:00
Daniel Martí
dbb6db5bb5 Add logging to init.py, remove silly options.verbose code 2014-01-27 22:22:30 +01:00
Daniel Martí
b7a67e79b7 Forgot to actually install 1.10 via chef 2014-01-27 22:22:30 +01:00
Daniel Martí
03cc679dc8 Forgot to actually install 1.10 via chef 2014-01-27 22:03:39 +01:00
Daniel Martí
ef563f449a Fix typo 2014-01-27 21:49:29 +01:00
Daniel Martí
12506ce21d Replace legacy prints by debug logs 2014-01-27 21:49:29 +01:00
Daniel Martí
1e3c2eee25 More logging switching 2014-01-27 21:49:29 +01:00
Daniel Martí
1b743e8b74 More logging 2014-01-27 21:49:29 +01:00
Daniel Martí
e20fa9d7f4 Half-way done switching prints for logs 2014-01-27 21:49:01 +01:00
Daniel Martí
040e575b10 Add logging to verify 2014-01-27 21:49:01 +01:00
Daniel Martí
2d2d21fc38 Don't always print output in FDroidPopen when -v is given 2014-01-27 21:49:01 +01:00
Daniel Martí
df7d402ff7 More logging switching 2014-01-27 21:49:01 +01:00
Daniel Martí
c7f2cbd85b Last missing bit of Popen 2014-01-27 21:48:22 +01:00
Daniel Martí
62c3663df3 Lots more FDroidPopen replacements 2014-01-27 21:48:22 +01:00
Daniel Martí
9bc8dc95ff More switching from Popen to FDroidPopen 2014-01-27 21:48:22 +01:00
Daniel Martí
7967cfa6a6 Replace many subprocess.Popen with FDroidPopen 2014-01-27 21:48:22 +01:00
Daniel Martí
caa3d4eace Start doing logging properly 2014-01-27 21:48:22 +01:00
Ciaran Gultnieks
3f43c121e5 Revert "List future problems that a build will run into, like missing software"
This reverts commit 7beb9834a3.
2014-01-27 18:26:05 +00:00
Daniel Martí
6e537c2f37 Add gradle 1.10 with the new plugin 0.8 release 2014-01-27 13:21:44 +01:00
Daniel Martí
7beb9834a3 List future problems that a build will run into, like missing software 2014-01-26 21:50:56 +01:00
Daniel Martí
fc2c1bb1a8 More config changes
* Add the remaining defaults
* Don't always check that dirs exist
* Better sample config
2014-01-26 21:40:31 +01:00
Daniel Martí
d8fde9e855 Don't check for mvn and gradle binaries 2014-01-26 21:30:54 +01:00
Daniel Martí
c4d14ce86a Don't always require ndk_path 2014-01-26 21:28:09 +01:00
Daniel Martí
bc94f21463 Update defaults, mvn3 to mvn 2014-01-26 21:25:52 +01:00
Daniel Martí
cb11826929 Lint: don't complain if using tags and UCM is RM/branch 2014-01-26 20:42:47 +01:00
Daniel Martí
0de1efeba4 Revert "Fix possible git-svn bug"
This reverts commit 61a61824d4.
2014-01-26 20:35:58 +01:00
Daniel Martí
74a4dc7766 Keep a '=' if present, it means something in gradle 2014-01-26 17:22:48 +01:00
Daniel Martí
7125f97445 Fix buildToolsVersion patching if an = is present 2014-01-26 17:07:35 +01:00
Marcel Klehr
c200f18bf5 Fix browser search: switch back to page 1 when submitting new query 2014-01-25 14:13:37 +01:00
Daniel Martí
61a61824d4 Fix possible git-svn bug 2014-01-24 18:25:06 +01:00
Daniel Martí
6855b6c442 Don't warn about tags UCM usage if UCM:None 2014-01-24 18:25:06 +01:00
Ciaran Gultnieks
0c79ac54e6 Merge branch 'master' of gitorious.org:f-droid/fdroidserver 2014-01-24 11:56:01 +00:00
Daniel Martí
f277ba6b33 Avoid more possible crashes when invalid icons are present 2014-01-24 12:55:43 +01:00
Daniel Martí
83c3a8b68e Easier preassemble handling 2014-01-24 10:42:11 +01:00
Daniel Martí
325cca0e37 Indent properly, space the code a bit 2014-01-24 10:10:40 +01:00
أحمد المحمودي (Ahmed El-Mahmoudy)
15c0a2779a git-svn: Support <branch>/<rev> in commit field
commit=<rev> is still supported
2014-01-24 10:49:20 +02:00
Ciaran Gultnieks
80b29453a5 Fix new downloads-per-version stats 2014-01-23 23:31:03 +00:00
Ciaran Gultnieks
75cf7de7dd Merge commit 'refs/merge-requests/134' of git://gitorious.org/f-droid/fdroidserver into merge-requests/134 2014-01-23 11:17:33 +00:00
Daniel Martí
d6dbad65c6 Don't run lint on disabled apps 2014-01-23 10:54:32 +01:00
Daniel Martí
b3ef0970dc Make UCMs work for every android xml "namespace" 2014-01-23 10:52:09 +01:00
Daniel Martí
20aa416a4b Small logic fix in Update Project: 2014-01-23 10:40:23 +01:00
Daniel Martí
1e216f7f46 Don't update srclibs on their own if using them already 2014-01-23 10:34:42 +01:00
Daniel Martí
48afe5399a Dopatch and srclibs right after init 2014-01-23 10:29:04 +01:00
Daniel Martí
5a4b343a3d Add the curl package to the buildserver 2014-01-23 09:03:00 +01:00
Daniel Martí
da2bb11580 When fetching tags in git, get rid of removed ones 2014-01-22 10:38:34 +01:00
Daniel Martí
41c522319b Revert "Run android update after applying srclibs"
This reverts commit 84fc2d9831.
2014-01-21 10:14:37 +01:00
Daniel Martí
84fc2d9831 Run android update after applying srclibs 2014-01-21 00:25:23 +01:00
Daniel Martí
b4b8b0d6a3 Typo in hg handling 2014-01-20 16:14:29 +01:00
Ciaran Gultnieks
5ac41e7ca7 Lose some spurious 'apps to update' entries from wiki 2014-01-20 11:50:48 +00:00
Daniel Martí
6336de11a7 Try to skip maven tests when compiling 2014-01-20 12:22:05 +01:00
Daniel Martí
6d23119fae Also warn if UCM is None when using tags in commit= 2014-01-20 12:18:50 +01:00
Daniel Martí
2f5b029d97 Warn about unknown licenses, some extra link checks 2014-01-20 11:34:39 +01:00
Daniel Martí
e7b863ad20 Warn about incorrect bulleted lists 2014-01-20 11:15:15 +01:00
Daniel Martí
c9d8146f9e Warn about branches used in commit= 2014-01-20 11:10:00 +01:00
Daniel Martí
e19ef06671 Make lint.py somewhat more readable 2014-01-20 11:05:57 +01:00
Daniel Martí
482ae77854 Don't always raise an exception when using hg purge 2014-01-20 10:01:49 +01:00
Daniel Martí
bebadde877 --latest now goes to the last enabled build 2014-01-20 09:58:17 +01:00
Daniel Martí
228ed8eac9 Simplify hg purge workarounds 2014-01-20 00:33:31 +01:00
Daniel Martí
4e4728969f Adapt all build.gradle files inside build_dir 2014-01-20 00:33:16 +01:00
Daniel Martí
f2b25679ff Add source and issue tracker link warnings 2014-01-16 17:47:55 +01:00
Ciaran Gultnieks
66e540772f Merge branch 'master' of gitorious.org:f-droid/fdroidserver 2014-01-16 10:18:10 +00:00
Ciaran Gultnieks
874565fb73 Don't split stdout/stderr
For the most part, doing this just makes build output incomprehensible,
with errors appearing out of context.
2014-01-16 10:17:22 +00:00
Ciaran Gultnieks
450685fe2f Resolve some missing wiki category issues 2014-01-16 08:58:49 +00:00
Ciaran Gultnieks
757505162f Clarify 'Web Site' documentation 2014-01-16 08:44:56 +00:00
Daniel Martí
06668ab1cd Run adapt_gradle before running gradle clean 2014-01-16 00:20:26 +01:00
Daniel Martí
f8089d3b9e Allow comma-separated list of flavours in gradle= 2014-01-16 00:14:23 +01:00
Florian Schmaus
fd28c0dca5 stats.py: Create downloads stats for app and version 2014-01-08 16:56:33 +01:00
1083 changed files with 260612 additions and 14563 deletions

3
.bandit Normal file
View file

@ -0,0 +1,3 @@
[bandit]
skips: B110,B404,B408,B603,B607,B322
targets: .

15
.editorconfig Normal file
View file

@ -0,0 +1,15 @@
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[**.py]
indent_style = space
indent_size = 4
[.gitlab-ci.yml]
indent_style = space
indent_size = 2

77
.gitignore vendored
View file

@ -1,8 +1,79 @@
/config.py
/makebs.config.py
*~
*.pyc
*.class
*.box
TAGS
.idea
.ropeproject/
# files generated by build
FDroidServer.egg-info/
/build/
/dist/
env/
ENV/
/fdroidserver.egg-info/
pylint.parseable
/.testfiles/
README.rst
/.eggs/
# editor tmp files
.*.swp
.ropeproject/
# files generated by tests
tmp/
/tests/repo/icons*
/tests/repo/status
# files used in manual testing
/config.yml
/tmp/
/logs/
/metadata/
/makebs.config.py
makebuildserver.config.py
/tests/.fdroid.keypass.txt
/tests/.fdroid.keystorepass.txt
/tests/.java.security
/tests/fdroid-icon.png
/tests/OBBMainOldVersion.apk
/tests/OBBMainPatchCurrent.apk
/tests/OBBMainTwoVersions.apk
/tests/archive/categories.txt
/tests/archive/diff/[1-9]*.json
/tests/archive/entry.jar
/tests/archive/entry.json
/tests/archive/icons*
/tests/archive/index-v1.jar
/tests/archive/index-v1.json
/tests/archive/index-v2.json
/tests/archive/index.css
/tests/archive/index.html
/tests/archive/index.jar
/tests/archive/index.png
/tests/archive/index.xml
/tests/archive/index_unsigned.jar
/tests/metadata/org.videolan.vlc/en-US/icon*.png
/tests/repo/diff/[1-9]*.json
/tests/repo/index.css
/tests/repo/index.html
/tests/repo/index.jar
/tests/repo/index.png
/tests/repo/index_unsigned.jar
/tests/repo/index-v1.jar
/tests/repo/info.guardianproject.urzip/
/tests/repo/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.png
/tests/repo/info.guardianproject.checkey/en-US/phoneScreenshots/checkey.png
/tests/repo/obb.mainpatch.current/en-US/featureGraphic_ffhLaojxbGAfu9ROe1MJgK5ux8d0OVc6b65nmvOBaTk=.png
/tests/repo/obb.mainpatch.current/en-US/icon_WI0pkO3LsklrsTAnRr-OQSxkkoMY41lYe2-fAvXLiLg=.png
/tests/repo/org.videolan.vlc/en-US/icon_yAfSvPRJukZzMMfUzvbYqwaD1XmHXNtiPBtuPVHW-6s=.png
/tests/urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234.apk
/tests/virustotal/
/unsigned/
# generated by gettext
locale/*/LC_MESSAGES/fdroidserver.mo
# sphinx
public/

854
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,854 @@
---
# Use merge request pipelines when a merge request is open for the branch.
# Use branch pipelines when a merge request is not open for the branch.
# https://docs.gitlab.com/ci/yaml/workflow/#switch-between-branch-pipelines-and-merge-request-pipelines
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
stages:
- lint
- test # default for jobs that do not specify stage:
- deploy
variables:
pip: pip3 --timeout 100 --retries 10
# speed up git checkout phase
GIT_DEPTH: 1
# Run the whole test suite in an environment that is like the
# buildserver guest VM. This installs python3-babel because that is
# only used by the test suite, and not needed in the buildserver.
#
# Some extra packages are required for this test run that are not
# provided by the buildserver since they are not needed there:
# * python3-babel for compiling localization files
# * gnupg-agent for the full signing setup
# * python3-clint for fancy progress bars for users
# * python3-pycountry for linting config/mirrors.yml
buildserver run-tests:
image: registry.gitlab.com/fdroid/fdroidserver:buildserver
script:
- apt-get update
- apt-get install gnupg-agent python3-babel python3-biplist python3-clint python3-pycountry
- ./tests/run-tests
# make sure that translations do not cause stacktraces
- cd $CI_PROJECT_DIR/locale
- for locale in *; do
test -d $locale || continue;
for cmd in `sed -n 's/.*("\(.*\)", *_.*/\1/p' $CI_PROJECT_DIR/fdroid`; do
LANGUAGE=$locale $CI_PROJECT_DIR/fdroid $cmd --help > /dev/null;
done
done
# Test that the parsing of the .yml metadata format didn't change from last
# released version. This uses the commit ID of the release tags,
# rather than the release tag itself so that contributor forks do not
# need to include the tags in them for this test to work.
#
# The COMMIT_ID should be bumped after each release, so that the list
# of sed hacks needed does not continuously grow.
metadata_v0:
image: registry.gitlab.com/fdroid/fdroidserver:buildserver
variables:
GIT_DEPTH: 1000
RELEASE_COMMIT_ID: 50aa35772b058e76b950c01e16019c072c191b73 # after switching to `git rev-parse`
script:
- git fetch https://gitlab.com/fdroid/fdroidserver.git $RELEASE_COMMIT_ID
- cd tests
- export GITCOMMIT=$(git rev-parse HEAD)
- git checkout $RELEASE_COMMIT_ID
- cd ..
- git clone --depth 1 https://gitlab.com/fdroid/fdroiddata.git
- rm -f fdroiddata/config.yml # ignore config for this test
- cd fdroiddata
- ../tests/dump_internal_metadata_format.py
- cd ..
- git reset --hard
- git checkout $GITCOMMIT
- cd fdroiddata
- ../tests/dump_internal_metadata_format.py
- sed -i
-e '/ArchivePolicy:/d'
-e '/FlattrID:/d'
-e '/RequiresRoot:/d'
metadata/dump_*/*.yaml
- diff -uw metadata/dump_*
.apt-template: &apt-template
variables:
DEBIAN_FRONTEND: noninteractive
LANG: C.UTF-8
before_script:
- echo Etc/UTC > /etc/timezone
- echo 'APT::Install-Recommends "0";'
'APT::Install-Suggests "0";'
'APT::Get::Assume-Yes "true";'
'Acquire::Retries "20";'
'Dpkg::Use-Pty "0";'
'quiet "1";'
>> /etc/apt/apt.conf.d/99gitlab
# Ubuntu and other distros often lack https:// support
- grep Debian /etc/issue.net
&& { find /etc/apt/sources.list* -type f | xargs sed -i s,http:,https:, ; }
# The official Debian docker images ship without ca-certificates,
# TLS certificates cannot be verified until that is installed. The
# following code turns off TLS verification, and enables HTTPS, so
# at least unverified TLS is used for apt-get instead of plain
# HTTP. Once ca-certificates is installed, the CA verification is
# enabled by removing this config. This set up makes the initial
# `apt-get update` and `apt-get install` look the same as verified
# TLS to the network observer and hides the metadata.
- echo 'Acquire::https::Verify-Peer "false";' > /etc/apt/apt.conf.d/99nocacertificates
- apt-get update
- apt-get install ca-certificates
- rm /etc/apt/apt.conf.d/99nocacertificates
- apt-get dist-upgrade
# For jobs that only need to run when there are changes to Python files.
.python-rules-changes: &python-rules-changes
rules:
- changes:
- .gitlab-ci.yml
- fdroid
- makebuildserver
- setup.py
- fdroidserver/*.py
- tests/*.py
# Since F-Droid uses Debian as its default platform, from production
# servers to CI to contributor machines, it is important to know when
# changes in Debian break our stuff. This tests against the latest
# dependencies as they are included in Debian.
debian_testing:
image: debian:testing
<<: *apt-template
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_PROJECT_PATH == "fdroid/fdroidserver"
script:
- apt-get install
aapt
androguard
apksigner
dexdump
fdroidserver
git
gnupg
ipfs-cid
python3-biplist
python3-defusedxml
python3-libcloud
python3-pycountry
python3-setuptools
sdkmanager
- python3 -c 'import fdroidserver'
- python3 -c 'import androguard'
- python3 -c 'import sdkmanager'
- cd tests
- ./run-tests
# Test using latest LTS set up with the PPA, including Recommends.
ubuntu_lts_ppa:
image: ubuntu:latest
<<: *apt-template
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_PROJECT_PATH == "fdroid/fdroidserver"
script:
- export ANDROID_HOME=/usr/lib/android-sdk
- apt-get install gnupg
- while ! apt-key adv --keyserver keyserver.ubuntu.com --recv-key 9AAC253193B65D4DF1D0A13EEC4632C79C5E0151; do sleep 15; done
- export RELEASE=$(sed -n 's,^Suites\x3a \([a-z]*\).*,\1,p' /etc/apt/sources.list.d/*.sources | head -1)
- echo "deb http://ppa.launchpad.net/fdroid/fdroidserver/ubuntu $RELEASE main" >> /etc/apt/sources.list
- apt-get update
- apt-get dist-upgrade
- apt-get install --install-recommends
dexdump
fdroidserver
git
python3-biplist
python3-pycountry
python3-setuptools
sdkmanager
# Test things work with a default branch other than 'master'
- git config --global init.defaultBranch thisisnotmasterormain
- cd tests
- ./run-tests
# Test to see how rclone works with S3
test_deploy_to_s3_with_rclone:
image: debian:bookworm-slim
<<: *apt-template
tags:
- saas-linux-small-amd64 # the shared runners are known to support Docker.
services:
- name: docker:dind
command: ["--tls=false"]
variables:
DOCKER_HOST: "tcp://docker:2375"
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
before_script:
# ensure minio is up before executing tests
- apt-get update
- apt-get install -y
androguard
apksigner
curl
docker.io
git
python3-venv
rclone
# This job requires working docker but will silently fail if docker is not available
- docker info
- python3 -m venv --system-site-packages test-venv
- . test-venv/bin/activate
- pip install testcontainers[minio]
- pip install .
script:
- python3 -m unittest -k test_update_remote_storage_with_rclone --verbose
rules:
- changes:
- .gitlab-ci.yml
- fdroidserver/deploy.py
- tests/test_deploy.py
- tests/test_integration.py
# Test using Ubuntu/jammy LTS (supported til April, 2027) with depends
# from pypi and sdkmanager. The venv is used to isolate the dist
# tarball generation environment from the clean install environment.
ubuntu_jammy_pip:
image: ubuntu:jammy
<<: *apt-template
script:
- apt-get install git default-jdk-headless python3-pip python3-venv rsync
# setup venv to act as release build machine
- python3 -m venv sdist-env
- . sdist-env/bin/activate
- ./setup.py sdist
- deactivate
- tar tzf dist/fdroidserver-*.tar.gz
# back to bare machine to act as user's install machine
- export ANDROID_HOME=/opt/android-sdk
- $pip install sdkmanager
- sdkmanager 'build-tools;35.0.0'
# Install extras_require.optional from setup.py
- $pip install biplist pycountry
- $pip install dist/fdroidserver-*.tar.gz
- tar xzf dist/fdroidserver-*.tar.gz
- cd fdroidserver-*
- export PATH=$PATH:$ANDROID_HOME/build-tools/35.0.0
- fdroid=`which fdroid` ./tests/run-tests
# check localization was properly installed
- LANGUAGE='de' fdroid --help | grep 'Gültige Befehle sind'
# Run all the various linters and static analysis tools.
hooks/pre-commit:
stage: lint
image: debian:bookworm-slim
variables:
LANG: C.UTF-8
script:
- apt-get update
- apt-get -y install --no-install-recommends
bash
ca-certificates
dash
gcc
git
make
pycodestyle
pyflakes3
python3-dev
python3-git
python3-nose
python3-pip
python3-yaml
- ./hooks/pre-commit
bandit:
image: debian:bookworm-slim
<<: *python-rules-changes
<<: *apt-template
script:
- apt-get install python3-pip
- $pip install --break-system-packages bandit
- bandit -r -ii --ini .bandit
pylint:
stage: lint
image: debian:bookworm-slim
<<: *python-rules-changes
<<: *apt-template
script:
- apt-get install pylint python3-pip
- $pip install --break-system-packages pylint-gitlab
- pylint --output-format=colorized,pylint_gitlab.GitlabCodeClimateReporter:pylint-report.json
fdroid
makebuildserver
setup.py
fdroidserver/*.py
tests/*.py
artifacts:
reports:
codequality: pylint-report.json
when: always
shellcheck:
stage: lint
image: debian:bookworm-slim
rules:
- changes:
- .gitlab-ci.yml
- hooks/install-hooks.sh
- hooks/pre-commit
- tests/run-tests
<<: *apt-template
script:
- apt-get install shellcheck
# TODO GitLab Code Quality report https://github.com/koalaman/shellcheck/issues/3155
- shellcheck --exclude SC2046,SC2090 --severity=warning --color
hooks/install-hooks.sh
hooks/pre-commit
tests/run-tests
# Check all the dependencies in Debian to mirror production. CVEs are
# generally fixed in the latest versions in pip/pypi.org, so it isn't
# so important to scan that kind of install in CI.
# https://docs.safetycli.com/safety-docs/installation/gitlab
safety:
image: debian:bookworm-slim
rules:
- if: $SAFETY_API_KEY
changes:
- .gitlab-ci.yml
- .safety-policy.yml
- pyproject.toml
- setup.py
<<: *apt-template
variables:
LANG: C.UTF-8
script:
- apt-get install
fdroidserver
python3-biplist
python3-pip
python3-pycountry
- $pip install --break-system-packages .
- $pip install --break-system-packages safety
- python3 -m safety --key "$SAFETY_API_KEY" --stage cicd scan
# TODO tests/*/*/*.yaml are not covered
yamllint:
stage: lint
image: debian:bookworm-slim
rules:
- changes:
- .gitlab-ci.yml
- .safety-policy.yml
- .yamllint
- tests/*.yml
- tests/*/*.yml
- tests/*/*/.*.yml
<<: *apt-template
variables:
LANG: C.UTF-8
script:
- apt-get install yamllint
- yamllint
.gitlab-ci.yml
.safety-policy.yml
.yamllint
tests/*.yml
tests/*/*.yml
tests/*/*/.*.yml
locales:
stage: lint
image: debian:bookworm-slim
variables:
LANG: C.UTF-8
script:
- apt-get update
- apt-get -y install --no-install-recommends
gettext
make
python3-babel
- export EXITVALUE=0
- function set_error() { export EXITVALUE=1; printf "\x1b[31mERROR `history|tail -2|head -1|cut -b 6-500`\x1b[0m\n"; }
- make -C locale compile || set_error
- rm -f locale/*/*/*.mo
- pybabel compile --domain=fdroidserver --directory locale 2>&1 | { grep -F "error:" && exit 1; } || true
- exit $EXITVALUE
black:
stage: lint
image: debian:bookworm-slim
<<: *apt-template
script:
- apt-get install black
- black --check --diff --color $CI_PROJECT_DIR
fedora_latest:
image: fedora:39 # support ends on 2024-11-12
script:
# tricks to hopefully make runs more reliable
- echo "timeout=600" >> /etc/dnf/dnf.conf
- echo "retries=50" >> /etc/dnf/dnf.conf
- echo "keepcache=True" >> /etc/dnf/dnf.conf
- dnf -y update || dnf -y update
- dnf -y install @development-tools
diffutils
findutils
git
gnupg
java-17-openjdk-devel
openssl
python3
python3-babel
python3-matplotlib
python3-pip
python3-pycountry
rsync
which
- $pip install sdkmanager
- ./setup.py sdist
- useradd -m -c "test account" --password "fakepassword" testuser
- su testuser --login --command "cd `pwd`; $pip install --user dist/fdroidserver-*.tar.gz"
- test -e ~testuser/.local/share/locale/de/LC_MESSAGES/fdroidserver.mo
- export BUILD_TOOLS_VERSION=`sed -n "s,^MINIMUM_APKSIGNER_BUILD_TOOLS_VERSION\s*=\s*['\"]\(.*\)[['\"],\1,p" fdroidserver/common.py`
- export ANDROID_HOME=`pwd`/android-sdk
- mkdir -p $ANDROID_HOME/licenses/
- printf "\n8933bad161af4178b1185d1a37fbf41ea5269c55\nd56f5187479451eabf01fb78af6dfcb131a6481e\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > $ANDROID_HOME/licenses/android-sdk-license
- printf "\n84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-license
- printf "\n79120722343a6f314e0719f863036c702b0e6b2a\n84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-license-old
- mkdir ~/.android
- touch ~/.android/repositories.cfg
- sdkmanager "platform-tools" "build-tools;$BUILD_TOOLS_VERSION"
- chown -R testuser .
- cd tests
- su testuser --login --command
"cd `pwd`; export CI=$CI ANDROID_HOME=$ANDROID_HOME; fdroid=~testuser/.local/bin/fdroid ./run-tests"
macOS:
tags:
- saas-macos-medium-m1
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_PROJECT_PATH == "fdroid/fdroidserver"
script:
- export HOMEBREW_CURL_RETRIES=10
- brew update > /dev/null
- brew upgrade
- brew install fdroidserver
# Android SDK and Java JDK
- brew install --cask android-commandlinetools temurin # temurin is a JDK
# test suite dependencies
- brew install bash coreutils gnu-sed
# TODO port tests/run-tests to POSIX and gsed, it has a couple GNU-isms like du --bytes
- export PATH="$(brew --prefix fdroidserver)/libexec/bin:$(brew --prefix coreutils)/libexec/gnubin:$PATH"
- brew autoremove
- brew info fdroidserver
- export BUILD_TOOLS_VERSION=`gsed -n "s,^MINIMUM_APKSIGNER_BUILD_TOOLS_VERSION\s*=\s*['\"]\(.*\)[['\"],\1,p" fdroidserver/common.py`
- export ANDROID_HOME="$(brew --prefix)/share/android-commandlinetools"
- mkdir -p "$ANDROID_HOME/licenses"
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "$ANDROID_HOME/licenses/android-sdk-license"
- $(brew --prefix)/bin/sdkmanager "build-tools;$BUILD_TOOLS_VERSION"
- echo "macOS sticks with bash 3.x because of licenses, so avoid new bash syntax"
- /bin/bash --version
- /bin/bash -n tests/run-tests
# test fdroidserver from git with current package's dependencies
- fdroid="$(brew --prefix fdroidserver)/libexec/bin/python3 $PWD/fdroid" ./tests/run-tests
gradle:
image: debian:trixie-slim
<<: *apt-template
rules:
- changes:
- .gitlab-ci.yml
- makebuildserver
script:
- apt-get install
ca-certificates
git
python3-colorama
python3-packaging
python3-requests
- ./tests/gradle-release-checksums.py
# Run an actual build in a simple, faked version of the buildserver guest VM.
fdroid build:
image: registry.gitlab.com/fdroid/fdroidserver:buildserver
rules:
- changes:
- .gitlab-ci.yml
- fdroidserver/build.py
- fdroidserver/common.py
- fdroidserver/exception.py
- fdroidserver/metadata.py
- fdroidserver/net.py
- fdroidserver/scanner.py
- fdroidserver/vmtools.py
# for the docker: job which depends on this one
- makebuildserver
- buildserver/*
cache:
key: "$CI_JOB_NAME"
paths:
- .gradle
script:
- apt-get update
- apt-get dist-upgrade
- apt-get clean
- test -n "$fdroidserver" || source /etc/profile.d/bsenv.sh
- ln -fsv "$CI_PROJECT_DIR" "$fdroidserver"
# TODO remove sdkmanager install once it is included in the buildserver image
- apt-get install sdkmanager
- rm -rf "$ANDROID_HOME/tools" # TODO remove once sdkmanager can upgrade installed packages
- sdkmanager "tools" "platform-tools" "build-tools;31.0.0"
- git ls-remote https://gitlab.com/fdroid/fdroiddata.git master
- git clone --depth 1 https://gitlab.com/fdroid/fdroiddata.git
- cd fdroiddata
- for d in build logs repo tmp unsigned $home_vagrant/.android; do
test -d $d || mkdir $d;
chown -R vagrant $d;
done
- export GRADLE_USER_HOME=$home_vagrant/.gradle
- export fdroid="sudo --preserve-env --user vagrant
env PATH=$fdroidserver:$PATH
env PYTHONPATH=$fdroidserver:$fdroidserver/examples
env PYTHONUNBUFFERED=true
env TERM=$TERM
env HOME=$home_vagrant
fdroid"
- git -C $home_vagrant/gradlew-fdroid pull
- chown -R vagrant $home_vagrant
- chown -R vagrant $fdroidserver/.git
- chown vagrant $fdroidserver/
- chown -R vagrant .git
- chown vagrant .
# try user build
- $fdroid build --verbose --latest org.fdroid.fdroid.privileged
# try on-server build
- $fdroid build --verbose --on-server --no-tarball --latest org.fdroid.fdroid
# each `fdroid build --on-server` run expects sudo, then uninstalls it
- if dpkg --list sudo; then echo "sudo should not be still there"; exit 1; fi
- 'if [ ! -f repo/status/running.json ]; then echo "ERROR: running.json does not exist!"; exit 1; fi'
- 'if [ ! -f repo/status/build.json ]; then echo "ERROR: build.json does not exist!"; exit 1; fi'
# test the plugin API and specifically the fetchsrclibs plugin, which
# is used by the `fdroid build` job. This uses a fixed commit from
# fdroiddata because that one is known to work, and this is a CI job,
# so it should be isolated from the normal churn of fdroiddata.
plugin_fetchsrclibs:
image: debian:bookworm-slim
<<: *apt-template
rules:
- changes:
- .gitlab-ci.yml
- examples/fdroid_fetchsrclibs.py
- fdroidserver/__main__.py
script:
- apt-get install
curl
git
python3-cffi
python3-matplotlib
python3-nacl
python3-paramiko
python3-pil
python3-pip
python3-pycparser
python3-venv
- python3 -m venv --system-site-packages env
- . env/bin/activate
- export PATH="$CI_PROJECT_DIR:$PATH"
- export PYTHONPATH="$CI_PROJECT_DIR/examples"
# workaround https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1003252
- export SETUPTOOLS_USE_DISTUTILS=stdlib
- $pip install -e .
- fdroid | grep fetchsrclibs
- mkdir fdroiddata
- commitid=b9e9a077d720c86ff6fff4dbb341254cc4370b1a
- curl https://gitlab.com/fdroid/fdroiddata/-/archive/${commitid}/fdroiddata-${commitid}.tar.gz
| tar -xz --directory=fdroiddata --strip-components=1
- cd fdroiddata
- fdroid fetchsrclibs freemap.opentrail:4 --verbose
- test -d build/freemap.opentrail/.git
- test -d build/srclib/andromaps/.git
- test -d build/srclib/freemaplib/.git
- test -d build/srclib/freemaplibProj/.git
- test -d build/srclib/JCoord/.git
- test -d build/srclib/javaproj/.git
# test a full update and deploy cycle to gitlab.com
servergitmirrors:
image: debian:bookworm-slim
<<: *apt-template
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_PROJECT_PATH == "fdroid/fdroidserver"
script:
- apt-get install
default-jdk-headless
git
openssh-client
openssl
python3-cffi
python3-cryptography
python3-matplotlib
python3-nacl
python3-pil
python3-pip
python3-pycparser
python3-setuptools
python3-venv
rsync
wget
- apt-get install apksigner
- python3 -m venv --system-site-packages env
- . env/bin/activate
- export PYTHONPATH=`pwd`
- export SETUPTOOLS_USE_DISTUTILS=stdlib # https://github.com/pypa/setuptools/issues/2956
- $pip install -e .
- mkdir /root/.ssh/
- ./tests/key-tricks.py
- ssh-keyscan gitlab.com >> /root/.ssh/known_hosts
- test -d /tmp/fdroid/repo || mkdir -p /tmp/fdroid/repo
- cp tests/config.yml tests/keystore.jks /tmp/fdroid/
- cp tests/repo/com.politedroid_6.apk /tmp/fdroid/repo/
- cd /tmp/fdroid
- touch fdroid-icon.png
- printf "\nservergitmirrors\x3a 'git@gitlab.com:fdroid/ci-test-servergitmirrors-repo.git'\n" >> config.yml
- $PYTHONPATH/fdroid update --verbose --create-metadata
- $PYTHONPATH/fdroid deploy --verbose
- export DLURL=`grep -Eo 'https://gitlab.com/fdroid/ci-test-servergitmirrors-repo[^"]+' repo/index-v1.json`
- echo $DLURL
- wget $DLURL/index-v1.jar
- diff repo/index-v1.jar index-v1.jar
Build documentation:
image: debian:bookworm-slim
<<: *python-rules-changes
<<: *apt-template
script:
- apt-get install make python3-sphinx python3-numpydoc python3-pydata-sphinx-theme pydocstyle fdroidserver
- apt purge fdroidserver
# ignore vendored files
- pydocstyle --verbose --match='(?!apksigcopier|looseversion|setup|test_).*\.py' fdroidserver
- cd docs
- sphinx-apidoc -o ./source ../fdroidserver -M -e
- PYTHONPATH=.. sphinx-autogen -o generated source/*.rst
- PYTHONPATH=.. make html
artifacts:
paths:
- docs/build/html/
# this job will only run in branches called "windows" until the Windows port is complete
Windows:
tags:
- windows
rules:
- if: $CI_COMMIT_BRANCH == "windows"
script:
- Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
- choco install --no-progress -y git --force --params "/GitAndUnixToolsOnPath"
- choco install --no-progress -y python3 --version=3.10
- choco install --no-progress -y jdk8
- choco install --no-progress -y rsync
- refreshenv
- python -m pip install --upgrade babel pip setuptools
- python -m pip install -e .
- $files = @(Get-ChildItem tests\test_*.py)
- foreach ($f in $files) {
write-output $f;
python -m unittest $f;
if( $LASTEXITCODE -eq 0 ) {
write-output "SUCCESS $f";
} else {
write-output "ERROR $f failed";
}
}
# these are the tests that must pass
- python -m unittest -k
checkupdates
exception
import_subcommand
test_lint
test_metadata
test_rewritemeta
test_vcs
tests.test_init
tests.test_main
after_script:
- Copy-Item C:\ProgramData\chocolatey\logs\chocolatey.log
artifacts:
when: always
paths:
- "*.log"
allow_failure:
exit_codes: 1
pages:
image: alpine:latest
stage: deploy
script:
- cp docs/build/html public -r # GL Pages needs the files in a directory named "public"
artifacts:
paths:
- public
needs:
- job: "Build documentation"
optional: true
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # only publish pages on default (master) branch
# This job pushes the official CI docker image based on the master
# branch, so in fdroid/fdroidserver, it should only run on the master
# branch. Otherwise, tags or other branches will overwrite the docker
# image which is supposed to be what is in master.
docker:
dependencies:
- fdroid build
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_PROJECT_PATH == "fdroid/fdroidserver"
changes:
- .gitlab-ci.yml
- makebuildserver
- buildserver/*
image: docker:dind
services:
- docker:dind
variables:
RELEASE_IMAGE: $CI_REGISTRY_IMAGE:buildserver
script:
# git ref names can contain many chars that are not allowed in docker tags
- export TEST_IMAGE=$CI_REGISTRY_IMAGE:$(printf $CI_COMMIT_REF_NAME | sed 's,[^a-zA-Z0-9_.-],_,g')
- cd buildserver
- docker build -t $TEST_IMAGE --build-arg GIT_REV_PARSE_HEAD=$(git rev-parse HEAD) .
- docker tag $TEST_IMAGE $RELEASE_IMAGE
- docker tag $TEST_IMAGE ${RELEASE_IMAGE}-bookworm
- echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com
# This avoids filling up gitlab.com free tier accounts with unused docker images.
- if test -z "$FDROID_PUSH_DOCKER_IMAGE"; then
echo "Skipping docker push to save quota on your gitlab namespace.";
echo "If you want to enable the push, set FDROID_PUSH_DOCKER_IMAGE in";
echo "https://gitlab.com/$CI_PROJECT_NAMESPACE/fdroidserver/-/settings/ci_cd#js-cicd-variables-settings";
exit 0;
fi
- docker push $RELEASE_IMAGE
- docker push $RELEASE_IMAGE-bookworm
# PUBLISH is the signing server. It has a very minimal manual setup.
PUBLISH:
image: debian:bookworm-backports
<<: *python-rules-changes
script:
- apt-get update
- apt-get -qy upgrade
- apt-get -qy install --no-install-recommends -t bookworm-backports
androguard
apksigner
curl
default-jdk-headless
git
gpg
gpg-agent
python3-asn1crypto
python3-defusedxml
python3-git
python3-ruamel.yaml
python3-yaml
rsync
# Run only relevant parts of the test suite, other parts will fail
# because of this minimal base setup.
- python3 -m unittest
tests/test_gpgsign.py
tests/test_metadata.py
tests/test_publish.py
tests/test_signatures.py
tests/test_signindex.py
- cd tests
- mkdir archive
- mkdir unsigned
- cp urzip-release-unsigned.apk unsigned/info.guardianproject.urzip_100.apk
- grep '^key.*pass' config.yml | sed 's,\x3a ,=,' > $CI_PROJECT_DIR/variables
- sed -Ei 's,^(key.*pass|keystore)\x3a.*,\1\x3a {env\x3a \1},' config.yml
- printf '\ngpghome\x3a {env\x3a gpghome}\n' >> config.yml
- |
tee --append $CI_PROJECT_DIR/variables <<EOF
gpghome=$CI_PROJECT_DIR/tests/gnupghome
keystore=$CI_PROJECT_DIR/tests/keystore.jks
serverwebroot=/tmp
export gpghome keypass keystorepass keystore serverwebroot
EOF
- source $CI_PROJECT_DIR/variables
# silence warnings
- chmod 0600 config.yml config/*.yml config/*/*.yml
- chmod 0700 $gpghome
- export PATH=$CI_PROJECT_DIR:$PATH
# run signpkg.sh
- fdroid publish --verbose
- fdroid gpgsign --verbose
- rsync --progress repo/* $serverwebroot/
# run signindex.sh
- fdroid gpgsign --verbose
- fdroid signindex --verbose
- rsync --stats repo/* $serverwebroot/

2
.mailmap Normal file
View file

@ -0,0 +1,2 @@
Gregor Düster <git@gdstr.eu> FestplattenSchnitzel <festplatte.schnitzel@posteo.de>
Hans-Christoph Steiner <hans@eds.org> <hans@guardianproject.info>

55
.safety-policy.yml Normal file
View file

@ -0,0 +1,55 @@
---
version: '3.0'
scanning-settings:
max-depth: 6
exclude:
report:
dependency-vulnerabilities:
enabled: true
auto-ignore-in-report:
vulnerabilities:
52495:
reason: setuptools comes from Debian
expires: '2025-01-31'
60350:
reason: GitPython comes from Debian https://security-tracker.debian.org/tracker/CVE-2023-40267
expires: '2025-01-31'
60789:
reason: GitPython comes from Debian https://security-tracker.debian.org/tracker/CVE-2023-40590
expires: '2025-01-31'
60841:
reason: GitPython comes from Debian https://security-tracker.debian.org/tracker/CVE-2023-41040
expires: '2025-01-31'
62044:
reason: "F-Droid doesn't fetch pip dependencies directly from hg/mercurial repositories: https://data.safetycli.com/v/62044/f17/"
expires: '2025-01-31'
63687:
reason: Only affects Windows https://security-tracker.debian.org/tracker/CVE-2024-22190
expires: '2026-01-31'
67599:
reason: Only affects pip when using --extra-index-url, which is never the case in fdroidserver CI.
expires: '2026-05-31'
70612:
reason: jinja2 is not used by fdroidserver, nor any dependencies I could find via debtree and pipdeptree.
expires: '2026-05-31'
72132:
reason: We get these packages from Debian, zipp is not used in production, and its only a DoS.
expires: '2026-08-31'
72236:
reason: setuptools is not used in production to download or install packages, they come from Debian.
expires: '2026-08-31'
fail-scan-with-exit-code:
dependency-vulnerabilities:
enabled: true
fail-on-any-of:
cvss-severity:
- critical
- high
- medium
security-updates:
dependency-vulnerabilities:

5
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"recommendations": [
"ms-python.python",
]
}

21
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,21 @@
{
"python.formatting.blackArgs": [
"--config=pyproject.toml"
],
"python.formatting.provider": "black",
"python.linting.banditEnabled": true,
"python.linting.banditArgs": [
"-ii",
"--ini=.bandit",
],
"python.linting.enabled": true,
"python.linting.mypyArgs": [
"--config-file=mypy.ini"
],
"python.linting.mypyEnabled": true,
"python.linting.flake8Enabled": true,
"python.linting.pylintArgs": [
"--rcfile=.pylint-rcfile"
],
"python.linting.pylintEnabled": true,
}

3
.weblate Normal file
View file

@ -0,0 +1,3 @@
[weblate]
url = https://hosted.weblate.org/api/
translation = f-droid/fdroidserver

View file

@ -0,0 +1 @@
https://f-droid.org/funding.json

7
.yamllint Normal file
View file

@ -0,0 +1,7 @@
---
extends: default
rules:
document-start: disable
line-length: disable
truthy: disable

458
CHANGELOG.md Normal file
View file

@ -0,0 +1,458 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
## [2.5.0] - NEXT
### Removed
* deploy: `awsaccesskeyid:` and `awssecretkey:` config items removed, use the
standard env vars: `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.
## [2.4.2] - 2025-06-24
### Fixed
* nightly: fix bug that clones nightly repo to wrong location
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1672
* Sync translations for all supported languages: es pl ru
## [2.4.1] - 2025-06-23
### Added
* build: Clearer error messages when working with Git.
* verify: generate <appid>.json files that list all reports
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1632
### Fixed
* deploy: use master branch when working complete git-mirror repo
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1666
* update: use ctime/mtime to control _strip_and_copy_image runs
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1665
* update: If categories.yml only has icon:, then add name:
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1659
* update: fix handling of Triple-T 1.0.0 graphics
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1652
* update: never execute any VCS e.g. git
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1630
* config: lazyload environment variables in config.yml
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1645
* config: make localized name/description/icon optional
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1649
* lint: add repo_key_sha256 to list of valid config keys
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1643
* build: calculate all combinations of gradle flavors
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1638
* build: set SOURCE_DATE_EPOCH from app's git otherwise fdroiddata metadata file
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1653
* Sync translations for all supported languages: ca cs de fr ga ja pl pt pt_BR
pt_PT ru sq tr uk zh_Hans
### Removed
## [2.4.0] - 2025-03-25
### Added
* lint: support the base _config.yml_.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1606
### Fixed
* Expand {env: foo} config syntax to be allowed any place a string is.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1610
* Only show "unsafe permissions on config.yml" when secrets are present.
* Standardized config files on ruamel.yaml with a YAML 1.2 data format.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1611
* Brought back error when a package has multiple package types (e.g. xapk and
apk). https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1602
* Reworked test suite to be entirely based on Python unittest (thanks @mindston).
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1587
* publish/signindex/gpgsign no longer load the _qrcode_ and _requests_ modules,
and can operate without them installed.
* scanner: add bun.lock as lock file of package.json
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1615
* index: fail if user sets mirrors:isPrimary wrong
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1617
https://gitlab.com/fdroid/fdroidserver/-/issues/1125
* Sync translations for all supported languages: bo ca cs de es fr ga hu it ja
ko nb_NO pl pt pt_BR pt_PT ro ru sq sr sw tr uk zh_Hans zh_Hant
### Removed
* checkupdates: remove auto_author: config, it is no longer used.
* Purge support for the long-deprecated _config.py_ config file.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1607
## [2.3.5] - 2025-01-20
### Fixed
* Fix issue where APKs with v1-only signatures and targetSdkVersion < 30 could
be maliciously crafted to bypass AllowedAPKSigningKeys
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1588
* Ignore apksigner v33.x, it has bugs verifying APKs with v3/v3.1 sigs.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1593
* Sync translations for: ca cs de es fr ga ja pt_BR pt_PT ru sq sr uk zh_Hans
## [2.3.4] - 2024-12-12
### Fixed
* Fix localhost network tests on systems with IPv6.
* lint: only error out on missing extlib on versions not archived.
## [2.3.3] - 2024-12-11
### Added
* verify: `--clean-up-verified` to delete files used when verifying an APK if
the verification was successful.
### Fixed
* Support Python 3.13 in the full test suite.
* Sync translations for: ca de fr ja pl ro ru sr ta
* update: only generate _index.png_ when making _index.html_, allowing the repo
operator to set a different repo icon, e.g. not the QR Code.
## [2.3.2] - 2024-11-26
### Fixed
* install: fix downloading from GitHub Releases and Maven Central.
* Sync translations for: ca fa fr pt ru sr ta zh_Hant
## [2.3.1] - 2024-11-25
### Fixed
* Sync all translations for: cs de es fr ga pt_BR ru sq zh_Hans.
* Drop use of deprecated imghdr library to support Python 3.13.
* Install biplist and pycountry by default on macOS.
* Fixed running test suite out of dist tarball.
## [2.3.0] - 2024-11-21
### Added
* YAML 1.2 as native format for all _.yml_ files, including metadata and config.
* install: will now fetch _F-Droid.apk_ and install it via `adb`.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1546
* scanner: scan APK Signing Block for known block types like Google Play
Signature aka "Frosting".
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1555
* Support Rclone for deploying to many different cloud services.
* deploy: support deploying to GitHub Releases.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1471
* scanner: support libs.versions.toml
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1526
* Consider subdir for triple-t metadata discovery in Flutter apps.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1541
* deploy: added `index_only:` mode for mirroring the index to small hosting
locations. https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1420
* Support publishing repos in AltStore format.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1465
* Support indexing iOS IPA app files.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1413
* deploy: _config/mirrors.yml_ file with support for adding per-mirror metadata,
like `countryCode:`.
* Repo's categories are now set in the config files.
* lint: check syntax of config files.
* publish: `--error-on-failed` to exit when signing/verifying fails.
* scanner: `--refresh` and `refresh_config:` to control triggering a refresh of
the rule sets.
* Terminal output colorization and `--color` argument to control it.
* New languages: Catalan (ca), Irish (ga), Japanese (ja), Serbian (sr), and
Swahili (sw).
* Support donation links from `community_bridge`, `buy_me_a_coffee`.
### Fixed
* Use last modified time and file size for caching data about scanned APKs
instead of SHA-256 checksum.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1542
* `repo_web_base_url:` config for generating per-app URLs for viewing in
browsers. https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1178
* `fdroid scanner` flags WebAssembly binary _.wasm_ files.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1562
* Test suite as standard Python `unittest` setup (thanks @ghost.adh).
* scanner: error on dependency files without lock file.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1504
* nightly: finding APKs in the wrong directory. (thanks @WrenIX)
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1512
* `AllowedAPKSigningKeys` works with all single-signer APK signatures.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1466
* Sync all translations for: cs de it ko pl pt pt_BR pt_PT ro ru sq tr uk
zh_Hans zh_Hant.
* Support Androguard 4.x.
* Support Python 3.12.
### Removed
* Drop all uses of _stats/known_apks.txt_ and the `update_stats:` config key.
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1547
* The `maven:` field is now always a string, with `yes` as a legacy special
value. It is no longer treated like a boolean in any case.
* scanner: jcenter is no longer an allowed Maven repo.
* build: `--reset-server` removed (thanks @gotmi1k).
## [2.2.2] - 2024-04-24
### Added
* Include sdkmanager as dep in setup.py for Homebrew package.
https://github.com/Homebrew/homebrew-core/pull/164510
## [2.2.1] - 2023-03-09
### Added
* `download_repo_index_v2()` and `download_repo_index_v2()` API functions
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1323
### Fixed
* Fix OpenJDK detection on different CPU architectures
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1315
### Removed
* Purge all references to `zipalign`, that is delegated to other things
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1316
* Remove obsolete, unused `buildozer` build type
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1322
## [2.2.0] - 2023-02-20
### Added
* Support index-v2 format, localizable Anti-Features, Categories
* New entry point for repos, entry.jar, signed with modern algorithms
* New config/ subdirectory for localizable configuration
* Script entries in metadata files (init, prebuild, build, etc) now handled as
lists so they now support using && or ; in the script, and behave like
.gitlab-ci.yml and other CI YAML.
* GPG signatures for index-v1.json and index-v2.json
* Use default.txt as fallback changelog when inserting fastlane metadata
* scanner: F-Droid signatures now maintained in fdroid/suss
* scanner: maintain signature sources in config.yml, including Exodus Privacy
* scanner: use dexdump for class names
* scanner: directly scan APK files when given a path
* scanner: recursively scan APKs for DEX and ZIP using file magic
* signindex: validate index files before signing
* update: set ArchivePolicy based on VercodeOperation/signature
* Include IPFS CIDv1 in index-v2.json for hosting repos on IPFS
* Per-repo beta channel configuration
* Add Czech translation
### Fixed
* apksigner v30 or higher now required for verifying and signing APKs
* 3.9 as minimum supported Python version
* Lots of translation updates
* Better pip packaging
* nightly: big overhaul for reliable operation on all Debian/Ubuntu versions
* Improved logging, fewer confusing verbose messages
* scanner: fix detection of binary files without extension
* import: more reliable operation, including Flutter apps
* Support Java 20 and up
### Removed
* Remove obsolete `fdroid stats` command
## [2.1.1] - 2022-09-06
* gradlew-fdroid: Include latest versions and checksums
* nightly: update Raw URLs to fix breakage and avoid redirects
* signindex: gpg-sign index-v1.json and deploy it
* update: fix --use-date-from-apk when used with files (#1012)
## [2.1] - 2022-02-22
For a more complete overview, see the [2.1
milestone](https://gitlab.com/fdroid/fdroidserver/-/milestones/11)
## [2.0.5] - 2022-09-06
### Fixed
* gradlew-fdroid: Include latest versions and checksums
* nightly: add support for GitHub Actions
* nightly: update Raw URLs to fix breakage and avoid redirects
* update: fix --use-date-from-apk when used with files (#1012)
* Fix GitLab CI
## [2.0.4] - 2022-06-29
### Fixed
* deploy: ensure progress is instantiated before trying to use it
* signindex: gpg-sign index-v1.json and deploy it
[1080](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1080)
[1124](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1124)
## [2.0.3] - 2021-07-01
### Fixed
* Support AutoUpdateMode: Version without pattern
[931](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/931)
## [2.0.2] - 2021-06-01
### Fixed
* fix "ruamel round_trip_dump will be removed"
[932](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/932)
## [2.0.1] - 2021-03-09
### Fixed
* metadata: stop setting up source repo when running lint/rewritemeta
* scanner: show error if scan_binary fails to run apkanalyzer
* common: properly parse version from NDK's source.properties
* update: stop extracting and storing XML icons, they're useless
* index: raise error rather than crash on bad repo file
* update: handle large, corrupt, or inaccessible fastlane/triple-t files
* Update SPDX License List
* checkupdates: set User-Agent to make gitlab.com happy
* Run push_binary_transparency only once
## [2.0] - 2021-01-31
For a more complete overview, see the [2.0
milestone](https://gitlab.com/fdroid/fdroidserver/-/milestones/10)
### Added
* `fdroid update` inserts donation links based on upstream's _FUNDING.yml_
([!754](https://gitlab.com/fdroid/fdroidserver/merge_requests/754))
* Stable, public API for most useful functions
([!798](https://gitlab.com/fdroid/fdroidserver/merge_requests/798))
* Load with any YAML lib and use with the API, no more custom parser needed
([!826](https://gitlab.com/fdroid/fdroidserver/merge_requests/826))
([!838](https://gitlab.com/fdroid/fdroidserver/merge_requests/838))
* _config.yml_ for a safe, easy, standard configuration format
([!663](https://gitlab.com/fdroid/fdroidserver/merge_requests/663))
* Config options can be set from environment variables using this syntax:
`keystorepass: {env: keystorepass}`
([!669](https://gitlab.com/fdroid/fdroidserver/merge_requests/669))
* Add SHA256 to filename of repo graphics
([!669](https://gitlab.com/fdroid/fdroidserver/merge_requests/669))
* Support for srclibs metadata in YAML format
([!700](https://gitlab.com/fdroid/fdroidserver/merge_requests/700))
* Check srclibs and app-metadata files with yamllint
([!721](https://gitlab.com/fdroid/fdroidserver/merge_requests/721))
* Added plugin system for adding subcommands to `fdroid`
([!709](https://gitlab.com/fdroid/fdroidserver/merge_requests/709))
* `fdroid update`, `fdroid publish`, and `fdroid signindex` now work
with SmartCard HSMs, specifically the NitroKey HSM
([!779](https://gitlab.com/fdroid/fdroidserver/merge_requests/779))
([!782](https://gitlab.com/fdroid/fdroidserver/merge_requests/782))
* `fdroid update` support for Triple-T Gradle Play Publisher v2.x
([!683](https://gitlab.com/fdroid/fdroidserver/merge_requests/683))
* Translated into: bo de es fr hu it ko nb_NO pl pt pt_BR pt_PT ru sq tr uk
zh_Hans zh_Hant
### Fixed
* Smoother process for signing APKs with `apksigner`
([!736](https://gitlab.com/fdroid/fdroidserver/merge_requests/736))
([!821](https://gitlab.com/fdroid/fdroidserver/merge_requests/821))
* `apksigner` is used by default on new repos
* All parts except _build_ and _publish_ work without the Android SDK
([!821](https://gitlab.com/fdroid/fdroidserver/merge_requests/821))
* Description: is now passed to clients unchanged, no HTML conversion
([!828](https://gitlab.com/fdroid/fdroidserver/merge_requests/828))
* Lots of improvements for scanning for proprietary code and trackers
([!748](https://gitlab.com/fdroid/fdroidserver/merge_requests/748))
([!REPLACE](https://gitlab.com/fdroid/fdroidserver/merge_requests/REPLACE))
([!844](https://gitlab.com/fdroid/fdroidserver/merge_requests/844))
* `fdroid mirror` now generates complete, working local mirror repos
* fix build-logs dissapearing when deploying
([!685](https://gitlab.com/fdroid/fdroidserver/merge_requests/685))
* do not crash when system encoding can not be retrieved
([!671](https://gitlab.com/fdroid/fdroidserver/merge_requests/671))
* checkupdates: UpdateCheckIngore gets properly observed now
([!659](https://gitlab.com/fdroid/fdroidserver/merge_requests/659),
[!660](https://gitlab.com/fdroid/fdroidserver/merge_requests/660))
* keep yaml metadata when rewrite failed
([!658](https://gitlab.com/fdroid/fdroidserver/merge_requests/658))
* import: `template.yml` now supports omitting values
([!657](https://gitlab.com/fdroid/fdroidserver/merge_requests/657))
* build: deploying buildlogs with rsync
([!651](https://gitlab.com/fdroid/fdroidserver/merge_requests/651))
* `fdroid init` generates PKCS12 keystores, drop Java < 8 support
([!801](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/801))
* Parse Version Codes specified in hex
([!692](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/692))
* Major refactoring on core parts of code to be more Pythonic
([!756](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/756))
* `fdroid init` now works when installed with pip
### Removed
* Removed all support for _.txt_ and _.json_ metadata
([!772](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/772))
* dropped support for Debian 8 _jessie_ and 9 _stretch_
* dropped support for Ubuntu releases older than bionic 18.04
* dropped `fdroid server update` and `fdroid server init`,
use `fdroid deploy`
* `fdroid dscanner` was removed.
([!711](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/711))
* `make_current_version_link` is now off by default
* Dropped `force_build_tools` config option
([!797](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/797))
* Dropped `accepted_formats` config option, there is only _.yml_ now
([!818](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/818))
* `Provides:` was removed as a metadata field
([!654](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/654))
* Remove unused `latestapps.dat`
([!794](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/794))
## [1.1.4] - 2019-08-15
### Fixed
* include bitcoin validation regex required by fdroiddata
* merged Debian patches to fix test suite there
## [1.1.3] - 2019-07-03
### Fixed
* fixed test suite when run from source tarball
* fixed test runs in Debian
## [1.1.2] - 2019-03-29
### Fixed
* fix bug while downloading repo index
([!636](https://gitlab.com/fdroid/fdroidserver/merge_requests/636))
## [1.1.1] - 2019-02-03
### Fixed
* support APK Signature v2 and v3
* all SDK Version values are output as integers in the index JSON
* take graphics from Fastlane dirs using any valid RFC5646 locale
* print warning if not running in UTF-8 encoding
* fdroid build: hide --on-server cli flag
## [1.1] - 2019-01-28
### Fixed
* a huge update with many fixes and new features:
https://gitlab.com/fdroid/fdroidserver/milestones/7
* can run without and Android SDK installed
* much more reliable operation with large binary APK collections
* sync all translations, including newly added languages: hu it ko pl pt_PT ru
* many security fixes, based on the security audit
* NoSourceSince automatically adds SourceGone Anti-Feature
* aapt scraping works with all known aapt versions
* smoother mirror setups
* much faster `fdroid update` when using androguard
[Unreleased]: https://gitlab.com/fdroid/fdroidserver/compare/1.1.4...master
[1.1.4]: https://gitlab.com/fdroid/fdroidserver/compare/1.1.3...1.1.4
[1.1.3]: https://gitlab.com/fdroid/fdroidserver/compare/1.1.2...1.1.3
[1.1.2]: https://gitlab.com/fdroid/fdroidserver/compare/1.1.1...1.1.2
[1.1.1]: https://gitlab.com/fdroid/fdroidserver/compare/1.1...1.1.1
[1.1]: https://gitlab.com/fdroid/fdroidserver/tags/1.1

66
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,66 @@
There are many ways to contribute, you can find out all the ways on our
[Contribute](https://f-droid.org/contribute/) page. Find out how to get
involved, including as a translator, data analyst, tester, helping others, and
much more!
## Contributing Code
We want more contributors and want different points of view represented. Some
parts of the code make contributing quick and easy. Other parts make it
difficult and slow, so we ask that contributors have patience.
To submit a patch, please open a merge request on GitLab. If you are thinking of
making a large contribution, open an issue or merge request before starting
work, to get comments from the community. Someone may be already working on the
same thing, or there may be reasons why that feature isn't implemented. Once
there is agreement, then the work might need to proceed asynchronously with the
core team towards the solution.
To make it easier to review and accept your merge request, please follow these
guidelines:
* When at all possible, include tests. These can either be added to an existing
test, or completely new. Practicing test-driven development will make it
easiest to get merged. That usually means starting your work by writing tests.
* See [help-wanted](https://gitlab.com/fdroid/fdroidserver/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=help-wanted)
tags for things that maintainers have marked as things they want to see
merged.
* The amount of technical debt varies widely in this code base. There are some
parts where the code is nicely isolated with good test coverage. There are
other parts that are tangled and complicated, full of technical debt, and
difficult to test.
* The general approach is to treat the tangled and complicated parts as an
external API (albeit a bad one). That means it needs to stay unchanged as much
as possible. Changes to those parts of the code will trigger a migration,
which can require a lot of time and coordination. When there is time for large
development efforts, we refactor the code to get rid of those areas of
technical debt.
* We use [_black_](https://black.readthedocs.io/) code format, run `black .` to
format the code. Whenever editing code in any file, the new code should be
formatted as _black_. Some files are not yet fully in _black_ format (see
_pyproject.toml_), our goal is to opportunistically convert the code whenever
possible. As of the time of this writing, forcing the code format on all files
would be too disruptive. The officially supported _black_ version is the one
in Debian/stable.
* Many of the tests run very fast and can be run interactively in isolation.
Some of the essential test cases run slowly because they do things like
signing files and generating signing keys.
* Some parts of the code are difficult to test, and currently require a
relatively complete production setup in order to effectively test them. That
is mostly the code around building packages, managing the disposable VM, and
scheduling build jobs to run.
* For user visible changes (API changes, behaviour changes, etc.), consider
adding a note in _CHANGELOG.md_. This could be a summarizing description of
the change, and could explain the grander details. Have a look through
existing entries for inspiration. Please note that this is NOT simply a copy
of git-log one-liners. Also note that security fixes get an entry in
_CHANGELOG.md_. This file helps users get more in-depth information of what
comes with a specific release without having to sift through the higher noise
ratio in git-log.

View file

945
MANIFEST.in Normal file
View file

@ -0,0 +1,945 @@
include buildserver/config.buildserver.yml
include buildserver/provision-android-ndk
include buildserver/provision-android-sdk
include buildserver/provision-apt-get-install
include buildserver/provision-apt-proxy
include buildserver/provision-gradle
include buildserver/setup-env-vars
include buildserver/Vagrantfile
include CHANGELOG.md
include completion/bash-completion
include examples/config.yml
include examples/fdroid_exportkeystore.py
include examples/fdroid_export_keystore_to_nitrokey.py
include examples/fdroid_extract_repo_pubkey.py
include examples/fdroid_fetchsrclibs.py
include examples/fdroid_nitrokeyimport.py
include examples/opensc-fdroid.cfg
include examples/public-read-only-s3-bucket-policy.json
include examples/template.yml
include examples/Vagrantfile.yaml
include gradlew-fdroid
include LICENSE
include locale/ba/LC_MESSAGES/fdroidserver.po
include locale/bo/LC_MESSAGES/fdroidserver.po
include locale/ca/LC_MESSAGES/fdroidserver.po
include locale/cs/LC_MESSAGES/fdroidserver.po
include locale/de/LC_MESSAGES/fdroidserver.po
include locale/es/LC_MESSAGES/fdroidserver.po
include locale/fr/LC_MESSAGES/fdroidserver.po
include locale/ga/LC_MESSAGES/fdroidserver.po
include locale/hu/LC_MESSAGES/fdroidserver.po
include locale/it/LC_MESSAGES/fdroidserver.po
include locale/ja/LC_MESSAGES/fdroidserver.po
include locale/ko/LC_MESSAGES/fdroidserver.po
include locale/nb_NO/LC_MESSAGES/fdroidserver.po
include locale/pl/LC_MESSAGES/fdroidserver.po
include locale/pt/LC_MESSAGES/fdroidserver.po
include locale/pt_BR/LC_MESSAGES/fdroidserver.po
include locale/pt_PT/LC_MESSAGES/fdroidserver.po
include locale/ro/LC_MESSAGES/fdroidserver.po
include locale/ru/LC_MESSAGES/fdroidserver.po
include locale/sq/LC_MESSAGES/fdroidserver.po
include locale/sr/LC_MESSAGES/fdroidserver.po
include locale/sw/LC_MESSAGES/fdroidserver.po
include locale/tr/LC_MESSAGES/fdroidserver.po
include locale/uk/LC_MESSAGES/fdroidserver.po
include locale/zh_Hans/LC_MESSAGES/fdroidserver.po
include locale/zh_Hant/LC_MESSAGES/fdroidserver.po
include makebuildserver
include README.md
include tests/aosp_testkey_debug.keystore
include tests/apk.embedded_1.apk
include tests/bad-unicode-*.apk
include tests/build-tools/17.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/17.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/17.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/17.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/17.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/17.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/17.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/17.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/17.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/17.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/17.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/17.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/17.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/17.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/17.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/18.1.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/18.1.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/18.1.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/18.1.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/18.1.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/18.1.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/18.1.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/18.1.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/18.1.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/18.1.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/18.1.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/18.1.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/18.1.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/18.1.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/18.1.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/19.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/19.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/19.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/19.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/19.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/19.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/19.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/19.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/19.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/19.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/19.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/19.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/19.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/19.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/19.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/19.1.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/19.1.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/19.1.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/19.1.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/19.1.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/19.1.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/19.1.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/19.1.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/19.1.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/19.1.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/19.1.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/19.1.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/19.1.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/19.1.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/19.1.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/20.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/20.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/20.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/20.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/20.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/20.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/20.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/20.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/20.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/20.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/20.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/20.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/20.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/20.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/20.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/21.1.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/21.1.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/21.1.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/21.1.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/21.1.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/21.1.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/21.1.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/21.1.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/21.1.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/21.1.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/21.1.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/21.1.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/21.1.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/21.1.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/21.1.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/21.1.2/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/21.1.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/21.1.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/21.1.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/21.1.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/21.1.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/21.1.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/21.1.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/21.1.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/21.1.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/21.1.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/21.1.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/21.1.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/21.1.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/21.1.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/22.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/22.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/22.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/22.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/22.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/22.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/22.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/22.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/22.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/22.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/22.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/22.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/22.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/22.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/22.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/22.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/22.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/22.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/22.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/22.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/22.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/22.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/22.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/22.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/22.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/22.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/22.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/22.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/22.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/22.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/23.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/23.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/23.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/23.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/23.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/23.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/23.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/23.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/23.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/23.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/23.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/23.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/23.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/23.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/23.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/23.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/23.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/23.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/23.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/23.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/23.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/23.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/23.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/23.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/23.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/23.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/23.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/23.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/23.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/23.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/23.0.2/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/23.0.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/23.0.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/23.0.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/23.0.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/23.0.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/23.0.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/23.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/23.0.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/23.0.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/23.0.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/23.0.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/23.0.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/23.0.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/23.0.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/23.0.3/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/23.0.3/aapt-output-com.politedroid_3.txt
include tests/build-tools/23.0.3/aapt-output-com.politedroid_4.txt
include tests/build-tools/23.0.3/aapt-output-com.politedroid_5.txt
include tests/build-tools/23.0.3/aapt-output-com.politedroid_6.txt
include tests/build-tools/23.0.3/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/23.0.3/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/23.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/23.0.3/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/23.0.3/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/23.0.3/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/23.0.3/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/23.0.3/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/23.0.3/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/23.0.3/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/24.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/24.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/24.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/24.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/24.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/24.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/24.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/24.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/24.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/24.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/24.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/24.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/24.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/24.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/24.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/24.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/24.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/24.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/24.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/24.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/24.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/24.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/24.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/24.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/24.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/24.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/24.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/24.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/24.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/24.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/24.0.2/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/24.0.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/24.0.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/24.0.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/24.0.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/24.0.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/24.0.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/24.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/24.0.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/24.0.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/24.0.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/24.0.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/24.0.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/24.0.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/24.0.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/24.0.3/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/24.0.3/aapt-output-com.politedroid_3.txt
include tests/build-tools/24.0.3/aapt-output-com.politedroid_4.txt
include tests/build-tools/24.0.3/aapt-output-com.politedroid_5.txt
include tests/build-tools/24.0.3/aapt-output-com.politedroid_6.txt
include tests/build-tools/24.0.3/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/24.0.3/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/24.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/24.0.3/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/24.0.3/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/24.0.3/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/24.0.3/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/24.0.3/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/24.0.3/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/24.0.3/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/25.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/25.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/25.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/25.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/25.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/25.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/25.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/25.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/25.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/25.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/25.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/25.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/25.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/25.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/25.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/25.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/25.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/25.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/25.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/25.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/25.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/25.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/25.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/25.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/25.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/25.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/25.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/25.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/25.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/25.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/25.0.2/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/25.0.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/25.0.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/25.0.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/25.0.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/25.0.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/25.0.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/25.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/25.0.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/25.0.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/25.0.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/25.0.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/25.0.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/25.0.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/25.0.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/25.0.3/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/25.0.3/aapt-output-com.politedroid_3.txt
include tests/build-tools/25.0.3/aapt-output-com.politedroid_4.txt
include tests/build-tools/25.0.3/aapt-output-com.politedroid_5.txt
include tests/build-tools/25.0.3/aapt-output-com.politedroid_6.txt
include tests/build-tools/25.0.3/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/25.0.3/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/25.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/25.0.3/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/25.0.3/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/25.0.3/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/25.0.3/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/25.0.3/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/25.0.3/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/25.0.3/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/26.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/26.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/26.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/26.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/26.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/26.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/26.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/26.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/26.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/26.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/26.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/26.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/26.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/26.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/26.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/26.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/26.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/26.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/26.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/26.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/26.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/26.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/26.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/26.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/26.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/26.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/26.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/26.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/26.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/26.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/26.0.2/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/26.0.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/26.0.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/26.0.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/26.0.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/26.0.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/26.0.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/26.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/26.0.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/26.0.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/26.0.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/26.0.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/26.0.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/26.0.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/26.0.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/26.0.3/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/26.0.3/aapt-output-com.politedroid_3.txt
include tests/build-tools/26.0.3/aapt-output-com.politedroid_4.txt
include tests/build-tools/26.0.3/aapt-output-com.politedroid_5.txt
include tests/build-tools/26.0.3/aapt-output-com.politedroid_6.txt
include tests/build-tools/26.0.3/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/26.0.3/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/26.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/26.0.3/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/26.0.3/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/26.0.3/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/26.0.3/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/26.0.3/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/26.0.3/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/26.0.3/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/27.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/27.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/27.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/27.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/27.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/27.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/27.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/27.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/27.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/27.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/27.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/27.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/27.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/27.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/27.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/27.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/27.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/27.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/27.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/27.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/27.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/27.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/27.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/27.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/27.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/27.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/27.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/27.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/27.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/27.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/27.0.2/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/27.0.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/27.0.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/27.0.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/27.0.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/27.0.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/27.0.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/27.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/27.0.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/27.0.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/27.0.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/27.0.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/27.0.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/27.0.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/27.0.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/27.0.3/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/27.0.3/aapt-output-com.politedroid_3.txt
include tests/build-tools/27.0.3/aapt-output-com.politedroid_4.txt
include tests/build-tools/27.0.3/aapt-output-com.politedroid_5.txt
include tests/build-tools/27.0.3/aapt-output-com.politedroid_6.txt
include tests/build-tools/27.0.3/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/27.0.3/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/27.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/27.0.3/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/27.0.3/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/27.0.3/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/27.0.3/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/27.0.3/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/27.0.3/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/27.0.3/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/28.0.0/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/28.0.0/aapt-output-com.politedroid_3.txt
include tests/build-tools/28.0.0/aapt-output-com.politedroid_4.txt
include tests/build-tools/28.0.0/aapt-output-com.politedroid_5.txt
include tests/build-tools/28.0.0/aapt-output-com.politedroid_6.txt
include tests/build-tools/28.0.0/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/28.0.0/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/28.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/28.0.0/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/28.0.0/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/28.0.0/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/28.0.0/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/28.0.0/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/28.0.0/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/28.0.0/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/28.0.1/aapt-output-com.moez.QKSMS_182.txt
include tests/build-tools/28.0.1/aapt-output-com.politedroid_3.txt
include tests/build-tools/28.0.1/aapt-output-com.politedroid_4.txt
include tests/build-tools/28.0.1/aapt-output-com.politedroid_5.txt
include tests/build-tools/28.0.1/aapt-output-com.politedroid_6.txt
include tests/build-tools/28.0.1/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/28.0.1/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/28.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/28.0.1/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/28.0.1/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/28.0.1/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/28.0.1/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/28.0.1/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/28.0.1/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/28.0.1/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/28.0.2/aapt-output-com.politedroid_3.txt
include tests/build-tools/28.0.2/aapt-output-com.politedroid_4.txt
include tests/build-tools/28.0.2/aapt-output-com.politedroid_5.txt
include tests/build-tools/28.0.2/aapt-output-com.politedroid_6.txt
include tests/build-tools/28.0.2/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/28.0.2/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/28.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/28.0.2/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/28.0.2/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/28.0.2/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/28.0.2/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/28.0.2/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/28.0.2/aapt-output-org.droidtr.keyboard_34.txt
include tests/build-tools/28.0.2/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/28.0.3/aapt-output-com.example.test.helloworld_1.txt
include tests/build-tools/28.0.3/aapt-output-com.politedroid_3.txt
include tests/build-tools/28.0.3/aapt-output-com.politedroid_4.txt
include tests/build-tools/28.0.3/aapt-output-com.politedroid_5.txt
include tests/build-tools/28.0.3/aapt-output-com.politedroid_6.txt
include tests/build-tools/28.0.3/aapt-output-duplicate.permisssions_9999999.txt
include tests/build-tools/28.0.3/aapt-output-info.guardianproject.urzip_100.txt
include tests/build-tools/28.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt
include tests/build-tools/28.0.3/aapt-output-no.min.target.sdk_987.txt
include tests/build-tools/28.0.3/aapt-output-obb.main.oldversion_1444412523.txt
include tests/build-tools/28.0.3/aapt-output-obb.main.twoversions_1101613.txt
include tests/build-tools/28.0.3/aapt-output-obb.main.twoversions_1101615.txt
include tests/build-tools/28.0.3/aapt-output-obb.main.twoversions_1101617.txt
include tests/build-tools/28.0.3/aapt-output-obb.mainpatch.current_1619.txt
include tests/build-tools/28.0.3/aapt-output-souch.smsbypass_9.txt
include tests/build-tools/generate.sh
include tests/check-fdroid-apk
include tests/com.fake.IpaApp_1000000000001.ipa
include tests/config.yml
include tests/config/antiFeatures.yml
include tests/config/categories.yml
include tests/config/de/antiFeatures.yml
include tests/config/fa/antiFeatures.yml
include tests/config/ic_antifeature_ads.xml
include tests/config/ic_antifeature_disabledalgorithm.xml
include tests/config/ic_antifeature_knownvuln.xml
include tests/config/ic_antifeature_nonfreeadd.xml
include tests/config/ic_antifeature_nonfreeassets.xml
include tests/config/ic_antifeature_nonfreedep.xml
include tests/config/ic_antifeature_nonfreenet.xml
include tests/config/ic_antifeature_nosourcesince.xml
include tests/config/ic_antifeature_nsfw.xml
include tests/config/ic_antifeature_tracking.xml
include tests/config/ic_antifeature_upstreamnonfree.xml
include tests/config/ro/antiFeatures.yml
include tests/config/zh-rCN/antiFeatures.yml
include tests/corrupt-featureGraphic.png
include tests/dummy-keystore.jks
include tests/dump_internal_metadata_format.py
include tests/extra/manual-vmtools-test.py
include tests/funding-usernames.yaml
include tests/get_android_tools_versions/android-ndk-r10e/RELEASE.TXT
include tests/get_android_tools_versions/android-sdk/ndk-bundle/package.xml
include tests/get_android_tools_versions/android-sdk/ndk-bundle/source.properties
include tests/get_android_tools_versions/android-sdk/ndk/11.2.2725575/source.properties
include tests/get_android_tools_versions/android-sdk/ndk/17.2.4988734/source.properties
include tests/get_android_tools_versions/android-sdk/ndk/21.3.6528147/source.properties
include tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties
include tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties
include tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties
include tests/get_android_tools_versions/android-sdk/tools/source.properties
include tests/gnupghome/pubring.gpg
include tests/gnupghome/random_seed
include tests/gnupghome/secring.gpg
include tests/gnupghome/trustdb.gpg
include tests/gradle-maven-blocks.yaml
include tests/gradle-release-checksums.py
include tests/IsMD5Disabled.java
include tests/issue-1128-min-sdk-30-poc.apk
include tests/issue-1128-poc1.apk
include tests/issue-1128-poc2.apk
include tests/issue-1128-poc3a.apk
include tests/issue-1128-poc3b.apk
include tests/janus.apk
include tests/key-tricks.py
include tests/keystore.jks
include tests/metadata-rewrite-yml/app.with.special.build.params.yml
include tests/metadata-rewrite-yml/fake.ota.update.yml
include tests/metadata-rewrite-yml/org.fdroid.fdroid.yml
include tests/metadata/apk/info.guardianproject.urzip.yaml
include tests/metadata/apk/org.dyndns.fules.ck.yaml
include tests/metadata/app.with.special.build.params.yml
include tests/metadata/app.with.special.build.params/en-US/antifeatures/50_Ads.txt
include tests/metadata/app.with.special.build.params/en-US/antifeatures/50_Tracking.txt
include tests/metadata/app.with.special.build.params/en-US/antifeatures/Ads.txt
include tests/metadata/app.with.special.build.params/en-US/antifeatures/NoSourceSince.txt
include tests/metadata/app.with.special.build.params/zh-CN/antifeatures/49_Tracking.txt
include tests/metadata/app.with.special.build.params/zh-CN/antifeatures/50_Ads.txt
include tests/metadata/com.politedroid.yml
include tests/metadata/dump/app.with.special.build.params.yaml
include tests/metadata/dump/com.politedroid.yaml
include tests/metadata/dump/org.adaway.yaml
include tests/metadata/dump/org.smssecure.smssecure.yaml
include tests/metadata/dump/org.videolan.vlc.yaml
include tests/metadata/duplicate.permisssions.yml
include tests/metadata/fake.ota.update.yml
include tests/metadata/info.guardianproject.checkey.yml
include tests/metadata/info.guardianproject.checkey/en-US/description.txt
include tests/metadata/info.guardianproject.checkey/en-US/name.txt
include tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.png
include tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey.png
include tests/metadata/info.guardianproject.checkey/en-US/summary.txt
include tests/metadata/info.guardianproject.checkey/ja-JP/name.txt
include tests/metadata/info.guardianproject.urzip.yml
include tests/metadata/info.guardianproject.urzip/en-US/changelogs/100.txt
include tests/metadata/info.guardianproject.urzip/en-US/changelogs/default.txt
include tests/metadata/info.guardianproject.urzip/en-US/full_description.txt
include tests/metadata/info.guardianproject.urzip/en-US/images/featureGraphic.png
include tests/metadata/info.guardianproject.urzip/en-US/images/icon.png
include tests/metadata/info.guardianproject.urzip/en-US/short_description.txt
include tests/metadata/info.guardianproject.urzip/en-US/title.txt
include tests/metadata/info.guardianproject.urzip/en-US/video.txt
include tests/metadata/info.zwanenburg.caffeinetile.yml
include tests/metadata/no.min.target.sdk.yml
include tests/metadata/obb.main.oldversion.yml
include tests/metadata/obb.main.twoversions.yml
include tests/metadata/obb.mainpatch.current.yml
include tests/metadata/org.adaway.yml
include tests/metadata/org.fdroid.ci.test.app.yml
include tests/metadata/org.fdroid.fdroid.yml
include tests/metadata/org.maxsdkversion.yml
include tests/metadata/org.smssecure.smssecure.yml
include tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.RSA
include tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.SF
include tests/metadata/org.smssecure.smssecure/signatures/134/MANIFEST.MF
include tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.RSA
include tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.SF
include tests/metadata/org.smssecure.smssecure/signatures/135/MANIFEST.MF
include tests/metadata/org.videolan.vlc.yml
include tests/metadata/raw.template.yml
include tests/metadata/souch.smsbypass.yml
include tests/minimal_targetsdk_30_unsigned.apk
include tests/Norway_bouvet_europe_2.obf.zip
include tests/no_targetsdk_minsdk1_unsigned.apk
include tests/no_targetsdk_minsdk30_unsigned.apk
include tests/openssl-version-check-test.py
include tests/org.bitbucket.tickytacky.mirrormirror_1.apk
include tests/org.bitbucket.tickytacky.mirrormirror_2.apk
include tests/org.bitbucket.tickytacky.mirrormirror_3.apk
include tests/org.bitbucket.tickytacky.mirrormirror_4.apk
include tests/org.dyndns.fules.ck_20.apk
include tests/org.sajeg.fallingblocks_3.apk
include tests/repo/com.example.test.helloworld_1.apk
include tests/repo/com.politedroid_3.apk
include tests/repo/com.politedroid_4.apk
include tests/repo/com.politedroid_5.apk
include tests/repo/com.politedroid_6.apk
include tests/repo/duplicate.permisssions_9999999.apk
include tests/repo/entry.json
include tests/repo/fake.ota.update_1234.zip
include tests/repo/index-v1.json
include tests/repo/index-v2.json
include tests/repo/index.xml
include tests/repo/info.zwanenburg.caffeinetile_4.apk
include tests/repo/main.1101613.obb.main.twoversions.obb
include tests/repo/main.1101615.obb.main.twoversions.obb
include tests/repo/main.1434483388.obb.main.oldversion.obb
include tests/repo/main.1619.obb.mainpatch.current.obb
include tests/repo/no.min.target.sdk_987.apk
include tests/repo/obb.main.oldversion_1444412523.apk
include tests/repo/obb.main.twoversions_1101613.apk
include tests/repo/obb.main.twoversions_1101615.apk
include tests/repo/obb.main.twoversions_1101617.apk
include tests/repo/obb.main.twoversions_1101617_src.tar.gz
include tests/repo/obb.mainpatch.current/en-US/featureGraphic.png
include tests/repo/obb.mainpatch.current/en-US/icon.png
include tests/repo/obb.mainpatch.current/en-US/phoneScreenshots/screenshot-main.png
include tests/repo/obb.mainpatch.current/en-US/sevenInchScreenshots/screenshot-tablet-main.png
include tests/repo/obb.mainpatch.current_1619.apk
include tests/repo/obb.mainpatch.current_1619_another-release-key.apk
include tests/repo/org.maxsdkversion_4.apk
include tests/repo/org.videolan.vlc/en-US/icon.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot10.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot12.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot15.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot18.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot20.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot22.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot4.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot7.png
include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot9.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot0.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot1.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot11.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot13.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot14.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot16.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot17.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot19.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot2.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot21.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot23.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot3.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot5.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot6.png
include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot8.png
include tests/repo/patch.1619.obb.mainpatch.current.obb
include tests/repo/souch.smsbypass_9.apk
include tests/repo/urzip-*.apk
include tests/repo/v1.v2.sig_1020.apk
include tests/run-tests
include tests/SANAPPSI.RSA
include tests/SANAPPSI.SF
include tests/shared_test_code.py
include tests/signindex/guardianproject-v1.jar
include tests/signindex/guardianproject.jar
include tests/signindex/testy.jar
include tests/signindex/unsigned.jar
include tests/source-files/at.bitfire.davdroid/build.gradle
include tests/source-files/catalog.test/app/build.gradle
include tests/source-files/catalog.test/build.gradle.kts
include tests/source-files/catalog.test/buildSrc/build.gradle.kts
include tests/source-files/catalog.test/buildSrc/settings.gradle.kts
include tests/source-files/catalog.test/buildSrc2/build.gradle.kts
include tests/source-files/catalog.test/buildSrc2/settings.gradle.kts
include tests/source-files/catalog.test/core/build.gradle
include tests/source-files/catalog.test/gradle/libs.versions.toml
include tests/source-files/catalog.test/libs.versions.toml
include tests/source-files/catalog.test/settings.gradle.kts
include tests/source-files/cn.wildfirechat.chat/avenginekit/build.gradle
include tests/source-files/cn.wildfirechat.chat/build.gradle
include tests/source-files/cn.wildfirechat.chat/chat/build.gradle
include tests/source-files/cn.wildfirechat.chat/client/build.gradle
include tests/source-files/cn.wildfirechat.chat/client/src/main/AndroidManifest.xml
include tests/source-files/cn.wildfirechat.chat/emojilibrary/build.gradle
include tests/source-files/cn.wildfirechat.chat/gradle/build_libraries.gradle
include tests/source-files/cn.wildfirechat.chat/imagepicker/build.gradle
include tests/source-files/cn.wildfirechat.chat/mars-core-release/build.gradle
include tests/source-files/cn.wildfirechat.chat/push/build.gradle
include tests/source-files/cn.wildfirechat.chat/settings.gradle
include tests/source-files/com.anpmech.launcher/app/build.gradle
include tests/source-files/com.anpmech.launcher/app/src/main/AndroidManifest.xml
include tests/source-files/com.anpmech.launcher/build.gradle
include tests/source-files/com.anpmech.launcher/settings.gradle
include tests/source-files/com.github.jameshnsears.quoteunquote/build.gradle
include tests/source-files/com.github.shadowsocks/core/build.gradle.kts
include tests/source-files/com.github.shadowsocks/mobile/build.gradle.kts
include tests/source-files/com.infomaniak.mail/Core/gradle/core.versions.toml
include tests/source-files/com.infomaniak.mail/gradle/libs.versions.toml
include tests/source-files/com.infomaniak.mail/settings.gradle
include tests/source-files/com.integreight.onesheeld/build.gradle
include tests/source-files/com.integreight.onesheeld/gradle/wrapper/gradle-wrapper.properties
include tests/source-files/com.integreight.onesheeld/localeapi/build.gradle
include tests/source-files/com.integreight.onesheeld/localeapi/src/main/AndroidManifest.xml
include tests/source-files/com.integreight.onesheeld/oneSheeld/build.gradle
include tests/source-files/com.integreight.onesheeld/oneSheeld/src/main/AndroidManifest.xml
include tests/source-files/com.integreight.onesheeld/pagerIndicator/build.gradle
include tests/source-files/com.integreight.onesheeld/pagerIndicator/src/main/AndroidManifest.xml
include tests/source-files/com.integreight.onesheeld/pullToRefreshlibrary/build.gradle
include tests/source-files/com.integreight.onesheeld/pullToRefreshlibrary/src/main/AndroidManifest.xml
include tests/source-files/com.integreight.onesheeld/quickReturnHeader/build.gradle
include tests/source-files/com.integreight.onesheeld/quickReturnHeader/src/main/AndroidManifest.xml
include tests/source-files/com.integreight.onesheeld/settings.gradle
include tests/source-files/com.jens.automation2/app/build.gradle
include tests/source-files/com.jens.automation2/build.gradle
include tests/source-files/com.kunzisoft.testcase/build.gradle
include tests/source-files/com.lolo.io.onelist/app/build.gradle.kts
include tests/source-files/com.lolo.io.onelist/build.gradle.kts
include tests/source-files/com.lolo.io.onelist/gradle/libs.versions.toml
include tests/source-files/com.lolo.io.onelist/gradle/wrapper/gradle-wrapper.properties
include tests/source-files/com.lolo.io.onelist/settings.gradle
include tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/full_description.txt
include tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/short_description.txt
include tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/title.txt
include tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/full_description.txt
include tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/short_description.txt
include tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/title.txt
include tests/source-files/com.nextcloud.client/build.gradle
include tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/full_description.txt
include tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/short_description.txt
include tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/title.txt
include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/full_description.txt
include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/short_description.txt
include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/title.txt
include tests/source-files/com.seafile.seadroid2/app/build.gradle
include tests/source-files/com.ubergeek42.WeechatAndroid/app/build.gradle.kts
include tests/source-files/com.ubergeek42.WeechatAndroid/app/src/main/res/values/strings.xml
include tests/source-files/de.varengold.activeTAN/build.gradle
include tests/source-files/dev.patrickgold.florisboard/app/build.gradle.kts
include tests/source-files/eu.siacs.conversations/build.gradle
include tests/source-files/eu.siacs.conversations/metadata/en-US/name.txt
include tests/source-files/fdroid/fdroidclient/AndroidManifest.xml
include tests/source-files/fdroid/fdroidclient/build.gradle
include tests/source-files/firebase-allowlisted/app/build.gradle
include tests/source-files/firebase-allowlisted/build.gradle
include tests/source-files/firebase-suspect/app/build.gradle
include tests/source-files/firebase-suspect/build.gradle
include tests/source-files/flavor.test/build.gradle
include tests/source-files/info.guardianproject.ripple/build.gradle
include tests/source-files/lockfile.test/flutter/.dart_tool/flutter_gen/pubspec.yaml
include tests/source-files/lockfile.test/flutter/pubspec.lock
include tests/source-files/lockfile.test/flutter/pubspec.yaml
include tests/source-files/lockfile.test/javascript/package.json
include tests/source-files/lockfile.test/javascript/yarn.lock
include tests/source-files/lockfile.test/rust/subdir/Cargo.lock
include tests/source-files/lockfile.test/rust/subdir/Cargo.toml
include tests/source-files/lockfile.test/rust/subdir/subdir/subdir/Cargo.toml
include tests/source-files/lockfile.test/rust/subdir2/Cargo.toml
include tests/source-files/open-keychain/open-keychain/build.gradle
include tests/source-files/open-keychain/open-keychain/OpenKeychain/build.gradle
include tests/source-files/org.mozilla.rocket/app/build.gradle
include tests/source-files/org.noise_planet.noisecapture/app/build.gradle
include tests/source-files/org.noise_planet.noisecapture/settings.gradle
include tests/source-files/org.noise_planet.noisecapture/sosfilter/build.gradle
include tests/source-files/org.piepmeyer.gauguin/build.gradle.kts
include tests/source-files/org.piepmeyer.gauguin/libs.versions.toml
include tests/source-files/org.piepmeyer.gauguin/settings.gradle.kts
include tests/source-files/org.tasks/app/build.gradle.kts
include tests/source-files/org.tasks/build.gradle
include tests/source-files/org.tasks/build.gradle.kts
include tests/source-files/org.tasks/buildSrc/build.gradle.kts
include tests/source-files/org.tasks/settings.gradle.kts
include tests/source-files/osmandapp/osmand/build.gradle
include tests/source-files/osmandapp/osmand/gradle/wrapper/gradle-wrapper.properties
include tests/source-files/OtakuWorld/build.gradle
include tests/source-files/realm/react-native/android/build.gradle
include tests/source-files/se.manyver/android/app/build.gradle
include tests/source-files/se.manyver/android/build.gradle
include tests/source-files/se.manyver/android/gradle.properties
include tests/source-files/se.manyver/android/gradle/wrapper/gradle-wrapper.properties
include tests/source-files/se.manyver/android/settings.gradle
include tests/source-files/se.manyver/app.json
include tests/source-files/se.manyver/index.android.js
include tests/source-files/se.manyver/package.json
include tests/source-files/se.manyver/react-native.config.js
include tests/source-files/ut.ewh.audiometrytest/app/build.gradle
include tests/source-files/ut.ewh.audiometrytest/app/src/main/AndroidManifest.xml
include tests/source-files/ut.ewh.audiometrytest/build.gradle
include tests/source-files/ut.ewh.audiometrytest/settings.gradle
include tests/source-files/yuriykulikov/AlarmClock/gradle/wrapper/gradle-wrapper.properties
include tests/source-files/Zillode/syncthing-silk/build.gradle
include tests/SpeedoMeterApp.main_1.apk
include tests/test_build.py
include tests/test_checkupdates.py
include tests/test_common.py
include tests/test_deploy.py
include tests/test_exception.py
include tests/test_gradlew-fdroid
include tests/test_import_subcommand.py
include tests/test_index.py
include tests/test_init.py
include tests/test_install.py
include tests/test_lint.py
include tests/test_main.py
include tests/test_metadata.py
include tests/test_nightly.py
include tests/test_publish.py
include tests/test_rewritemeta.py
include tests/test_scanner.py
include tests/test_signatures.py
include tests/test_signindex.py
include tests/test_update.py
include tests/test_vcs.py
include tests/triple-t-1-graphics/build/de.wivewa.dialer/app/src/main/play/en-US/listing/featureGraphic/play_store_feature_graphic.png
include tests/triple-t-1-graphics/build/de.wivewa.dialer/app/src/main/play/en-US/listing/icon/icon.png
include tests/triple-t-1-graphics/build/de.wivewa.dialer/app/src/main/play/en-US/listing/phoneScreenshots/1.png
include tests/triple-t-1-graphics/metadata/de.wivewa.dialer.yml
include tests/triple-t-2/build/org.piwigo.android/app/.gitignore
include tests/triple-t-2/build/org.piwigo.android/app/build.gradle
include tests/triple-t-2/build/org.piwigo.android/app/src/debug/res/values/constants.xml
include tests/triple-t-2/build/org.piwigo.android/app/src/debug/res/values/strings.xml
include tests/triple-t-2/build/org.piwigo.android/app/src/main/java/org/piwigo/PiwigoApplication.java
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/contact-email.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/contact-website.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/default-language.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/de-DE/full-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/de-DE/short-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/de-DE/title.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/full-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/feature-graphic/piwigo-full.png
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/icon/piwigo-icon.png
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/phone-screenshots/01_Login.jpg
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/phone-screenshots/02_Albums.jpg
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/phone-screenshots/03_Photos.jpg
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/phone-screenshots/04_Albums_horizontal.jpg
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/phone-screenshots/05_Menu.jpg
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/graphics/tablet-screenshots/01_Login.png
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/short-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/en-US/title.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/fr-FR/full-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/fr-FR/short-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/fr-FR/title.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/kn-IN/full-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/kn-IN/short-description.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/listings/kn-IN/title.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/release-notes/de-DE/default.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/release-notes/en-US/default.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/release-notes/fr-FR/default.txt
include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/release-notes/kn-IN/default.txt
include tests/triple-t-2/build/org.piwigo.android/build.gradle
include tests/triple-t-2/build/org.piwigo.android/settings.gradle
include tests/triple-t-2/metadata/org.piwigo.android.yml
include tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
include tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/ime/app/src/main/play/listings/en-US/title.txt
include tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/settings.gradle
include tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
include tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/ime/app/src/main/play/listings/en-US/title.txt
include tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/settings.gradle
include tests/triple-t-anysoftkeyboard/metadata/com.anysoftkeyboard.languagepack.dutch.yml
include tests/triple-t-anysoftkeyboard/metadata/com.menny.android.anysoftkeyboard.yml
include tests/triple-t-flutter/build/fr.emersion.goguma/android/app/src/main/play/contact-website.txt
include tests/triple-t-flutter/build/fr.emersion.goguma/android/app/src/main/play/listings/en-US/full-description.txt
include tests/triple-t-flutter/build/fr.emersion.goguma/android/app/src/main/play/listings/en-US/short-description.txt
include tests/triple-t-flutter/build/fr.emersion.goguma/android/app/src/main/play/listings/en-US/title.txt
include tests/triple-t-flutter/metadata/fr.emersion.goguma.yml
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.verifier/settings.gradle
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.verifier/verifier/src/main/play/listings/en-US/title.txt
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.verifier/wallet/src/main/play/listings/en-US/title.txt
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.wallet/settings.gradle
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.wallet/verifier/src/main/play/listings/en-US/title.txt
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.wallet/wallet/src/main/play/listings/en-US/title.txt
include tests/triple-t-multiple/metadata/ch.admin.bag.covidcertificate.verifier.yml
include tests/triple-t-multiple/metadata/ch.admin.bag.covidcertificate.wallet.yml
include tests/urzip-badcert.apk
include tests/urzip-badsig.apk
include tests/urzip-release-unsigned.apk
include tests/urzip-release.apk
include tests/urzip.apk
include tests/v2.only.sig_2.apk
include tests/valid-package-names/random-package-names
include tests/valid-package-names/RandomPackageNames.java
include tests/valid-package-names/test.py
include tests/__init__.py

12
README
View file

@ -1,12 +0,0 @@
F-Droid is an installable catalogue of FOSS (Free and Open Source Software)
applications for the Android platform. The client makes it easy to browse,
install, and keep track of updates on your device.
The F-Droid server tools provide various scripts and tools that are used to
maintain the main F-Droid application repository. You can use these same tools
to create your own additional or alternative repository for publishing, or to
assist in creating, testing and submitting metadata to the main repository.
For documentation, please see the docs directory.
Alternatively, visit http://f-droid.org/manual/

133
README.md Normal file
View file

@ -0,0 +1,133 @@
<div align="center">
<p><img src="https://gitlab.com/fdroid/artwork/-/raw/master/fdroid-logo-2015/fdroid-logo.svg" width="200"></p>
# F-Droid Server
### Tools for maintaining an F-Droid repository system.
</div>
---
## What is F-Droid Server?
_fdroidserver_ is a suite of tools to publish and work with collections of
Android apps (APK files) and other kinds of packages. It is used to maintain
the [f-droid.org application repository](https://f-droid.org/packages). These
same tools can be used to create additional or alternative repositories for
publishing, or to assist in creating, testing and submitting metadata to the
f-droid.org repository, also known as
[_fdroiddata_](https://gitlab.com/fdroid/fdroiddata).
For documentation, please see <https://f-droid.org/docs>.
In the beginning, _fdroidserver_ was the complete server-side setup that ran
f-droid.org. Since then, the website and other parts have been split out into
their own projects. The name for this suite of tooling has stayed
_fdroidserver_ even though it no longer contains any proper server component.
## Installing
There are many ways to install _fdroidserver_, including using a range of
package managers. All of the options are documented on the website:
https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools
## Releases
The production setup of _fdroidserver_ for f-droid.org is run directly from the
_master_ branch. This is put into production on an schedule (currently weekly).
So development and testing happens in the branches. We track branches using
merge requests. Therefore, there are many WIP and long-lived merge requests.
There are also stable releases of _fdroidserver_. This is mostly intended for
running custom repositories, where the build process is separate. It can also
be useful as a simple way to get started contributing packages to _fdroiddata_,
since the stable releases are available in package managers.
## Tests
To run the full test suite:
tests/run-tests
To run the tests for individual Python modules, see the `tests/test_*.py` files, e.g.:
python -m unittest tests/test_metadata.py
It is also possible to run individual tests:
python -m unittest tests.test_metadata.MetadataTest.test_rewrite_yaml_special_build_params
There is a growing test suite that has good coverage on a number of key parts of
this code base. It does not yet cover all the code, and there are some parts
where the technical debt makes it difficult to write unit tests. New tests
should be standard Python _unittest_ test cases. Whenever possible, the old
tests written in _bash_ in _tests/run-tests_ should be ported to Python.
This test suite has built over time a bit haphazardly, so it is not as clean,
organized, or complete as it could be. We welcome contributions. The goal is
to move towards standard Python testing patterns and to expand the unit test
coverage. Before rearchitecting any parts of it, be sure to [contact
us](https://f-droid.org/about) to discuss the changes beforehand.
### Additional tests for different linux distributions
These tests are also run on various configurations through GitLab CI. This is
only enabled for `master@fdroid/fdroidserver` because it takes longer to
complete than the regular CI tests. Most of the time you won't need to worry
about them, but sometimes it might make sense to also run them for your merge
request. In that case you need to remove [these lines from .gitlab-ci.yml](https://gitlab.com/fdroid/fdroidserver/-/blob/0124b9dde99f9cab19c034cbc7d8cc6005a99b48/.gitlab-ci.yml#L90-91)
and push this to a new branch of your fork.
Alternatively [run them
locally](https://docs.gitlab.com/runner/commands/README.html#gitlab-runner-exec)
like this: `gitlab-runner exec docker ubuntu_lts`
## Documentation
The API documentation based on the docstrings gets automatically
published [here](https://fdroid.gitlab.io/fdroidserver) on every commit
on the `master` branch.
It can be built locally via
```bash
pip install -e .[docs]
cd docs
sphinx-apidoc -o ./source ../fdroidserver -M -e
sphinx-autogen -o generated source/*.rst
make html
```
To additionally lint the code call
```bash
pydocstyle fdroidserver --count
```
When writing docstrings you should follow the
[numpy style guide](https://numpydoc.readthedocs.io/en/latest/format.html).
## Translation
Everything can be translated. See
[Translation and Localization](https://f-droid.org/docs/Translation_and_Localization)
for more info.
<div align="center">
[![](https://hosted.weblate.org/widgets/f-droid/-/287x66-white.png)](https://hosted.weblate.org/engage/f-droid)
<details>
<summary>View translation status for all languages.</summary>
[![](https://hosted.weblate.org/widgets/f-droid/-/fdroidserver/multi-auto.svg)](https://hosted.weblate.org/engage/f-droid/?utm_source=widget)
</details>
</div>

View file

@ -1,4 +1,4 @@
.vagrant
up.log
cache/
Vagrantfile
Vagrantfile.yaml

74
buildserver/Dockerfile Normal file
View file

@ -0,0 +1,74 @@
FROM debian:bookworm
ENV LANG=C.UTF-8 \
DEBIAN_FRONTEND=noninteractive
RUN echo Etc/UTC > /etc/timezone \
&& echo 'Acquire::Retries "20";' \
'APT::Get::Assume-Yes "true";' \
'APT::Install-Recommends "0";' \
'APT::Install-Suggests "0";' \
'Dpkg::Use-Pty "0";' \
'quiet "1";' \
>> /etc/apt/apt.conf.d/99gitlab
# provision-apt-proxy was deliberately omitted, its not relevant in Docker
COPY provision-android-ndk \
provision-android-sdk \
provision-apt-get-install \
provision-buildserverid \
provision-gradle \
setup-env-vars \
/opt/buildserver/
ARG GIT_REV_PARSE_HEAD=unspecified
LABEL org.opencontainers.image.revision=$GIT_REV_PARSE_HEAD
# setup 'vagrant' user for compatibility
RUN useradd --create-home -s /bin/bash vagrant && echo -n 'vagrant:vagrant' | chpasswd
# The provision scripts must be run in the same order as in Vagrantfile
# - vagrant needs openssh-client iproute2 ssh sudo
# - ansible needs python3
#
# Debian Docker images will soon default to HTTPS for apt sources, so force it.
# https://github.com/debuerreotype/docker-debian-artifacts/issues/15
#
# Ensure fdroidserver's dependencies are marked manual before purging
# unneeded packages, otherwise, all its dependencies get purged.
#
# The official Debian docker images ship without ca-certificates, so
# TLS certificates cannot be verified until that is installed. The
# following code temporarily turns off TLS verification, and enables
# HTTPS, so at least unverified TLS is used for apt-get instead of
# plain HTTP. Once ca-certificates is installed, the CA verification
# is enabled by removing the newly created config file. This set up
# makes the initial `apt-get update` and `apt-get install` look the
# same as verified TLS to the network observer and hides the metadata.
RUN printf "path-exclude=/usr/share/locale/*\npath-exclude=/usr/share/man/*\npath-exclude=/usr/share/doc/*\npath-include=/usr/share/doc/*/copyright\n" >/etc/dpkg/dpkg.cfg.d/01_nodoc \
&& mkdir -p /usr/share/man/man1 \
&& echo 'Acquire::https::Verify-Peer "false";' > /etc/apt/apt.conf.d/99nocacertificates \
&& find /etc/apt/sources.list* -type f -exec sed -i s,http:,https:, {} \; \
&& apt-get update \
&& apt-get install ca-certificates \
&& rm /etc/apt/apt.conf.d/99nocacertificates \
&& apt-get upgrade \
&& apt-get dist-upgrade \
&& apt-get install openssh-client iproute2 python3 openssh-server sudo \
&& bash /opt/buildserver/setup-env-vars /opt/android-sdk \
&& . /etc/profile.d/bsenv.sh \
&& bash /opt/buildserver/provision-apt-get-install https://deb.debian.org/debian \
&& bash /opt/buildserver/provision-android-sdk "tools;25.2.5" \
&& bash /opt/buildserver/provision-android-ndk /opt/android-sdk/ndk \
&& bash /opt/buildserver/provision-gradle \
&& bash /opt/buildserver/provision-buildserverid $GIT_REV_PARSE_HEAD \
&& rm -rf /vagrant/cache \
&& apt-get autoremove --purge \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Vagrant sudo setup for compatibility
RUN echo 'vagrant ALL = NOPASSWD: ALL' > /etc/sudoers.d/vagrant \
&& chmod 440 /etc/sudoers.d/vagrant \
&& sed -i -e 's/Defaults.*requiretty/#&/' /etc/sudoers

109
buildserver/Vagrantfile vendored Normal file
View file

@ -0,0 +1,109 @@
require 'yaml'
require 'pathname'
require 'fileutils'
configfile = {
'boot_timeout' => 600,
'cachedir' => File.join(ENV['HOME'], '.cache', 'fdroidserver'),
'cpus' => 1,
'debian_mirror' => 'https://deb.debian.org/debian/',
'hwvirtex' => 'on',
'memory' => 2048,
'vm_provider' => 'virtualbox',
}
srvpath = Pathname.new(File.dirname(__FILE__)).realpath
configpath = File.join(srvpath, "/Vagrantfile.yaml")
if File.exist? configpath
c = YAML.load_file(configpath)
if c and not c.empty?
c.each do |k,v|
configfile[k] = v
end
end
else
puts "Copying example file to #{configpath}"
FileUtils.cp('../examples/Vagrantfile.yaml', configpath)
end
Vagrant.configure("2") do |config|
if Vagrant.has_plugin?("vagrant-cachier")
config.cache.scope = :box
config.cache.auto_detect = false
config.cache.enable :apt
config.cache.enable :chef
end
config.vm.box = "debian/bookworm64"
if not configfile.has_key? "vm_provider" or configfile["vm_provider"] == "virtualbox"
# default to VirtualBox if not set
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", configfile['memory']]
v.customize ["modifyvm", :id, "--cpus", configfile['cpus']]
v.customize ["modifyvm", :id, "--hwvirtex", configfile['hwvirtex']]
end
synced_folder_type = 'virtualbox'
elsif configfile["vm_provider"] == "libvirt"
# use KVM/QEMU if this is running in KVM/QEMU
config.vm.provider :libvirt do |libvirt|
libvirt.driver = configfile["hwvirtex"] == "on" ? "kvm" : "qemu"
libvirt.host = "localhost"
libvirt.uri = "qemu:///system"
libvirt.cpus = configfile["cpus"]
libvirt.memory = configfile["memory"]
# Debian Vagrant image is only 20G, so allocate more
libvirt.machine_virtual_size = 1024
if configfile.has_key? "libvirt_disk_bus"
libvirt.disk_bus = configfile["libvirt_disk_bus"]
end
if configfile.has_key? "libvirt_nic_model_type"
libvirt.nic_model_type = configfile["libvirt_nic_model_type"]
end
end
if configfile.has_key? "synced_folder_type"
synced_folder_type = configfile["synced_folder_type"]
else
synced_folder_type = '9p'
end
config.vm.synced_folder './', '/vagrant', type: synced_folder_type,
SharedFoldersEnableSymlinksCreate: false
else
abort("No supported VM Provider found, set vm_provider in Vagrantfile.yaml!")
end
config.vm.boot_timeout = configfile['boot_timeout']
if configfile.has_key? "aptproxy"
config.vm.provision :shell, path: "provision-apt-proxy",
args: [configfile["aptproxy"]]
end
config.vm.synced_folder configfile["cachedir"], '/vagrant/cache',
create: true, type: synced_folder_type
# Make sure dir exists to mount to, since buildserver/ is
# automatically mounted as /vagrant in the guest VM. This is more
# necessary with 9p synced folders
Dir.mkdir('cache') unless File.exist?('cache')
# Root partition needs to be resized to the new allocated space
config.vm.provision "shell", inline: <<-SHELL
growpart -v -u auto /dev/vda 1
resize2fs /dev/vda1
SHELL
config.vm.provision "shell", name: "setup-env-vars", path: "setup-env-vars",
args: ["/opt/android-sdk"]
config.vm.provision "shell", name: "apt-get-install", path: "provision-apt-get-install",
args: [configfile['debian_mirror']]
config.vm.provision "shell", name: "android-sdk", path: "provision-android-sdk"
config.vm.provision "shell", name: "android-ndk", path: "provision-android-ndk",
args: ["/opt/android-sdk/ndk"]
config.vm.provision "shell", name: "gradle", path: "provision-gradle"
config.vm.provision "shell", name: "disable-analytics", path: "provision-disable-analytics"
config.vm.provision "shell", name: "buildserverid", path: "provision-buildserverid",
args: [`git rev-parse HEAD`]
end

View file

@ -0,0 +1,2 @@
sdk_path: /opt/android-sdk
gradle_version_dir: /opt/gradle/versions

View file

@ -1,36 +0,0 @@
ndk_loc = node[:settings][:ndk_loc]
user = node[:settings][:user]
execute "add-android-ndk-path" do
user user
command "echo \"export PATH=\\$PATH:#{ndk_loc} #PATH-NDK\" >> /home/#{user}/.bsenv"
not_if "grep PATH-NDK /home/#{user}/.bsenv"
end
execute "add-android-ndk-var" do
user user
command "echo \"export ANDROID_NDK=#{ndk_loc}\" >> /home/#{user}/.bsenv"
not_if "grep ANDROID_NDK /home/#{user}/.bsenv"
end
script "setup-android-ndk" do
timeout 14400
interpreter "bash"
user node[:settings][:user]
cwd "/tmp"
code "
if [ `uname -m` == 'x86_64' ] ; then
SUFFIX='_64'
else
SUFFIX=''
fi
tar jxvf /vagrant/cache/android-ndk-r9b-linux-x86$SUFFIX.tar.bz2
tar jxvf /vagrant/cache/android-ndk-r9b-linux-x86$SUFFIX-legacy-toolchains.tar.bz2
mv android-ndk-r9b #{ndk_loc}
"
not_if do
File.exists?("#{ndk_loc}")
end
end

View file

@ -1,99 +0,0 @@
sdk_loc = node[:settings][:sdk_loc]
user = node[:settings][:user]
script "setup-android-sdk" do
timeout 14400
interpreter "bash"
user user
cwd "/tmp"
code "
tar zxvf /vagrant/cache/android-sdk_r22.3-linux.tgz
mv android-sdk-linux #{sdk_loc}
#{sdk_loc}/tools/android update sdk --no-ui -t platform-tool
#{sdk_loc}/tools/android update sdk --no-ui -t tool
"
not_if "test -d #{sdk_loc}"
end
execute "add-android-sdk-path" do
user user
path = "#{sdk_loc}/tools:#{sdk_loc}/platform-tools"
command "echo \"export PATH=\\$PATH:#{path} #PATH-SDK\" >> /home/#{user}/.bsenv"
not_if "grep PATH-SDK /home/#{user}/.bsenv"
end
execute "add-android-home" do
user user
command "echo \"export ANDROID_HOME=#{sdk_loc}\" >> /home/#{user}/.bsenv"
not_if "grep ANDROID_HOME /home/#{user}/.bsenv"
end
script "add_build_tools" do
interpreter "bash"
user user
ver = "19.0.1"
cwd "/tmp"
code "
if [ -f /vagrant/cache/build-tools/#{ver}.tar.gz ] ; then
echo Installing from cache
mkdir #{sdk_loc}/build-tools
tar -C #{sdk_loc}/build-tools -z -x -f /vagrant/cache/build-tools/#{ver}.tar.gz
else
#{sdk_loc}/tools/android update sdk --no-ui -a -t build-tools-#{ver} <<X
y
X
fi
sed -i '/BTPATH/d' /home/#{user}/.bsenv
echo \"export PATH=\\$PATH:#{sdk_loc}/build-tools/#{ver} #BTPATH\" >> /home/#{user}/.bsenv
"
not_if "test -d #{sdk_loc}/build-tools/#{ver}"
end
# This is currently 19.0.1
script "add_platform_tools" do
interpreter "bash"
user user
cwd "/tmp"
code "
if [ -f /vagrant/cache/platform-tools.tar.gz ] ; then
echo Installing from cache
mkdir #{sdk_loc}/platform-tools
tar -C #{sdk_loc}/platform-tools -z -x -f /vagrant/cache/platform-tools.tar.gz
else
#{sdk_loc}/tools/android update sdk --no-ui -a -t platform-tools <<X
y
X
fi
"
not_if "test -d #{sdk_loc}/platform-tools"
end
%w{android-3 android-4 android-7 android-8 android-10 android-11
android-12 android-13 android-14 android-15 android-16 android-17
android-18 android-19
extra-android-support extra-android-m2repository}.each do |sdk|
script "add_sdk_#{sdk}" do
interpreter "bash"
user user
cwd "/tmp"
code "
if [ -f /vagrant/cache/platforms/#{sdk}.tar.gz ] ; then
echo Installing from cache
tar -C #{sdk_loc}/platforms -z -x -f /vagrant/cache/platforms/#{sdk}.tar.gz
else
echo Installing via 'android'
#{sdk_loc}/tools/android update sdk --no-ui -a -t #{sdk} <<X
y
X
fi
"
not_if "test -d #{sdk_loc}/platforms/#{sdk}"
end
end

View file

@ -1,28 +0,0 @@
user = node[:settings][:user]
execute "apt-get-update" do
command "apt-get update"
end
%w{ant ant-contrib autoconf autopoint bison cmake expect libtool libsaxonb-java libssl1.0.0 libssl-dev maven openjdk-7-jdk javacc python python-magic git-core mercurial subversion bzr git-svn make perlmagick pkg-config zip ruby rubygems librmagick-ruby yasm imagemagick gettext realpath transfig texinfo}.each do |pkg|
package pkg do
action :install
end
end
if node['kernel']['machine'] == "x86_64"
%w{libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386}.each do |pkg|
package pkg do
action :install
end
end
end
execute "add-bsenv" do
user user
command "echo \". ./.bsenv \" >> /home/#{user}/.bashrc"
not_if "grep bsenv /home/#{user}/.bashrc"
end

View file

@ -1,48 +0,0 @@
user = node[:settings][:user]
gradle_script = IO.read(File.join(
File.expand_path(File.dirname(__FILE__)), "gradle"))
script "add-gradle-bindir" do
cwd "/tmp"
interpreter "bash"
code "mkdir -p /opt/gradle/bin"
not_if "test -d /opt/gradle/bin"
end
script "add-gradle-verdir" do
cwd "/tmp"
interpreter "bash"
code "mkdir -p /opt/gradle/versions"
not_if "test -d /opt/gradle/versions"
end
%w{1.4 1.6 1.7 1.8 1.9}.each do |ver|
script "install-gradle-#{ver}" do
cwd "/tmp"
interpreter "bash"
code "
unzip /vagrant/cache/gradle-#{ver}-bin.zip
mv gradle-#{ver} /opt/gradle/versions/#{ver}
"
not_if "test -d /opt/gradle/versions/#{ver}"
end
end
script "add-gradle-wrapper" do
cwd "/tmp"
interpreter "bash"
code "
cat << \"EOF\" > /opt/gradle/bin/gradle
#{gradle_script}
EOF
chmod a+x /opt/gradle/bin/gradle
"
end
execute "add-android-ndk-path" do
user user
command "echo \"export PATH=\\$PATH:/opt/gradle/bin #PATH-GRADLE\" >> /home/#{user}/.bsenv"
not_if "grep PATH-GRADLE /home/#{user}/.bsenv"
end

View file

@ -1,68 +0,0 @@
#!/bin/bash
bindir="$(dirname $0)"
basedir="$(dirname $bindir)"
verdir="${basedir}/versions"
args=("$@")
pushd "${verdir}" &>/dev/null
v_all=(*/)
v_all=(${v_all[@]%/})
v_def=${v_all[-1]}
echo "Available gradle versions: ${v_all[@]}"
popd &>/dev/null
run_gradle() {
${verdir}/${v_found}/bin/gradle "${args[@]}"
exit $?
}
# key-value pairs of what gradle version each gradle plugin version
# should accept
d_plugin_k=(0.7 0.6 0.5 0.4 0.3 0.2)
d_plugin_v=(1.9 1.8 1.6 1.6 1.4 1.4)
# Latest takes priority
files=(../build.gradle build.gradle)
for f in ${files[@]}; do
[[ -f $f ]] || continue
while read l; do
if [[ $l == *'com.android.tools.build:gradle:'* ]]; then
plugin_pver=$(echo -n "$l" | sed "s/.*com.android.tools.build:gradle:\\([0-9\\.\\+]\\+\\).*/\\1/")
elif [[ $l == *'gradleVersion'* ]]; then
wrapper_ver=$(echo -n "$l" | sed "s/.*gradleVersion[ ]*=[ ]*[\"']\\([0-9\\.]\\+\\)[\"'].*/\\1/")
fi
done < $f
done
if [[ -n $wrapper_ver ]]; then
v_found=$wrapper_ver
echo "Found $v_found via gradleVersion"
run_gradle
fi
if [[ -n $plugin_pver ]]; then
i=0
match=false
for k in ${d_plugin_k[@]}; do
if [[ $plugin_pver == ${k}* ]]; then
plugin_ver=${d_plugin_v[$i]}
match=true
break
fi
let i++
done
if $match; then
v_found=$plugin_ver
echo "Found $v_found via gradle plugin version $k"
fi
fi
[[ -n $v_found ]] && run_gradle
echo "No suitable gradle version found - defaulting to $v_def"
v_found=$v_def
run_gradle

View file

@ -1,36 +0,0 @@
user = node[:settings][:user]
%w{cython python-pygame python-pip python-virtualenv python-opengl python-gst0.10 python-enchant libgl1-mesa-dev libgles2-mesa-dev}.each do |pkg|
package pkg do
action :install
end
end
script "install-kivy" do
cwd "/tmp"
interpreter "bash"
code "
tar xf /vagrant/cache/Kivy-1.7.2.tar.gz
cd Kivy-1.7.2
python setup.py install
cd ..
rm -rf Kivy*
"
not_if "python -c 'import kivy'"
end
script "install-p4a" do
cwd "/home/vagrant"
interpreter "bash"
code "
git clone git://github.com/kivy/python-for-android
chown -R vagrant:vagrant python-for-android
cd python-for-android
git checkout ca369d774e2
"
not_if "test -d /home/vagrant/python-for-android"
end

View file

@ -1,23 +0,0 @@
#!/bin/sh
fixit()
{
#Fix sudoers so the PATH gets passed through, otherwise chef
#provisioning doesn't work.
if [ -z "$1" ]; then
export EDITOR=$0 && sudo -E visudo
else
echo "Fix sudoers"
echo "Defaults exempt_group=admin" >> $1
fi
#Stick the gems bin onto root's path as well.
sudo echo "PATH=$PATH:/var/lib/gems/1.8/bin" >>/root/.bashrc
# Restart sudo so it gets the changes straight away
sudo /etc/init.d/sudo restart
}
sudo grep "exempt_group" /etc/sudoers -q
if [ "$?" -eq "1" ]; then
fixit
fi

View file

@ -0,0 +1,30 @@
#!/bin/bash
#
# $1 is the root dir to install the NDKs into
# $2 and after are the NDK releases to install
echo $0
set -e
set -x
NDK_BASE=$1
shift
test -e $NDK_BASE || mkdir -p $NDK_BASE
cd $NDK_BASE
for version in $@; do
if [ ! -e ${NDK_BASE}/${version} ]; then
unzip /vagrant/cache/android-ndk-${version}-linux*.zip > /dev/null
mv android-ndk-${version} \
`sed -En 's,^Pkg.Revision *= *(.+),\1,p' android-ndk-${version}/source.properties`
fi
done
# allow gradle/etc to install missing NDK versions
chgrp vagrant $NDK_BASE
chmod g+w $NDK_BASE
# ensure all users can read and execute the NDK
chmod -R a+rX $NDK_BASE/
find $NDK_BASE/ -type f -executable -exec chmod a+x -- {} +

View file

@ -0,0 +1,167 @@
#!/bin/bash
echo $0
set -e
set -x
if [ -z $ANDROID_HOME ]; then
echo "ANDROID_HOME env var must be set!"
exit 1
fi
# disable the repositories of proprietary stuff
disabled="
@version@=1
@disabled@https\://dl.google.com/android/repository/extras/intel/addon.xml=disabled
@disabled@https\://dl.google.com/android/repository/glass/addon.xml=disabled
@disabled@https\://dl.google.com/android/repository/sys-img/android/sys-img.xml=disabled
@disabled@https\://dl.google.com/android/repository/sys-img/android-tv/sys-img.xml=disabled
@disabled@https\://dl.google.com/android/repository/sys-img/android-wear/sys-img.xml=disabled
@disabled@https\://dl.google.com/android/repository/sys-img/google_apis/sys-img.xml=disabled
"
test -d ${HOME}/.android || mkdir ${HOME}/.android
# there are currently zero user repos
echo 'count=0' > ${HOME}/.android/repositories.cfg
for line in $disabled; do
echo $line >> ${HOME}/.android/sites-settings.cfg
done
# Include old makebuildserver cache that is a Vagrant synced_folder
# for sdkmanager to use.
cachedir=$HOME/.cache/sdkmanager
mkdir -p $cachedir
pushd $cachedir
for f in /vagrant/cache/*.zip; do
test -e $f && ln -s $f
done
popd
# TODO do not preinstall 'tools' or 'platform-tools' at all, app builds don't need them
packages="
tools;25.2.5
platform-tools
build-tools;19.1.0
build-tools;20.0.0
build-tools;21.1.2
build-tools;22.0.1
build-tools;23.0.1
build-tools;23.0.2
build-tools;23.0.3
build-tools;24.0.0
build-tools;24.0.1
build-tools;24.0.2
build-tools;24.0.3
build-tools;25.0.0
build-tools;25.0.1
build-tools;25.0.2
build-tools;25.0.3
build-tools;26.0.0
build-tools;26.0.1
build-tools;26.0.2
build-tools;26.0.3
build-tools;27.0.0
build-tools;27.0.1
build-tools;27.0.2
build-tools;27.0.3
build-tools;28.0.0
build-tools;28.0.1
build-tools;28.0.2
build-tools;28.0.3
build-tools;29.0.2
build-tools;29.0.3
build-tools;30.0.0
build-tools;30.0.1
build-tools;30.0.2
build-tools;30.0.3
build-tools;31.0.0
build-tools;32.0.0
build-tools;33.0.0
platforms;android-10
platforms;android-11
platforms;android-12
platforms;android-13
platforms;android-14
platforms;android-15
platforms;android-16
platforms;android-17
platforms;android-18
platforms;android-19
platforms;android-20
platforms;android-21
platforms;android-22
platforms;android-23
platforms;android-24
platforms;android-25
platforms;android-26
platforms;android-27
platforms;android-28
platforms;android-29
platforms;android-30
platforms;android-31
platforms;android-32
platforms;android-33
"
if [ $# -gt 0 ]; then
echo found args
packages=$@
fi
# temporary test of whether this script ran. It will change once
# 'tools' is no longer installed by default.
if [ ! -x $ANDROID_HOME/tools/bin/sdkmanager ]; then
mkdir -p ${ANDROID_HOME}/
sdkmanager $packages
fi
# this hacked cache should not end up in the Vagrant box or Docker image
rm -rf $cachedir
mkdir -p $ANDROID_HOME/licenses/
cat << EOF > $ANDROID_HOME/licenses/android-sdk-license
8933bad161af4178b1185d1a37fbf41ea5269c55
d56f5187479451eabf01fb78af6dfcb131a6481e
24333f8a63b6825ea9c5514f83c2829b004d1fee
EOF
cat <<EOF > $ANDROID_HOME/licenses/android-sdk-preview-license
84831b9409646a918e30573bab4c9c91346d8abd
EOF
cat <<EOF > $ANDROID_HOME/licenses/android-sdk-preview-license-old
79120722343a6f314e0719f863036c702b0e6b2a
84831b9409646a918e30573bab4c9c91346d8abd
EOF
cat <<EOF > $ANDROID_HOME/licenses/intel-android-extra-license
d975f751698a77b662f1254ddbeed3901e976f5a
EOF
chmod a+X $(dirname $ANDROID_HOME/)
chmod -R a+rX $ANDROID_HOME/
chgrp vagrant $ANDROID_HOME
chmod g+w $ANDROID_HOME
find $ANDROID_HOME/ -type f -executable -print0 | xargs -0 chmod a+x
# allow gradle to install newer build-tools and platforms
mkdir -p $ANDROID_HOME/{build-tools,platforms}
chgrp vagrant $ANDROID_HOME/{build-tools,platforms}
chmod g+w $ANDROID_HOME/{build-tools,platforms}
# allow gradle/sdkmanager to install into the new m2repository
test -d $ANDROID_HOME/extras/m2repository || mkdir -p $ANDROID_HOME/extras/m2repository
find $ANDROID_HOME/extras/m2repository -type d | xargs chgrp vagrant
find $ANDROID_HOME/extras/m2repository -type d | xargs chmod g+w
# allow gradle/sdkmanager to install extras;android;m2repository
test -d $ANDROID_HOME/extras/android || mkdir -p $ANDROID_HOME/extras/android
find $ANDROID_HOME/extras/android -type d | xargs chgrp vagrant
find $ANDROID_HOME/extras/android -type d | xargs chmod g+w

View file

@ -0,0 +1,139 @@
#!/bin/bash
echo $0
set -e
set -x
debian_mirror=$1
export DEBIAN_FRONTEND=noninteractive
printf 'APT::Install-Recommends "0";\nAPT::Install-Suggests "0";\n' \
> /etc/apt/apt.conf.d/99no-install-recommends
printf 'Acquire::Retries "20";\n' \
> /etc/apt/apt.conf.d/99acquire-retries
cat <<EOF > /etc/apt/apt.conf.d/99no-auto-updates
APT::Periodic::Enable "0";
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
EOF
printf 'APT::Get::Assume-Yes "true";\n' \
> /etc/apt/apt.conf.d/99assumeyes
cat <<EOF > /etc/apt/apt.conf.d/99quiet
Dpkg::Use-Pty "0";
quiet "1";
EOF
cat <<EOF > /etc/apt/apt.conf.d/99confdef
Dpkg::Options { "--force-confdef"; };
EOF
echo "man-db man-db/auto-update boolean false" | debconf-set-selections
if echo $debian_mirror | grep '^https' 2>&1 > /dev/null; then
apt-get update || apt-get update
apt-get install ca-certificates
fi
cat << EOF > /etc/apt/sources.list
deb ${debian_mirror} bookworm main
deb https://security.debian.org/debian-security bookworm-security main
deb ${debian_mirror} bookworm-updates main
EOF
echo "deb ${debian_mirror} bookworm-backports main" > /etc/apt/sources.list.d/backports.list
apt-get update || apt-get update
# purge things that might come from the base box, but we don't want
# https://salsa.debian.org/cloud-team/debian-vagrant-images/-/tree/master/config_space/package_config
# cat config_space/package_config/* | sort -u | grep -v '[A-Z#]'
purge="
apt-listchanges
apt-utils
bash-completion
bind9-*
bsdextrautils
bzip2
chrony
cloud-utils
cron
cron-daemon-common
dbus
debconf-i18n
debian-faq
dmidecode
doc-debian
fdisk
file
groff-base
inetutils-telnet
krb5-locales
less
locales
logrotate
lsof
manpages
nano
ncurses-term
netcat-traditional
pciutils
reportbug
rsyslog
tasksel
traceroute
unattended-upgrades
usrmerge
vim-*
wamerican
wget
whiptail
xz-utils
"
# clean up files packages to be purged, then purge the packages
rm -rf /var/run/dbus /var/log/unattended-upgrades
apt-get purge $purge
apt-get upgrade --download-only
apt-get upgrade
# again after upgrade in case of keyring changes
apt-get update || apt-get update
packages="
androguard/bookworm-backports
apksigner
default-jdk-headless
default-jre-headless
curl
dexdump
fdroidserver
git-svn
gnupg
mercurial
patch
python3-magic
python3-packaging
rsync
sdkmanager/bookworm-backports
sudo
unzip
"
apt-get install $packages --download-only
apt-get install $packages
# fdroidserver comes from git, it was installed just for dependencies
apt-mark manual `apt-cache depends fdroidserver | sed -nE 's,^[| ]*Depends: ([a-z0-9 -]+),\1,p'`
apt-get purge fdroidserver
# clean up things that will become outdated anyway
apt-get autoremove --purge
apt-get clean
rm -rf /var/lib/apt/lists/*
highestjava=`update-java-alternatives --list | sort -n | tail -1 | cut -d ' ' -f 1`
update-java-alternatives --set $highestjava

View file

@ -0,0 +1,11 @@
#!/bin/bash
echo $0
set -e
rm -f /etc/apt/apt.conf.d/02proxy
echo "Acquire::ftp::Proxy \"$1\";" >> /etc/apt/apt.conf.d/02proxy
echo "Acquire::http::Proxy \"$1\";" >> /etc/apt/apt.conf.d/02proxy
echo "Acquire::https::Proxy \"$1\";" >> /etc/apt/apt.conf.d/02proxy
apt-get update || apt-get update

View file

@ -0,0 +1,9 @@
#!/bin/bash -e
test -n "$1"
echo "Writing buildserver ID ...ID is $1"
set -x
echo "$1" > /home/vagrant/buildserverid
# sync data before we halt() the machine, we had an empty buildserverid otherwise
sync

View file

@ -0,0 +1,15 @@
#!/bin/bash
set -ex
# Flutter
# https://github.com/flutter/flutter/issues/73657
flutter_conf=/home/vagrant/.flutter
cat <<EOF > $flutter_conf
{
"enabled": false
}
EOF
chown -R vagrant:vagrant $flutter_conf
chmod -R 0644 $flutter_conf

View file

@ -0,0 +1,53 @@
#!/bin/bash
set -ex
# version compare magic
vergte() {
printf '%s\n%s' "$1" "$2" | sort -C -V -r
}
test -e /opt/gradle/versions || mkdir -p /opt/gradle/versions
cd /opt/gradle/versions
glob="/vagrant/cache/gradle-*.zip"
if compgen -G $glob; then # test if glob matches anything
f=$(ls -1 --sort=version --group-directories-first $glob | tail -1)
ver=`echo $f | sed 's,.*gradle-\([0-9][0-9.]*\).*\.zip,\1,'`
# only use versions greater or equal 2.2.1
if vergte $ver 2.2.1 && [ ! -d /opt/gradle/versions/${ver} ]; then
unzip -qq $f
mv gradle-${ver} /opt/gradle/versions/${ver}
fi
fi
chmod -R a+rX /opt/gradle
test -e /opt/gradle/bin || mkdir -p /opt/gradle/bin
git clone --depth 1 https://gitlab.com/fdroid/gradlew-fdroid.git /home/vagrant/gradlew-fdroid/
chmod 0755 /home/vagrant/gradlew-fdroid/gradlew-fdroid
chmod -R u+rwX,a+rX,go-w /home/vagrant/gradlew-fdroid/
ln -fs /home/vagrant/gradlew-fdroid/gradlew-fdroid /opt/gradle/bin/gradle
ln -fs /home/vagrant/gradlew-fdroid/gradlew-fdroid /usr/local/bin/
chown -h vagrant:vagrant /opt/gradle/bin/gradle
chown vagrant:vagrant /opt/gradle/versions
chmod 0755 /opt/gradle/versions
GRADLE_HOME=/home/vagrant/.gradle
test -d $GRADLE_HOME/ || mkdir $GRADLE_HOME/
cat <<EOF > $GRADLE_HOME/gradle.properties
# builds are not reused, so the daemon is a waste of time
org.gradle.daemon=false
# set network timeouts to 10 minutes
# https://github.com/gradle/gradle/pull/3371/files
systemProp.http.connectionTimeout=600000
systemProp.http.socketTimeout=600000
systemProp.org.gradle.internal.http.connectionTimeout=600000
systemProp.org.gradle.internal.http.socketTimeout=600000
EOF
chown -R vagrant:vagrant $GRADLE_HOME/
chmod -R a+rX $GRADLE_HOME/

View file

@ -0,0 +1,27 @@
#!/bin/sh
#
# sets up the environment vars needed by the build process
set -e
set -x
bsenv=/etc/profile.d/bsenv.sh
echo "# generated on "`date` > $bsenv
echo export ANDROID_HOME=$1 >> $bsenv
echo 'export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/gradle/bin' >> $bsenv
echo "export DEBIAN_FRONTEND=noninteractive" >> $bsenv
echo 'export home_vagrant=/home/vagrant' >> $bsenv
echo 'export fdroidserver=$home_vagrant/fdroidserver' >> $bsenv
echo 'export LC_ALL=C.UTF-8' >> $bsenv
chmod 0644 $bsenv
# make sure that SSH never hangs at a password or key prompt
mkdir -p /etc/ssh/ssh_config.d/
cat << EOF >> /etc/ssh/ssh_config.d/fdroid
Host *
StrictHostKeyChecking yes
BatchMode yes
EOF

View file

@ -1,8 +1,8 @@
#!/bin/bash
# fdroid(1) completion -*- shell-script -*-
#
# bash-completion - part of the FDroid server tools
# Commits updates to apps, allowing you to edit the commit messages
#
# Copyright (C) 2013-2017 Hans-Christoph Steiner <hans@eds.org>
# Copyright (C) 2013, 2014 Daniel Martí <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
@ -18,17 +18,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# 'fdroid' is completed automatically, but aliases to it are not.
# For instance, to alias 'fd' to 'fdroid' and have competion available:
#
# alias fd='fdroid'
# complete -F _fdroid fd
#
# One can use completion on aliased subcommands as follows:
#
# alias fbuild='fdroid build'
# complete -F _fdroid_build fbuild
__fdroid_init() {
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
@ -37,10 +26,15 @@ __fdroid_init() {
(( $# >= 1 )) && __complete_${1}
}
__package() {
files=( metadata/*.txt )
__get_appid() {
files=( metadata/*.yml )
files=( ${files[@]#metadata/} )
files=${files[@]%.txt}
files=${files[@]%.yml}
echo "$files"
}
__package() {
files="$(__get_appid)"
COMPREPLY=( $( compgen -W "$files" -- $cur ) )
}
@ -65,41 +59,41 @@ __apk_vercode() {
}
__vercode() {
local p=${cur:0:-1}
COMPREPLY=( $( compgen -P "${p}:" -W "$( while read line; do
if [[ "$line" == "Build Version:"* ]]
then
line="${line#*,}"
printf "${line%%,*} "
elif [[ "$line" == "Build:"* ]]
then
line="${line#*,}"
printf "${line%%,*} "
fi
done < "metadata/${p}.txt" )" -- $cur ) )
if [ $prev = ":" ]; then
appid="${COMP_WORDS[COMP_CWORD-2]}"
elif [ $cur = ":" ]; then
appid=$prev
cur=""
fi
versionCodes=`sed -En 's,^ +versionCode: +([0-9]+) *$,\1,p' metadata/${appid}.yml`
COMPREPLY=( $( compgen -W "$versionCodes" -- $cur ) )
}
__complete_options() {
case "${cur}" in
--*)
COMPREPLY=( $( compgen -W "${lopts}" -- $cur ) )
COMPREPLY=( $( compgen -W "--help --version ${lopts}" -- $cur ) )
return 0;;
*)
COMPREPLY=( $( compgen -W "${opts} ${lopts}" -- $cur ) )
COMPREPLY=( $( compgen -W "-h ${opts} --help --version ${lopts}" -- $cur ) )
return 0;;
esac
}
__complete_build() {
opts="-h -v -c -l -s -t -f"
lopts="--help --verbose --latest --server --resetserver --on-server
--force --all"
opts="-v -q -l -s -t -f -a"
lopts="--verbose --quiet --latest --stop --test --server --skip-scan --scan-binary --no-tarball --force --all --no-refresh"
case "${prev}" in
:)
__vercode
return 0;;
esac
case "${cur}" in
-*)
__complete_options
return 0;;
*:)
:)
__vercode
return 0;;
*)
@ -108,9 +102,15 @@ __complete_build() {
esac
}
__complete_gpgsign() {
opts="-v -q"
lopts="--verbose --quiet"
__complete_options
}
__complete_install() {
opts="-h -v"
lopts="--help --verbose --all"
opts="-v -q -a -p -n -y"
lopts="--verbose --quiet --all --color --no-color --privacy-mode --no-privacy-mode --no --yes"
case "${cur}" in
-*)
__complete_options
@ -125,9 +125,10 @@ __complete_install() {
}
__complete_update() {
opts="-h -c -v -q -b -i -I -e -w"
lopts="--help --createmeta --verbose --quiet --buildreport --interactive
--icons --editor --wiki --pretty --clean"
opts="-c -v -q -i -I -e"
lopts="--create-metadata --verbose --quiet
--icons --pretty --clean --delete-unknown
--nosign --rename-apks --use-date-from-apk"
case "${prev}" in
-e|--editor)
_filedir
@ -137,8 +138,8 @@ __complete_update() {
}
__complete_publish() {
opts="-h -v"
lopts="--help --verbose"
opts="-v -q"
lopts="--verbose --quiet"
case "${cur}" in
-*)
__complete_options
@ -153,8 +154,8 @@ __complete_publish() {
}
__complete_checkupdates() {
opts="-h -v"
lopts="--help --verbose --auto --autoonly --commit --gplay"
opts="-v -q"
lopts="--verbose --quiet --auto --autoonly --commit --allow-dirty"
case "${cur}" in
-*)
__complete_options
@ -166,17 +167,27 @@ __complete_checkupdates() {
}
__complete_import() {
opts="-h -u -s -r"
lopts="--help --url --subdir --repo"
opts="-c -h -l -q -s -u -v -W"
lopts="--categories --license --quiet --rev --subdir --url"
case "${prev}" in
-u|--url|-r|--repo|-s|--subdir) return 0;;
-c|-l|-s|-u|--categories|--license|--quiet|--rev|--subdir|--url)
return 0;;
-W)
COMPREPLY=( $( compgen -W "error warn ignore" -- $cur ) )
return 0;;
esac
__complete_options
}
__complete_readmeta() {
opts="-v -q"
lopts="--verbose --quiet"
__complete_options
}
__complete_rewritemeta() {
opts="-h -v"
lopts="--help --verbose"
opts="-v -q -l"
lopts="--verbose --quiet --list"
case "${cur}" in
-*)
__complete_options
@ -188,8 +199,8 @@ __complete_rewritemeta() {
}
__complete_lint() {
opts="-h -v"
lopts="--help --verbose"
opts="-v -q -f"
lopts="--verbose --quiet --force-yamllint --format"
case "${cur}" in
-*)
__complete_options
@ -201,8 +212,8 @@ __complete_lint() {
}
__complete_scanner() {
opts="-h -v"
lopts="--help --verbose --nosvn"
opts="-v -q"
lopts="--verbose --quiet"
case "${cur}" in
-*)
__complete_options
@ -217,8 +228,8 @@ __complete_scanner() {
}
__complete_verify() {
opts="-h -v -p"
lopts="--help --verbose"
opts="-v -q -p"
lopts="--verbose --quiet"
case "${cur}" in
-*)
__complete_options
@ -232,45 +243,94 @@ __complete_verify() {
esac
}
__complete_stats() {
opts="-h -v -d"
lopts="--help --verbose --download"
__complete_btlog() {
opts="-u"
lopts="--git-remote --git-repo --url"
__complete_options
}
__complete_server() {
opts="-h -v"
lopts="--help --verbose update"
__complete_mirror() {
opts="-v"
lopts="--all --archive --build-logs --color --no-color --pgp-signatures --src-tarballs --output-dir"
__complete_options
}
__complete_nightly() {
opts="-v -q"
lopts="--show-secret-var --archive-older"
__complete_options
}
__complete_deploy() {
opts="-i -v -q"
lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir
--verbose --quiet --no-checksum --no-keep-git-mirror-archive"
__complete_options
}
__complete_signatures() {
opts="-v -q"
lopts="--verbose --color --no-color --no-check-https"
case "${cur}" in
-*)
__complete_options
return 0;;
esac
_filedir 'apk'
return 0
}
__complete_signindex() {
opts="-v -q"
lopts="--verbose"
__complete_options
}
__complete_init() {
opts="-h -v -d"
lopts="--help --verbose --keystore --distinguished-name --repo-keyalias"
opts="-v -q -d"
lopts="--verbose --quiet --distinguished-name --keystore
--repo-keyalias --android-home --no-prompt --color --no-color"
__complete_options
}
_fdroid() {
local cmd cmds
cmd=${COMP_WORDS[1]}
cmds=" build init install update publish checkupdates import \
rewritemeta lint scanner verify stats server "
__cmds=" \
btlog \
build \
checkupdates \
deploy \
gpgsign \
import \
init \
install \
lint \
mirror \
nightly \
publish \
readmeta \
rewritemeta \
scanner \
signatures \
signindex \
update \
verify \
"
for c in $cmds; do eval "_fdroid_${c} () {
for c in $__cmds; do
eval "_fdroid_${c} () {
local cur prev opts lopts
__fdroid_init ${c};
}"; done
__fdroid_init ${c}
}"
done
[[ $cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || {
(($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${cmds}" -- $cmd ) )
_fdroid() {
local cmd
cmd=${COMP_WORDS[1]}
[[ $__cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || {
(($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${__cmds}" -- $cmd ) )
}
}
_fd-commit() {
__package
}
complete -F _fdroid fdroid
complete -F _fd-commit fd-commit
return 0

View file

@ -1,5 +0,0 @@
sdk_path = "/home/vagrant/android-sdk"
ndk_path = "/home/vagrant/android-ndk"
build_tools = "19.0.1"
mvn3 = "mvn"
gradle = "gradle"

13
docs/.gitignore vendored
View file

@ -1,13 +0,0 @@
/manual/
# generated docs files
/fdroid.aux
/fdroid.cp
/fdroid.cps
/fdroid.fn
/fdroid.info
/fdroid.ky
/fdroid.log
/fdroid.pg
/fdroid.toc
/fdroid.tp
/fdroid.vr

20
docs/Makefile Normal file
View file

@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View file

@ -1,463 +0,0 @@
@c The GNU Free Documentation License.
@center Version 1.3, 3 November 2008
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
@uref{http://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@enumerate 0
@item
PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document @dfn{free} in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of ``copyleft'', which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
@item
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The ``Document'', below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as ``you''. You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A ``Modified Version'' of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A ``Secondary Section'' is a named appendix or a front-matter section
of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The ``Invariant Sections'' are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The ``Cover Texts'' are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A ``Transparent'' copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not ``Transparent'' is called ``Opaque''.
Examples of suitable formats for Transparent copies include plain
@sc{ascii} without markup, Texinfo input format, La@TeX{} input
format, @acronym{SGML} or @acronym{XML} using a publicly available
@acronym{DTD}, and standard-conforming simple @acronym{HTML},
PostScript or @acronym{PDF} designed for human modification. Examples
of transparent image formats include @acronym{PNG}, @acronym{XCF} and
@acronym{JPG}. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, @acronym{SGML} or
@acronym{XML} for which the @acronym{DTD} and/or processing tools are
not generally available, and the machine-generated @acronym{HTML},
PostScript or @acronym{PDF} produced by some word processors for
output purposes only.
The ``Title Page'' means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, ``Title Page'' means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The ``publisher'' means any person or entity that distributes copies
of the Document to the public.
A section ``Entitled XYZ'' means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as ``Acknowledgements'',
``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
of such a section when you modify the Document means that it remains a
section ``Entitled XYZ'' according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
@item
VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
@item
COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
@item
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
@enumerate A
@item
Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
@item
List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
@item
State on the Title page the name of the publisher of the
Modified Version, as the publisher.
@item
Preserve all the copyright notices of the Document.
@item
Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
@item
Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
@item
Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
@item
Include an unaltered copy of this License.
@item
Preserve the section Entitled ``History'', Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled ``History'' in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
@item
Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the ``History'' section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
@item
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
the Title of the section, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.
@item
Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
@item
Delete any section Entitled ``Endorsements''. Such a section
may not be included in the Modified Version.
@item
Do not retitle any existing section to be Entitled ``Endorsements'' or
to conflict in title with any Invariant Section.
@item
Preserve any Warranty Disclaimers.
@end enumerate
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled ``Endorsements'', provided it contains
nothing but endorsements of your Modified Version by various
parties---for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
@item
COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled ``History''
in the various original documents, forming one section Entitled
``History''; likewise combine any sections Entitled ``Acknowledgements'',
and any sections Entitled ``Dedications''. You must delete all
sections Entitled ``Endorsements.''
@item
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
@item
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an ``aggregate'' if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
@item
TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled ``Acknowledgements'',
``Dedications'', or ``History'', the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
@item
TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
@item
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
@uref{http://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License ``or any later version'' applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
@item
RELICENSING
``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
site means any set of copyrightable works thus published on the MMC
site.
``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
``Incorporate'' means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is ``eligible for relicensing'' if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
@end enumerate

File diff suppressed because it is too large Load diff

View file

@ -1,466 +0,0 @@
#!/bin/sh -e
# gendocs.sh -- generate a GNU manual in many formats. This script is
# mentioned in maintain.texi. See the help message below for usage details.
scriptversion=2013-02-03.15
# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
# Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Original author: Mohit Agarwal.
# Send bug reports and any other correspondence to bug-texinfo@gnu.org.
#
# The latest version of this script, and the companion template, is
# available from Texinfo CVS:
# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh
# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template
#
# An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib).
# TODO:
# - image importation was only implemented for HTML generated by
# makeinfo. But it should be simple enough to adjust.
# - images are not imported in the source tarball. All the needed
# formats (PDF, PNG, etc.) should be included.
prog=`basename "$0"`
srcdir=`pwd`
scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh"
templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template"
: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}
: ${MAKEINFO="makeinfo"}
: ${TEXI2DVI="texi2dvi -t @finalout"}
: ${DOCBOOK2HTML="docbook2html"}
: ${DOCBOOK2PDF="docbook2pdf"}
: ${DOCBOOK2TXT="docbook2txt"}
: ${GENDOCS_TEMPLATE_DIR="."}
: ${PERL='perl'}
: ${TEXI2HTML="texi2html"}
unset CDPATH
unset use_texi2html
version="gendocs.sh $scriptversion
Copyright 2013 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING."
usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE
Generate output in various formats from PACKAGE.texinfo (or .texi or
.txi) source. See the GNU Maintainers document for a more extensive
discussion:
http://www.gnu.org/prep/maintain_toc.html
Options:
--email ADR use ADR as contact in generated web pages; always give this.
-s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi}
-o OUTDIR write files into OUTDIR, instead of manual/.
-I DIR append DIR to the Texinfo search path.
--common ARG pass ARG in all invocations.
--html ARG pass ARG to makeinfo or texi2html for HTML targets.
--info ARG pass ARG to makeinfo for Info, instead of --no-split.
--no-ascii skip generating the plain text output.
--source ARG include ARG in tar archive of sources.
--split HOW make split HTML by node, section, chapter; default node.
--texi2html use texi2html to make HTML target, with all split versions.
--docbook convert through DocBook too (xml, txt, html, pdf).
--help display this help and exit successfully.
--version display version information and exit successfully.
Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\"
Typical sequence:
cd PACKAGESOURCE/doc
wget \"$scripturl\"
wget \"$templateurl\"
$prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\"
Output will be in a new subdirectory \"manual\" (by default;
use -o OUTDIR to override). Move all the new files into your web CVS
tree, as explained in the Web Pages node of maintain.texi.
Please use the --email ADDRESS option so your own bug-reporting
address will be used in the generated HTML pages.
MANUAL-TITLE is included as part of the HTML <title> of the overall
manual/index.html file. It should include the name of the package being
documented. manual/index.html is created by substitution from the file
$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the
generic template for your own purposes.)
If you have several manuals, you'll need to run this script several
times with different MANUAL values, specifying a different output
directory with -o each time. Then write (by hand) an overall index.html
with links to them all.
If a manual's Texinfo sources are spread across several directories,
first copy or symlink all Texinfo sources into a single directory.
(Part of the script's work is to make a tar.gz of the sources.)
As implied above, by default monolithic Info files are generated.
If you want split Info, or other Info options, use --info to override.
You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML,
and PERL to control the programs that get executed, and
GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is
looked for. With --docbook, the environment variables DOCBOOK2HTML,
DOCBOOK2PDF, and DOCBOOK2TXT are also consulted.
By default, makeinfo and texi2dvi are run in the default (English)
locale, since that's the language of most Texinfo manuals. If you
happen to have a non-English manual and non-English web site, see the
SETLANG setting in the source.
Email bug reports or enhancement requests to bug-texinfo@gnu.org.
"
MANUAL_TITLE=
PACKAGE=
EMAIL=webmasters@gnu.org # please override with --email
commonarg= # passed to all makeinfo/texi2html invcations.
dirargs= # passed to all tools (-I dir).
dirs= # -I's directories.
htmlarg=
infoarg=--no-split
generate_ascii=true
outdir=manual
source_extra=
split=node
srcfile=
while test $# -gt 0; do
case $1 in
-s) shift; srcfile=$1;;
-o) shift; outdir=$1;;
-I) shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";;
--common) shift; commonarg=$1;;
--docbook) docbook=yes;;
--email) shift; EMAIL=$1;;
--html) shift; htmlarg=$1;;
--info) shift; infoarg=$1;;
--no-ascii) generate_ascii=false;;
--source) shift; source_extra=$1;;
--split) shift; split=$1;;
--texi2html) use_texi2html=1;;
--help) echo "$usage"; exit 0;;
--version) echo "$version"; exit 0;;
-*)
echo "$0: Unknown option \`$1'." >&2
echo "$0: Try \`--help' for more information." >&2
exit 1;;
*)
if test -z "$PACKAGE"; then
PACKAGE=$1
elif test -z "$MANUAL_TITLE"; then
MANUAL_TITLE=$1
else
echo "$0: extra non-option argument \`$1'." >&2
exit 1
fi;;
esac
shift
done
# makeinfo uses the dirargs, but texi2dvi doesn't.
commonarg=" $dirargs $commonarg"
# For most of the following, the base name is just $PACKAGE
base=$PACKAGE
if test -n "$srcfile"; then
# but here, we use the basename of $srcfile
base=`basename "$srcfile"`
case $base in
*.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;;
esac
PACKAGE=$base
elif test -s "$srcdir/$PACKAGE.texinfo"; then
srcfile=$srcdir/$PACKAGE.texinfo
elif test -s "$srcdir/$PACKAGE.texi"; then
srcfile=$srcdir/$PACKAGE.texi
elif test -s "$srcdir/$PACKAGE.txi"; then
srcfile=$srcdir/$PACKAGE.txi
else
echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2
exit 1
fi
if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then
echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2
echo "$0: it is available from $templateurl." >&2
exit 1
fi
# Function to return size of $1 in something resembling kilobytes.
calcsize()
{
size=`ls -ksl $1 | awk '{print $1}'`
echo $size
}
# copy_images OUTDIR HTML-FILE...
# -------------------------------
# Copy all the images needed by the HTML-FILEs into OUTDIR. Look
# for them in the -I directories.
copy_images()
{
local odir
odir=$1
shift
$PERL -n -e "
BEGIN {
\$me = '$prog';
\$odir = '$odir';
@dirs = qw($dirs);
}
" -e '
/<img src="(.*?)"/g && ++$need{$1};
END {
#print "$me: @{[keys %need]}\n"; # for debugging, show images found.
FILE: for my $f (keys %need) {
for my $d (@dirs) {
if (-f "$d/$f") {
use File::Basename;
my $dest = dirname ("$odir/$f");
#
use File::Path;
-d $dest || mkpath ($dest)
|| die "$me: cannot mkdir $dest: $!\n";
#
use File::Copy;
copy ("$d/$f", $dest)
|| die "$me: cannot copy $d/$f to $dest: $!\n";
next FILE;
}
}
die "$me: $ARGV: cannot find image $f\n";
}
}
' -- "$@" || exit 1
}
case $outdir in
/*) abs_outdir=$outdir;;
*) abs_outdir=$srcdir/$outdir;;
esac
echo "Making output for $srcfile"
echo " in `pwd`"
mkdir -p "$outdir/"
cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\""
echo "Generating info... ($cmd)"
eval "$cmd"
tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info*
ls -l "$outdir/$PACKAGE.info.tar.gz"
info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"`
# do not mv the info files, there's no point in having them available
# separately on the web.
cmd="$SETLANG $TEXI2DVI $dirargs \"$srcfile\""
printf "\nGenerating dvi... ($cmd)\n"
eval "$cmd"
# compress/finish dvi:
gzip -f -9 $PACKAGE.dvi
dvi_gz_size=`calcsize $PACKAGE.dvi.gz`
mv $PACKAGE.dvi.gz "$outdir/"
ls -l "$outdir/$PACKAGE.dvi.gz"
cmd="$SETLANG $TEXI2DVI --pdf $dirargs \"$srcfile\""
printf "\nGenerating pdf... ($cmd)\n"
eval "$cmd"
pdf_size=`calcsize $PACKAGE.pdf`
mv $PACKAGE.pdf "$outdir/"
ls -l "$outdir/$PACKAGE.pdf"
if $generate_ascii; then
opt="-o $PACKAGE.txt --no-split --no-headers $commonarg"
cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
printf "\nGenerating ascii... ($cmd)\n"
eval "$cmd"
ascii_size=`calcsize $PACKAGE.txt`
gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz"
ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"`
mv $PACKAGE.txt "$outdir/"
ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz"
fi
html_split()
{
opt="--split=$1 --node-files $commonarg $htmlarg"
cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\""
printf "\nGenerating html by $1... ($cmd)\n"
eval "$cmd"
split_html_dir=$PACKAGE.html
(
cd ${split_html_dir} || exit 1
ln -sf ${PACKAGE}.html index.html
tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html
)
eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"`
rm -f "$outdir"/html_$1/*.html
mkdir -p "$outdir/html_$1/"
mv ${split_html_dir}/*.html "$outdir/html_$1/"
rmdir ${split_html_dir}
}
if test -z "$use_texi2html"; then
opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg"
cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
printf "\nGenerating monolithic html... ($cmd)\n"
rm -rf $PACKAGE.html # in case a directory is left over
eval "$cmd"
html_mono_size=`calcsize $PACKAGE.html`
gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
copy_images "$outdir/" $PACKAGE.html
mv $PACKAGE.html "$outdir/"
ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz"
opt="--html -o $PACKAGE.html --split=$split $commonarg $htmlarg"
cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
printf "\nGenerating html by $split... ($cmd)\n"
eval "$cmd"
split_html_dir=$PACKAGE.html
copy_images $split_html_dir/ $split_html_dir/*.html
(
cd $split_html_dir || exit 1
tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- *
)
eval \
html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"`
rm -rf "$outdir/html_$split/"
mv $split_html_dir "$outdir/html_$split/"
du -s "$outdir/html_$split/"
ls -l "$outdir/$PACKAGE.html_$split.tar.gz"
else # use texi2html:
opt="--output $PACKAGE.html $commonarg $htmlarg"
cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\""
printf "\nGenerating monolithic html with texi2html... ($cmd)\n"
rm -rf $PACKAGE.html # in case a directory is left over
eval "$cmd"
html_mono_size=`calcsize $PACKAGE.html`
gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
mv $PACKAGE.html "$outdir/"
html_split node
html_split chapter
html_split section
fi
printf "\nMaking .tar.gz for sources...\n"
d=`dirname $srcfile`
(
cd "$d"
srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true
tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles
ls -l "$abs_outdir/$PACKAGE.texi.tar.gz"
)
texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"`
if test -n "$docbook"; then
opt="-o - --docbook $commonarg"
cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml"
printf "\nGenerating docbook XML... ($cmd)\n"
eval "$cmd"
docbook_xml_size=`calcsize $PACKAGE-db.xml`
gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz"
docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"`
mv $PACKAGE-db.xml "$outdir/"
split_html_db_dir=html_node_db
opt="$commonarg -o $split_html_db_dir"
cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\""
printf "\nGenerating docbook HTML... ($cmd)\n"
eval "$cmd"
(
cd ${split_html_db_dir} || exit 1
tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html
)
html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"`
rm -f "$outdir"/html_node_db/*.html
mkdir -p "$outdir/html_node_db"
mv ${split_html_db_dir}/*.html "$outdir/html_node_db/"
rmdir ${split_html_db_dir}
cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\""
printf "\nGenerating docbook ASCII... ($cmd)\n"
eval "$cmd"
docbook_ascii_size=`calcsize $PACKAGE-db.txt`
mv $PACKAGE-db.txt "$outdir/"
cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\""
printf "\nGenerating docbook PDF... ($cmd)\n"
eval "$cmd"
docbook_pdf_size=`calcsize $PACKAGE-db.pdf`
mv $PACKAGE-db.pdf "$outdir/"
fi
printf "\nMaking index file...\n"
if test -z "$use_texi2html"; then
CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\
/%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d"
else
# should take account of --split here.
CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d"
fi
curdate=`$SETLANG date '+%B %d, %Y'`
sed \
-e "s!%%TITLE%%!$MANUAL_TITLE!g" \
-e "s!%%EMAIL%%!$EMAIL!g" \
-e "s!%%PACKAGE%%!$PACKAGE!g" \
-e "s!%%DATE%%!$curdate!g" \
-e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \
-e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \
-e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \
-e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \
-e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \
-e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \
-e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \
-e "s!%%PDF_SIZE%%!$pdf_size!g" \
-e "s!%%ASCII_SIZE%%!$ascii_size!g" \
-e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \
-e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \
-e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \
-e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \
-e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \
-e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \
-e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \
-e "s,%%SCRIPTURL%%,$scripturl,g" \
-e "s!%%SCRIPTNAME%%!$prog!g" \
-e "$CONDS" \
$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html"
echo "Done, see $outdir/ subdirectory for new files."
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View file

@ -1,87 +0,0 @@
<!--#include virtual="/server/header.html" -->
<title>%%TITLE%% - GNU Project - Free Software Foundation (FSF)</title>
<!--#include virtual="/server/banner.html" -->
<h2>%%TITLE%%</h2>
<address>Free Software Foundation</address>
<address>last updated %%DATE%%</address>
<p>This manual (%%PACKAGE%%) is available in the following formats:</p>
<ul>
<li><a href="%%PACKAGE%%.html">HTML
(%%HTML_MONO_SIZE%%K bytes)</a> - entirely on one web page.</li>
<li><a href="html_node/index.html">HTML</a> - with one web page per
node.</li>
%%IF HTML_SECTION%%
<li><a href="html_section/index.html">HTML</a> - with one web page per
section.</li>
%%ENDIF HTML_SECTION%%
%%IF HTML_CHAPTER%%
<li><a href="html_chapter/index.html">HTML</a> - with one web page per
chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.html.gz">HTML compressed
(%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on
one web page.</li>
<li><a href="%%PACKAGE%%.html_node.tar.gz">HTML compressed
(%%HTML_NODE_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per node.</li>
%%IF HTML_SECTION%%
<li><a href="%%PACKAGE%%.html_section.tar.gz">HTML compressed
(%%HTML_SECTION_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per section.</li>
%%ENDIF HTML_SECTION%%
%%IF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.html_chapter.tar.gz">HTML compressed
(%%HTML_CHAPTER_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.info.tar.gz">Info document
(%%INFO_TGZ_SIZE%%K bytes gzipped tar file)</a>.</li>
<li><a href="%%PACKAGE%%.txt">ASCII text
(%%ASCII_SIZE%%K bytes)</a>.</li>
<li><a href="%%PACKAGE%%.txt.gz">ASCII text compressed
(%%ASCII_GZ_SIZE%%K bytes gzipped)</a>.</li>
<li><a href="%%PACKAGE%%.dvi.gz">TeX dvi file
(%%DVI_GZ_SIZE%%K bytes gzipped)</a>.</li>
<li><a href="%%PACKAGE%%.pdf">PDF file
(%%PDF_SIZE%%K bytes)</a>.</li>
<li><a href="%%PACKAGE%%.texi.tar.gz">Texinfo source
(%%TEXI_TGZ_SIZE%%K bytes gzipped tar file).</a></li>
</ul>
<p>You can <a href="http://shop.fsf.org/">buy printed copies of
some manuals</a> (among other items) from the Free Software Foundation;
this helps support FSF activities.</p>
<p>(This page generated by the <a href="%%SCRIPTURL%%">%%SCRIPTNAME%%
script</a>.)</p>
<!-- If needed, change the copyright block at the bottom. In general,
all pages on the GNU web server should have the section about
verbatim copying. Please do NOT remove this without talking
with the webmasters first.
Please make sure the copyright date is consistent with the document
and that it is like this: "2001, 2002", not this: "2001-2002". -->
</div><!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.html" -->
<div id="footer">
<p>Please send general FSF &amp; GNU inquiries to
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
There are also <a href="/contact/">other ways to contact</a>
the FSF.<br />
Please send broken links and other corrections or suggestions to
<a href="mailto:%%EMAIL%%">&lt;%%EMAIL%%&gt;</a>.</p>
<p>Copyright &copy; 2013 Free Software Foundation, Inc.</p>
<p>Verbatim copying and distribution of this entire article are
permitted worldwide, without royalty, in any medium, provided this
notice, and the copyright notice, are preserved.</p>
</div>
</div>
</body>
</html>

View file

@ -1,11 +0,0 @@
### 11 (January 2014)
* Support per-density icon folders (/icons-\*)
### 10 (January 2014)
* First version
### 0 (?)
* No version yet declared

35
docs/make.bat Normal file
View file

@ -0,0 +1,35 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd

78
docs/source/conf.py Normal file
View file

@ -0,0 +1,78 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
sys.path.insert(0, os.path.abspath('../../fdroidserver'))
# -- Project information -----------------------------------------------------
project = 'fdroidserver'
copyright = '2021, The F-Droid Project'
author = 'The F-Droid Project'
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'numpydoc',
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
"sphinx.ext.intersphinx",
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = []
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "pydata_sphinx_theme"
html_theme_options = {
"gitlab_url": "https://gitlab.com/fdroid/fdroidserver",
"show_prev_next": False,
"navbar_end": ["search-field.html", "navbar-icon-links.html"],
}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
html_sidebars = {
"**": [],
}
#html_sidebars = {
# '**': ['globaltoc.html', 'sourcelink.html', 'searchbox.html'],
# 'using/windows': ['windowssidebar.html', 'searchbox.html'],
#}
html_split_index = True
#numpydoc_validation_checks = {"all"}
intersphinx_mapping = {
"python": ("https://docs.python.org/3/", None),
}

20
docs/source/index.rst Normal file
View file

@ -0,0 +1,20 @@
.. fdroidserver documentation master file, created by
sphinx-quickstart on Mon May 3 10:06:52 2021.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to fdroidserver's documentation!
========================================
.. toctree::
:maxdepth: 2
:caption: Contents:
These pages contain the autogenerated module docu based on the current `sources <https://gitlab.com/fdroid/fdroidserver/-/tree/master/fdroidserver>`_.
Indices and tables
==================
* Under :ref:`modindex` the different fdroidserver modules are listed.
* In :ref:`genindex` you'll find all methods sorted alphabetically.

View file

@ -1,7 +0,0 @@
#!/bin/bash
set -e
./gendocs.sh --email admin@f-droid.org fdroid "F-Droid Server Manual"
scp -r manual/* fdroid@f-droid.org:public_html/manual/
rm fdroid.cps fdroid.ky fdroid.vr fdroid.aux fdroid.fn fdroid.log fdroid.toc
rm fdroid.cp fdroid.info fdroid.pg fdroid.tp

54
examples/Vagrantfile.yaml Normal file
View file

@ -0,0 +1,54 @@
---
# You may want to alter these before running ./makebuildserver
# In the process of setting up the build server, many gigs of files
# are downloaded (Android SDK components, gradle, etc). These are
# cached so that they are not redownloaded each time. By default,
# these are stored in ~/.cache/fdroidserver
#
# cachedir: buildserver/cache
# To specify which Debian mirror the build server VM should use, by
# default it uses http.debian.net, which auto-detects which is the
# best mirror to use.
#
# debian_mirror: https://debian.osuosl.org/debian/
# The amount of RAM the build server will have (default: 2048)
# memory: 3584
# The number of CPUs the build server will have
# cpus: 1
# Debian package proxy server - if you have one
# aptproxy: http://192.168.0.19:8000
# If this is running on an older machine or on a virtualized system,
# it can run a lot slower. If the provisioning fails with a warning
# about the timeout, extend the timeout here. (default: 600 seconds)
#
# boot_timeout: 1200
# By default, this whole process uses VirtualBox as the provider, but
# QEMU+KVM is also supported via the libvirt plugin to vagrant. If
# this is run within a KVM guest, then libvirt's QEMU+KVM will be used
# automatically. It can also be manually enabled by uncommenting
# below:
#
# vm_provider: libvirt
# By default libvirt uses 'virtio' for both network and disk drivers.
# Some systems (eg. nesting VMware ESXi) do not support virtio. As a
# workaround for such rare cases, this setting allows to configure
# KVM/libvirt to emulate hardware rather than using virtio.
#
# libvirt_disk_bus: sata
# libvirt_nic_model_type: rtl8139
# Sometimes, it is not possible to use the 9p synced folder type with
# libvirt, like if running a KVM buildserver instance inside of a
# VMware ESXi guest. In that case, using NFS or another method is
# required.
#
# synced_folder_type: nfs

433
examples/config.yml Normal file
View file

@ -0,0 +1,433 @@
---
# Copy this file to config.yml, then amend the settings below according to
# your system configuration.
# Custom path to the Android SDK, defaults to $ANDROID_HOME
# sdk_path: $ANDROID_HOME
# Paths to installed versions of the Android NDK. This will be
# automatically filled out from well known sources like
# $ANDROID_HOME/ndk-bundle and $ANDROID_HOME/ndk/*. If a required
# version is missing in the buildserver VM, it will be automatically
# downloaded and installed into the standard $ANDROID_HOME/ndk/
# directory. Manually setting it here will override the auto-detected
# values. The keys can either be the "release" (e.g. r21e) or the
# "revision" (e.g. 21.4.7075529).
#
# ndk_paths:
# r10e: $ANDROID_HOME/android-ndk-r10e
# r17: ""
# 21.4.7075529: ~/Android/Ndk
# r22b: null
# Directory to store downloaded tools in (i.e. gradle versions)
# By default, these are stored in ~/.cache/fdroidserver
# cachedir: cache
# Specify paths to each major Java release that you want to support
# java_paths:
# 8: /usr/lib/jvm/java-8-openjdk
# Command or path to binary for running Ant
# ant: ant
# Command or path to binary for running maven 3
# mvn3: mvn
# Command or path to binary for running Gradle
# Defaults to using an internal gradle wrapper (gradlew-fdroid).
# gradle: gradle
# Always scan the APKs produced by `fdroid build` for known non-free classes
# scan_binary: true
# Set the maximum age (in days) of an index that a client should accept from
# this repo. Setting it to 0 or not setting it at all disables this
# functionality. If you do set this to a non-zero value, you need to ensure
# that your index is updated much more frequently than the specified interval.
# The same policy is applied to the archive repo, if there is one.
# repo_maxage: 0
# Canonical URL of the repositoy, needs to end in /repo. Is is used to identity
# the repo in the client, as well.
# repo_url: https://MyFirstFDroidRepo.org/fdroid/repo
#
# Base URL for per-package pages on the website of this repo,
# i.e. https://f-droid.org/packages/<appid>/ This should be accessible
# with a browser. Setting it to null or not setting this disables the
# feature.
# repo_web_base_url: https://MyFirstFDroidRepo.org/packages/
#
# repo_name: My First F-Droid Repo Demo
# repo_description: >-
# This is a repository of apps to be used with F-Droid. 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/fdroid.
# As above, but for the archive repo.
#
# archive_url: https://f-droid.org/archive
# archive_web_base_url:
# archive_name: My First F-Droid Archive Demo
# archive_description: >-
# The repository of older versions of packages from the main demo repository.
# archive_older sets the number of versions kept in the main repo, with all
# older ones going to the archive. Set it to 0, and there will be no archive
# repository, and no need to define the other archive_ values.
#
# archive_older: 3
# The repo's icon defaults to a file called 'icon.png' in the 'icons'
# folder for each section, e.g. repo/icons/icon.png and
# archive/icons/icon.png. To use a different filename for the icons,
# set the filename here. You must still copy it into place in
# repo/icons/ and/or archive/icons/.
#
# repo_icon: myicon.png
# archive_icon: myicon.png
# This allows a specific kind of insecure APK to be included in the
# 'repo' section. Since April 2017, APK signatures that use MD5 are
# no longer considered valid, jarsigner and apksigner will return an
# error when verifying. `fdroid update` will move APKs with these
# disabled signatures to the archive. This option stops that
# behavior, and lets those APKs stay part of 'repo'.
#
# allow_disabled_algorithms: true
# Normally, all apps are collected into a single app repository, like on
# https://f-droid.org. For certain situations, it is better to make a repo
# that is made up of APKs only from a single app. For example, an automated
# build server that publishes nightly builds.
# per_app_repos: true
# `fdroid update` will create a link to the current version of a given app.
# This provides a static path to the current APK. To disable the creation of
# this link, uncomment this:
# make_current_version_link: false
# By default, the "current version" link will be based on the "Name" of the
# app from the metadata. You can change it to use a different field from the
# metadata here:
# current_version_name_source: packageName
# Optionally, override home directory for gpg
# gpghome: /home/fdroid/somewhere/else/.gnupg
# The ID of a GPG key for making detached signatures for APKs. Optional.
# gpgkey: 1DBA2E89
# The key (from the keystore defined below) to be used for signing the
# repository itself. This is the same name you would give to keytool or
# jarsigner using -alias. (Not needed in an unsigned repository).
# repo_keyalias: fdroidrepo
# Optionally, the public key for the key defined by repo_keyalias above can
# be specified here. There is no need to do this, as the public key can and
# will be retrieved from the keystore when needed. However, specifying it
# manually can allow some processing to take place without access to the
# keystore.
# repo_pubkey: ...
# The keystore to use for release keys when building. This needs to be
# somewhere safe and secure, and backed up! The best way to manage these
# sensitive keys is to use a "smartcard" (aka Hardware Security Module). To
# configure F-Droid to use a smartcard, set the keystore file using the keyword
# "NONE" (i.e. keystore: "NONE"). That makes Java find the keystore on the
# smartcard based on 'smartcardoptions' below.
# keystore: ~/.local/share/fdroidserver/keystore.jks
# You should not need to change these at all, unless you have a very
# customized setup for using smartcards in Java with keytool/jarsigner
# smartcardoptions: |
# -storetype PKCS11 -providerName SunPKCS11-OpenSC
# -providerClass sun.security.pkcs11.SunPKCS11
# -providerArg opensc-fdroid.cfg
# The password for the keystore (at least 6 characters). If this password is
# different than the keypass below, it can be OK to store the password in this
# file for real use. But in general, sensitive passwords should not be stored
# in text files!
# keystorepass: password1
# The password for keys - the same is used for each auto-generated key as well
# as for the repository key. You should not normally store this password in a
# file since it is a sensitive password.
# keypass: password2
# The distinguished name used for all keys.
# keydname: CN=Birdman, OU=Cell, O=Alcatraz, L=Alcatraz, S=California, C=US
# Use this to override the auto-generated key aliases with specific ones
# for particular applications. Normally, just leave it empty.
#
# keyaliases:
# com.example.app: example
#
# You can also force an app to use the same key alias as another one, using
# the @ prefix.
#
# keyaliases:
# com.example.another.plugin: "@com.example.another"
# The full path to the root of the repository. It must be specified in
# rsync/ssh format for a remote host/path. This is used for syncing a locally
# generated repo to the server that is it hosted on. It must end in the
# standard public repo name of "/fdroid", but can be in up to three levels of
# sub-directories (i.e. /var/www/packagerepos/fdroid). You can include
# multiple servers to sync to by wrapping the whole thing in {} or [], and
# including the serverwebroot strings in a comma-separated list.
#
# serverwebroot: user@example:/var/www/fdroid
# serverwebroot:
# - foo.com:/usr/share/nginx/www/fdroid
# - bar.info:/var/www/fdroid
#
# There is a special mode to only deploy the index file:
#
# serverwebroot:
# - url: 'me@b.az:/srv/fdroid'
# index_only: true
# When running fdroid processes on a remote server, it is possible to
# publish extra information about the status. Each fdroid sub-command
# can create repo/status/running.json when it starts, then a
# repo/status/<sub-command>.json when it completes. The builds logs
# and other processes will also get published, if they are running in
# a buildserver VM. The build logs name scheme is:
# .../repo/$APPID_$VERCODE.log.gz. These files are also pushed to all
# servers configured in 'serverwebroot'.
#
# deploy_process_logs: true
# The full URL to a git remote repository. You can include
# multiple servers to mirror to by adding strings to a YAML list or map.
# Servers listed here will also be automatically inserted in the mirrors list.
#
# servergitmirrors: https://github.com/user/repo
# servergitmirrors:
# - https://github.com/user/repo
# - https://gitlab.com/user/repo
#
# servergitmirrors:
# - url: https://github.com/user/repo
# - url: https://gitlab.com/user/repo
# index_only: true
# These settings allow using `fdroid deploy` for publishing APK files from
# your repository to GitHub Releases. (You should also run `fdroid update`
# every time before deploying to GitHub releases to update index files.) Here's
# an example for this deployment automation:
# https://github.com/f-droid/fdroidclient/releases/
#
# Currently, versions which are assigned to a release channel (e.g. alpha or
# beta releases) are ignored.
#
# In the example below, tokens are read from environment variables. Putting
# tokens directly into the config file is also supported but discouraged. It is
# highly recommended to use a "Fine-grained personal access token", which is
# restricted to the minimum required permissions, which are:
# * Metadata - read
# * Contents - read/write
# (https://github.com/settings/personal-access-tokens/new)
#
# github_token: {env: GITHUB_TOKEN}
# github_releases:
# - projectUrl: https://github.com/f-droid/fdroidclient
# packageNames:
# - org.fdroid.basic
# - org.fdroid.fdroid
# release_notes_prepend: |
# Re-post of official F-Droid App release from https://f-droid.org
# - projectUrl: https://github.com/example/app
# packageNames: com.example.app
# token: {env: GITHUB_TOKEN_EXAMPLE}
# Most git hosting services have hard size limits for each git repo.
# `fdroid deploy` will delete the git history when the git mirror repo
# approaches this limit to ensure that the repo will still fit when
# pushed. GitHub recommends 1GB, gitlab.com recommends 10GB.
#
# git_mirror_size_limit: 10GB
# Any mirrors of this repo, for example all of the servers declared in
# serverwebroot and all the servers declared in servergitmirrors,
# will automatically be used by the client. If one
# mirror is not working, then the client will try another. If the
# client has Tor enabled, then the client will prefer mirrors with
# .onion addresses. This base URL will be used for both the main repo
# and the archive, if it is enabled. So these URLs should end in the
# 'fdroid' base of the F-Droid part of the web server like serverwebroot.
#
# mirrors:
# - https://foo.bar/fdroid
# - http://foobarfoobarfoobar.onion/fdroid
#
# Or additional metadata can also be included by adding key/value pairs:
#
# mirrors:
# - url: https://foo.bar/fdroid
# countryCode: BA
# - url: http://foobarfoobarfoobar.onion/fdroid
#
# The list of mirrors can also be maintained in config/mirrors.yml, a
# standalone YAML file in the optional configuration directory. In
# that case, mirrors: should be removed from this file (config.yml).
# optionally specify which identity file to use when using rsync or git over SSH
#
# identity_file: ~/.ssh/fdroid_id_rsa
# If you are running the repo signing process on a completely offline machine,
# which provides the best security, then you can specify a folder to sync the
# repo to when running `fdroid deploy`. This is most likely going to
# be a USB thumb drive, SD Card, or some other kind of removable media. Make
# sure it is mounted before running `fdroid deploy`. Using the
# standard folder called 'fdroid' as the specified folder is recommended, like
# with serverwebroot.
#
# local_copy_dir: /media/MyUSBThumbDrive/fdroid
# If you are using local_copy_dir on an offline build/signing server, once the
# thumb drive has been plugged into the online machine, it will need to be
# synced to the copy on the online machine. To make that happen
# automatically, set sync_from_local_copy_dir to True:
#
# sync_from_local_copy_dir: true
# To deploy to an AWS S3 "bucket" in the US East region, set the
# bucket name in the config, then set the environment variables
# AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY using the values from
# the AWS Management Console. See
# https://rclone.org/s3/#authentication
#
# awsbucket: myawsfdroidbucket
# For extended options for syncing to cloud drive and object store
# services, `fdroid deploy' wraps Rclone. Rclone is a full featured
# sync tool for a huge variety of cloud services. Set up your services
# using `rclone config`, then specify each config name to deploy the
# awsbucket: to. Using rclone_config: overrides the default AWS S3 US
# East setup, and will only sync to the services actually specified.
#
# awsbucket: myawsfdroidbucket
# rclone_config:
# - aws-sample-config
# - rclone-supported-service-config
# By default Rclone uses the user's default configuration file at
# ~/.config/rclone/rclone.conf To specify a custom configuration file,
# please add the full path to the configuration file as below.
#
# path_to_custom_rclone_config: /home/mycomputer/somedir/example.conf
# If you want to force 'fdroid server' to use a non-standard serverwebroot.
# This will allow you to have 'serverwebroot' entries which do not end in
# '/fdroid'. (Please note that some client features expect repository URLs
# to end in '/fdroid/repo'.)
#
# nonstandardwebroot: false
# If you want to upload the release APK file to androidobservatory.org
#
# androidobservatory: false
# If you want to upload the release APK file to virustotal.com
# You have to enter your profile apikey to enable the upload.
#
# virustotal_apikey: 9872987234982734
#
# Or get it from an environment variable:
#
# virustotal_apikey: {env: virustotal_apikey}
# Keep a log of all generated index files in a git repo to provide a
# "binary transparency" log for anyone to check the history of the
# binaries that are published. This is in the form of a "git remote",
# which this machine where `fdroid update` is run has already been
# configured to allow push access (e.g. ssh key, username/password, etc)
# binary_transparency_remote: git@gitlab.com:fdroid/binary-transparency-log.git
# Set this to true to always use a build server. This saves specifying the
# --server option on dedicated secure build server hosts.
# build_server_always: true
# Limit in number of characters that fields can take up
# Only the fields listed here are supported, defaults shown
# char_limits:
# author: 256
# name: 50
# summary: 80
# description: 4000
# video: 256
# whatsNew: 500
# It is possible for the server operator to specify lists of apps that
# must be installed or uninstalled on the client (aka "push installs).
# If the user has opted in, or the device is already setup to respond
# to these requests, then F-Droid will automatically install/uninstall
# the packageNames listed. This is protected by the same signing key
# as the app index metadata.
#
# install_list:
# - at.bitfire.davdroid
# - com.fsck.k9
# - us.replicant
#
# uninstall_list:
# - com.facebook.orca
# - com.android.vending
# `fdroid lint` checks licenses in metadata against a built white list. By
# default we will require license metadata to be present and only allow
# licenses approved either by FSF or OSI. We're using the standardized SPDX
# license IDs. (https://spdx.org/licenses/)
#
# We use `python3 -m spdx-license-list print --filter-fsf-or-osi` for
# generating our default list. (https://pypi.org/project/spdx-license-list)
#
# You can override our default list of allowed licenes by setting this option.
# Just supply a custom list of licene names you would like to allow. To disable
# checking licenses by the linter, assign an empty value to lint_licenses.
#
# lint_licenses:
# - Custom-License-A
# - Another-License
# `fdroid scanner` can scan for signatures from various sources. By default
# it's configured to only use F-Droids official SUSS collection. We have
# support for these special collections:
# * 'exodus' - official exodus-privacy.org signatures
# * 'etip' - exodus privacy investigation platfrom community contributed
# signatures
# * 'suss' - official F-Droid: Suspicious or Unwanted Software Signatures
# You can also configure scanner to use custom collections of signatures here.
# They have to follow the format specified in the SUSS readme.
# (https://gitlab.com/fdroid/fdroid-suss/#cache-file-data-format)
#
# scanner_signature_sources:
# - suss
# - exodus
# - https://example.com/signatures.json
# The scanner can use signature sources from the internet. These are
# cached locally. To force them to be refreshed from the network on
# every run, set this to true:
#
# refresh_scanner: true

View file

@ -0,0 +1,46 @@
#!/usr/bin/env python3
#
# an fdroid plugin for resetting app VCSs to the latest version for the metadata
import argparse
import logging
from fdroidserver import _, common, metadata
from fdroidserver.exception import VCSException
fdroid_summary = 'reset app VCSs to the latest version'
def main():
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 = common.parse_args(parser)
apps = common.read_app_args(
options.appid, allow_version_codes=True, sort_by_time=True
)
common.read_config()
for appid, app in apps.items():
if "Builds" in app and len(app["Builds"]) > 0:
build = app.get('Builds')[-1]
logging.info(_("Cleaning up '{appid}' VCS").format(appid=appid))
try:
vcs, build_dir = common.setup_vcs(app)
vcs.gotorevision(build.commit)
if build.submodules:
vcs.initsubmodules()
except VCSException:
pass
if __name__ == "__main__":
main()

View file

@ -0,0 +1,62 @@
#!/usr/bin/env python3
#
# an fdroid plugin for exporting a repo's keystore in standard PEM format
import os
from argparse import ArgumentParser
from fdroidserver import common
from fdroidserver.common import FDroidPopen
from fdroidserver.exception import BuildException
fdroid_summary = "export the repo's keystore file to a NitroKey HSM"
def run(cmd, error):
envs = {'LC_ALL': 'C.UTF-8',
'PIN': config['smartcard_pin'],
'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config['keypass']}
p = FDroidPopen(cmd, envs=envs)
if p.returncode != 0:
raise BuildException(error, p.output)
def main():
global config
parser = ArgumentParser()
common.setup_global_opts(parser)
common.parse_args(parser)
config = common.read_config()
destkeystore = config['keystore'].replace('.jks', '.p12').replace('/', '_')
exportkeystore = config['keystore'].replace('.jks', '.pem').replace('/', '_')
if os.path.exists(destkeystore) or os.path.exists(exportkeystore):
raise BuildException('%s exists!' % exportkeystore)
run([config['keytool'], '-importkeystore',
'-srckeystore', config['keystore'],
'-srcalias', config['repo_keyalias'],
'-srcstorepass:env', 'FDROID_KEY_STORE_PASS',
'-srckeypass:env', 'FDROID_KEY_PASS',
'-destkeystore', destkeystore,
'-deststorepass:env', 'FDROID_KEY_STORE_PASS',
'-deststoretype', 'PKCS12'],
'Failed to convert to PKCS12!')
# run(['openssl', 'pkcs12', '-in', destkeystore,
# '-passin', 'env:FDROID_KEY_STORE_PASS', '-nokeys',
# '-out', exportkeystore,
# '-passout', 'env:FDROID_KEY_STORE_PASS'],
# 'Failed to convert to PEM!')
run(['pkcs15-init', '--delete-objects', 'privkey,pubkey',
'--id', '3', '--store-private-key', destkeystore,
'--format', 'pkcs12', '--auth-id', '3',
'--verify-pin', '--pin', 'env:PIN'],
'')
run(['pkcs15-init', '--delete-objects', 'privkey,pubkey',
'--id', '2', '--store-private-key', destkeystore,
'--format', 'pkcs12', '--auth-id', '3',
'--verify-pin', '--pin', 'env:PIN'],
'')
if __name__ == "__main__":
main()

View file

@ -0,0 +1,49 @@
#!/usr/bin/env python3
#
# an fdroid plugin for exporting a repo's keystore in standard PEM format
import os
from argparse import ArgumentParser
from fdroidserver import common
from fdroidserver.common import FDroidPopen
from fdroidserver.exception import BuildException
fdroid_summary = 'export the keystore in standard PEM format'
def main():
parser = ArgumentParser()
common.setup_global_opts(parser)
common.parse_args(parser)
config = common.read_config()
env_vars = {'LC_ALL': 'C.UTF-8',
'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config['keypass']}
destkeystore = config['keystore'].replace('.jks', '.p12').replace('/', '_')
exportkeystore = config['keystore'].replace('.jks', '.pem').replace('/', '_')
if os.path.exists(destkeystore) or os.path.exists(exportkeystore):
raise BuildException('%s exists!' % exportkeystore)
p = FDroidPopen([config['keytool'], '-importkeystore',
'-srckeystore', config['keystore'],
'-srcalias', config['repo_keyalias'],
'-srcstorepass:env', 'FDROID_KEY_STORE_PASS',
'-srckeypass:env', 'FDROID_KEY_PASS',
'-destkeystore', destkeystore,
'-deststoretype', 'PKCS12',
'-deststorepass:env', 'FDROID_KEY_STORE_PASS',
'-destkeypass:env', 'FDROID_KEY_PASS'],
envs=env_vars)
if p.returncode != 0:
raise BuildException("Failed to convert to PKCS12!", p.output)
p = FDroidPopen(['openssl', 'pkcs12', '-in', destkeystore,
'-passin', 'env:FDROID_KEY_STORE_PASS', '-nokeys',
'-out', exportkeystore,
'-passout', 'env:FDROID_KEY_STORE_PASS'],
envs=env_vars)
if p.returncode != 0:
raise BuildException("Failed to convert to PEM!", p.output)
if __name__ == "__main__":
main()

View file

@ -0,0 +1,23 @@
#!/usr/bin/env python3
#
# an fdroid plugin print the repo_pubkey from a repo's keystore
#
from argparse import ArgumentParser
from fdroidserver import common, index
fdroid_summary = 'export the keystore in standard PEM format'
def main():
parser = ArgumentParser()
common.setup_global_opts(parser)
common.parse_args(parser)
common.read_config()
pubkey, repo_pubkey_fingerprint = index.extract_pubkey()
print('repo_pubkey = "%s"' % pubkey.decode())
if __name__ == "__main__":
main()

View file

@ -0,0 +1,43 @@
#!/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():
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 = common.parse_args(parser)
apps = common.read_app_args(options.appid, allow_version_codes=True, sort_by_time=True)
common.read_config()
srclib_dir = os.path.join('build', 'srclib')
os.makedirs(srclib_dir, exist_ok=True)
srclibpaths = []
for appid, app in apps.items():
vcs, _ignored = common.setup_vcs(app)
for build in app.get('Builds', []):
vcs.gotorevision(build.commit, refresh=False)
if build.submodules:
vcs.initsubmodules()
else:
vcs.deinitsubmodules()
for lib in build.srclibs:
srclibpaths.append(common.getsrclib(lib, srclib_dir, prepare=False, build=build))
print('Set up srclibs:')
pprint.pprint(srclibpaths)
if __name__ == "__main__":
main()

View file

@ -0,0 +1,42 @@
#!/usr/bin/env python3
from argparse import ArgumentParser
from fdroidserver import common
from fdroidserver.common import FDroidPopen
from fdroidserver.exception import BuildException
fdroid_summary = 'import the local keystore into a SmartCard HSM'
def main():
parser = ArgumentParser()
common.setup_global_opts(parser)
common.parse_args(parser)
config = common.read_config()
env_vars = {
'LC_ALL': 'C.UTF-8',
'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config['keypass'],
'SMARTCARD_PIN': str(config['smartcard_pin']),
}
p = FDroidPopen([config['keytool'], '-importkeystore',
'-srcalias', config['repo_keyalias'],
'-srckeystore', config['keystore'],
'-srcstorepass:env', 'FDROID_KEY_STORE_PASS',
'-srckeypass:env', 'FDROID_KEY_PASS',
'-destalias', config['repo_keyalias'],
'-destkeystore', 'NONE',
'-deststoretype', 'PKCS11',
'-providerName', 'SunPKCS11-OpenSC',
'-providerClass', 'sun.security.pkcs11.SunPKCS11',
'-providerArg', 'opensc-fdroid.cfg',
'-deststorepass:env', 'SMARTCARD_PIN',
'-J-Djava.security.debug=sunpkcs11'],
envs=env_vars)
if p.returncode != 0:
raise BuildException("Failed to import into HSM!", p.output)
if __name__ == "__main__":
main()

View file

@ -0,0 +1,4 @@
name = OpenSC
description = SunPKCS11 w/ OpenSC Smart card Framework
library = /usr/lib/opensc-pkcs11.so
slotListIndex = 1

View file

@ -0,0 +1,11 @@
{
"Version":"2012-10-17",
"Statement":[
{"Sid":"AddPerm",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/fdroid/*"
}
]
}

21
examples/template.yml Normal file
View file

@ -0,0 +1,21 @@
AuthorName: .
WebSite: ''
Bitcoin: null
Litecoin: null
Donate: null
License: Unknown
Categories:
- Internet
IssueTracker: ''
SourceCode: ''
Changelog: ''
Name: .
Summary: .
Description: |
.
ArchivePolicy: 2 versions
RequiresRoot: false

View file

@ -1,89 +0,0 @@
#!/bin/bash
#
# fd-commit - part of the FDroid server tools
# Commits updates to apps, allowing you to edit the commit messages
#
# Copyright (C) 2013 Daniel Martí <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
commands=()
if [ ! -d metadata ]; then
[ -d ../metadata ] && cd .. || { echo "No metadata files found!"; exit 2; }
fi
while read line; do
if [[ "$line" == *M*metadata/*.txt ]]; then
file=${line##* }
id=${file##*/}
id=${id%.txt*}
if [ $# -gt 0 ]; then
found=false
for arg in "$@"; do
if [ "$id" == "$arg" ]; then
found=true
break
fi
done
$found || continue
fi
[ -d metadata/$id ] && extra=metadata/$id || extra=
name= autoname=
while read l; do
if [[ "$l" == "Auto Name:"* ]]; then
autoname=${l##*:}
elif [[ "$l" == "Name:"* ]]; then
name=${l##*:}
fi
done < "$file"
if [ -n "$name" ]; then
fullname="$name ($id)"
elif [ -n "$autoname" ]; then
fullname="$autoname ($id)"
else
fullname="$id"
fi
newbuild=false
while read l; do
if [[ "$l" == "+Build:"* ]]; then
newbuild=true
build=${l#*:}
version=${build%%,*}
build=${build#*,}
vercode=${build%%,*}
fi
done < <(git diff HEAD -- "$file")
if $newbuild ; then
message="Update $fullname to $version ($vercode)"
else
message="$fullname:"
fi
message=${message//\"/\\\"}
commands+=("git add -- $file $extra && git commit -m \"$message\" -e -v")
fi
done < <(git status --porcelain)
git reset >/dev/null
for cmd in "${commands[@]}"; do
eval "$cmd"
git reset >/dev/null
done

53
fdroid
View file

@ -1,9 +1,7 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
#
# fdroid.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013 Daniel Martí <mvdan@mvdan.cc>
# Copyright (C) 2020 Michael Pöhn <michael.poehn@fsfe.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -18,50 +16,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
commands = [
"build",
"init",
"install",
"update",
"publish",
"verify",
"checkupdates",
"import",
"rewritemeta",
"lint",
"scanner",
"stats",
"server"]
def print_help():
print "Valid commands are:"
for command in commands:
print " " + command
print "Use '%s <command> --help' for more info about that command."%sys.argv[0]
def main():
if len(sys.argv) <= 1:
print_help()
sys.exit(0)
command = sys.argv[1]
if not command in commands:
if command not in ('-h', '--help'):
print "Command '" + command + "' not recognised.\n"
print_help()
sys.exit(1)
# Trick optparse into displaying the right usage when --help is used.
sys.argv[0] += ' ' + command
del sys.argv[1]
mod = __import__('fdroidserver.' + command, None, None, [command])
mod.main()
sys.exit(0)
if __name__ == "__main__":
main()
import fdroidserver.__main__
fdroidserver.__main__.main()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,78 @@
import gettext
import glob
import os
import sys
# support running straight from git and standard installs
rootpaths = [
os.path.realpath(os.path.join(os.path.dirname(__file__), '..')),
os.path.realpath(
os.path.join(os.path.dirname(__file__), '..', '..', '..', '..', 'share')
),
os.path.join(sys.prefix, 'share'),
]
localedir = None
for rootpath in rootpaths:
found_mo = glob.glob(
os.path.join(rootpath, 'locale', '*', 'LC_MESSAGES', 'fdroidserver.mo')
)
if len(found_mo) > 0:
localedir = os.path.join(rootpath, 'locale')
break
gettext.bindtextdomain('fdroidserver', localedir)
gettext.textdomain('fdroidserver')
_ = gettext.gettext
from fdroidserver.exception import (
FDroidException,
MetaDataException,
VerificationException, # NOQA: E402
)
FDroidException # NOQA: B101
MetaDataException # NOQA: B101
VerificationException # NOQA: B101
from fdroidserver.common import genkeystore as generate_keystore # NOQA: E402
from fdroidserver.common import verify_apk_signature
verify_apk_signature # NOQA: B101
generate_keystore # NOQA: B101
from fdroidserver.index import (
download_repo_index,
download_repo_index_v1,
download_repo_index_v2,
get_mirror_service_urls,
)
from fdroidserver.index import make as make_index # NOQA: E402
download_repo_index # NOQA: B101
download_repo_index_v1 # NOQA: B101
download_repo_index_v2 # NOQA: B101
get_mirror_service_urls # NOQA: B101
make_index # NOQA: B101
from fdroidserver.update import (
process_apk,
process_apks,
scan_apk,
scan_repo_files, # NOQA: E402
)
process_apk # NOQA: B101
process_apks # NOQA: B101
scan_apk # NOQA: B101
scan_repo_files # NOQA: B101
from fdroidserver.deploy import (
update_awsbucket,
update_servergitmirrors,
update_serverwebroot, # NOQA: E402
update_serverwebroots,
)
update_awsbucket # NOQA: B101
update_servergitmirrors # NOQA: B101
update_serverwebroots # NOQA: B101
update_serverwebroot # NOQA: B101

227
fdroidserver/__main__.py Executable file
View file

@ -0,0 +1,227 @@
#!/usr/bin/env python3
#
# fdroidserver/__main__.py - part of the FDroid server tools
# Copyright (C) 2020 Michael Pöhn <michael.poehn@fsfe.org>
# Copyright (C) 2010-2015, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013-2014 Daniel Marti <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import importlib.metadata
import logging
import os
import pkgutil
import re
import sys
from argparse import ArgumentError
from collections import OrderedDict
import git
import fdroidserver.common
import fdroidserver.metadata
from fdroidserver import _
COMMANDS = OrderedDict([
("build", _("Build a package from source")),
("init", _("Quickly start a new repository")),
("publish", _("Sign and place packages in the repo")),
("gpgsign", _("Add PGP signatures using GnuPG for packages in repo")),
("update", _("Update repo information for new packages")),
("deploy", _("Interact with the repo HTTP server")),
("verify", _("Verify the integrity of downloaded packages")),
("checkupdates", _("Check for updates to applications")),
("import", _("Extract application metadata from a source repository")),
("install", _("Install built packages on devices")),
("readmeta", _("Read all the metadata files and exit")),
("rewritemeta", _("Rewrite all the metadata files")),
("lint", _("Warn about possible metadata errors")),
("scanner", _("Scan the source code of a package")),
("signindex", _("Sign indexes created using update --nosign")),
("btlog", _("Update the binary transparency log for a URL")),
("signatures", _("Extract signatures from APKs")),
("nightly", _("Set up an app build for a nightly build repo")),
("mirror", _("Download complete mirrors of small repos")),
])
def print_help(available_plugins=None):
print(_("usage: ") + _("fdroid [<command>] [-h|--help|--version|<args>]"))
print("")
print(_("Valid commands are:"))
for cmd, summary in COMMANDS.items():
print(" " + cmd + ' ' * (15 - len(cmd)) + summary)
if available_plugins:
print(_('commands from plugin modules:'))
for command in sorted(available_plugins.keys()):
print(' {:15}{}'.format(command, available_plugins[command]['summary']))
print("")
def preparse_plugin(module_name, module_dir):
"""No summary.
Simple regex based parsing for plugin scripts.
So we don't have to import them when we just need the summary,
but not plan on executing this particular plugin.
"""
if '.' in module_name:
raise ValueError("No '.' allowed in fdroid plugin modules: '{}'"
.format(module_name))
path = os.path.join(module_dir, module_name + '.py')
if not os.path.isfile(path):
path = os.path.join(module_dir, module_name, '__main__.py')
if not os.path.isfile(path):
raise ValueError("unable to find main plugin script "
"for module '{n}' ('{d}')"
.format(n=module_name,
d=module_dir))
summary = None
main = None
with open(path, 'r', encoding='utf-8') as f:
re_main = re.compile(r'^(\s*def\s+main\s*\(.*\)\s*:'
r'|\s*main\s*=\s*lambda\s*:.+)$')
re_summary = re.compile(r'^\s*fdroid_summary\s*=\s["\'](?P<text>.+)["\']$')
for line in f:
m_summary = re_summary.match(line)
if m_summary:
summary = m_summary.group('text')
if re_main.match(line):
main = True
if summary is None:
raise NameError("could not find 'fdroid_summary' in: '{}' plugin"
.format(module_name))
if main is None:
raise NameError("could not find 'main' function in: '{}' plugin"
.format(module_name))
return {'name': module_name, 'summary': summary}
def find_plugins():
found_plugins = [{'name': x[1], 'dir': x[0].path} for x in pkgutil.iter_modules() if x[1].startswith('fdroid_')]
plugin_infos = {}
for plugin_def in found_plugins:
command_name = plugin_def['name'][7:]
try:
plugin_infos[command_name] = preparse_plugin(plugin_def['name'],
plugin_def['dir'])
except Exception as e:
# We need to keep module lookup fault tolerant because buggy
# modules must not prevent fdroidserver from functioning
if len(sys.argv) > 1 and sys.argv[1] == command_name:
# only raise exeption when a user specifies the broken
# plugin in explicitly in command line
raise e
return plugin_infos
def main():
available_plugins = find_plugins()
if len(sys.argv) <= 1:
print_help(available_plugins=available_plugins)
sys.exit(0)
command = sys.argv[1]
if command not in COMMANDS and command not in available_plugins:
if command in ('-h', '--help'):
print_help(available_plugins=available_plugins)
sys.exit(0)
elif command == 'server':
print(_("""ERROR: The "server" subcommand has been removed, use "deploy"!"""))
sys.exit(1)
elif command == '--version':
try:
print(importlib.metadata.version("fdroidserver"))
sys.exit(0)
except importlib.metadata.PackageNotFoundError:
pass
try:
print(
git.repo.Repo(
os.path.dirname(os.path.dirname(__file__))
).git.describe(always=True, tags=True)
)
sys.exit(0)
except git.exc.InvalidGitRepositoryError:
print(_('No version information could be found.'))
sys.exit(1)
else:
print(_("Command '%s' not recognised.\n" % command))
print_help(available_plugins=available_plugins)
sys.exit(1)
verbose = any(s in sys.argv for s in ['-v', '--verbose'])
quiet = any(s in sys.argv for s in ['-q', '--quiet'])
# Helpful to differentiate warnings from errors even when on quiet
logformat = '%(asctime)s %(levelname)s: %(message)s'
loglevel = logging.INFO
if verbose:
loglevel = logging.DEBUG
elif quiet:
loglevel = logging.WARN
logging.basicConfig(format=logformat, level=loglevel)
if verbose and quiet:
logging.critical(_("Conflicting arguments: '--verbose' and '--quiet' "
"can not be specified at the same time."))
sys.exit(1)
# Trick argparse into displaying the right usage when --help is used.
sys.argv[0] += ' ' + command
del sys.argv[1]
if command in COMMANDS.keys():
# import is named import_subcommand internally b/c import is reserved by Python
command = 'import_subcommand' if command == 'import' else command
mod = __import__('fdroidserver.' + command, None, None, [command])
else:
mod = __import__(available_plugins[command]['name'], None, None, [command])
system_encoding = sys.getdefaultencoding()
if system_encoding is None or system_encoding.lower() not in ('utf-8', 'utf8'):
logging.warning(_("Encoding is set to '{enc}' fdroid might run "
"into encoding issues. Please set it to 'UTF-8' "
"for best results.".format(enc=system_encoding)))
try:
mod.main()
# These are ours, contain a proper message and are "expected"
except (fdroidserver.common.FDroidException,
fdroidserver.metadata.MetaDataException) as e:
if verbose:
raise
else:
logging.critical(str(e))
sys.exit(1)
except ArgumentError as e:
logging.critical(str(e))
sys.exit(1)
except KeyboardInterrupt:
print('')
fdroidserver.common.force_exit(1)
# These should only be unexpected crashes due to bugs in the code
# str(e) often doesn't contain a reason, so just show the backtrace
except Exception as e:
logging.critical(_("Unknown exception found!"))
raise e
sys.exit(0)
if __name__ == "__main__":
main()

64
fdroidserver/_yaml.py Normal file
View file

@ -0,0 +1,64 @@
# Copyright (C) 2025, Hans-Christoph Steiner <hans@eds.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Standard YAML parsing and dumping.
YAML 1.2 is the preferred format for all data files. When loading
F-Droid formats like config.yml and <Application ID>.yml, YAML 1.2 is
forced, and older YAML constructs should be considered an error.
It is OK to load and dump files in other YAML versions if they are
externally defined formats, like FUNDING.yml. In those cases, these
common instances might not be appropriate to use.
There is a separate instance for dumping based on the "round trip" aka
"rt" mode. The "rt" mode maintains order while the "safe" mode sorts
the output. Also, yaml.version is not forced in the dumper because that
makes it write out a "%YAML 1.2" header. F-Droid's formats are
explicitly defined as YAML 1.2 and meant to be human-editable. So that
header gets in the way.
"""
import ruamel.yaml
yaml = ruamel.yaml.YAML(typ='safe')
yaml.version = (1, 2)
yaml_dumper = ruamel.yaml.YAML(typ='rt')
def config_dump(config, fp=None):
"""Dump config data in YAML 1.2 format without headers.
This outputs YAML in a string that is suitable for use in regexps
and string replacements, as well as complete files. It is therefore
explicitly set up to avoid writing out headers and footers.
This is modeled after PyYAML's yaml.dump(), which can dump to a file
or return a string.
https://yaml.dev/doc/ruamel.yaml/example/#Output_of_%60dump()%60_as_a_string
"""
dumper = ruamel.yaml.YAML(typ='rt')
dumper.default_flow_style = False
dumper.explicit_start = False
dumper.explicit_end = False
if fp is None:
with ruamel.yaml.compat.StringIO() as fp:
dumper.dump(config, fp)
return fp.getvalue()
dumper.dump(config, fp)

1019
fdroidserver/apksigcopier.py Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,56 @@
"""Simple thread based asynchronous file reader for Python.
AsynchronousFileReader
======================
see https://github.com/soxofaan/asynchronousfilereader
MIT License
Copyright (c) 2014 Stefaan Lippens
"""
__version__ = '0.2.1'
import threading
try:
# Python 2
from Queue import Queue
except ImportError:
# Python 3
from queue import Queue
class AsynchronousFileReader(threading.Thread):
"""Helper class to implement asynchronous reading of a file in a separate thread.
Pushes read lines on a queue to be consumed in another thread.
"""
def __init__(self, fd, queue=None, autostart=True):
self._fd = fd
if queue is None:
queue = Queue()
self.queue = queue
threading.Thread.__init__(self)
if autostart:
self.start()
def run(self):
"""Read lines and put them on the queue (the body of the tread)."""
while True:
line = self._fd.readline()
if not line:
break
self.queue.put(line)
def eof(self):
"""Check whether there is no more content to expect."""
return not self.is_alive() and self.queue.empty()
def readlines(self):
"""Get currently available lines."""
while not self.queue.empty():
yield self.queue.get()

272
fdroidserver/btlog.py Executable file
View file

@ -0,0 +1,272 @@
#!/usr/bin/env python3
"""Update the binary transparency log for a URL."""
#
# btlog.py - part of the FDroid server tools
# Copyright (C) 2017, Hans-Christoph Steiner <hans@eds.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# This is for creating a binary transparency log in a git repo for any
# F-Droid repo accessible via HTTP. It is meant to run very often,
# even once a minute in a cronjob, so it uses HEAD requests and the
# HTTP ETag to check if the file has changed. HEAD requests should
# not count against the download counts. This pattern of a HEAD then
# a GET is what fdroidclient uses to avoid ETags being abused as
# cookies. This also uses the same HTTP User Agent as the F-Droid
# client app so its not easy for the server to distinguish this from
# the F-Droid client.
import collections
import glob
import json
import logging
import os
import shutil
import tempfile
import zipfile
from argparse import ArgumentParser
from typing import Optional
import defusedxml.minidom
import git
import requests
from . import _, common, deploy
from .exception import FDroidException
def make_binary_transparency_log(
repodirs: collections.abc.Iterable,
btrepo: str = 'binary_transparency',
url: Optional[str] = None,
commit_title: str = 'fdroid update',
):
"""Log the indexes in a standalone git repo to serve as a "binary transparency" log.
Parameters
----------
repodirs
The directories of the F-Droid repository to generate the binary
transparency log for.
btrepo
The path to the Git repository of the binary transparency log.
url
The URL of the F-Droid repository to generate the binary transparency
log for.
commit_title
The commit title for commits in the binary transparency log Git
repository.
Notes
-----
Also see https://www.eff.org/deeplinks/2014/02/open-letter-to-tech-companies .
"""
logging.info('Committing indexes to ' + btrepo)
if os.path.exists(os.path.join(btrepo, '.git')):
gitrepo = git.Repo(btrepo)
else:
if not os.path.exists(btrepo):
os.mkdir(btrepo)
gitrepo = git.Repo.init(btrepo, initial_branch=deploy.GIT_BRANCH)
if not url:
url = common.config['repo_url'].rstrip('/')
with open(os.path.join(btrepo, 'README.md'), 'w') as fp:
fp.write(
"""
# Binary Transparency Log for %s
This is a log of the signed app index metadata. This is stored in a
git repo, which serves as an imperfect append-only storage mechanism.
People can then check that any file that they received from that
F-Droid repository was a publicly released file.
For more info on this idea:
* https://wiki.mozilla.org/Security/Binary_Transparency
"""
% url[: url.rindex('/')] # strip '/repo'
)
gitrepo.index.add(['README.md'])
gitrepo.index.commit('add README')
for repodir in repodirs:
cpdir = os.path.join(btrepo, repodir)
if not os.path.exists(cpdir):
os.mkdir(cpdir)
for f in ('index.xml', 'index-v1.json', 'index-v2.json', 'entry.json'):
repof = os.path.join(repodir, f)
if not os.path.exists(repof):
continue
dest = os.path.join(cpdir, f)
if f.endswith('.xml'):
doc = defusedxml.minidom.parse(repof)
output = doc.toprettyxml(encoding='utf-8')
with open(dest, 'wb') as f:
f.write(output)
elif f.endswith('.json'):
with open(repof) as fp:
output = json.load(fp, object_pairs_hook=collections.OrderedDict)
with open(dest, 'w') as fp:
json.dump(output, fp, indent=2)
gitrepo.index.add([repof])
for f in ('index.jar', 'index-v1.jar', 'entry.jar'):
repof = os.path.join(repodir, f)
if not os.path.exists(repof):
continue
dest = os.path.join(cpdir, f)
jarin = zipfile.ZipFile(repof, 'r')
jarout = zipfile.ZipFile(dest, 'w')
for info in jarin.infolist():
if info.filename.startswith('META-INF/'):
jarout.writestr(info, jarin.read(info.filename))
jarout.close()
jarin.close()
gitrepo.index.add([repof])
output_files = []
for root, dirs, files in os.walk(repodir):
for f in files:
output_files.append(os.path.relpath(os.path.join(root, f), repodir))
output = collections.OrderedDict()
for f in sorted(output_files):
repofile = os.path.join(repodir, f)
stat = os.stat(repofile)
output[f] = (
stat.st_size,
stat.st_ctime_ns,
stat.st_mtime_ns,
stat.st_mode,
stat.st_uid,
stat.st_gid,
)
fslogfile = os.path.join(cpdir, 'filesystemlog.json')
with open(fslogfile, 'w') as fp:
json.dump(output, fp, indent=2)
gitrepo.index.add([os.path.join(repodir, 'filesystemlog.json')])
for f in glob.glob(os.path.join(cpdir, '*.HTTP-headers.json')):
gitrepo.index.add([os.path.join(repodir, os.path.basename(f))])
gitrepo.index.commit(commit_title)
def main():
"""Generate or update a binary transparency log for a F-Droid repository.
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If the specified or default Git repository does not exist.
"""
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument(
"--git-repo",
default=os.path.join(os.getcwd(), 'binary_transparency'),
help=_("Path to the git repo to use as the log"),
)
parser.add_argument(
"-u",
"--url",
default='https://f-droid.org',
help=_("The base URL for the repo to log (default: https://f-droid.org)"),
)
parser.add_argument(
"--git-remote",
default=None,
help=_("Push the log to this git remote repository"),
)
options = common.parse_args(parser)
if options.verbose:
logging.getLogger("requests").setLevel(logging.INFO)
logging.getLogger("urllib3").setLevel(logging.INFO)
else:
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
if not os.path.exists(options.git_repo):
raise FDroidException(
'"%s" does not exist! Create it, or use --git-repo' % options.git_repo
)
session = requests.Session()
new_files = False
repodirs = ('repo', 'archive')
tempdirbase = tempfile.mkdtemp(prefix='.fdroid-btlog-')
for repodir in repodirs:
# TODO read HTTP headers for etag from git repo
tempdir = os.path.join(tempdirbase, repodir)
os.makedirs(tempdir, exist_ok=True)
gitrepodir = os.path.join(options.git_repo, repodir)
os.makedirs(gitrepodir, exist_ok=True)
for f in (
'entry.jar',
'entry.json',
'index-v1.jar',
'index-v1.json',
'index-v2.json',
'index.jar',
'index.xml',
):
dlfile = os.path.join(tempdir, f)
dlurl = options.url + '/' + repodir + '/' + f
http_headers_file = os.path.join(gitrepodir, f + '.HTTP-headers.json')
headers = {'User-Agent': 'F-Droid 0.102.3'}
etag = None
if os.path.exists(http_headers_file):
with open(http_headers_file) as fp:
etag = json.load(fp)['ETag']
r = session.head(dlurl, headers=headers, allow_redirects=False)
if r.status_code != 200:
logging.debug(
'HTTP Response (%d), did not download %s' % (r.status_code, dlurl)
)
continue
if etag and etag == r.headers.get('ETag'):
logging.debug('ETag matches, did not download ' + dlurl)
continue
r = session.get(dlurl, headers=headers, allow_redirects=False)
if r.status_code == 200:
with open(dlfile, 'wb') as f:
for chunk in r:
f.write(chunk)
dump = dict()
for k, v in r.headers.items():
dump[k] = v
with open(http_headers_file, 'w') as fp:
json.dump(dump, fp, indent=2, sort_keys=True)
new_files = True
if new_files:
os.chdir(tempdirbase)
make_binary_transparency_log(
repodirs, options.git_repo, options.url, 'fdroid btlog'
)
if options.git_remote:
deploy.push_binary_transparency(options.git_repo, options.git_remote)
shutil.rmtree(tempdirbase, ignore_errors=True)
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1177
fdroidserver/deploy.py Normal file

File diff suppressed because it is too large Load diff

58
fdroidserver/exception.py Normal file
View file

@ -0,0 +1,58 @@
class FDroidException(Exception):
def __init__(self, value=None, detail=None):
super().__init__()
self.value = value
self.detail = detail
def shortened_detail(self):
if len(self.detail) < 16000:
return self.detail
return '[...]\n' + self.detail[-16000:]
def __str__(self):
if self.value is None:
ret = __name__
else:
ret = str(self.value)
if self.detail:
ret += (
"\n==== detail begin ====\n%s\n==== detail end ===="
% ''.join(self.detail).strip()
)
return ret
class MetaDataException(Exception):
def __init__(self, value):
super().__init__()
self.value = value
def __str__(self):
return self.value
class VCSException(FDroidException):
pass
class NoVersionCodeException(FDroidException):
pass
class NoSubmodulesException(VCSException):
pass
class BuildException(FDroidException):
pass
class VerificationException(FDroidException):
pass
class ConfigurationException(FDroidException):
def __init__(self, value=None, detail=None):
super().__init__()
self.value = value
self.detail = detail

View file

@ -1,105 +0,0 @@
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.Signature;
import java.security.cert.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class getsig {
public static void main(String[] args) {
String apkPath = null;
boolean full = false;
if(args.length == 1) {
apkPath = args[0];
} else if (args.length == 2) {
if(!args[0].equals("-f")) {
System.out.println("Only -f is supported");
System.exit(1);
}
apkPath = args[1];
full = true;
} else {
System.out.println("Specify the APK file to get the signature from!");
System.exit(1);
}
try {
JarFile apk = new JarFile(apkPath);
java.security.cert.Certificate[] certs = null;
Enumeration entries = apk.entries();
while (entries.hasMoreElements()) {
JarEntry je = (JarEntry) entries.nextElement();
if (!je.isDirectory() && !je.getName().startsWith("META-INF/")) {
// Just need to read the stream (discarding the data) to get
// it to process the certificate...
byte[] b = new byte[4096];
InputStream is = apk.getInputStream(je);
while (is.read(b, 0, b.length) != -1);
is.close();
certs = je.getCertificates();
if(certs != null)
break;
}
}
apk.close();
if (certs == null) {
System.out.println("Not signed");
System.exit(1);
}
if (certs.length != 1) {
System.out.println("One signature expected");
System.exit(1);
}
// Get the signature in the same form that is returned by
// android.content.pm.Signature.toCharsString() (but in the
// form of a byte array so we can pass it to the MD5 function)...
byte[] sig = certs[0].getEncoded();
byte[] csig = new byte[sig.length * 2];
for (int j=0; j<sig.length; j++) {
byte v = sig[j];
int d = (v>>4)&0xf;
csig[j*2] = (byte)(d >= 10 ? ('a' + d - 10) : ('0' + d));
d = v&0xf;
csig[j*2+1] = (byte)(d >= 10 ? ('a' + d - 10) : ('0' + d));
}
String result;
if(full) {
result = new String(csig);
} else {
// Get the MD5 sum...
MessageDigest md;
md = MessageDigest.getInstance("MD5");
byte[] md5sum = new byte[32];
md.update(csig);
md5sum = md.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
String md5hash = bigInt.toString(16);
while (md5hash.length() < 32)
md5hash = "0" + md5hash;
result = md5hash;
}
System.out.println("Result:" + result);
System.exit(0);
} catch (Exception e) {
System.out.println("Exception:" + e);
System.exit(1);
}
}
}

View file

@ -1,2 +0,0 @@
#!/bin/sh
javac getsig.java

View file

@ -1,2 +0,0 @@
#!/bin/sh
java getsig $1 $2 $3

178
fdroidserver/github.py Normal file
View file

@ -0,0 +1,178 @@
#!/usr/bin/env python3
#
# github.py - part of the FDroid server tools
# Copyright (C) 2024, Michael Pöhn, michael@poehn.at
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
import pathlib
import urllib.parse
import urllib.request
class GithubApi:
"""Wrapper for some select calls to GitHub Json/REST API.
This class wraps some calls to api.github.com. This is not intended to be a
general API wrapper. Instead it's purpose is to return pre-filtered and
transformed data that's playing well with other fdroidserver functions.
With the GitHub API, the token is optional, but it has pretty
severe rate limiting.
"""
def __init__(self, api_token, repo_path):
self._api_token = api_token
if repo_path.startswith("https://github.com/"):
self._repo_path = repo_path[19:]
else:
self._repo_path = repo_path
def _req(self, url, data=None):
h = {
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
}
if self._api_token:
h["Authorization"] = f"Bearer {self._api_token}"
return urllib.request.Request(
url,
headers=h,
data=data,
)
def list_released_tags(self):
"""List of all tags that are associated with a release for this repo on GitHub."""
names = []
req = self._req(f"https://api.github.com/repos/{self._repo_path}/releases")
with urllib.request.urlopen(req) as resp: # nosec CWE-22 disable bandit warning
releases = json.load(resp)
for release in releases:
names.append(release['tag_name'])
return names
def list_unreleased_tags(self):
all_tags = self.list_all_tags()
released_tags = self.list_released_tags()
return [x for x in all_tags if x not in released_tags]
def get_latest_apk(self):
req = self._req(
f"https://api.github.com/repos/{self._repo_path}/releases/latest"
)
with urllib.request.urlopen(req) as resp: # nosec CWE-22 disable bandit warning
assets = json.load(resp)['assets']
for asset in assets:
url = asset.get('browser_download_url')
if url and url.endswith('.apk'):
return url
def tag_exists(self, tag):
"""
Check if git tag is present on github.
https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#list-matching-references--fine-grained-access-tokens
"""
req = self._req(
f"https://api.github.com/repos/{self._repo_path}/git/matching-refs/tags/{tag}"
)
with urllib.request.urlopen(req) as resp: # nosec CWE-22 disable bandit warning
rd = json.load(resp)
return len(rd) == 1 and rd[0].get("ref", False) == f"refs/tags/{tag}"
return False
def list_all_tags(self):
"""Get list of all tags for this repo on GitHub."""
tags = []
req = self._req(
f"https://api.github.com/repos/{self._repo_path}/git/matching-refs/tags/"
)
with urllib.request.urlopen(req) as resp: # nosec CWE-22 disable bandit warning
refs = json.load(resp)
for ref in refs:
r = ref.get('ref', '')
if r.startswith('refs/tags/'):
tags.append(r[10:])
return tags
def create_release(self, tag, files, body=''):
"""
Create a new release on github.
also see: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#create-a-release
:returns: True if release was created, False if release already exists
:raises: urllib exceptions in case of network or api errors, also
raises an exception when the tag doesn't exists.
"""
# Querying github to create a new release for a non-existent tag, will
# also create that tag on github. So we need an additional check to
# prevent this behavior.
if not self.tag_exists(tag):
raise Exception(
f"can't create github release for {self._repo_path} {tag}, tag doesn't exists"
)
# create the relase on github
req = self._req(
f"https://api.github.com/repos/{self._repo_path}/releases",
data=json.dumps(
{
"tag_name": tag,
"body": body,
}
).encode("utf-8"),
)
try:
with urllib.request.urlopen( # nosec CWE-22 disable bandit warning
req
) as resp:
release_id = json.load(resp)['id']
except urllib.error.HTTPError as e:
if e.status == 422:
codes = [x['code'] for x in json.load(e).get('errors', [])]
if "already_exists" in codes:
return False
raise e
# attach / upload all files for the relase
for file in files:
self._create_release_asset(release_id, file)
return True
def _create_release_asset(self, release_id, file):
"""
Attach a file to a release on GitHub.
This uploads a file to github relases, it will be attached to the supplied release
also see: https://docs.github.com/en/rest/releases/assets?apiVersion=2022-11-28#upload-a-release-asset
"""
file = pathlib.Path(file)
with open(file, 'rb') as f:
req = urllib.request.Request(
f"https://uploads.github.com/repos/{self._repo_path}/releases/{release_id}/assets?name={file.name}",
headers={
"Accept": "application/vnd.github+json",
"Authorization": f"Bearer {self._api_token}",
"X-GitHub-Api-Version": "2022-11-28",
"Content-Type": "application/octet-stream",
},
data=f.read(),
)
with urllib.request.urlopen(req): # nosec CWE-22 disable bandit warning
return True
return False

88
fdroidserver/gpgsign.py Normal file
View file

@ -0,0 +1,88 @@
#!/usr/bin/env python3
#
# gpgsign.py - part of the FDroid server tools
# Copyright (C) 2014, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import glob
import logging
import os
import time
from argparse import ArgumentParser
from . import _, common
from .common import FDroidPopen
from .exception import FDroidException
config = None
start_timestamp = time.gmtime()
def status_update_json(signed):
"""Output a JSON file with metadata about this run."""
logging.debug(_('Outputting JSON'))
output = common.setup_status_output(start_timestamp)
if signed:
output['signed'] = signed
common.write_status_json(output)
def main():
global config
# Parse command line...
parser = ArgumentParser()
common.setup_global_opts(parser)
common.parse_args(parser)
config = common.read_config()
repodirs = ['repo']
if config['archive_older'] != 0:
repodirs.append('archive')
signed = []
for output_dir in repodirs:
if not os.path.isdir(output_dir):
raise FDroidException(
_("Missing output directory") + " '" + output_dir + "'"
)
# Process any apks that are waiting to be signed...
for f in sorted(glob.glob(os.path.join(output_dir, '*.*'))):
if not common.is_repo_file(f, for_gpg_signing=True):
continue
filename = os.path.basename(f)
sigfilename = filename + ".asc"
sigpath = os.path.join(output_dir, sigfilename)
if not os.path.exists(sigpath):
gpgargs = ['gpg', '-a', '--output', sigpath, '--detach-sig']
if 'gpghome' in config:
gpgargs.extend(['--homedir', config['gpghome']])
if 'gpgkey' in config:
gpgargs.extend(['--local-user', config['gpgkey']])
gpgargs.append(os.path.join(output_dir, filename))
p = FDroidPopen(gpgargs)
if p.returncode != 0:
raise FDroidException("Signing failed.")
signed.append(filename)
logging.info('Signed ' + filename)
status_update_json(signed)
if __name__ == "__main__":
main()

View file

@ -1,303 +0,0 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#
# import.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013 Daniel Martí <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
import os
import shutil
import urllib
from optparse import OptionParser
from ConfigParser import ConfigParser
import common, metadata
# Get the repo type and address from the given web page. The page is scanned
# in a rather naive manner for 'git clone xxxx', 'hg clone xxxx', etc, and
# when one of these is found it's assumed that's the information we want.
# Returns repotype, address, or None, reason
def getrepofrompage(url):
req = urllib.urlopen(url)
if req.getcode() != 200:
return (None, 'Unable to get ' + url + ' - return code ' + str(req.getcode()))
page = req.read()
# Works for Google Code and BitBucket...
index = page.find('hg clone')
if index != -1:
repotype = 'hg'
repo = page[index + 9:]
index = repo.find('<')
if index == -1:
return (None, "Error while getting repo address")
repo = repo[:index]
repo = repo.split('"')[0]
return (repotype, repo)
# Works for Google Code and BitBucket...
index=page.find('git clone')
if index != -1:
repotype = 'git'
repo = page[index + 10:]
index = repo.find('<')
if index == -1:
return (None, "Error while getting repo address")
repo = repo[:index]
repo = repo.split('"')[0]
return (repotype, repo)
# Google Code only...
index=page.find('svn checkout')
if index != -1:
repotype = 'git-svn'
repo = page[index + 13:]
prefix = '<strong><em>http</em></strong>'
if not repo.startswith(prefix):
return (None, "Unexpected checkout instructions format")
repo = 'http' + repo[len(prefix):]
index = repo.find('<')
if index == -1:
return (None, "Error while getting repo address - no end tag? '" + repo + "'")
sys.exit(1)
repo = repo[:index]
index = repo.find(' ')
if index == -1:
return (None, "Error while getting repo address - no space? '" + repo + "'")
repo = repo[:index]
repo = repo.split('"')[0]
return (repotype, repo)
return (None, "No information found." + page)
config = None
options = None
def main():
global config, options
# Parse command line...
parser = OptionParser()
parser.add_option("-u", "--url", default=None,
help="Project URL to import from.")
parser.add_option("-s", "--subdir", default=None,
help="Path to main android project subdirectory, if not in root.")
parser.add_option("-r", "--repo", default=None,
help="Allows a different repo to be specified for a multi-repo google code project")
parser.add_option("--rev", default=None,
help="Allows a different revision (or git branch) to be specified for the initial import")
(options, args) = parser.parse_args()
config = common.read_config(options)
if not options.url:
print "Specify project url."
sys.exit(1)
url = options.url
tmp_dir = 'tmp'
if not os.path.isdir(tmp_dir):
print "Creating temporary directory"
os.makedirs(tmp_dir)
# Get all apps...
apps = metadata.read_metadata()
# Figure out what kind of project it is...
projecttype = None
issuetracker = None
license = None
website = url #by default, we might override it
if url.startswith('git://'):
projecttype = 'git'
repo = url
repotype = 'git'
sourcecode = ""
website = ""
elif url.startswith('https://github.com'):
if url.endswith('/'):
url = url[:-1]
if url.endswith('.git'):
print "A github URL should point to the project, not the git repo"
sys.exit(1)
projecttype = 'github'
repo = url + '.git'
repotype = 'git'
sourcecode = url
issuetracker = url + '/issues'
elif url.startswith('https://gitorious.org/'):
projecttype = 'gitorious'
repo = 'https://git.gitorious.org/' + url[22:] + '.git'
repotype = 'git'
sourcecode = url
elif url.startswith('https://bitbucket.org/'):
if url.endswith('/'):
url = url[:-1]
projecttype = 'bitbucket'
sourcecode = url + '/src'
issuetracker = url + '/issues'
# Figure out the repo type and adddress...
repotype, repo = getrepofrompage(sourcecode)
if not repotype:
print "Unable to determine vcs type. " + repo
sys.exit(1)
elif url.startswith('http://code.google.com/p/'):
if not url.endswith('/'):
url += '/';
projecttype = 'googlecode'
sourcecode = url + 'source/checkout'
if options.repo:
sourcecode += "?repo=" + options.repo
issuetracker = url + 'issues/list'
# Figure out the repo type and adddress...
repotype, repo = getrepofrompage(sourcecode)
if not repotype:
print "Unable to determine vcs type. " + repo
sys.exit(1)
# Figure out the license...
req = urllib.urlopen(url)
if req.getcode() != 200:
print 'Unable to find project page at ' + sourcecode + ' - return code ' + str(req.getcode())
sys.exit(1)
page = req.read()
index = page.find('Code license')
if index == -1:
print "Couldn't find license data"
sys.exit(1)
ltext = page[index:]
lprefix = 'rel="nofollow">'
index = ltext.find(lprefix)
if index == -1:
print "Couldn't find license text"
sys.exit(1)
ltext = ltext[index + len(lprefix):]
index = ltext.find('<')
if index == -1:
print "License text not formatted as expected"
sys.exit(1)
ltext = ltext[:index]
if ltext == 'GNU GPL v3':
license = 'GPLv3'
elif ltext == 'GNU GPL v2':
license = 'GPLv2'
elif ltext == 'Apache License 2.0':
license = 'Apache2'
elif ltext == 'MIT License':
license = 'MIT'
elif ltext == 'GNU Lesser GPL':
license = 'LGPL'
elif ltext == 'Mozilla Public License 1.1':
license = 'MPL'
elif ltext == 'New BSD License':
license = 'NewBSD'
else:
print "License " + ltext + " is not recognised"
sys.exit(1)
if not projecttype:
print "Unable to determine the project type."
print "The URL you supplied was not in one of the supported formats. Please consult"
print "the manual for a list of supported formats, and supply one of those."
sys.exit(1)
# Get a copy of the source so we can extract some info...
print 'Getting source from ' + repotype + ' repo at ' + repo
src_dir = os.path.join(tmp_dir, 'importer')
if os.path.exists(src_dir):
shutil.rmtree(src_dir)
vcs = common.getvcs(repotype, repo, src_dir)
vcs.gotorevision(options.rev)
if options.subdir:
root_dir = os.path.join(src_dir, options.subdir)
else:
root_dir = src_dir
# Extract some information...
paths = common.manifest_paths(root_dir, None)
if paths:
version, vercode, package = common.parse_androidmanifests(paths)
if not package:
print "Couldn't find package ID"
sys.exit(1)
if not version:
print "WARNING: Couldn't find latest version name"
if not vercode:
print "WARNING: Couldn't find latest version code"
else:
spec = os.path.join(root_dir, 'buildozer.spec')
if os.path.exists(spec):
defaults = {'orientation': 'landscape', 'icon': '',
'permissions': '', 'android.api': "18"}
bconfig = ConfigParser(defaults, allow_no_value=True)
bconfig.read(spec)
package = bconfig.get('app', 'package.domain') + '.' + bconfig.get('app', 'package.name')
version = bconfig.get('app', 'version')
vercode = None
else:
print "No android or kivy project could be found. Specify --subdir?"
sys.exit(1)
# Make sure it's actually new...
for app in apps:
if app['id'] == package:
print "Package " + package + " already exists"
sys.exit(1)
# Construct the metadata...
app = metadata.parse_metadata(None)
app['id'] = package
app['Web Site'] = website
app['Source Code'] = sourcecode
if issuetracker:
app['Issue Tracker'] = issuetracker
if license:
app['License'] = license
app['Repo Type'] = repotype
app['Repo'] = repo
app['Update Check Mode'] = "Tags"
# Create a build line...
build = {}
build['version'] = version if version else '?'
build['vercode'] = vercode if vercode else '?'
build['commit'] = '?'
build['disable'] = 'Generated by import.py - check/set version fields and commit id'
if options.subdir:
build['subdir'] = options.subdir
if os.path.exists(os.path.join(root_dir, 'jni')):
build['buildjni'] = 'yes'
app['builds'].append(build)
# Keep the repo directory to save bandwidth...
if not os.path.exists('build'):
os.mkdir('build')
shutil.move(src_dir, os.path.join('build', package))
with open('build/.fdroidvcs-' + package, 'w') as f:
f.write(repotype + ' ' + repo)
metafile = os.path.join('metadata', package + '.txt')
metadata.write_metadata(metafile, app)
print "Wrote " + metafile
if __name__ == "__main__":
main()

View file

@ -0,0 +1,470 @@
#!/usr/bin/env python3
"""Extract application metadata from a source repository."""
#
# import_subcommand.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
import logging
import os
import re
import shutil
import stat
import sys
import urllib
from argparse import ArgumentParser
from pathlib import Path
from typing import Optional
import git
import yaml
try:
from yaml import CSafeLoader as SafeLoader
except ImportError:
from yaml import SafeLoader
from . import _, common, metadata
from .exception import FDroidException
config = None
SETTINGS_GRADLE_REGEX = re.compile(r'settings\.gradle(?:\.kts)?')
GRADLE_SUBPROJECT_REGEX = re.compile(r'''['"]:?([^'"]+)['"]''')
APPLICATION_ID_REGEX = re.compile(r'''\s*applicationId\s=?\s?['"].*['"]''')
def get_all_gradle_and_manifests(build_dir):
paths = []
for root, dirs, files in os.walk(build_dir):
for f in sorted(files):
if f == 'AndroidManifest.xml' or f.endswith(('.gradle', '.gradle.kts')):
full = Path(root) / f
paths.append(full)
return paths
def get_gradle_subdir(build_dir, paths):
"""Get the subdir where the gradle build is based."""
first_gradle_dir = None
for path in paths:
if not first_gradle_dir:
first_gradle_dir = path.parent.relative_to(build_dir)
if path.exists() and SETTINGS_GRADLE_REGEX.match(path.name):
for m in GRADLE_SUBPROJECT_REGEX.finditer(path.read_text(encoding='utf-8')):
for f in (path.parent / m.group(1)).glob('build.gradle*'):
with f.open(encoding='utf-8') as fp:
for line in fp:
if common.ANDROID_PLUGIN_REGEX.match(
line
) or APPLICATION_ID_REGEX.match(line):
return f.parent.relative_to(build_dir)
if first_gradle_dir and first_gradle_dir != Path('.'):
return first_gradle_dir
def handle_retree_error_on_windows(function, path, excinfo):
"""Python can't remove a readonly file on Windows so chmod first."""
if function in (os.unlink, os.rmdir, os.remove) and excinfo[0] == PermissionError:
os.chmod(path, stat.S_IWRITE)
function(path)
def clone_to_tmp_dir(app: metadata.App, rev=None) -> Path:
"""Clone the source repository of an app to a temporary directory for further processing.
Parameters
----------
app
The App instance to clone the source of.
Returns
-------
tmp_dir
The (temporary) directory the apps source has been cloned into.
"""
tmp_dir = Path('tmp')
tmp_dir.mkdir(exist_ok=True)
tmp_dir = tmp_dir / 'importer'
if tmp_dir.exists():
shutil.rmtree(str(tmp_dir), onerror=handle_retree_error_on_windows)
vcs = common.getvcs(app.RepoType, app.Repo, tmp_dir)
vcs.gotorevision(rev)
return tmp_dir
def getrepofrompage(url: str) -> tuple[Optional[str], str]:
"""Get the repo type and address from the given web page.
The page is scanned in a rather naive manner for 'git clone xxxx',
'hg clone xxxx', etc, and when one of these is found it's assumed
that's the information we want. Returns repotype, address, or
None, reason
Parameters
----------
url
The url to look for repository information at.
Returns
-------
repotype_or_none
The found repository type or None if an error occured.
address_or_reason
The address to the found repository or the reason if an error occured.
"""
if not url.startswith('http'):
return (None, _('{url} does not start with "http"!'.format(url=url)))
req = urllib.request.urlopen(url) # nosec B310 non-http URLs are filtered out
if req.getcode() != 200:
return (None, 'Unable to get ' + url + ' - return code ' + str(req.getcode()))
page = req.read().decode(req.headers.get_content_charset())
# Works for BitBucket
m = re.search('data-fetch-url="(.*)"', page)
if m is not None:
repo = m.group(1)
if repo.endswith('.git'):
return ('git', repo)
return ('hg', repo)
# Works for BitBucket (obsolete)
index = page.find('hg clone')
if index != -1:
repotype = 'hg'
repo = page[index + 9 :]
index = repo.find('<')
if index == -1:
return (None, _("Error while getting repo address"))
repo = repo[:index]
repo = repo.split('"')[0]
return (repotype, repo)
# Works for BitBucket (obsolete)
index = page.find('git clone')
if index != -1:
repotype = 'git'
repo = page[index + 10 :]
index = repo.find('<')
if index == -1:
return (None, _("Error while getting repo address"))
repo = repo[:index]
repo = repo.split('"')[0]
return (repotype, repo)
return (None, _("No information found.") + page)
def get_app_from_url(url: str) -> metadata.App:
"""Guess basic app metadata from the URL.
The URL must include a network hostname, unless it is an lp:,
file:, or git/ssh URL. This throws ValueError on bad URLs to
match urlparse().
Parameters
----------
url
The URL to look to look for app metadata at.
Returns
-------
app
App instance with the found metadata.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If the VCS type could not be determined.
:exc:`ValueError`
If the URL is invalid.
"""
parsed = urllib.parse.urlparse(url)
invalid_url = False
if not parsed.scheme or not parsed.path:
invalid_url = True
app = metadata.App()
app.Repo = url
if url.startswith('git://') or url.startswith('git@'):
app.RepoType = 'git'
elif parsed.netloc == 'github.com':
app.RepoType = 'git'
app.SourceCode = url
app.IssueTracker = url + '/issues'
elif parsed.netloc in ('gitlab.com', 'framagit.org'):
# git can be fussy with gitlab URLs unless they end in .git
if url.endswith('.git'):
url = url[:-4]
app.Repo = url + '.git'
app.RepoType = 'git'
app.SourceCode = url
app.IssueTracker = url + '/issues'
elif parsed.netloc == 'notabug.org':
if url.endswith('.git'):
url = url[:-4]
app.Repo = url + '.git'
app.RepoType = 'git'
app.SourceCode = url
app.IssueTracker = url + '/issues'
elif parsed.netloc == 'bitbucket.org':
if url.endswith('/'):
url = url[:-1]
app.SourceCode = url + '/src'
app.IssueTracker = url + '/issues'
# Figure out the repo type and adddress...
app.RepoType, app.Repo = getrepofrompage(url)
elif parsed.netloc == 'codeberg.org':
app.RepoType = 'git'
app.SourceCode = url
app.IssueTracker = url + '/issues'
elif url.startswith('https://') and url.endswith('.git'):
app.RepoType = 'git'
if not parsed.netloc and parsed.scheme in ('git', 'http', 'https', 'ssh'):
invalid_url = True
if invalid_url:
raise ValueError(_('"{url}" is not a valid URL!'.format(url=url)))
if not app.RepoType:
raise FDroidException("Unable to determine vcs type. " + app.Repo)
return app
def main():
"""Extract app metadata and write it to a file.
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If the repository already has local metadata, no URL is specified and
the current directory is not a Git repository, no application ID could
be found, no Gradle project could be found or there is already metadata
for the found application ID.
"""
global config
# Parse command line...
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument("-u", "--url", help=_("Project URL to import from."))
parser.add_argument(
"-s",
"--subdir",
help=_("Path to main Android project subdirectory, if not in root."),
)
parser.add_argument(
"-c",
"--categories",
help=_("Comma separated list of categories."),
)
parser.add_argument("-l", "--license", help=_("Overall license of the project."))
parser.add_argument(
"--omit-disable",
action="store_true",
help=_("Do not add 'disable:' to the generated build entries"),
)
parser.add_argument(
"--rev",
help=_(
"Allows a different revision (or git branch) to be specified for the initial import"
),
)
metadata.add_metadata_arguments(parser)
options = common.parse_args(parser)
metadata.warnings_action = options.W
config = common.read_config()
apps = metadata.read_metadata()
app = None
tmp_importer_dir = None
local_metadata_files = common.get_local_metadata_files()
if local_metadata_files:
raise FDroidException(
_("This repo already has local metadata: %s") % local_metadata_files[0]
)
build = metadata.Build()
app = metadata.App()
if options.url is None and Path('.git').is_dir():
app.RepoType = 'git'
tmp_importer_dir = Path.cwd()
git_repo = git.Repo(tmp_importer_dir)
for remote in git.Remote.iter_items(git_repo):
if remote.name == 'origin':
url = git_repo.remotes.origin.url
app = get_app_from_url(url)
break
write_local_file = True
elif options.url:
app = get_app_from_url(options.url)
tmp_importer_dir = clone_to_tmp_dir(app, options.rev)
git_repo = git.Repo(tmp_importer_dir)
if not options.omit_disable:
build.disable = (
'Generated by `fdroid import` - check version fields and commitid'
)
write_local_file = False
else:
raise FDroidException("Specify project url.")
app.AutoUpdateMode = 'Version'
app.UpdateCheckMode = 'Tags'
build.commit = common.get_head_commit_id(tmp_importer_dir)
# Extract some information...
paths = get_all_gradle_and_manifests(tmp_importer_dir)
gradle_subdir = get_gradle_subdir(tmp_importer_dir, paths)
if paths:
versionName, versionCode, appid = common.parse_androidmanifests(paths, app)
if not appid:
raise FDroidException(_("Couldn't find Application ID"))
if not versionName:
logging.warning(_('Could not find latest versionName'))
if not versionCode:
logging.warning(_('Could not find latest versionCode'))
else:
raise FDroidException(_("No gradle project could be found. Specify --subdir?"))
# Make sure it's actually new...
if appid in apps:
raise FDroidException(_('Package "{appid}" already exists').format(appid=appid))
# Create a build line...
build.versionName = versionName or 'Unknown'
app.CurrentVersion = build.versionName
build.versionCode = versionCode or 0
app.CurrentVersionCode = build.versionCode
if options.subdir:
build.subdir = options.subdir
elif gradle_subdir:
build.subdir = gradle_subdir.as_posix()
# subdir might be None
subdir = Path(tmp_importer_dir / build.subdir) if build.subdir else tmp_importer_dir
if options.license:
app.License = options.license
if options.categories:
app.Categories = options.categories.split(',')
if (subdir / 'jni').exists():
build.buildjni = ['yes']
if (subdir / 'build.gradle').exists() or (subdir / 'build.gradle.kts').exists():
build.gradle = ['yes']
app.AutoName = common.fetch_real_name(subdir, build.gradle)
package_json = tmp_importer_dir / 'package.json' # react-native
pubspec_yaml = tmp_importer_dir / 'pubspec.yaml' # flutter
if package_json.exists():
build.sudo = [
'sysctl fs.inotify.max_user_watches=524288 || true',
'apt-get update',
'apt-get install -y npm',
]
build.init = ['npm install --build-from-source']
with package_json.open() as fp:
data = json.load(fp)
app.AutoName = app.AutoName or data.get('name')
app.License = data.get('license', app.License)
app.Description = data.get('description', app.Description)
app.WebSite = data.get('homepage', app.WebSite)
app_json = tmp_importer_dir / 'app.json'
build.scanignore = ['android/build.gradle']
build.scandelete = ['node_modules']
if app_json.exists():
with app_json.open() as fp:
data = json.load(fp)
app.AutoName = app.AutoName or data.get('name')
if pubspec_yaml.exists():
with pubspec_yaml.open() as fp:
data = yaml.load(fp, Loader=SafeLoader)
app.AutoName = app.AutoName or data.get('name')
app.License = data.get('license', app.License)
app.Description = data.get('description', app.Description)
app.UpdateCheckData = 'pubspec.yaml|version:\\s.+\\+(\\d+)|.|version:\\s(.+)\\+'
build.srclibs = ['flutter@stable']
build.output = 'build/app/outputs/flutter-apk/app-release.apk'
build.subdir = None
build.gradle = None
build.prebuild = [
'export PUB_CACHE=$(pwd)/.pub-cache',
'$$flutter$$/bin/flutter config --no-analytics',
'$$flutter$$/bin/flutter packages pub get',
]
build.scandelete = [
'.pub-cache',
]
build.build = [
'export PUB_CACHE=$(pwd)/.pub-cache',
'$$flutter$$/bin/flutter build apk',
]
git_modules = tmp_importer_dir / '.gitmodules'
if git_modules.exists():
build.submodules = True
metadata.post_parse_yaml_metadata(app)
app['Builds'].append(build)
if write_local_file:
metadata.write_metadata(Path('.fdroid.yml'), app)
else:
# Keep the repo directory to save bandwidth...
Path('build').mkdir(exist_ok=True)
build_dir = Path('build') / appid
if build_dir.exists():
logging.warning(
_('{path} already exists, ignoring import results!').format(
path=build_dir
)
)
sys.exit(1)
elif tmp_importer_dir:
# For Windows: Close the repo or a git.exe instance holds handles to repo
try:
git_repo.close()
except AttributeError: # Debian/stretch's version does not have close()
pass
shutil.move(tmp_importer_dir, build_dir)
Path('build/.fdroidvcs-' + appid).write_text(app.RepoType + ' ' + app.Repo)
metadatapath = Path('metadata') / (appid + '.yml')
metadata.write_metadata(metadatapath, app)
logging.info("Wrote " + str(metadatapath))
if __name__ == "__main__":
main()

1928
fdroidserver/index.py Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,8 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
#
# update.py - part of the FDroid server tools
# init.py - part of the FDroid server tools
# Copyright (C) 2010-2013, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013 Daniel Martí <mvdan@mvdan.cc>
# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
# Copyright (C) 2013 Hans-Christoph Steiner <hans@eds.org>
#
# This program is free software: you can redistribute it and/or modify
@ -19,206 +18,281 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import hashlib
import glob
import logging
import os
import re
import shutil
import socket
import subprocess
import sys
from optparse import OptionParser
import common
from common import FDroidPopen, BuildException
from argparse import ArgumentParser
from . import _, common
from .exception import FDroidException
config = {}
options = None
def write_to_config(key, value):
'''write a key/value to the local config.py'''
with open('config.py', 'r') as f:
data = f.read()
pattern = key + '\s*=.*'
repl = key + ' = "' + value + '"'
def disable_in_config(key, value):
"""Write a key/value to the local config.yml, then comment it out."""
import yaml
with open(common.CONFIG_FILE) as fp:
data = fp.read()
pattern = r'\n[\s#]*' + key + r':.*'
repl = '\n#' + yaml.dump({key: value}, default_flow_style=False)
data = re.sub(pattern, repl, data)
with open('config.py', 'w') as f:
f.writelines(data)
def genpassword():
'''generate a random password for when generating keys'''
h = hashlib.sha256()
h.update(os.urandom(16)) # salt
h.update(bytes(socket.getfqdn()))
return h.digest().encode('base64').strip()
def genkey(keystore, repo_keyalias, password, keydname):
'''generate a new keystore with a new key in it for signing repos'''
print('Generating a new key in "' + keystore + '"...')
p = FDroidPopen(['keytool', '-genkey',
'-keystore', keystore, '-alias', repo_keyalias,
'-keyalg', 'RSA', '-keysize', '4096',
'-sigalg', 'SHA256withRSA',
'-validity', '10000',
'-storepass', password, '-keypass', password,
'-dname', keydname])
if p.returncode != 0:
raise BuildException("Failed to generate key", p.stdout, p.stderr)
# now show the lovely key that was just generated
p = subprocess.Popen(['keytool', '-list', '-v',
'-keystore', keystore, '-alias', repo_keyalias],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output = p.communicate(password)[0]
print(output.lstrip().strip() + '\n\n')
with open(common.CONFIG_FILE, 'w') as fp:
fp.writelines(data)
def main():
global options, config
global config
# Parse command line...
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
parser.add_option("-d", "--distinguished-name", default=None,
help="X.509 'Distiguished Name' used when generating keys")
parser.add_option("--keystore", default=None,
help="Path to the keystore for the repo signing key")
parser.add_option("--repo-keyalias", default=None,
help="Alias of the repo signing key in the keystore")
(options, args) = parser.parse_args()
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument(
"-d",
"--distinguished-name",
default=None,
help=_("X.509 'Distinguished Name' used when generating keys"),
)
parser.add_argument(
"--keystore",
default=None,
help=_("Path to the keystore for the repo signing key"),
)
parser.add_argument(
"--repo-keyalias",
default=None,
help=_("Alias of the repo signing key in the keystore"),
)
parser.add_argument(
"--android-home",
default=None,
help=_("Path to the Android SDK (sometimes set in ANDROID_HOME)"),
)
parser.add_argument(
"--no-prompt",
action="store_true",
default=False,
help=_("Do not prompt for Android SDK path, just fail"),
)
options = common.parse_args(parser)
# find root install prefix
tmp = os.path.dirname(sys.argv[0])
if os.path.basename(tmp) == 'bin':
prefix = os.path.dirname(tmp)
examplesdir = prefix + '/share/doc/fdroidserver/examples'
else:
# we're running straight out of the git repo
prefix = tmp
examplesdir = prefix
common.set_console_logging(options.verbose, options.color)
fdroiddir = os.getcwd()
test_config = dict()
examplesdir = common.get_examples_dir()
common.fill_config_defaults(test_config)
if not os.path.exists('config.py') and not os.path.exists('repo'):
# 'metadata' and 'tmp' are created in fdroid
os.mkdir('repo')
shutil.copy(os.path.join(examplesdir, 'fdroid-icon.png'), fdroiddir)
shutil.copyfile(os.path.join(examplesdir, 'config.sample.py'), 'config.py')
os.chmod('config.py', 0o0600)
else:
print('Looks like this is already an F-Droid repo, cowardly refusing to overwrite it...')
sys.exit()
# now that we have a local config.py, read configuration...
config = common.read_config(options)
# track down where the Android SDK is
if os.path.isdir(config['sdk_path']):
print('Using "' + config['sdk_path'] + '" for the Android SDK')
sdk_path = config['sdk_path']
elif 'ANDROID_HOME' in os.environ.keys():
sdk_path = os.environ['ANDROID_HOME']
else:
default_sdk_path = '/opt/android-sdk'
while True:
s = raw_input('Enter the path to the Android SDK (' + default_sdk_path + '): ')
if re.match('^\s*$', s) != None:
sdk_path = default_sdk_path
else:
sdk_path = s
if os.path.isdir(os.path.join(sdk_path, 'build-tools')):
break
else:
print('"' + s + '" does not contain the Android SDK! Try again...')
if os.path.isdir(sdk_path):
write_to_config('sdk_path', sdk_path)
# try to find a working aapt, in all the recent possible paths
build_tools = os.path.join(sdk_path, 'build-tools')
aaptdirs = []
aaptdirs.append(os.path.join(build_tools, config['build_tools']))
aaptdirs.append(build_tools)
for f in sorted(os.listdir(build_tools), reverse=True):
if os.path.isdir(os.path.join(build_tools, f)):
aaptdirs.append(os.path.join(build_tools, f))
for d in aaptdirs:
if os.path.isfile(os.path.join(d, 'aapt')):
aapt = os.path.join(d, 'aapt')
break
if os.path.isfile(aapt):
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', '')
# track down where the Android SDK is, the default is to use the path set
# in ANDROID_HOME if that exists, otherwise None
if options.android_home is not None:
test_config['sdk_path'] = options.android_home
elif not common.test_sdk_exists(test_config):
# if neither --android-home nor the default sdk_path
# exist, prompt the user using platform-specific default
# and if the user leaves it blank, ignore and move on.
default_sdk_path = ''
if sys.platform in ('win32', 'cygwin'):
p = os.path.join(
os.getenv('USERPROFILE'), 'AppData', 'Local', 'Android', 'android-sdk'
)
elif sys.platform == 'darwin':
# on OSX, Homebrew is common and has an easy path to detect
p = '/usr/local/opt/android-sdk'
elif os.path.isdir('/usr/lib/android-sdk'):
# if the Debian packages are installed, suggest them
p = '/usr/lib/android-sdk'
else:
write_to_config('build_tools', dirname)
p = '/opt/android-sdk'
if os.path.exists(p):
default_sdk_path = p
test_config['sdk_path'] = default_sdk_path
# track down where the Android NDK is
ndk_path = '/opt/android-ndk'
if os.path.isdir(config['ndk_path']):
ndk_path = config['ndk_path']
elif 'ANDROID_NDK' in os.environ.keys():
print('using ANDROID_NDK')
ndk_path = os.environ['ANDROID_NDK']
if os.path.isdir(ndk_path):
write_to_config('ndk_path', ndk_path)
# the NDK is optional so we don't prompt the user for it if its not found
if not common.test_sdk_exists(test_config):
del test_config['sdk_path']
while not options.no_prompt:
try:
s = input(
_('Enter the path to the Android SDK (%s) here:\n> ')
% default_sdk_path
)
except KeyboardInterrupt:
print('')
sys.exit(1)
if re.match(r'^\s*$', s) is not None:
test_config['sdk_path'] = default_sdk_path
else:
test_config['sdk_path'] = s
if common.test_sdk_exists(test_config):
break
default_sdk_path = ''
if test_config.get('sdk_path') and not common.test_sdk_exists(test_config):
raise FDroidException(
_("Android SDK not found at {path}!").format(path=test_config['sdk_path'])
)
if not os.path.exists(common.CONFIG_FILE):
# 'metadata' and 'tmp' are created in fdroid
if not os.path.exists('repo'):
os.mkdir('repo')
example_config_yml = os.path.join(examplesdir, common.CONFIG_FILE)
if os.path.exists(example_config_yml):
shutil.copyfile(example_config_yml, common.CONFIG_FILE)
else:
from pkg_resources import get_distribution
versionstr = get_distribution('fdroidserver').version
if not versionstr:
versionstr = 'master'
with open(common.CONFIG_FILE, 'w') as fp:
fp.write('# see https://gitlab.com/fdroid/fdroidserver/blob/')
fp.write(versionstr)
fp.write(f'/examples/{common.CONFIG_FILE}\n')
os.chmod(common.CONFIG_FILE, 0o0600)
# If android_home is None, test_config['sdk_path'] will be used and
# "$ANDROID_HOME" may be used if the env var is set up correctly.
# If android_home is not None, the path given from the command line
# will be directly written in the config.
if 'sdk_path' in test_config:
common.write_to_config(test_config, 'sdk_path', options.android_home)
else:
logging.warning(
'Looks like this is already an F-Droid repo, cowardly refusing to overwrite it...'
)
logging.info('Try running `fdroid init` in an empty directory.')
raise FDroidException('Repository already exists.')
# now that we have a local config.yml, read configuration...
config = common.read_config()
# the NDK is optional and there may be multiple versions of it, so it's
# left for the user to configure
# find or generate the keystore for the repo signing key. First try the
# path written in the default config.py. Then check if the user has
# path written in the default config.yml. Then check if the user has
# specified a path from the command line, which will trump all others.
# Otherwise, create ~/.local/share/fdroidserver and stick it in there.
# Otherwise, create ~/.local/share/fdroidserver and stick it in there. If
# keystore is set to NONE, that means that Java will look for keys in a
# Hardware Security Module aka Smartcard.
keystore = config['keystore']
if options.keystore:
if os.path.isfile(options.keystore):
keystore = os.path.abspath(options.keystore)
if options.keystore == 'NONE':
keystore = options.keystore
write_to_config('keystore', keystore)
else:
print('"' + options.keystore + '" does not exist or is not a file!')
sys.exit(1)
keystore = os.path.abspath(options.keystore)
if not os.path.exists(keystore):
logging.info(
'"' + keystore + '" does not exist, creating a new keystore there.'
)
common.write_to_config(test_config, 'keystore', keystore)
repo_keyalias = None
keydname = None
if options.repo_keyalias:
repo_keyalias = options.repo_keyalias
write_to_config('repo_keyalias', repo_keyalias)
common.write_to_config(test_config, 'repo_keyalias', repo_keyalias)
if options.distinguished_name:
keydname = options.distinguished_name
write_to_config('keydname', keydname)
if not os.path.isfile(keystore):
# no existing or specified keystore, generate the whole thing
keystoredir = os.path.join(os.getenv('HOME'),
'.local', 'share', 'fdroidserver')
if not os.path.exists(keystoredir):
os.makedirs(keystoredir, mode=0o700)
keystore = os.path.join(keystoredir, 'keystore.jks')
write_to_config('keystore', keystore)
password = genpassword()
write_to_config('keystorepass', password)
write_to_config('keypass', password)
if not options.repo_keyalias:
repo_keyalias = socket.getfqdn()
write_to_config('repo_keyalias', repo_keyalias)
if not options.distinguished_name:
keydname = 'CN=' + repo_keyalias + ', OU=F-Droid'
write_to_config('keydname', keydname)
genkey(keystore, repo_keyalias, password, keydname)
common.write_to_config(test_config, 'keydname', keydname)
if keystore == 'NONE': # we're using a smartcard
common.write_to_config(
test_config, 'repo_keyalias', '1'
) # seems to be the default
disable_in_config('keypass', 'never used with smartcard')
common.write_to_config(
test_config,
'smartcardoptions',
(
'-storetype PKCS11 '
+ '-providerClass sun.security.pkcs11.SunPKCS11 '
+ '-providerArg opensc-fdroid.cfg'
),
)
# find opensc-pkcs11.so
if not os.path.exists('opensc-fdroid.cfg'):
if os.path.exists('/usr/lib/opensc-pkcs11.so'):
opensc_so = '/usr/lib/opensc-pkcs11.so'
elif os.path.exists('/usr/lib64/opensc-pkcs11.so'):
opensc_so = '/usr/lib64/opensc-pkcs11.so'
else:
files = glob.glob(
'/usr/lib/' + os.uname()[4] + '-*-gnu/opensc-pkcs11.so'
)
if len(files) > 0:
opensc_so = files[0]
else:
opensc_so = '/usr/lib/opensc-pkcs11.so'
logging.warning(
'No OpenSC PKCS#11 module found, '
+ 'install OpenSC then edit "opensc-fdroid.cfg"!'
)
with open('opensc-fdroid.cfg', 'w') as f:
f.write('name = OpenSC\nlibrary = ')
f.write(opensc_so)
f.write('\n')
logging.info(
"Repo setup using a smartcard HSM. Please edit keystorepass and repo_keyalias in config.yml."
)
logging.info(
"If you want to generate a new repo signing key in the HSM you can do that with 'fdroid update "
"--create-key'."
)
elif os.path.exists(keystore):
to_set = ['keystorepass', 'keypass', 'repo_keyalias', 'keydname']
if repo_keyalias:
to_set.remove('repo_keyalias')
if keydname:
to_set.remove('keydname')
logging.warning(
'\n'
+ _('Using existing keystore "{path}"').format(path=keystore)
+ '\n'
+ _('Now set these in config.yml:')
+ ' '
+ ', '.join(to_set)
+ '\n'
)
else:
password = common.genpassword()
c = dict(test_config)
c['keystorepass'] = password
c['keypass'] = password
c['repo_keyalias'] = repo_keyalias or socket.getfqdn()
c['keydname'] = 'CN=' + c['repo_keyalias'] + ', OU=F-Droid'
common.write_to_config(test_config, 'keystorepass', password)
common.write_to_config(test_config, 'keypass', password)
common.write_to_config(test_config, 'repo_keyalias', c['repo_keyalias'])
common.write_to_config(test_config, 'keydname', c['keydname'])
common.genkeystore(c)
print('Built repo based in "' + fdroiddir + '"')
print('with this config:')
print(' Android SDK:\t\t\t' + sdk_path)
print(' Android SDK Build Tools:\t' + os.path.dirname(aapt))
print(' Android NDK (optional):\t' + ndk_path)
print(' Keystore for signing key:\t' + keystore)
print('\nTo complete the setup, add your APKs to "' +
os.path.join(fdroiddir, 'repo') + '"' +
'''
msg = '\n'
msg += _('Built repo based in "%s" with this config:') % fdroiddir
msg += '\n\n Android SDK:\t\t\t' + config['sdk_path']
msg += '\n ' + _('Keystore for signing key:\t') + keystore
if repo_keyalias is not None:
msg += '\n Alias for key in store:\t' + repo_keyalias
msg += '\n\n'
msg += (
_(
"""To complete the setup, add your APKs to "%s"
then run "fdroid update -c; fdroid update". You might also want to edit
"config.py" to set the URL, repo name, and more. You should also set up
a signing key.
"config.yml" to set the URL, repo name, and more. You should also set up
a signing key (a temporary one might have been automatically generated).
For more info: https://f-droid.org/manual/fdroid.html#Simple-Binary-Repository
and https://f-droid.org/manual/fdroid.html#Signing
''')
For more info: https://f-droid.org/docs/Setup_an_F-Droid_App_Repo
and https://f-droid.org/docs/Signing_Process"""
)
% os.path.join(fdroiddir, 'repo')
)
if not options.quiet:
# normally, INFO is only shown with --verbose, but show this unless --quiet
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info(msg)
logging.shutdown()

View file

@ -1,9 +1,8 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
#
# verify.py - part of the FDroid server tools
# install.py - part of the FDroid server tools
# Copyright (C) 2013, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013 Daniel Martí <mvdan@mvdan.cc>
# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -18,98 +17,396 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
import os
import glob
from optparse import OptionParser, OptionError
import locale
import logging
import os
import sys
import termios
import tty
from argparse import ArgumentParser, BooleanOptionalAction
from pathlib import Path
from urllib.parse import urlencode, urlparse, urlunparse
import common
from common import FDroidPopen
import defusedxml.ElementTree as XMLElementTree
from . import _, common, github, index, net
from .exception import FDroidException
DEFAULT_IPFS_GATEWAYS = ("https://gateway.ipfs.io/ipfs/",)
MAVEN_CENTRAL_MIRRORS = [
{
"url": "https://repo1.maven.org/maven2/",
"dnsA": ["199.232.16.209"],
"worksWithoutSNI": True,
},
{
"url": "https://repo.maven.apache.org/maven2/",
"dnsA": ["199.232.16.215"],
"worksWithoutSNI": True,
},
{
"url": "https://maven-central-asia.storage-download.googleapis.com/maven2/",
},
{
"url": "https://maven-central-eu.storage-download.googleapis.com/maven2/",
},
{
"url": "https://maven-central.storage-download.googleapis.com/maven2/",
},
]
# pylint: disable=unused-argument
def download_apk(appid='org.fdroid.fdroid', privacy_mode=False):
"""Download an APK from F-Droid via the first mirror that works."""
url = urlunparse(
urlparse(common.FDROIDORG_MIRRORS[0]['url'])._replace(
query=urlencode({'fingerprint': common.FDROIDORG_FINGERPRINT})
)
)
data, _ignored = index.download_repo_index_v2(url)
app = data.get('packages', dict()).get(appid)
preferred_version = None
for version in app['versions'].values():
if not preferred_version:
# if all else fails, use the first one
preferred_version = version
if not version.get('releaseChannels'):
# prefer APK in default release channel
preferred_version = version
break
mirrors = common.append_filename_to_mirrors(
preferred_version['file']['name'][1:], common.FDROIDORG_MIRRORS
)
ipfsCIDv1 = preferred_version['file'].get('ipfsCIDv1')
if ipfsCIDv1:
for gateway in DEFAULT_IPFS_GATEWAYS:
mirrors.append({'url': os.path.join(gateway, ipfsCIDv1)})
f = net.download_using_mirrors(mirrors)
if f and os.path.exists(f):
versionCode = preferred_version['manifest']['versionCode']
f = Path(f)
return str(f.rename(f.with_stem(f'{appid}_{versionCode}')).resolve())
def download_fdroid_apk(privacy_mode=False): # pylint: disable=unused-argument
"""Directly download the current F-Droid APK and verify it.
This downloads the "download button" link, which is the version
that is best tested for new installs.
"""
mirror = common.FDROIDORG_MIRRORS[0]
mirror['url'] = urlunparse(urlparse(mirror['url'])._replace(path='F-Droid.apk'))
return net.download_using_mirrors([mirror])
def download_fdroid_apk_from_github(privacy_mode=False):
"""Download F-Droid.apk from F-Droid's GitHub Releases."""
if common.config and not privacy_mode:
token = common.config.get('github_token')
else:
token = None
gh = github.GithubApi(token, 'https://github.com/f-droid/fdroidclient')
latest_apk = gh.get_latest_apk()
filename = os.path.basename(latest_apk)
return net.download_file(latest_apk, os.path.join(common.get_cachedir(), filename))
def download_fdroid_apk_from_ipns(privacy_mode=False):
"""Download the F-Droid APK from an IPNS repo."""
cid = 'k51qzi5uqu5dl4hbcksbdmplanu9n4hivnqsupqe6vzve1pdbeh418ssptldd3'
mirrors = [
{"url": f"https://ipfs.io/ipns/{cid}/F-Droid.apk"},
]
if not privacy_mode:
mirrors.append({"url": f"https://{cid}.ipns.dweb.link/F-Droid.apk"})
return net.download_using_mirrors(mirrors)
def download_fdroid_apk_from_maven(privacy_mode=False):
"""Download F-Droid.apk from Maven Central and official mirrors."""
path = 'org/fdroid/fdroid/F-Droid'
if privacy_mode:
mirrors = MAVEN_CENTRAL_MIRRORS[:2] # skip the Google servers
else:
mirrors = MAVEN_CENTRAL_MIRRORS
metadata = net.download_using_mirrors(
common.append_filename_to_mirrors(
os.path.join(path, 'maven-metadata.xml'), mirrors
)
)
version = XMLElementTree.parse(metadata).getroot().findall('*.//latest')[0].text
mirrors = common.append_filename_to_mirrors(
os.path.join(path, version, f'F-Droid-{version}.apk'), mirrors
)
return net.download_using_mirrors(mirrors)
def install_fdroid_apk(privacy_mode=False):
"""Download and install F-Droid.apk using all tricks we can muster.
By default, this first tries to fetch the official install APK
which is offered when someone clicks the "download" button on
https://f-droid.org/. Then it will try all the mirrors and
methods until it gets something successful, or runs out of
options.
There is privacy_mode which tries to download from mirrors first,
so that this downloads from a mirror that has many different kinds
of files available, thereby breaking the clear link to F-Droid.
Returns
-------
None for success or the error message.
"""
country_code = locale.getlocale()[0].split('_')[-1]
if privacy_mode is None and country_code in ('CN', 'HK', 'IR', 'TM'):
logging.warning(
_('Privacy mode was enabled based on your locale ({country_code}).').format(
country_code=country_code
)
)
privacy_mode = True
if privacy_mode or not (common.config and common.config.get('jarsigner')):
download_methods = [
download_fdroid_apk_from_maven,
download_fdroid_apk_from_ipns,
download_fdroid_apk_from_github,
]
else:
download_methods = [
download_apk,
download_fdroid_apk_from_maven,
download_fdroid_apk_from_github,
download_fdroid_apk_from_ipns,
download_fdroid_apk,
]
for method in download_methods:
try:
f = method(privacy_mode=privacy_mode)
break
except Exception as e:
logging.info(e)
else:
return _('F-Droid.apk could not be downloaded from any known source!')
fingerprint = common.apk_signer_fingerprint(f)
if fingerprint.upper() != common.FDROIDORG_FINGERPRINT:
return _('{path} has the wrong fingerprint ({fingerprint})!').format(
path=f, fingerprint=fingerprint
)
install_apk(f)
def install_apk(f):
if common.config and common.config.get('apksigner'):
# TODO this should always verify, but that requires APK sig verification in Python #94
logging.info(_('Verifying package {path} with apksigner.').format(path=f))
common.verify_apk_signature(f)
if common.config and common.config.get('adb'):
if devices():
install_apks_to_devices([f])
os.remove(f)
else:
os.remove(f)
return _('No devices found for `adb install`! Please plug one in.')
options = None
config = None
def devices():
p = FDroidPopen(["adb", "devices"])
"""Get the list of device serials for use with adb commands."""
p = common.SdkToolsPopen(['adb', "devices"])
if p.returncode != 0:
raise Exception("An error occured when finding devices: %s" % p.stderr)
lines = p.stdout.splitlines()
if lines[0].startswith('* daemon not running'):
lines = lines[2:]
if len(lines) < 3:
return []
lines = lines[1:-1]
return [l.split()[0] for l in lines]
raise FDroidException("An error occured when finding devices: %s" % p.output)
serials = list()
for line in p.output.splitlines():
columns = line.strip().split("\t", maxsplit=1)
if len(columns) == 2:
serial, status = columns
if status == 'device':
serials.append(serial)
else:
d = {'serial': serial, 'status': status}
logging.warning(_('adb reports {serial} is "{status}"!'.format(**d)))
return serials
def install_apks_to_devices(apks):
"""Install the list of APKs to all Android devices reported by `adb devices`."""
for apk in apks:
# Get device list each time to avoid device not found errors
devs = devices()
if not devs:
raise FDroidException(_("No attached devices found"))
logging.info(_("Installing %s...") % apk)
for dev in devs:
logging.info(
_("Installing '{apkfilename}' on {dev}...").format(
apkfilename=apk, dev=dev
)
)
p = common.SdkToolsPopen(['adb', "-s", dev, "install", apk])
fail = ""
for line in p.output.splitlines():
if line.startswith("Failure"):
fail = line[9:-1]
if not fail:
continue
if fail == "INSTALL_FAILED_ALREADY_EXISTS":
logging.warning(
_('"{apkfilename}" is already installed on {dev}.').format(
apkfilename=apk, dev=dev
)
)
else:
raise FDroidException(
_("Failed to install '{apkfilename}' on {dev}: {error}").format(
apkfilename=apk, dev=dev, error=fail
)
)
def read_char():
"""Read input from the terminal prompt one char at a time."""
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
def strtobool(val):
"""Convert a localized string representation of truth to True or False."""
return val.lower() in ('', 'y', 'yes', _('yes'), _('true')) # '' is pressing Enter
def prompt_user(yes, msg):
"""Prompt user for yes/no, supporting Enter and Esc as accepted answers."""
run_install = yes
if yes is None and sys.stdout.isatty():
print(msg, end=' ', flush=True)
answer = ''
while True:
in_char = read_char()
if in_char == '\r': # Enter key
break
if not in_char.isprintable():
sys.exit(1)
print(in_char, end='', flush=True)
answer += in_char
run_install = strtobool(answer)
print()
return run_install
def main():
parser = ArgumentParser(
usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]"
)
common.setup_global_opts(parser)
parser.add_argument(
"appid",
nargs='*',
help=_("application ID with optional versionCode in the form APPID[:VERCODE]"),
)
parser.add_argument(
"-a",
"--all",
action="store_true",
default=False,
help=_("Install all signed applications available"),
)
parser.add_argument(
"-p",
"--privacy-mode",
action=BooleanOptionalAction,
default=None,
help=_("Download F-Droid.apk using mirrors that leak less to the network"),
)
parser.add_argument(
"-y",
"--yes",
action="store_true",
default=None,
help=_("Automatic yes to all prompts."),
)
parser.add_argument(
"-n",
"--no",
action="store_false",
dest='yes',
help=_("Automatic no to all prompts."),
)
options = common.parse_args(parser)
global options, config
common.set_console_logging(options.verbose, options.color)
logging.captureWarnings(True) # for SNIMissingWarning
# Parse command line...
parser = OptionParser(usage="Usage: %prog [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]")
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
parser.add_option("-a", "--all", action="store_true", default=False,
help="Install all signed applications available")
(options, args) = parser.parse_args()
common.get_config()
if not args and not options.all:
raise OptionError("If you really want to install all the signed apps, use --all", "all")
config = common.read_config(options)
if not options.appid and not options.all:
run_install = prompt_user(
options.yes,
_('Would you like to download and install F-Droid.apk via adb? (YES/no)'),
)
if run_install:
sys.exit(install_fdroid_apk(options.privacy_mode))
sys.exit(1)
output_dir = 'repo'
if not os.path.isdir(output_dir):
print "No signed output directory - nothing to do"
sys.exit(0)
if (options.appid or options.all) and not os.path.isdir(output_dir):
logging.error(_("No signed output directory - nothing to do"))
run_install = prompt_user(
options.yes,
_('Would you like to download the app(s) from f-droid.org? (YES/no)'),
)
if run_install:
for appid in options.appid:
f = download_apk(appid)
install_apk(f)
sys.exit(install_fdroid_apk(options.privacy_mode))
sys.exit(1)
if args:
if options.appid:
vercodes = common.read_pkg_args(options.appid, True)
common.get_metadata_files(vercodes) # only check appids
apks = {appid: None for appid in vercodes}
vercodes = common.read_pkg_args(args, True)
apks = { appid : None for appid in vercodes }
# Get the signed apk with the highest vercode
# Get the signed APK with the highest vercode
for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))):
appid, vercode = common.apknameinfo(apkfile)
try:
appid, vercode = common.publishednameinfo(apkfile)
except FDroidException:
continue
if appid not in apks:
continue
if vercodes[appid] and vercode not in vercodes[appid]:
continue
apks[appid] = apkfile
for appid, apk in apks.iteritems():
for appid, apk in apks.items():
if not apk:
raise Exception("No signed apk available for %s" % appid)
raise FDroidException(_("No signed APK available for %s") % appid)
install_apks_to_devices(apks.values())
else:
elif options.all:
apks = {
common.publishednameinfo(apkfile)[0]: apkfile
for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk')))
}
install_apks_to_devices(apks.values())
apks = { common.apknameinfo(apkfile)[0] : apkfile for apkfile in
sorted(glob.glob(os.path.join(output_dir, '*.apk'))) }
logging.info('\n' + _('Finished'))
for appid, apk in apks.iteritems():
# Get device list each time to avoid device not found errors
devs = devices()
if not devs:
raise Exception("No attached devices found")
print "Installing %s..." % apk
for dev in devs:
print "Installing %s on %s..." % (apk, dev)
p = FDroidPopen(["adb", "-s", dev, "install", apk ])
fail= ""
for line in p.stdout.splitlines():
if line.startswith("Failure"):
fail = line[9:-1]
if fail:
if fail == "INSTALL_FAILED_ALREADY_EXISTS":
print "%s is already installed on %s." % (apk, dev)
else:
raise Exception("Failed to install %s on %s: %s" % (
apk, dev, fail))
print "\nFinished"
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,300 @@
# PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
# --------------------------------------------
#
# 1. This LICENSE AGREEMENT is between the Python Software Foundation
# ("PSF"), and the Individual or Organization ("Licensee") accessing and
# otherwise using this software ("Python") in source or binary form and
# its associated documentation.
#
# 2. Subject to the terms and conditions of this License Agreement, PSF hereby
# grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
# analyze, test, perform and/or display publicly, prepare derivative works,
# distribute, and otherwise use Python alone or in any derivative version,
# provided, however, that PSF's License Agreement and PSF's notice of copyright,
# i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Python Software Foundation;
# All Rights Reserved" are retained in Python alone or in any derivative version
# prepared by Licensee.
#
# 3. In the event Licensee prepares a derivative work that is based on
# or incorporates Python or any part thereof, and wants to make
# the derivative work available to others as provided herein, then
# Licensee hereby agrees to include in any such work a brief summary of
# the changes made to Python.
#
# 4. PSF is making Python available to Licensee on an "AS IS"
# basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
# IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
# DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
# FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
# INFRINGE ANY THIRD PARTY RIGHTS.
#
# 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
# FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
# A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
# OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
#
# 6. This License Agreement will automatically terminate upon a material
# breach of its terms and conditions.
#
# 7. Nothing in this License Agreement shall be deemed to create any
# relationship of agency, partnership, or joint venture between PSF and
# Licensee. This License Agreement does not grant permission to use PSF
# trademarks or trade name in a trademark sense to endorse or promote
# products or services of Licensee, or any third party.
#
# 8. By copying, installing or otherwise using Python, Licensee
# agrees to be bound by the terms and conditions of this License
# Agreement.
#
# SPDX-License-Identifier: Python-2.0
#
# downloaded from:
# https://github.com/effigies/looseversion/blob/e1a5a176a92dc6825deda4205c1be6d05e9ed352/src/looseversion/__init__.py
"""Provides classes to represent module version numbers (one class for
each style of version numbering). There are currently two such classes
implemented: StrictVersion and LooseVersion.
Every version number class implements the following interface:
* the 'parse' method takes a string and parses it to some internal
representation; if the string is an invalid version number,
'parse' raises a ValueError exception
* the class constructor takes an optional string argument which,
if supplied, is passed to 'parse'
* __str__ reconstructs the string that was passed to 'parse' (or
an equivalent string -- ie. one that will generate an equivalent
version number instance)
* __repr__ generates Python code to recreate the version number instance
* _cmp compares the current instance with either another instance
of the same class or a string (which will be parsed to an instance
of the same class, thus must follow the same rules)
"""
import re
import sys
__license__ = "Python License 2.0"
# The rules according to Greg Stein:
# 1) a version number has 1 or more numbers separated by a period or by
# sequences of letters. If only periods, then these are compared
# left-to-right to determine an ordering.
# 2) sequences of letters are part of the tuple for comparison and are
# compared lexicographically
# 3) recognize the numeric components may have leading zeroes
#
# The LooseVersion class below implements these rules: a version number
# string is split up into a tuple of integer and string components, and
# comparison is a simple tuple comparison. This means that version
# numbers behave in a predictable and obvious way, but a way that might
# not necessarily be how people *want* version numbers to behave. There
# wouldn't be a problem if people could stick to purely numeric version
# numbers: just split on period and compare the numbers as tuples.
# However, people insist on putting letters into their version numbers;
# the most common purpose seems to be:
# - indicating a "pre-release" version
# ('alpha', 'beta', 'a', 'b', 'pre', 'p')
# - indicating a post-release patch ('p', 'pl', 'patch')
# but of course this can't cover all version number schemes, and there's
# no way to know what a programmer means without asking him.
#
# The problem is what to do with letters (and other non-numeric
# characters) in a version number. The current implementation does the
# obvious and predictable thing: keep them as strings and compare
# lexically within a tuple comparison. This has the desired effect if
# an appended letter sequence implies something "post-release":
# eg. "0.99" < "0.99pl14" < "1.0", and "5.001" < "5.001m" < "5.002".
#
# However, if letters in a version number imply a pre-release version,
# the "obvious" thing isn't correct. Eg. you would expect that
# "1.5.1" < "1.5.2a2" < "1.5.2", but under the tuple/lexical comparison
# implemented here, this just isn't so.
#
# Two possible solutions come to mind. The first is to tie the
# comparison algorithm to a particular set of semantic rules, as has
# been done in the StrictVersion class above. This works great as long
# as everyone can go along with bondage and discipline. Hopefully a
# (large) subset of Python module programmers will agree that the
# particular flavor of bondage and discipline provided by StrictVersion
# provides enough benefit to be worth using, and will submit their
# version numbering scheme to its domination. The free-thinking
# anarchists in the lot will never give in, though, and something needs
# to be done to accommodate them.
#
# Perhaps a "moderately strict" version class could be implemented that
# lets almost anything slide (syntactically), and makes some heuristic
# assumptions about non-digits in version number strings. This could
# sink into special-case-hell, though; if I was as talented and
# idiosyncratic as Larry Wall, I'd go ahead and implement a class that
# somehow knows that "1.2.1" < "1.2.2a2" < "1.2.2" < "1.2.2pl3", and is
# just as happy dealing with things like "2g6" and "1.13++". I don't
# think I'm smart enough to do it right though.
#
# In any case, I've coded the test suite for this module (see
# ../test/test_version.py) specifically to fail on things like comparing
# "1.2a2" and "1.2". That's not because the *code* is doing anything
# wrong, it's because the simple, obvious design doesn't match my
# complicated, hairy expectations for real-world version numbers. It
# would be a snap to fix the test suite to say, "Yep, LooseVersion does
# the Right Thing" (ie. the code matches the conception). But I'd rather
# have a conception that matches common notions about version numbers.
if sys.version_info >= (3,):
class _Py2Int(int):
"""Integer object that compares < any string"""
def __gt__(self, other):
if isinstance(other, str):
return False
return super().__gt__(other)
def __lt__(self, other):
if isinstance(other, str):
return True
return super().__lt__(other)
else:
_Py2Int = int
class LooseVersion(object):
"""Version numbering for anarchists and software realists.
Implements the standard interface for version number classes as
described above. A version number consists of a series of numbers,
separated by either periods or strings of letters. When comparing
version numbers, the numeric components will be compared
numerically, and the alphabetic components lexically. The following
are all valid version numbers, in no particular order:
1.5.1
1.5.2b2
161
3.10a
8.02
3.4j
1996.07.12
3.2.pl0
3.1.1.6
2g6
11g
0.960923
2.2beta29
1.13++
5.5.kw
2.0b1pl0
In fact, there is no such thing as an invalid version number under
this scheme; the rules for comparison are simple and predictable,
but may not always give the results you want (for some definition
of "want").
"""
component_re = re.compile(r"(\d+ | [a-z]+ | \.)", re.VERBOSE)
def __init__(self, vstring=None):
if vstring:
self.parse(vstring)
def __eq__(self, other):
c = self._cmp(other)
if c is NotImplemented:
return NotImplemented
return c == 0
def __lt__(self, other):
c = self._cmp(other)
if c is NotImplemented:
return NotImplemented
return c < 0
def __le__(self, other):
c = self._cmp(other)
if c is NotImplemented:
return NotImplemented
return c <= 0
def __gt__(self, other):
c = self._cmp(other)
if c is NotImplemented:
return NotImplemented
return c > 0
def __ge__(self, other):
c = self._cmp(other)
if c is NotImplemented:
return NotImplemented
return c >= 0
def parse(self, vstring):
# I've given up on thinking I can reconstruct the version string
# from the parsed tuple -- so I just store the string here for
# use by __str__
self.vstring = vstring
components = [x for x in self.component_re.split(vstring) if x and x != "."]
for i, obj in enumerate(components):
try:
components[i] = int(obj)
except ValueError:
pass
self.version = components
def __str__(self):
return self.vstring
def __repr__(self):
return "LooseVersion ('%s')" % str(self)
def _cmp(self, other):
other = self._coerce(other)
if other is NotImplemented:
return NotImplemented
if self.version == other.version:
return 0
if self.version < other.version:
return -1
if self.version > other.version:
return 1
return NotImplemented
@classmethod
def _coerce(cls, other):
if isinstance(other, cls):
return other
elif isinstance(other, str):
return cls(other)
elif "distutils" in sys.modules:
# Using this check to avoid importing distutils and suppressing the warning
try:
from distutils.version import LooseVersion as deprecated
except ImportError:
return NotImplemented
if isinstance(other, deprecated):
return cls(str(other))
return NotImplemented
class LooseVersion2(LooseVersion):
"""LooseVersion variant that restores Python 2 semantics
In Python 2, comparing LooseVersions where paired components could be string
and int always resulted in the string being "greater". In Python 3, this produced
a TypeError.
"""
def parse(self, vstring):
# I've given up on thinking I can reconstruct the version string
# from the parsed tuple -- so I just store the string here for
# use by __str__
self.vstring = vstring
components = [x for x in self.component_re.split(vstring) if x and x != "."]
for i, obj in enumerate(components):
try:
components[i] = _Py2Int(obj)
except ValueError:
pass
self.version = components

File diff suppressed because it is too large Load diff

278
fdroidserver/mirror.py Normal file
View file

@ -0,0 +1,278 @@
#!/usr/bin/env python3
import ipaddress
import logging
import os
import posixpath
import socket
import subprocess
import sys
import urllib.parse
from argparse import ArgumentParser
from . import _, common, index, update
def _run_wget(path, urls, verbose=False):
if verbose:
verbose = '--verbose'
else:
verbose = '--no-verbose'
if not urls:
return
logging.debug(_('Running wget in {path}').format(path=path))
cwd = os.getcwd()
os.makedirs(path, exist_ok=True)
os.chdir(path)
urls_file = '.fdroid-mirror-wget-input-file'
with open(urls_file, 'w') as fp:
for url in urls:
fp.write(url.split('?')[0] + '\n') # wget puts query string in the filename
subprocess.call(
[
'wget',
verbose,
'--continue',
'--user-agent="fdroid mirror"',
'--input-file=' + urls_file,
]
)
os.remove(urls_file)
os.chdir(cwd) # leave the working env the way we found it
def main():
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument(
"url",
nargs='?',
help=_(
'Base URL to mirror, can include the index signing key '
+ 'using the query string: ?fingerprint='
),
)
parser.add_argument(
"--all",
action='store_true',
default=False,
help=_("Mirror the full repo and archive, all file types."),
)
parser.add_argument(
"--archive",
action='store_true',
default=False,
help=_("Also mirror the full archive section"),
)
parser.add_argument(
"--build-logs",
action='store_true',
default=False,
help=_("Include the build logs in the mirror"),
)
parser.add_argument(
"--pgp-signatures",
action='store_true',
default=False,
help=_("Include the PGP signature .asc files in the mirror"),
)
parser.add_argument(
"--src-tarballs",
action='store_true',
default=False,
help=_("Include the source tarballs in the mirror"),
)
parser.add_argument(
"--output-dir", default=None, help=_("The directory to write the mirror to")
)
options = common.parse_args(parser)
common.set_console_logging(options.verbose, options.color)
if options.all:
options.archive = True
options.build_logs = True
options.pgp_signatures = True
options.src_tarballs = True
if options.url is None:
logging.error(_('A URL is required as an argument!') + '\n')
parser.print_help()
sys.exit(1)
scheme, hostname, path, params, query, fragment = urllib.parse.urlparse(options.url)
fingerprint = urllib.parse.parse_qs(query).get('fingerprint')
def _append_to_url_path(*args):
"""Append the list of path components to URL, keeping the rest the same."""
newpath = posixpath.join(path, *args)
return urllib.parse.urlunparse(
(scheme, hostname, newpath, params, query, fragment)
)
if fingerprint:
config = common.read_config()
if not ('jarsigner' in config or 'apksigner' in config):
logging.error(
_('Java JDK not found! Install in standard location or set java_paths!')
)
sys.exit(1)
def _get_index(section, etag=None):
url = _append_to_url_path(section)
data, etag = index.download_repo_index(url, etag=etag)
return data, etag, _append_to_url_path(section, 'index-v1.jar')
else:
def _get_index(section, etag=None):
import io
import json
import zipfile
from . import net
url = _append_to_url_path(section, 'index-v1.jar')
content, etag = net.http_get(url)
with zipfile.ZipFile(io.BytesIO(content)) as zip:
jsoncontents = zip.open('index-v1.json').read()
data = json.loads(jsoncontents.decode('utf-8'))
return data, etag, None # no verified index file to return
ip = None
try:
ip = ipaddress.ip_address(hostname)
except ValueError:
pass
if hostname == 'f-droid.org' or (
ip is not None and hostname in socket.gethostbyname_ex('f-droid.org')[2]
):
logging.error(
_(
'This command should never be used to mirror f-droid.org! '
'A full copy requires more than 600GB.'
)
)
sys.exit(1)
path = path.rstrip('/')
if path.endswith('repo') or path.endswith('archive'):
logging.warning(
_('Do not include "{path}" in URL!').format(path=path.split('/')[-1])
)
elif not path.endswith('fdroid'):
logging.warning(
_('{url} does not end with "fdroid", check the URL path!').format(
url=options.url
)
)
icondirs = ['icons']
for density in update.screen_densities:
icondirs.append('icons-' + density)
if options.output_dir:
basedir = options.output_dir
else:
basedir = os.path.join(os.getcwd(), hostname, path.strip('/'))
os.makedirs(basedir, exist_ok=True)
if options.archive:
sections = ('repo', 'archive')
else:
sections = ('repo',)
for section in sections:
sectiondir = os.path.join(basedir, section)
urls = []
data, etag, index_url = _get_index(section)
if index_url:
urls.append(index_url)
os.makedirs(sectiondir, exist_ok=True)
os.chdir(sectiondir)
for icondir in icondirs:
os.makedirs(os.path.join(sectiondir, icondir), exist_ok=True)
for packageName, packageList in data['packages'].items():
for package in packageList:
to_fetch = []
keys = ['apkName']
if options.src_tarballs:
keys.append('srcname')
for k in keys:
if k in package:
to_fetch.append(package[k])
elif k == 'apkName':
logging.error(
_('{appid} is missing {name}').format(
appid=package['packageName'], name=k
)
)
for f in to_fetch:
if not os.path.exists(f) or (
f.endswith('.apk') and os.path.getsize(f) != package['size']
):
urls.append(_append_to_url_path(section, f))
if options.pgp_signatures:
urls.append(_append_to_url_path(section, f + '.asc'))
if options.build_logs and f.endswith('.apk'):
urls.append(
_append_to_url_path(section, f[:-4] + '.log.gz')
)
_run_wget(sectiondir, urls, options.verbose)
for app in data['apps']:
localized = app.get('localized')
if localized:
for locale, d in localized.items():
urls = []
components = (section, app['packageName'], locale)
for k in update.GRAPHIC_NAMES:
f = d.get(k)
if f:
filepath_tuple = components + (f,)
urls.append(_append_to_url_path(*filepath_tuple))
_run_wget(os.path.join(basedir, *components), urls, options.verbose)
for k in update.SCREENSHOT_DIRS:
urls = []
filelist = d.get(k)
if filelist:
components = (section, app['packageName'], locale, k)
for f in filelist:
filepath_tuple = components + (f,)
urls.append(_append_to_url_path(*filepath_tuple))
_run_wget(
os.path.join(basedir, *components),
urls,
options.verbose,
)
urls = dict()
for app in data['apps']:
if 'icon' not in app:
logging.error(
_('no "icon" in {appid}').format(appid=app['packageName'])
)
continue
icon = app['icon']
for icondir in icondirs:
url = _append_to_url_path(section, icondir, icon)
if icondir not in urls:
urls[icondir] = []
urls[icondir].append(url)
for icondir in icondirs:
if icondir in urls:
_run_wget(
os.path.join(basedir, section, icondir),
urls[icondir],
options.verbose,
)
if __name__ == "__main__":
main()

190
fdroidserver/net.py Normal file
View file

@ -0,0 +1,190 @@
#!/usr/bin/env python3
#
# net.py - part of the FDroid server tools
# Copyright (C) 2015 Hans-Christoph Steiner <hans@eds.org>
# Copyright (C) 2022 FC Stegerman <flx@obfusk.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import copy
import logging
import os
import random
import tempfile
import time
import urllib
import requests
import urllib3
from requests.adapters import HTTPAdapter, Retry
from . import _, common
logger = logging.getLogger(__name__)
HEADERS = {'User-Agent': 'F-Droid'}
def download_file(url, local_filename=None, dldir='tmp', retries=3, backoff_factor=0.1):
"""Try hard to download the file, including retrying on failures.
This has two retry cycles, one inside of the requests session, the
other provided by this function. The requests retry logic applies
to failed DNS lookups, socket connections and connection timeouts,
never to requests where data has made it to the server. This
handles ChunkedEncodingError during transfer in its own retry
loop. This can result in more retries than are specified in the
retries parameter.
"""
filename = urllib.parse.urlparse(url).path.split('/')[-1]
if local_filename is None:
local_filename = os.path.join(dldir, filename)
for i in range(retries + 1):
if retries:
max_retries = Retry(total=retries - i, backoff_factor=backoff_factor)
adapter = HTTPAdapter(max_retries=max_retries)
session = requests.Session()
session.mount('http://', adapter)
session.mount('https://', adapter)
else:
session = requests
# the stream=True parameter keeps memory usage low
r = session.get(
url, stream=True, allow_redirects=True, headers=HEADERS, timeout=300
)
r.raise_for_status()
try:
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush()
return local_filename
except requests.exceptions.ChunkedEncodingError as err:
if i == retries:
raise err
logger.warning('Download interrupted, retrying...')
time.sleep(backoff_factor * 2**i)
raise ValueError("retries must be >= 0")
def download_using_mirrors(mirrors, local_filename=None):
"""Try to download the file from any working mirror.
Download the file that all URLs in the mirrors list point to,
trying all the tricks, starting with the most private methods
first. The list of mirrors is converted into a list of mirror
configurations to try, in order that the should be attempted.
This builds mirror_configs_to_try using all possible combos to
try. If a mirror is marked with worksWithoutSNI: True, then this
logic will try it twice: first without SNI, then again with SNI.
"""
mirrors = common.parse_list_of_dicts(mirrors)
mirror_configs_to_try = []
for mirror in mirrors:
mirror_configs_to_try.append(mirror)
if mirror.get('worksWithoutSNI'):
m = copy.deepcopy(mirror)
del m['worksWithoutSNI']
mirror_configs_to_try.append(m)
if not local_filename:
for mirror in mirrors:
filename = urllib.parse.urlparse(mirror['url']).path.split('/')[-1]
if filename:
break
if filename:
local_filename = os.path.join(common.get_cachedir(), filename)
else:
local_filename = tempfile.mkstemp(prefix='fdroid-')
timeouts = (2, 10, 100)
last_exception = None
for timeout in timeouts:
for mirror in mirror_configs_to_try:
last_exception = None
urllib3.util.ssl_.HAS_SNI = not mirror.get('worksWithoutSNI')
try:
# the stream=True parameter keeps memory usage low
r = requests.get(
mirror['url'],
stream=True,
allow_redirects=False,
headers=HEADERS,
# add jitter to the timeout to be less predictable
timeout=timeout + random.randint(0, timeout), # nosec B311
)
if r.status_code != 200:
raise requests.exceptions.HTTPError(r.status_code, response=r)
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush()
return local_filename
except (
ConnectionError,
requests.exceptions.ChunkedEncodingError,
requests.exceptions.ConnectionError,
requests.exceptions.ContentDecodingError,
requests.exceptions.HTTPError,
requests.exceptions.SSLError,
requests.exceptions.StreamConsumedError,
requests.exceptions.Timeout,
requests.exceptions.UnrewindableBodyError,
) as e:
last_exception = e
logger.debug(_('Retrying failed download: %s') % str(e))
# if it hasn't succeeded by now, then give up and raise last exception
if last_exception:
raise last_exception
def http_get(url, etag=None, timeout=600):
"""Download the content from the given URL by making a GET request.
If an ETag is given, it will do a HEAD request first, to see if the content changed.
Parameters
----------
url
The URL to download from.
etag
The last ETag to be used for the request (optional).
Returns
-------
A tuple consisting of:
- The raw content that was downloaded or None if it did not change
- The new eTag as returned by the HTTP request
"""
# TODO disable TLS Session IDs and TLS Session Tickets
# (plain text cookie visible to anyone who can see the network traffic)
if etag:
r = requests.head(url, headers=HEADERS, timeout=timeout)
r.raise_for_status()
if 'ETag' in r.headers and etag == r.headers['ETag']:
return None, etag
r = requests.get(url, headers=HEADERS, timeout=timeout)
r.raise_for_status()
new_etag = None
if 'ETag' in r.headers:
new_etag = r.headers['ETag']
return r.content, new_etag

612
fdroidserver/nightly.py Normal file
View file

@ -0,0 +1,612 @@
#!/usr/bin/env python3
"""Set up an app build for a nightly build repo."""
#
# nightly.py - part of the FDroid server tools
# Copyright (C) 2017 Hans-Christoph Steiner <hans@eds.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import base64
import datetime
import hashlib
import inspect
import logging
import os
import platform
import shutil
import ssl
import subprocess
import sys
import tempfile
from argparse import ArgumentParser
from typing import Optional
from urllib.parse import urlparse
import git
import paramiko
import yaml
from . import _, common
from .exception import VCSException
# hard coded defaults for Android ~/.android/debug.keystore files
# https://developers.google.com/android/guides/client-auth
KEYSTORE_FILE = os.path.join(os.getenv('HOME'), '.android', 'debug.keystore')
PASSWORD = 'android' # nosec B105 standard hardcoded password for debug keystores
KEY_ALIAS = 'androiddebugkey'
DISTINGUISHED_NAME = 'CN=Android Debug,O=Android,C=US'
# standard suffix for naming fdroid git repos
NIGHTLY = '-nightly'
def _get_keystore_secret_var(keystore: str) -> str:
"""Get keystore secret as base64.
Parameters
----------
keystore
The path of the keystore.
Returns
-------
base64_secret
The keystore secret as base64 string.
"""
with open(keystore, 'rb') as fp:
return base64.standard_b64encode(fp.read()).decode('ascii')
def _ssh_key_from_debug_keystore(keystore: Optional[str] = None) -> str:
"""Convert a debug keystore to an SSH private key.
This leaves the original keystore file in place.
Parameters
----------
keystore
The keystore to convert to a SSH private key.
Returns
-------
key_path
The SSH private key file path in the temporary directory.
"""
if keystore is None:
# set this here so it can be overridden in the tests
# TODO convert this to a class to get rid of this nonsense
keystore = KEYSTORE_FILE
tmp_dir = tempfile.mkdtemp(prefix='.')
privkey = os.path.join(tmp_dir, '.privkey')
key_pem = os.path.join(tmp_dir, '.key.pem')
p12 = os.path.join(tmp_dir, '.keystore.p12')
_config = dict()
common.fill_config_defaults(_config)
subprocess.check_call(
[
_config['keytool'],
'-importkeystore',
'-srckeystore',
keystore,
'-srcalias',
KEY_ALIAS,
'-srcstorepass',
PASSWORD,
'-srckeypass',
PASSWORD,
'-destkeystore',
p12,
'-destalias',
KEY_ALIAS,
'-deststorepass',
PASSWORD,
'-destkeypass',
PASSWORD,
'-deststoretype',
'PKCS12',
],
env={'LC_ALL': 'C.UTF-8'},
)
subprocess.check_call(
[
'openssl',
'pkcs12',
'-in',
p12,
'-out',
key_pem,
'-passin',
'pass:' + PASSWORD,
'-passout',
'pass:' + PASSWORD,
],
env={'LC_ALL': 'C.UTF-8'},
)
# OpenSSL 3.0 changed the default output format from PKCS#1 to
# PKCS#8, which paramiko does not support.
# https://www.openssl.org/docs/man3.0/man1/openssl-rsa.html#traditional
# https://github.com/paramiko/paramiko/issues/1015
openssl_rsa_cmd = ['openssl', 'rsa']
if ssl.OPENSSL_VERSION_INFO[0] >= 3:
openssl_rsa_cmd += ['-traditional']
subprocess.check_call(
openssl_rsa_cmd
+ [
'-in',
key_pem,
'-out',
privkey,
'-passin',
'pass:' + PASSWORD,
],
env={'LC_ALL': 'C.UTF-8'},
)
os.remove(key_pem)
os.remove(p12)
os.chmod(privkey, 0o600) # os.umask() should cover this, but just in case
rsakey = paramiko.RSAKey.from_private_key_file(privkey)
fingerprint = (
base64.b64encode(hashlib.sha256(rsakey.asbytes()).digest())
.decode('ascii')
.rstrip('=')
)
ssh_private_key_file = os.path.join(
tmp_dir, 'debug_keystore_' + fingerprint.replace('/', '_') + '_id_rsa'
)
shutil.move(privkey, ssh_private_key_file)
pub = rsakey.get_name() + ' ' + rsakey.get_base64() + ' ' + ssh_private_key_file
with open(ssh_private_key_file + '.pub', 'w') as fp:
fp.write(pub)
logging.info(_('\nSSH public key to be used as deploy key:') + '\n' + pub)
return ssh_private_key_file
def get_repo_base_url(
clone_url: str, repo_git_base: str, force_type: Optional[str] = None
) -> str:
"""Generate the base URL for the F-Droid repository.
Parameters
----------
clone_url
The URL to clone the Git repository.
repo_git_base
The project path of the Git repository at the Git forge.
force_type
The Git forge of the project.
Returns
-------
repo_base_url
The base URL of the F-Droid repository.
"""
if force_type is None:
force_type = urlparse(clone_url).netloc
if force_type == 'gitlab.com':
return clone_url + '/-/raw/master/fdroid'
if force_type == 'github.com':
return 'https://raw.githubusercontent.com/%s/master/fdroid' % repo_git_base
print(_('ERROR: unsupported git host "%s", patches welcome!') % force_type)
sys.exit(1)
def clone_git_repo(clone_url, git_mirror_path):
"""Clone a git repo into the given path, failing if a password is required.
If GitPython's safe mode is present, this will use that. Otherwise,
this includes a very limited version of the safe mode just to ensure
this won't hang on password prompts.
https://github.com/gitpython-developers/GitPython/pull/2029
"""
logging.debug(_('cloning {url}').format(url=clone_url))
try:
sig = inspect.signature(git.Repo.clone_from)
if 'safe' in sig.parameters:
git.Repo.clone_from(clone_url, git_mirror_path, safe=True)
else:
git.Repo.clone_from(
clone_url,
git_mirror_path,
env={
'GIT_ASKPASS': '/bin/true',
'SSH_ASKPASS': '/bin/true',
'GIT_USERNAME': 'u',
'GIT_PASSWORD': 'p',
'GIT_HTTP_USERNAME': 'u',
'GIT_HTTP_PASSWORD': 'p',
'GIT_SSH': '/bin/false', # for git < 2.3
'GIT_TERMINAL_PROMPT': '0',
},
)
except git.exc.GitCommandError as e:
logging.warning(_('WARNING: only public git repos are supported!'))
raise VCSException(f'git clone {clone_url} failed:', str(e)) from e
def main():
"""Deploy to F-Droid repository or generate SSH private key from keystore.
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.VCSException`
If the nightly Git repository could not be cloned during an attempt to
deploy.
"""
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument(
"--keystore",
default=KEYSTORE_FILE,
help=_("Specify which debug keystore file to use."),
)
parser.add_argument(
"--show-secret-var",
action="store_true",
default=False,
help=_("Print the secret variable to the terminal for easy copy/paste"),
)
parser.add_argument(
"--keep-private-keys",
action="store_true",
default=False,
help=_("Do not remove the private keys generated from the keystore"),
)
parser.add_argument(
"--no-deploy",
action="store_true",
default=False,
help=_("Do not deploy the new files to the repo"),
)
parser.add_argument(
"--file",
default='app/build/outputs/apk/*.apk',
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"),
)
archive_older_unset = -1
parser.add_argument(
"--archive-older",
type=int,
default=archive_older_unset,
help=_("Set maximum releases in repo before older ones are archived"),
)
# TODO add --with-btlog
options = common.parse_args(parser)
# force a tighter umask since this writes private key material
umask = os.umask(0o077)
if 'CI' in os.environ:
v = os.getenv('DEBUG_KEYSTORE')
debug_keystore = None
if v:
debug_keystore = base64.b64decode(v)
if not debug_keystore:
logging.error(_('DEBUG_KEYSTORE is not set or the value is incomplete'))
sys.exit(1)
os.makedirs(os.path.dirname(KEYSTORE_FILE), exist_ok=True)
if os.path.exists(KEYSTORE_FILE):
logging.warning(_('overwriting existing {path}').format(path=KEYSTORE_FILE))
with open(KEYSTORE_FILE, 'wb') as fp:
fp.write(debug_keystore)
repo_basedir = os.path.join(os.getcwd(), 'fdroid')
repodir = os.path.join(repo_basedir, 'repo')
cibase = os.getcwd()
os.makedirs(repodir, exist_ok=True)
# the 'master' branch is hardcoded in fdroidserver/deploy.py
if 'CI_PROJECT_PATH' in os.environ and 'CI_PROJECT_URL' in os.environ:
# we are in GitLab CI
repo_git_base = os.getenv('CI_PROJECT_PATH') + NIGHTLY
clone_url = os.getenv('CI_PROJECT_URL') + NIGHTLY
repo_base = get_repo_base_url(
clone_url, repo_git_base, force_type='gitlab.com'
)
servergitmirror = 'git@' + urlparse(clone_url).netloc + ':' + repo_git_base
deploy_key_url = (
f'{clone_url}/-/settings/repository#js-deploy-keys-settings'
)
git_user_name = os.getenv('GITLAB_USER_NAME')
git_user_email = os.getenv('GITLAB_USER_EMAIL')
elif 'TRAVIS_REPO_SLUG' in os.environ:
# we are in Travis CI
repo_git_base = os.getenv('TRAVIS_REPO_SLUG') + NIGHTLY
clone_url = 'https://github.com/' + repo_git_base
repo_base = get_repo_base_url(
clone_url, repo_git_base, force_type='github.com'
)
servergitmirror = 'git@github.com:' + repo_git_base
deploy_key_url = (
f'https://github.com/{repo_git_base}/settings/keys'
+ '\nhttps://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys'
)
git_user_name = repo_git_base
git_user_email = os.getenv('USER') + '@' + platform.node()
elif (
'CIRCLE_REPOSITORY_URL' in os.environ
and 'CIRCLE_PROJECT_USERNAME' in os.environ
and 'CIRCLE_PROJECT_REPONAME' in os.environ
):
# we are in Circle CI
repo_git_base = (
os.getenv('CIRCLE_PROJECT_USERNAME')
+ '/'
+ os.getenv('CIRCLE_PROJECT_REPONAME')
+ NIGHTLY
)
clone_url = os.getenv('CIRCLE_REPOSITORY_URL') + NIGHTLY
repo_base = get_repo_base_url(
clone_url, repo_git_base, force_type='github.com'
)
servergitmirror = 'git@' + urlparse(clone_url).netloc + ':' + repo_git_base
deploy_key_url = (
f'https://github.com/{repo_git_base}/settings/keys'
+ '\nhttps://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys'
)
git_user_name = os.getenv('CIRCLE_USERNAME')
git_user_email = git_user_name + '@' + platform.node()
elif 'GITHUB_ACTIONS' in os.environ:
# we are in Github actions
repo_git_base = os.getenv('GITHUB_REPOSITORY') + NIGHTLY
clone_url = os.getenv('GITHUB_SERVER_URL') + '/' + repo_git_base
repo_base = get_repo_base_url(
clone_url, repo_git_base, force_type='github.com'
)
servergitmirror = 'git@' + urlparse(clone_url).netloc + ':' + repo_git_base
deploy_key_url = (
f'https://github.com/{repo_git_base}/settings/keys'
+ '\nhttps://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys'
)
git_user_name = os.getenv('GITHUB_ACTOR')
git_user_email = git_user_name + '@' + platform.node()
else:
print(_('ERROR: unsupported CI type, patches welcome!'))
sys.exit(1)
repo_url = repo_base + '/repo'
git_mirror_path = os.path.join(repo_basedir, 'git-mirror')
git_mirror_fdroiddir = os.path.join(git_mirror_path, 'fdroid')
git_mirror_repodir = os.path.join(git_mirror_fdroiddir, 'repo')
git_mirror_metadatadir = os.path.join(git_mirror_fdroiddir, 'metadata')
if not os.path.isdir(git_mirror_repodir):
clone_git_repo(clone_url, git_mirror_path)
if not os.path.isdir(git_mirror_repodir):
os.makedirs(git_mirror_repodir, mode=0o755)
if os.path.exists('LICENSE'):
shutil.copy2('LICENSE', git_mirror_path)
mirror_git_repo = git.Repo.init(git_mirror_path)
writer = mirror_git_repo.config_writer()
writer.set_value('user', 'name', git_user_name)
writer.set_value('user', 'email', git_user_email)
writer.release()
for remote in mirror_git_repo.remotes:
mirror_git_repo.delete_remote(remote)
readme_path = os.path.join(git_mirror_path, 'README.md')
readme = '''
# {repo_git_base}
This is an app repository for nightly versions.
You can use it with the [F-Droid](https://f-droid.org/) Android app.
[![{repo_url}]({repo_url}/icons/icon.png)](https://fdroid.link/#{repo_url})
Last updated: {date}'''.format(
repo_git_base=repo_git_base,
repo_url=repo_url,
date=datetime.datetime.now(datetime.timezone.utc).strftime(
'%Y-%m-%d %H:%M:%S UTC'
),
)
with open(readme_path, 'w') as fp:
fp.write(readme)
mirror_git_repo.git.add(all=True)
mirror_git_repo.index.commit("update README")
mirror_git_repo.git.add(all=True)
mirror_git_repo.index.commit("update repo/website icon")
os.chdir(repo_basedir)
if os.path.isdir(git_mirror_repodir):
common.local_rsync(options, [git_mirror_repodir + '/'], 'repo/')
if os.path.isdir(git_mirror_metadatadir):
common.local_rsync(options, [git_mirror_metadatadir + '/'], 'metadata/')
ssh_private_key_file = _ssh_key_from_debug_keystore()
# this is needed for GitPython to find the SSH key
ssh_dir = os.path.join(os.getenv('HOME'), '.ssh')
os.makedirs(ssh_dir, exist_ok=True)
ssh_config = os.path.join(ssh_dir, 'config')
logging.debug(_('adding IdentityFile to {path}').format(path=ssh_config))
with open(ssh_config, 'a') as fp:
fp.write('\n\nHost *\n\tIdentityFile %s\n' % ssh_private_key_file)
if options.archive_older == archive_older_unset:
fdroid_size = common.get_dir_size(git_mirror_fdroiddir)
max_size = common.GITLAB_COM_PAGES_MAX_SIZE
if fdroid_size < max_size:
options.archive_older = 20
else:
options.archive_older = 3
print(
'WARNING: repo is %s over the GitLab Pages limit (%s)'
% (fdroid_size - max_size, max_size)
)
print('Setting --archive-older to 3')
config = {
'identity_file': ssh_private_key_file,
'repo_name': repo_git_base,
'repo_url': repo_url,
'repo_description': 'Nightly builds from %s' % git_user_email,
'archive_name': repo_git_base + ' archive',
'archive_url': repo_base + '/archive',
'archive_description': 'Old nightly builds that have been archived.',
'archive_older': options.archive_older,
'servergitmirrors': [{"url": servergitmirror}],
'keystore': KEYSTORE_FILE,
'repo_keyalias': KEY_ALIAS,
'keystorepass': PASSWORD,
'keypass': PASSWORD,
'keydname': DISTINGUISHED_NAME,
'make_current_version_link': False,
}
with open(common.CONFIG_FILE, 'w', encoding='utf-8') as fp:
yaml.dump(config, fp, default_flow_style=False)
os.chmod(common.CONFIG_FILE, 0o600)
config = common.read_config()
common.assert_config_keystore(config)
logging.debug(
_(
'Run over {cibase} to find -debug.apk. and skip repo_basedir {repo_basedir}'
).format(cibase=cibase, repo_basedir=repo_basedir)
)
for root, dirs, files in os.walk(cibase):
for d in ('.git', '.gradle'):
if d in dirs:
dirs.remove(d)
if root == cibase and 'fdroid' in dirs:
dirs.remove('fdroid')
for f in files:
if f.endswith('-debug.apk'):
apkfilename = os.path.join(root, f)
logging.debug(
_('Stripping mystery signature from {apkfilename}').format(
apkfilename=apkfilename
)
)
destapk = os.path.join(repodir, os.path.basename(f))
os.chmod(apkfilename, 0o644)
logging.debug(
_(
'Resigning {apkfilename} with provided debug.keystore'
).format(apkfilename=os.path.basename(apkfilename))
)
common.sign_apk(apkfilename, destapk, KEY_ALIAS)
if options.verbose:
logging.debug(_('attempting bare SSH connection to test deploy key:'))
try:
subprocess.check_call(
[
'ssh',
'-Tvi',
ssh_private_key_file,
'-oIdentitiesOnly=yes',
'-oStrictHostKeyChecking=no',
servergitmirror.split(':')[0],
]
)
except subprocess.CalledProcessError:
pass
app_url = clone_url[: -len(NIGHTLY)]
template = dict()
template['AuthorName'] = clone_url.split('/')[4]
template['AuthorWebSite'] = '/'.join(clone_url.split('/')[:4])
template['Categories'] = ['nightly']
template['SourceCode'] = app_url
template['IssueTracker'] = app_url + '/issues'
template['Summary'] = 'Nightly build of ' + urlparse(app_url).path[1:]
template['Description'] = template['Summary']
with open('template.yml', 'w') as fp:
yaml.dump(template, fp)
subprocess.check_call(
['fdroid', 'update', '--rename-apks', '--create-metadata', '--verbose'],
cwd=repo_basedir,
)
common.local_rsync(
options, [repo_basedir + '/metadata/'], git_mirror_metadatadir + '/'
)
mirror_git_repo.git.add(all=True)
mirror_git_repo.index.commit("update app metadata")
if not options.no_deploy:
try:
cmd = ['fdroid', 'deploy', '--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
)
sys.exit(1)
if not options.keep_private_keys:
os.remove(KEYSTORE_FILE)
if shutil.rmtree.avoids_symlink_attacks:
shutil.rmtree(os.path.dirname(ssh_private_key_file))
else:
if not os.path.isfile(options.keystore):
androiddir = os.path.dirname(options.keystore)
if not os.path.exists(androiddir):
os.mkdir(androiddir)
logging.info(_('created {path}').format(path=androiddir))
logging.error(
_('{path} does not exist! Create it by running:').format(
path=options.keystore
)
+ '\n keytool -genkey -v -keystore '
+ options.keystore
+ ' -storepass android \\'
+ '\n -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 \\'
+ '\n -dname "CN=Android Debug,O=Android,C=US"'
)
sys.exit(1)
ssh_dir = os.path.join(os.getenv('HOME'), '.ssh')
privkey = _ssh_key_from_debug_keystore(options.keystore)
if os.path.exists(ssh_dir):
ssh_private_key_file = os.path.join(ssh_dir, os.path.basename(privkey))
shutil.move(privkey, ssh_private_key_file)
shutil.move(privkey + '.pub', ssh_private_key_file + '.pub')
if shutil.rmtree.avoids_symlink_attacks:
shutil.rmtree(os.path.dirname(privkey))
if options.show_secret_var:
debug_keystore = _get_keystore_secret_var(options.keystore)
print(
_('\n{path} encoded for the DEBUG_KEYSTORE secret variable:').format(
path=options.keystore
)
)
print(debug_keystore)
os.umask(umask)
if __name__ == "__main__":
main()

View file

@ -1,9 +1,9 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
#
# publish.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
# Copyright (C) 2013 Daniel Martí <mvdan@mvdan.cc>
# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
# Copyright (C) 2021 Felix C. Stegerman <flx@obfusk.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -18,155 +18,461 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
import os
import shutil
import subprocess
import md5
import glob
from optparse import OptionParser
"""Sign APKs using keys or via reproducible builds signature copying.
import common, metadata
from common import BuildException
This command takes unsigned APKs and signs them. It looks for
unsigned APKs in the unsigned/ directory and puts successfully signed
APKs into the repo/ directory. The default is to run in a kind of
batch mode, where it will only quit on certain kinds of errors. It
mostly reports success by moving an APK from unsigned/ to repo/
"""
import glob
import hashlib
import json
import logging
import os
import re
import shutil
import sys
import time
import zipfile
from argparse import ArgumentParser
from collections import OrderedDict
from gettext import ngettext
from . import _, common, metadata
from .common import FDroidPopen
from .exception import BuildException, FDroidException
config = None
options = None
start_timestamp = time.gmtime()
def publish_source_tarball(apkfilename, unsigned_dir, output_dir):
"""Move the source tarball into the output directory..."""
tarfilename = apkfilename[:-4] + '_src.tar.gz'
tarfile = os.path.join(unsigned_dir, tarfilename)
if os.path.exists(tarfile):
shutil.move(tarfile, os.path.join(output_dir, tarfilename))
logging.debug('...published %s', tarfilename)
else:
logging.debug('...no source tarball for %s', apkfilename)
def key_alias(appid):
"""No summary.
Get the alias which F-Droid uses to indentify the singing key
for this App in F-Droids keystore.
"""
if config and 'keyaliases' in config and appid in config['keyaliases']:
# For this particular app, the key alias is overridden...
keyalias = config['keyaliases'][appid]
if keyalias.startswith('@'):
m = hashlib.md5() # nosec just used to generate a keyalias
m.update(keyalias[1:].encode('utf-8'))
keyalias = m.hexdigest()[:8]
return keyalias
else:
m = hashlib.md5() # nosec just used to generate a keyalias
m.update(appid.encode('utf-8'))
return m.hexdigest()[:8]
def read_fingerprints_from_keystore():
"""Obtain a dictionary containing all singning-key fingerprints which are managed by F-Droid, grouped by appid."""
env_vars = {'LC_ALL': 'C.UTF-8', 'FDROID_KEY_STORE_PASS': config['keystorepass']}
cmd = [
config['keytool'],
'-list',
'-v',
'-keystore',
config['keystore'],
'-storepass:env',
'FDROID_KEY_STORE_PASS',
]
if config['keystore'] == 'NONE':
cmd += config['smartcardoptions']
p = FDroidPopen(cmd, envs=env_vars, output=False)
if p.returncode != 0:
raise FDroidException('could not read keystore {}'.format(config['keystore']))
realias = re.compile('Alias name: (?P<alias>.+)' + os.linesep)
resha256 = re.compile(r'\s+SHA256: (?P<sha256>[:0-9A-F]{95})' + os.linesep)
fps = {}
for block in p.output.split(('*' * 43) + os.linesep + '*' * 43):
s_alias = realias.search(block)
s_sha256 = resha256.search(block)
if s_alias and s_sha256:
sigfp = s_sha256.group('sha256').replace(':', '').lower()
fps[s_alias.group('alias')] = sigfp
return fps
def sign_sig_key_fingerprint_list(jar_file):
"""Sign the list of app-signing key fingerprints.
This is used primaryily by fdroid update to determine which APKs
where built and signed by F-Droid and which ones were
manually added by users.
"""
cmd = [config['jarsigner']]
cmd += '-keystore', config['keystore']
cmd += '-storepass:env', 'FDROID_KEY_STORE_PASS'
cmd += '-digestalg', 'SHA1'
cmd += '-sigalg', 'SHA1withRSA'
cmd += jar_file, config['repo_keyalias']
if config['keystore'] == 'NONE':
cmd += config['smartcardoptions']
else: # smardcards never use -keypass
cmd += '-keypass:env', 'FDROID_KEY_PASS'
env_vars = {
'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config.get('keypass', ""),
}
p = common.FDroidPopen(cmd, envs=env_vars)
if p.returncode != 0:
raise FDroidException("Failed to sign '{}'!".format(jar_file))
def store_publish_signer_fingerprints(appids, indent=None):
"""Store list of all signing-key fingerprints for given appids to HD.
This list will later on be needed by fdroid update.
"""
if not os.path.exists('repo'):
os.makedirs('repo')
data = OrderedDict()
fps = read_fingerprints_from_keystore()
for appid in sorted(appids):
alias = key_alias(appid)
if alias in fps:
data[appid] = {'signer': fps[key_alias(appid)]}
jar_file = os.path.join('repo', 'signer-index.jar')
output = json.dumps(data, indent=indent)
with zipfile.ZipFile(jar_file, 'w', zipfile.ZIP_DEFLATED) as jar:
jar.writestr('signer-index.json', output)
with open(os.path.join('repo', 'signer-index.json'), 'w') as fp:
fp.write(output)
sign_sig_key_fingerprint_list(jar_file)
def status_update_json(generatedKeys, signedApks):
"""Output a JSON file with metadata about this run."""
logging.debug(_('Outputting JSON'))
output = common.setup_status_output(start_timestamp)
output['apksigner'] = shutil.which(config.get('apksigner', ''))
output['jarsigner'] = shutil.which(config.get('jarsigner', ''))
output['keytool'] = shutil.which(config.get('keytool', ''))
if generatedKeys:
output['generatedKeys'] = generatedKeys
if signedApks:
output['signedApks'] = signedApks
common.write_status_json(output)
def check_for_key_collisions(allapps):
"""Make sure there's no collision in keyaliases from apps.
It was suggested at
https://dev.guardianproject.info/projects/bazaar/wiki/FDroid_Audit
that a package could be crafted, such that it would use the same signing
key as an existing app. While it may be theoretically possible for such a
colliding package ID to be generated, it seems virtually impossible that
the colliding ID would be something that would be a) a valid package ID,
and b) a sane-looking ID that would make its way into the repo.
Nonetheless, to be sure, before publishing we check that there are no
collisions, and refuse to do any publishing if that's the case.
Parameters
----------
allapps
a dict of all apps to process
Returns
-------
a list of all aliases corresponding to allapps
"""
allaliases = []
for appid in allapps:
m = hashlib.md5() # nosec just used to generate a keyalias
m.update(appid.encode('utf-8'))
keyalias = m.hexdigest()[:8]
if keyalias in allaliases:
logging.error(_("There is a keyalias collision - publishing halted"))
sys.exit(1)
allaliases.append(keyalias)
return allaliases
def create_key_if_not_existing(keyalias):
"""Ensure a signing key with the given keyalias exists.
Returns
-------
boolean
True if a new key was created, False otherwise
"""
# See if we already have a key for this application, and
# if not generate one...
env_vars = {
'LC_ALL': 'C.UTF-8',
'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config.get('keypass', ""),
}
cmd = [
config['keytool'],
'-list',
'-alias',
keyalias,
'-keystore',
config['keystore'],
'-storepass:env',
'FDROID_KEY_STORE_PASS',
]
if config['keystore'] == 'NONE':
cmd += config['smartcardoptions']
p = FDroidPopen(cmd, envs=env_vars)
if p.returncode != 0:
logging.info("Key does not exist - generating...")
cmd = [
config['keytool'],
'-genkey',
'-keystore',
config['keystore'],
'-alias',
keyalias,
'-keyalg',
'RSA',
'-keysize',
'2048',
'-validity',
'10000',
'-storepass:env',
'FDROID_KEY_STORE_PASS',
'-dname',
config['keydname'],
]
if config['keystore'] == 'NONE':
cmd += config['smartcardoptions']
else:
cmd += '-keypass:env', 'FDROID_KEY_PASS'
p = FDroidPopen(cmd, envs=env_vars)
if p.returncode != 0:
raise BuildException("Failed to generate key", p.output)
return True
else:
return False
def main():
global config, options
global config
# Parse command line...
parser = OptionParser(usage="Usage: %prog [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]")
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
(options, args) = parser.parse_args()
parser = ArgumentParser(
usage="%(prog)s [options] " "[APPID[:VERCODE] [APPID[:VERCODE] ...]]"
)
common.setup_global_opts(parser)
parser.add_argument(
"-e",
"--error-on-failed",
action="store_true",
default=False,
help=_("When signing or verifying fails, exit with an error code."),
)
parser.add_argument(
"appid",
nargs='*',
help=_("application ID with optional versionCode in the form APPID[:VERCODE]"),
)
metadata.add_metadata_arguments(parser)
options = common.parse_args(parser)
metadata.warnings_action = options.W
config = common.read_config(options)
config = common.read_config()
if not ('jarsigner' in config and 'keytool' in config):
logging.critical(
_('Java JDK not found! Install in standard location or set java_paths!')
)
sys.exit(1)
common.assert_config_keystore(config)
log_dir = 'logs'
if not os.path.isdir(log_dir):
print "Creating log directory"
logging.info(_("Creating log directory"))
os.makedirs(log_dir)
tmp_dir = 'tmp'
if not os.path.isdir(tmp_dir):
print "Creating temporary directory"
logging.info(_("Creating temporary directory"))
os.makedirs(tmp_dir)
output_dir = 'repo'
if not os.path.isdir(output_dir):
print "Creating output directory"
logging.info(_("Creating output directory"))
os.makedirs(output_dir)
unsigned_dir = 'unsigned'
if not os.path.isdir(unsigned_dir):
print "No unsigned directory - nothing to do"
sys.exit(0)
logging.warning(_("No unsigned directory - nothing to do"))
sys.exit(1)
binaries_dir = os.path.join(unsigned_dir, 'binaries')
if not config['keystore'] == "NONE" and not os.path.exists(config['keystore']):
logging.error("Config error - missing '{0}'".format(config['keystore']))
sys.exit(1)
# It was suggested at https://dev.guardianproject.info/projects/bazaar/wiki/FDroid_Audit
# that a package could be crafted, such that it would use the same signing
# key as an existing app. While it may be theoretically possible for such a
# colliding package ID to be generated, it seems virtually impossible that
# the colliding ID would be something that would be a) a valid package ID,
# and b) a sane-looking ID that would make its way into the repo.
# Nonetheless, to be sure, before publishing we check that there are no
# collisions, and refuse to do any publishing if that's the case...
allapps = metadata.read_metadata()
vercodes = common.read_pkg_args(args, True)
allaliases = []
for app in allapps:
m = md5.new()
m.update(app['id'])
keyalias = m.hexdigest()[:8]
if keyalias in allaliases:
print "There is a keyalias collision - publishing halted"
sys.exit(1)
allaliases.append(keyalias)
if options.verbose:
print "{0} apps, {0} key aliases".format(len(allapps), len(allaliases))
vercodes = common.read_pkg_args(options.appid, True)
common.get_metadata_files(vercodes) # only check appids
signed_apks = dict()
generated_keys = dict()
allaliases = check_for_key_collisions(allapps)
logging.info(
ngettext(
'{0} app, {1} key aliases', '{0} apps, {1} key aliases', len(allapps)
).format(len(allapps), len(allaliases))
)
# Process any apks that are waiting to be signed...
for apkfile in sorted(glob.glob(os.path.join(unsigned_dir, '*.apk'))):
appid, vercode = common.apknameinfo(apkfile)
failed = 0
# Process any APKs or ZIPs that are waiting to be signed...
for apkfile in sorted(
glob.glob(os.path.join(unsigned_dir, '*.apk'))
+ glob.glob(os.path.join(unsigned_dir, '*.zip'))
):
appid, vercode = common.publishednameinfo(apkfile)
apkfilename = os.path.basename(apkfile)
if vercodes and appid not in vercodes:
continue
if appid in vercodes and vercodes[appid]:
if vercode not in vercodes[appid]:
continue
print "Processing " + apkfile
logging.info(_("Processing {apkfilename}").format(apkfilename=apkfile))
# There ought to be valid metadata for this app, otherwise why are we
# trying to publish it?
if appid not in allapps:
logging.error(
"Unexpected {0} found in unsigned directory".format(apkfilename)
)
sys.exit(1)
app = allapps[appid]
build = None
for b in app.get("Builds", ()):
if b.get("versionCode") == vercode:
build = b
if app.Binaries or (build and build.binary):
# It's an app where we build from source, and verify the apk
# contents against a developer's binary, and then publish their
# version if everything checks out.
# The binary should already have been retrieved during the build
# process.
srcapk = re.sub(r'\.apk$', '.binary.apk', apkfile)
srcapk = srcapk.replace(unsigned_dir, binaries_dir)
if not os.path.isfile(srcapk):
logging.error(
"...reference binary missing - publish skipped: '{refpath}'".format(
refpath=srcapk
)
)
failed += 1
else:
# Compare our unsigned one with the downloaded one...
compare_result = common.verify_apks(srcapk, apkfile, tmp_dir)
if compare_result:
logging.error(
"...verification failed - publish skipped : {result}".format(
result=compare_result
)
)
failed += 1
else:
# Success! So move the downloaded file to the repo, and remove
# our built version.
shutil.move(srcapk, os.path.join(output_dir, apkfilename))
os.remove(apkfile)
publish_source_tarball(apkfilename, unsigned_dir, output_dir)
logging.info('Published ' + apkfilename)
elif apkfile.endswith('.zip'):
# OTA ZIPs built by fdroid do not need to be signed by jarsigner,
# just to be moved into place in the repo
shutil.move(apkfile, os.path.join(output_dir, apkfilename))
publish_source_tarball(apkfilename, unsigned_dir, output_dir)
logging.info('Published ' + apkfilename)
# Figure out the key alias name we'll use. Only the first 8
# characters are significant, so we'll use the first 8 from
# the MD5 of the app's ID and hope there are no collisions.
# If a collision does occur later, we're going to have to
# come up with a new alogrithm, AND rename all existing keys
# in the keystore!
if appid in config['keyaliases']:
# For this particular app, the key alias is overridden...
keyalias = config['keyaliases'][appid]
if keyalias.startswith('@'):
m = md5.new()
m.update(keyalias[1:])
keyalias = m.hexdigest()[:8]
else:
m = md5.new()
m.update(appid)
keyalias = m.hexdigest()[:8]
print "Key alias: " + keyalias
# It's a 'normal' app, i.e. we sign and publish it...
skipsigning = False
# See if we already have a key for this application, and
# if not generate one...
p = subprocess.Popen(['keytool', '-list',
'-alias', keyalias, '-keystore', config['keystore'],
'-storepass', config['keystorepass']], stdout=subprocess.PIPE)
output = p.communicate()[0]
if p.returncode !=0:
print "Key does not exist - generating..."
p = subprocess.Popen(['keytool', '-genkey',
'-keystore', config['keystore'], '-alias', keyalias,
'-keyalg', 'RSA', '-keysize', '2048',
'-validity', '10000',
'-storepass', config['keystorepass'],
'-keypass', config['keypass'],
'-dname', config['keydname']], stdout=subprocess.PIPE)
output = p.communicate()[0]
print output
if p.returncode != 0:
raise BuildException("Failed to generate key")
# First we handle signatures for this app from local metadata
signingfiles = common.metadata_find_developer_signing_files(appid, vercode)
if signingfiles:
# There's a signature of the app developer present in our
# metadata. This means we're going to prepare both a locally
# signed APK and a version signed with the developers key.
# Sign the application...
p = subprocess.Popen(['jarsigner', '-keystore', config['keystore'],
'-storepass', config['keystorepass'],
'-keypass', config['keypass'], '-sigalg',
'MD5withRSA', '-digestalg', 'SHA1',
apkfile, keyalias], stdout=subprocess.PIPE)
output = p.communicate()[0]
print output
if p.returncode != 0:
raise BuildException("Failed to sign application")
signature_file, _ignored, manifest, v2_files = signingfiles
# Zipalign it...
p = subprocess.Popen([os.path.join(config['sdk_path'],'tools','zipalign'),
'-v', '4', apkfile,
os.path.join(output_dir, apkfilename)],
stdout=subprocess.PIPE)
output = p.communicate()[0]
print output
if p.returncode != 0:
raise BuildException("Failed to align application")
os.remove(apkfile)
with open(signature_file, 'rb') as f:
devfp = common.signer_fingerprint_short(
common.get_certificate(f.read())
)
devsigned = '{}_{}_{}.apk'.format(appid, vercode, devfp)
devsignedtmp = os.path.join(tmp_dir, devsigned)
# Move the source tarball into the output directory...
tarfilename = apkfilename[:-4] + '_src.tar.gz'
shutil.move(os.path.join(unsigned_dir, tarfilename),
os.path.join(output_dir, tarfilename))
common.apk_implant_signatures(apkfile, devsignedtmp, manifest=manifest)
if common.verify_apk_signature(devsignedtmp):
shutil.move(devsignedtmp, os.path.join(output_dir, devsigned))
else:
os.remove(devsignedtmp)
logging.error('...verification failed - skipping: %s', devsigned)
skipsigning = True
failed += 1
print 'Published ' + apkfilename
# Now we sign with the F-Droid key.
if not skipsigning:
keyalias = key_alias(appid)
logging.info("Key alias: " + keyalias)
if create_key_if_not_existing(keyalias):
generated_keys[appid] = keyalias
signed_apk_path = os.path.join(output_dir, apkfilename)
if os.path.exists(signed_apk_path):
raise BuildException(
_(
"Refusing to sign '{path}', file exists in both {dir1} and {dir2} folder."
).format(path=apkfilename, dir1=unsigned_dir, dir2=output_dir)
)
# Sign the application...
common.sign_apk(apkfile, signed_apk_path, keyalias)
if appid not in signed_apks:
signed_apks[appid] = []
signed_apks[appid].append({"keyalias": keyalias, "filename": apkfile})
publish_source_tarball(apkfilename, unsigned_dir, output_dir)
logging.info('Published ' + apkfilename)
store_publish_signer_fingerprints(allapps.keys())
status_update_json(generated_keys, signed_apks)
logging.info('published list signing-key fingerprints')
if failed:
logging.error(_('%d APKs failed to be signed or verified!') % failed)
if options.error_on_failed:
sys.exit(failed)
if __name__ == "__main__":
main()

36
fdroidserver/readmeta.py Normal file
View file

@ -0,0 +1,36 @@
#!/usr/bin/env python3
#
# readmeta.py - part of the FDroid server tools
# Copyright (C) 2014 Daniel Martí <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from argparse import ArgumentParser
from . import common, metadata
def main():
parser = ArgumentParser()
common.setup_global_opts(parser)
metadata.add_metadata_arguments(parser)
options = parser.parse_args()
metadata.warnings_action = options.W
common.read_config()
metadata.read_metadata()
if __name__ == "__main__":
main()

View file

@ -1,7 +1,7 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
#
# rewritemeta.py - part of the FDroid server tools
# This cleans up the original .yml metadata file format.
# Copyright (C) 2010-12, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
@ -17,35 +17,97 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
from optparse import OptionParser
import common, metadata
import io
import logging
import shutil
import tempfile
from argparse import ArgumentParser
from pathlib import Path
from . import _, common, metadata
config = None
options = None
def proper_format(app):
s = io.StringIO()
# TODO: currently reading entire file again, should reuse first
# read in metadata.py
cur_content = Path(app.metadatapath).read_text(encoding='utf-8')
if Path(app.metadatapath).suffix == '.yml':
metadata.write_yaml(s, app)
content = s.getvalue()
s.close()
return content == cur_content
def remove_blank_flags_from_builds(builds):
"""Remove unset entries from Builds so they are not written out."""
if not builds:
return list()
newbuilds = list()
for build in builds:
new = dict()
for k in metadata.build_flags:
v = build.get(k)
# 0 is valid value, it should not be stripped
if v is None or v is False or v == '' or v == dict() or v == list():
continue
new[k] = v
newbuilds.append(new)
return newbuilds
def main():
global config
global config, options
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument(
"-l",
"--list",
action="store_true",
default=False,
help=_("List files that would be reformatted (dry run)"),
)
parser.add_argument(
"appid", nargs='*', help=_("application ID of file to operate on")
)
metadata.add_metadata_arguments(parser)
options = common.parse_args(parser)
metadata.warnings_action = options.W
# Parse command line...
parser = OptionParser(usage="Usage: %prog [options] [APPID [APPID ...]]")
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
(options, args) = parser.parse_args()
config = common.read_config()
config = common.read_config(options)
apps = common.read_app_args(options.appid)
# Get all apps...
allapps = metadata.read_metadata(xref=False)
apps = common.read_app_args(args, allapps, False)
for appid, app in apps.items():
path = Path(app.metadatapath)
if path.suffix == '.yml':
logging.info(_("Rewriting '{appid}'").format(appid=appid))
else:
logging.warning(_('Cannot rewrite "{path}"').format(path=path))
continue
for app in apps:
print "Writing " + app['id']
metadata.write_metadata(os.path.join('metadata', app['id'])+'.txt', app)
if options.list:
if not proper_format(app):
print(path)
continue
# TODO these should be moved to metadata.write_yaml()
builds = remove_blank_flags_from_builds(app.get('Builds'))
if builds:
app['Builds'] = builds
# rewrite to temporary file before overwriting existing
# file in case there's a bug in write_metadata
with tempfile.TemporaryDirectory() as tmpdir:
tmp_path = Path(tmpdir) / path.name
metadata.write_metadata(tmp_path, app)
shutil.move(tmp_path, path)
logging.debug(_("Finished"))
print "Finished."
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load diff

View file

@ -1,92 +0,0 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#
# server.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
import os
import subprocess
from optparse import OptionParser
import common
config = None
options = None
def main():
global config, options
# Parse command line...
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
(options, args) = parser.parse_args()
config = common.read_config(options)
if len(args) != 1:
print "Specify a single command"
sys.exit(1)
if args[0] != 'init' and args[0] != 'update':
print "The only commands currently supported are 'init' and 'update'"
sys.exit(1)
serverwebroot = config['serverwebroot'].rstrip('/').replace('//', '/')
host, fdroiddir = serverwebroot.split(':')
serverrepobase = os.path.basename(fdroiddir)
if 'nonstandardwebroot' in config and config['nonstandardwebroot'] == True:
standardwebroot = False
else:
standardwebroot = True
if serverrepobase != 'fdroid' and standardwebroot:
print('ERROR: serverwebroot does not end with "fdroid", '
+ 'perhaps you meant one of these:\n\t'
+ serverwebroot.rstrip('/') + '/fdroid\n\t'
+ serverwebroot.rstrip('/').rstrip(serverrepobase) + 'fdroid')
sys.exit(1)
repodirs = ['repo']
if config['archive_older'] != 0:
repodirs.append('archive')
for repodir in repodirs:
if args[0] == 'init':
if subprocess.call(['ssh', '-v', host,
'mkdir -p', fdroiddir + '/' + repodir]) != 0:
sys.exit(1)
elif args[0] == 'update':
index = os.path.join(repodir, 'index.xml')
indexjar = os.path.join(repodir, 'index.jar')
if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
'--exclude', index, '--exclude', indexjar,
repodir, config['serverwebroot']]) != 0:
sys.exit(1)
if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
index,
config['serverwebroot'] + '/' + repodir]) != 0:
sys.exit(1)
if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
indexjar,
config['serverwebroot'] + '/' + repodir]) != 0:
sys.exit(1)
sys.exit(0)
if __name__ == "__main__":
main()

109
fdroidserver/signatures.py Normal file
View file

@ -0,0 +1,109 @@
#!/usr/bin/env python3
#
# Copyright (C) 2017, Michael Poehn <michael.poehn@fsfe.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import logging
import os
import re
import sys
from argparse import ArgumentParser
from . import _, common
from .exception import FDroidException
def extract_signature(apkpath):
if not os.path.exists(apkpath):
raise FDroidException("file APK does not exists '{}'".format(apkpath))
if not common.verify_apk_signature(apkpath):
raise FDroidException("no valid signature in '{}'".format(apkpath))
logging.debug('signature okay: %s', apkpath)
appid, vercode, _ignored = common.get_apk_id(apkpath)
sigdir = common.metadata_get_sigdir(appid, vercode)
if not os.path.exists(sigdir):
os.makedirs(sigdir)
common.apk_extract_signatures(apkpath, sigdir)
return sigdir
def extract(options):
# Create tmp dir if missing…
tmp_dir = 'tmp'
if not os.path.exists(tmp_dir):
os.mkdir(tmp_dir)
if not options.APK or len(options.APK) <= 0:
logging.critical(_('no APK supplied'))
sys.exit(1)
# iterate over supplied APKs downlaod and extract them…
httpre = re.compile(r'https?:\/\/')
for apk in options.APK:
try:
if os.path.isfile(apk):
sigdir = extract_signature(apk)
logging.info(
_("Fetched signatures for '{apkfilename}' -> '{sigdir}'").format(
apkfilename=apk, sigdir=sigdir
)
)
elif httpre.match(apk):
if apk.startswith('https') or options.no_check_https:
try:
from . import net
tmp_apk = os.path.join(tmp_dir, 'signed.apk')
net.download_file(apk, tmp_apk)
sigdir = extract_signature(tmp_apk)
logging.info(
_(
"Fetched signatures for '{apkfilename}' -> '{sigdir}'"
).format(apkfilename=apk, sigdir=sigdir)
)
finally:
if tmp_apk and os.path.exists(tmp_apk):
os.remove(tmp_apk)
else:
logging.warning(
_(
'refuse downloading via insecure HTTP connection '
'(use HTTPS or specify --no-https-check): {apkfilename}'
).format(apkfilename=apk)
)
except FDroidException as e:
logging.warning(
_("Failed fetching signatures for '{apkfilename}': {error}").format(
apkfilename=apk, error=e
)
)
if e.detail:
logging.debug(e.detail)
def main():
parser = ArgumentParser()
common.setup_global_opts(parser)
parser.add_argument(
"APK", nargs='*', help=_("signed APK, either a file-path or HTTPS URL.")
)
parser.add_argument("--no-check-https", action="store_true", default=False)
options = common.parse_args(parser)
common.set_console_logging(options.verbose, options.color)
common.read_config()
extract(options)

227
fdroidserver/signindex.py Normal file
View file

@ -0,0 +1,227 @@
#!/usr/bin/env python3
#
# gpgsign.py - part of the FDroid server tools
# Copyright (C) 2015, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
import logging
import os
import time
import zipfile
from argparse import ArgumentParser
from . import _, common, metadata
from .exception import FDroidException
config = None
start_timestamp = time.gmtime()
def sign_jar(jar, use_old_algs=False):
"""Sign a JAR file with the best available algorithm.
The current signing method uses apksigner to sign the JAR so that
it will automatically select algorithms that are compatible with
Android SDK 23, which added the most recent algorithms:
https://developer.android.com/reference/java/security/Signature
This signing method uses then inherits the default signing
algothim settings, since Java and Android both maintain those.
That helps avoid a repeat of being stuck on an old signing
algorithm. That means specifically that this call to apksigner
does not specify any of the algorithms.
The old indexes must be signed by SHA1withRSA otherwise they will
no longer be compatible with old Androids.
This method requires a properly initialized config object.
"""
if use_old_algs:
# This does use old hashing algorithms, i.e. SHA1, but that's not
# broken yet for file verification. This could be set to SHA256,
# but then Android < 4.3 would not be able to verify it.
# https://code.google.com/p/android/issues/detail?id=38321
args = [
config['jarsigner'],
'-keystore',
config['keystore'],
'-storepass:env',
'FDROID_KEY_STORE_PASS',
'-digestalg',
'SHA1',
'-sigalg',
'SHA1withRSA',
jar,
config['repo_keyalias'],
]
if config['keystore'] == 'NONE':
args += config['smartcardoptions']
else: # smardcards never use -keypass
args += ['-keypass:env', 'FDROID_KEY_PASS']
else:
# https://developer.android.com/studio/command-line/apksigner
args = [
config['apksigner'],
'sign',
'--min-sdk-version',
'23', # enable all current algorithms
'--max-sdk-version',
'24', # avoid future incompatible algorithms
# disable all APK signature types, only use JAR sigs aka v1
'--v1-signing-enabled',
'true',
'--v2-signing-enabled',
'false',
'--v3-signing-enabled',
'false',
'--v4-signing-enabled',
'false',
'--ks',
config['keystore'],
'--ks-pass',
'env:FDROID_KEY_STORE_PASS',
'--ks-key-alias',
config['repo_keyalias'],
]
if config['keystore'] == 'NONE':
args += common.get_apksigner_smartcardoptions(config['smartcardoptions'])
else: # smardcards never use --key-pass
args += ['--key-pass', 'env:FDROID_KEY_PASS']
args += [jar]
env_vars = {
'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config.get('keypass', ""),
}
p = common.FDroidPopen(args, envs=env_vars)
if not use_old_algs and p.returncode != 0:
# workaround for apksigner v30 on f-droid.org publish server
v4 = args.index("--v4-signing-enabled")
del args[v4 + 1]
del args[v4]
p = common.FDroidPopen(args, envs=env_vars)
if p.returncode != 0:
raise FDroidException("Failed to sign %s: %s" % (jar, p.output))
def sign_index(repodir, json_name):
"""Sign data file like entry.json to make a signed JAR like entry.jar.
The data file like index-v1.json means that there is unsigned
data. That file is then stuck into a jar and signed by the
signing process. This is a bit different than sign_jar, which is
used for index.jar: that creates index.xml then puts that in a
index_unsigned.jar, then that file is signed.
This also checks to make sure that the JSON files are intact
before signing them. Broken JSON files should never be signed, so
taking some extra time and failing hard is the preferred
option. This signing process can happen on an entirely separate
machine and file tree, so this ensures that nothing got broken
during transfer.
"""
json_file = os.path.join(repodir, json_name)
with open(json_file, encoding="utf-8") as fp:
data = json.load(fp)
if json_name == 'entry.json':
index_file = os.path.join(repodir, data['index']['name'].lstrip('/'))
sha256 = common.sha256sum(index_file)
if sha256 != data['index']['sha256']:
raise FDroidException(
_('%s has bad SHA-256: %s') % (index_file, sha256)
)
with open(index_file) as fp:
index = json.load(fp)
if not isinstance(index, dict):
raise FDroidException(_('%s did not produce a dict!') % index_file)
elif json_name == 'index-v1.json':
[metadata.App(app) for app in data["apps"]]
name, ext = common.get_extension(json_name)
jar_file = os.path.join(repodir, name + '.jar')
with zipfile.ZipFile(jar_file, 'w', zipfile.ZIP_DEFLATED) as jar:
jar.write(json_file, json_name)
if json_name in ('index.xml', 'index-v1.json'):
sign_jar(jar_file, use_old_algs=True)
else:
sign_jar(jar_file)
def status_update_json(signed):
"""Output a JSON file with metadata about this run."""
logging.debug(_('Outputting JSON'))
output = common.setup_status_output(start_timestamp)
if signed:
output['signed'] = signed
common.write_status_json(output)
def main():
global config
parser = ArgumentParser()
common.setup_global_opts(parser)
common.parse_args(parser)
config = common.read_config()
if 'jarsigner' not in config:
raise FDroidException(
_(
'Java jarsigner not found! Install in standard location or set java_paths!'
)
)
repodirs = ['repo']
if config['archive_older'] != 0:
repodirs.append('archive')
signed = []
for output_dir in repodirs:
if not os.path.isdir(output_dir):
raise FDroidException("Missing output directory '" + output_dir + "'")
unsigned = os.path.join(output_dir, 'index_unsigned.jar')
if os.path.exists(unsigned):
sign_jar(unsigned)
index_jar = os.path.join(output_dir, 'index.jar')
os.rename(unsigned, index_jar)
logging.info('Signed index in ' + output_dir)
signed.append(index_jar)
json_name = 'index-v1.json'
index_file = os.path.join(output_dir, json_name)
if os.path.exists(index_file):
sign_index(output_dir, json_name)
logging.info('Signed ' + index_file)
signed.append(index_file)
json_name = 'entry.json'
index_file = os.path.join(output_dir, json_name)
if os.path.exists(index_file):
sign_index(output_dir, json_name)
logging.info('Signed ' + index_file)
signed.append(index_file)
if not signed:
logging.info(_("Nothing to do"))
status_update_json(signed)
if __name__ == "__main__":
main()

View file

@ -1,259 +0,0 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#
# stats.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
import os
import re
import time
import traceback
import glob
from optparse import OptionParser
import paramiko
import common, metadata
import socket
import subprocess
def carbon_send(key, value):
s = socket.socket()
s.connect((config['carbon_host'], config['carbon_port']))
msg = '%s %d %d\n' % (key, value, int(time.time()))
s.sendall(msg)
s.close()
options = None
config = None
def main():
global options, config
# Parse command line...
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
parser.add_option("-d", "--download", action="store_true", default=False,
help="Download logs we don't have")
parser.add_option("--nologs", action="store_true", default=False,
help="Don't do anything logs-related")
(options, args) = parser.parse_args()
config = common.read_config(options)
if not config['update_stats']:
print "Stats are disabled - check your configuration"
sys.exit(1)
# Get all metadata-defined apps...
metaapps = metadata.read_metadata(options.verbose)
statsdir = 'stats'
logsdir = os.path.join(statsdir, 'logs')
datadir = os.path.join(statsdir, 'data')
if not os.path.exists(statsdir):
os.mkdir(statsdir)
if not os.path.exists(logsdir):
os.mkdir(logsdir)
if not os.path.exists(datadir):
os.mkdir(datadir)
if options.download:
# Get any access logs we don't have...
ssh = None
ftp = None
try:
print 'Retrieving logs'
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect('f-droid.org', username='fdroid', timeout=10,
key_filename=config['webserver_keyfile'])
ftp = ssh.open_sftp()
ftp.get_channel().settimeout(60)
print "...connected"
ftp.chdir('logs')
files = ftp.listdir()
for f in files:
if f.startswith('access-') and f.endswith('.log.gz'):
destpath = os.path.join(logsdir, f)
destsize = ftp.stat(f).st_size
if (not os.path.exists(destpath) or
os.path.getsize(destpath) != destsize):
print "...retrieving " + f
ftp.get(f, destpath)
except Exception:
traceback.print_exc()
sys.exit(1)
finally:
#Disconnect
if ftp is not None:
ftp.close()
if ssh is not None:
ssh.close()
knownapks = common.KnownApks()
unknownapks = []
if not options.nologs:
# Process logs
if options.verbose:
print 'Processing logs...'
apps = {}
logexpr = '(?P<ip>[.:0-9a-fA-F]+) - - \[(?P<time>.*?)\] "GET (?P<uri>.*?) HTTP/1.\d" (?P<statuscode>\d+) \d+ "(?P<referral>.*?)" "(?P<useragent>.*?)"'
logsearch = re.compile(logexpr).search
for logfile in glob.glob(os.path.join(logsdir,'access-*.log.gz')):
if options.verbose:
print '...' + logfile
p = subprocess.Popen(["zcat", logfile], stdout = subprocess.PIPE)
matches = (logsearch(line) for line in p.stdout)
for match in matches:
if match and match.group('statuscode') == '200':
uri = match.group('uri')
if uri.endswith('.apk'):
_, apkname = os.path.split(uri)
app = knownapks.getapp(apkname)
if app:
appid, _ = app
if appid in apps:
apps[appid] += 1
else:
apps[appid] = 1
else:
if not apkname in unknownapks:
unknownapks.append(apkname)
# Calculate and write stats for total downloads...
lst = []
alldownloads = 0
for app, count in apps.iteritems():
lst.append(app + " " + str(count))
if config['stats_to_carbon']:
carbon_send('fdroid.download.' + app.replace('.', '_'), count)
alldownloads += count
lst.append("ALL " + str(alldownloads))
f = open('stats/total_downloads_app.txt', 'w')
f.write('# Total downloads by application, since October 2011\n')
for line in sorted(lst):
f.write(line + '\n')
f.close()
# Calculate and write stats for repo types...
if options.verbose:
print "Processing repo types..."
repotypes = {}
for app in metaapps:
if len(app['Repo Type']) == 0:
rtype = 'none'
else:
if app['Repo Type'] == 'srclib':
rtype = common.getsrclibvcs(app['Repo'])
else:
rtype = app['Repo Type']
if rtype in repotypes:
repotypes[rtype] += 1;
else:
repotypes[rtype] = 1
f = open('stats/repotypes.txt', 'w')
for rtype, count in repotypes.iteritems():
f.write(rtype + ' ' + str(count) + '\n')
f.close()
# Calculate and write stats for update check modes...
if options.verbose:
print "Processing update check modes..."
ucms = {}
for app in metaapps:
checkmode = app['Update Check Mode'].split('/')[0]
if checkmode in ucms:
ucms[checkmode] += 1;
else:
ucms[checkmode] = 1
f = open('stats/update_check_modes.txt', 'w')
for checkmode, count in ucms.iteritems():
f.write(checkmode + ' ' + str(count) + '\n')
f.close()
if options.verbose:
print "Processing categories..."
ctgs = {}
for app in metaapps:
if app['Categories'] is None:
continue
categories = [c.strip() for c in app['Categories'].split(',')]
for category in categories:
if category in ctgs:
ctgs[category] += 1;
else:
ctgs[category] = 1
f = open('stats/categories.txt', 'w')
for category, count in ctgs.iteritems():
f.write(category + ' ' + str(count) + '\n')
f.close()
if options.verbose:
print "Processing antifeatures..."
afs = {}
for app in metaapps:
if app['AntiFeatures'] is None:
continue
antifeatures = [a.strip() for a in app['AntiFeatures'].split(',')]
for antifeature in antifeatures:
if antifeature in afs:
afs[antifeature] += 1;
else:
afs[antifeature] = 1
f = open('stats/antifeatures.txt', 'w')
for antifeature, count in afs.iteritems():
f.write(antifeature + ' ' + str(count) + '\n')
f.close()
# Calculate and write stats for licenses...
if options.verbose:
print "Processing licenses..."
licenses = {}
for app in metaapps:
license = app['License']
if license in licenses:
licenses[license] += 1;
else:
licenses[license] = 1
f = open('stats/licenses.txt', 'w')
for license, count in licenses.iteritems():
f.write(license + ' ' + str(count) + '\n')
f.close()
# Write list of latest apps added to the repo...
if options.verbose:
print "Processing latest apps..."
latest = knownapks.getlatest(10)
f = open('stats/latestapps.txt', 'w')
for app in latest:
f.write(app + '\n')
f.close()
if unknownapks:
print '\nUnknown apks:'
for apk in unknownapks:
print apk
print "Finished."
if __name__ == "__main__":
main()

112
fdroidserver/tail.py Normal file
View file

@ -0,0 +1,112 @@
#!/usr/bin/env python
"""Python-Tail - Unix tail follow implementation in Python.
python-tail can be used to monitor changes to a file.
Example
-------
>>> import tail
>>>
>>> # Create a tail instance
>>> t = tail.Tail('file-to-be-followed')
>>>
>>> # Register a callback function to be called when a new line is found in the followed file.
>>> # If no callback function is registerd, new lines would be printed to standard out.
>>> t.register_callback(callback_function)
>>>
>>> # Follow the file with 5 seconds as sleep time between iterations.
>>> # If sleep time is not provided 1 second is used as the default time.
>>> t.follow(s=5)
"""
# Author - Kasun Herath <kasunh01 at gmail.com>
# Source - https://github.com/kasun/python-tail
# modified by Hans-Christoph Steiner <hans@eds.org> to add the
# background thread and support reading multiple lines per read cycle
import os
import sys
import threading
import time
class Tail(object):
"""Represents a tail command."""
def __init__(self, tailed_file):
"""Initialize a Tail instance.
Check for file validity, assigns callback function to standard out.
Parameters
----------
tailed_file
File to be followed.
"""
self.check_file_validity(tailed_file)
self.tailed_file = tailed_file
self.callback = sys.stdout.write
self.t_stop = threading.Event()
def start(self, s=1):
"""Start tailing a file in a background thread.
Parameters
----------
s
Number of seconds to wait between each iteration; Defaults to 3.
"""
t = threading.Thread(target=self.follow, args=(s,))
t.start()
def stop(self):
"""Stop a background tail."""
self.t_stop.set()
def follow(self, s=1):
"""Do a tail follow.
If a callback function is registered it is called with every new line.
Else printed to standard out.
Parameters
----------
s
Number of seconds to wait between each iteration; Defaults to 1.
"""
with open(self.tailed_file) as file_:
# Go to the end of file
file_.seek(0, 2)
while not self.t_stop.is_set():
curr_position = file_.tell()
lines = file_.readlines()
if len(lines) == 0:
file_.seek(curr_position)
else:
for line in lines:
self.callback(line)
time.sleep(s)
def register_callback(self, func):
"""Override default callback function to provided function."""
self.callback = func
def check_file_validity(self, file_):
"""Check whether the a given file exists, readable and is a file."""
if not os.access(file_, os.F_OK):
raise TailError("File '%s' does not exist" % (file_))
if not os.access(file_, os.R_OK):
raise TailError("File '%s' not readable" % (file_))
if os.path.isdir(file_):
raise TailError("File '%s' is a directory" % (file_))
class TailError(Exception):
def __init__(self, msg):
super().__init__()
self.message = msg
def __str__(self):
return self.message

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more