Package: release.debian.org Severity: normal Tags: buster User: release.debian....@packages.debian.org Usertags: pu
Hi release team, This is a stable upstream release targeted for Debian/buster. It fixes some key usability bugs. I'm part of upstream, and we did our Debian/buster bug fix work in our stable 1.1.x branch, so the changes are mostly in the upstream source tarball. There were also a series of uploads to troubleshoot an issue with binfmt_misc on ci.debian.net. Most of the debdiff is the README being properly included in the python egg-info. We worked out this plan to keep fdroidserver update in buster in the previous release.debian.org bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=935809 This package has an extensive autopkgtest suite. The debian/changelog mostly shows fixes to the test runs: fdroidserver (1.1.7-1~deb10u1) buster; urgency=medium * New upstream release targeted for Debian/buster (Closes: #954070) * Remove "Recommends" test, ci.debian.net do not support binfmt_misc: https://salsa.debian.org/ci-team/debian-ci-config/-/issues/1 -- Hans-Christoph Steiner <h...@eds.org> Sat, 16 May 2020 22:15:14 +0200 fdroidserver (1.1.6-4) unstable; urgency=medium * fix running Recommends: test in containers -- Hans-Christoph Steiner <h...@eds.org> Wed, 13 May 2020 20:13:06 +0200 fdroidserver (1.1.6-3) unstable; urgency=medium * only run Recommends: test in VM, not base test -- Hans-Christoph Steiner <h...@eds.org> Tue, 12 May 2020 11:57:26 +0200 fdroidserver (1.1.6-2) unstable; urgency=medium * fix autopkgtest: run in VM so binfmt can be properly setup (Closes: #954395) -- Hans-Christoph Steiner <h...@eds.org> Mon, 11 May 2020 21:55:14 +0200 fdroidserver (1.1.6-1) unstable; urgency=medium * New upstream release targeted for Debian/buster -- Hans-Christoph Steiner <h...@eds.org> Tue, 17 Dec 2019 14:54:02 +0100
diff --git a/PKG-INFO b/PKG-INFO index 63697869..ac4ea350 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,12 +1,121 @@ Metadata-Version: 2.1 Name: fdroidserver -Version: 1.1.4 +Version: 1.1.7 Summary: F-Droid Server Tools Home-page: https://f-droid.org Author: The F-Droid Project Author-email: t...@f-droid.org License: AGPL-3.0 -Description: README.md +Description: <a name="build-status"></a> + + | CI Builds | fdroidserver | buildserver | fdroid build --all | publishing tools | + |--------------------------|:-------------:|:-----------:|:------------------:|:----------------:| + | Debian | [](https://gitlab.com/fdroid/fdroidserver/builds) | [](https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment) | [](https://jenkins.debian.net/job/reproducible_fdroid_build_apps/) | [](https://jenkins.debian.net/job/reproducible_fdroid_test/) | + | macOS & Ubuntu/trusty | [](https://travis-ci.org/fdroidtravis/fdroidserver) | | | | + + + # F-Droid Server + + Server for [F-Droid](https://f-droid.org), the Free Software repository system + for Android. + + The F-Droid server tools provide various scripts and tools that are + used to maintain the main + [F-Droid application repository](https://f-droid.org/packages). 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 <https://f-droid.org/docs/>, or you can + find the source for the documentation in + [fdroid/fdroid-website](https://gitlab.com/fdroid/fdroid-website). + + + ### What is F-Droid? + + 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. + + + ### Installing + + There are many ways to install _fdroidserver_, they are documented on + the website: + https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools + + All sorts of other documentation lives there as well. + + + ### Tests + + There are many components to all of the tests for the components in + this git repo. The most commonly used parts of well tested, while + some parts still lack tests. 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. Before rearchitecting any parts + of it, be sure to [contact us](https://f-droid.org/about) to discuss + the changes beforehand. + + + #### `fdroid` commands + + The test suite for all of the `fdroid` commands is in the _tests/_ + subdir. _.gitlab-ci.yml_ and _.travis.yml_ run this test suite on + various configurations. + + * _tests/complete-ci-tests_ runs _pylint_ and all tests on two + different pyvenvs + * _tests/run-tests_ runs the whole test suite + * _tests/*.TestCase_ are individual unit tests for all of the `fdroid` + commands, which can be run separately, e.g. `./update.TestCase`. + + + #### Additional tests for different linux distributions + + These tests are also run on various distributions through GitLab CI. This is + only enabled for `master@fdroid/fdroidserver` because it'll take 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/master/.gitlab-ci.yml#L34-35) + 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` + + #### buildserver + + The tests for the whole build server setup are entirely separate + because they require at least 200GB of disk space, and 8GB of + RAM. These test scripts are in the root of the project, all starting + with _jenkins-_ since they are run on https://jenkins.debian.net. + + + + ### Drozer Scanner + + There is a new feature under development that can scan any APK in a + repo, or any build, using Drozer. Drozer is a dynamic exploit + scanner, it runs an app in the emulator and runs known exploits on it. + + This setup requires specific versions of two Python modules: + _docker-py_ 1.9.0 and _requests_ older than 2.11. Other versions + might cause the docker-py connection to break with the containers. + Newer versions of docker-py might have this fixed already. + + For Debian based distributions: + + apt-get install libffi-dev libssl-dev python-docker + + ## Translation + + Everything can be translated. See + [Translation and Localization](https://f-droid.org/docs/Translation_and_Localization) + for more info. + [](https://hosted.weblate.org/engage/f-droid/?utm_source=widget) + Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers diff --git a/debian/changelog b/debian/changelog index 773e4c47..f8c70f46 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,41 @@ -fdroidserver (1.1.4-1~deb10u1) buster; urgency=medium +fdroidserver (1.1.7-1~deb10u1) buster; urgency=medium + + * New upstream release targeted for Debian/buster (Closes: #954070) + * Remove "Recommends" test, ci.debian.net do not support binfmt_misc: + https://salsa.debian.org/ci-team/debian-ci-config/-/issues/1 + + -- Hans-Christoph Steiner <h...@eds.org> Sat, 16 May 2020 22:15:14 +0200 + +fdroidserver (1.1.6-4) unstable; urgency=medium + + * fix running Recommends: test in containers + + -- Hans-Christoph Steiner <h...@eds.org> Wed, 13 May 2020 20:13:06 +0200 + +fdroidserver (1.1.6-3) unstable; urgency=medium + + * only run Recommends: test in VM, not base test + + -- Hans-Christoph Steiner <h...@eds.org> Tue, 12 May 2020 11:57:26 +0200 + +fdroidserver (1.1.6-2) unstable; urgency=medium + + * fix autopkgtest: run in VM so binfmt can be properly setup (Closes: #954395) + + -- Hans-Christoph Steiner <h...@eds.org> Mon, 11 May 2020 21:55:14 +0200 + +fdroidserver (1.1.6-1) unstable; urgency=medium + + * New upstream release targeted for Debian/buster + + -- Hans-Christoph Steiner <h...@eds.org> Tue, 17 Dec 2019 14:54:02 +0100 + +fdroidserver (1.1.4-1) unstable; urgency=medium * New upstream release targeted for Debian/buster * remove upstreamed patches - -- Hans-Christoph Steiner <h...@eds.org> Mon, 26 Aug 2019 14:48:22 +0200 + -- Hans-Christoph Steiner <h...@eds.org> Thu, 15 Aug 2019 10:49:30 +0200 fdroidserver (1.1.3-3) unstable; urgency=medium diff --git a/debian/tests/control b/debian/tests/control index 8d282af8..737e057b 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -1,7 +1,3 @@ Restrictions: isolation-container, allow-stderr Test-Command: echo Depends; export LANG=C.UTF-8 ANDROID_HOME=/usr/lib/android-sdk TRAVIS_OS_NAME=osx; fdroid=/usr/bin/fdroid ./tests/run-tests Depends: @, aapt, python3-setuptools, git, zipalign, - -Restrictions: isolation-container, needs-recommends, allow-stderr -Test-Command: echo Recommends; export LANG=C.UTF-8 ANDROID_HOME=/usr/lib/android-sdk TRAVIS_OS_NAME=osx; fdroid=/usr/bin/fdroid ./tests/run-tests -Depends: @, python3-setuptools, diff --git a/fdroidserver.egg-info/PKG-INFO b/fdroidserver.egg-info/PKG-INFO index 63697869..ac4ea350 100644 --- a/fdroidserver.egg-info/PKG-INFO +++ b/fdroidserver.egg-info/PKG-INFO @@ -1,12 +1,121 @@ Metadata-Version: 2.1 Name: fdroidserver -Version: 1.1.4 +Version: 1.1.7 Summary: F-Droid Server Tools Home-page: https://f-droid.org Author: The F-Droid Project Author-email: t...@f-droid.org License: AGPL-3.0 -Description: README.md +Description: <a name="build-status"></a> + + | CI Builds | fdroidserver | buildserver | fdroid build --all | publishing tools | + |--------------------------|:-------------:|:-----------:|:------------------:|:----------------:| + | Debian | [](https://gitlab.com/fdroid/fdroidserver/builds) | [](https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment) | [](https://jenkins.debian.net/job/reproducible_fdroid_build_apps/) | [](https://jenkins.debian.net/job/reproducible_fdroid_test/) | + | macOS & Ubuntu/trusty | [](https://travis-ci.org/fdroidtravis/fdroidserver) | | | | + + + # F-Droid Server + + Server for [F-Droid](https://f-droid.org), the Free Software repository system + for Android. + + The F-Droid server tools provide various scripts and tools that are + used to maintain the main + [F-Droid application repository](https://f-droid.org/packages). 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 <https://f-droid.org/docs/>, or you can + find the source for the documentation in + [fdroid/fdroid-website](https://gitlab.com/fdroid/fdroid-website). + + + ### What is F-Droid? + + 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. + + + ### Installing + + There are many ways to install _fdroidserver_, they are documented on + the website: + https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools + + All sorts of other documentation lives there as well. + + + ### Tests + + There are many components to all of the tests for the components in + this git repo. The most commonly used parts of well tested, while + some parts still lack tests. 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. Before rearchitecting any parts + of it, be sure to [contact us](https://f-droid.org/about) to discuss + the changes beforehand. + + + #### `fdroid` commands + + The test suite for all of the `fdroid` commands is in the _tests/_ + subdir. _.gitlab-ci.yml_ and _.travis.yml_ run this test suite on + various configurations. + + * _tests/complete-ci-tests_ runs _pylint_ and all tests on two + different pyvenvs + * _tests/run-tests_ runs the whole test suite + * _tests/*.TestCase_ are individual unit tests for all of the `fdroid` + commands, which can be run separately, e.g. `./update.TestCase`. + + + #### Additional tests for different linux distributions + + These tests are also run on various distributions through GitLab CI. This is + only enabled for `master@fdroid/fdroidserver` because it'll take 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/master/.gitlab-ci.yml#L34-35) + 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` + + #### buildserver + + The tests for the whole build server setup are entirely separate + because they require at least 200GB of disk space, and 8GB of + RAM. These test scripts are in the root of the project, all starting + with _jenkins-_ since they are run on https://jenkins.debian.net. + + + + ### Drozer Scanner + + There is a new feature under development that can scan any APK in a + repo, or any build, using Drozer. Drozer is a dynamic exploit + scanner, it runs an app in the emulator and runs known exploits on it. + + This setup requires specific versions of two Python modules: + _docker-py_ 1.9.0 and _requests_ older than 2.11. Other versions + might cause the docker-py connection to break with the containers. + Newer versions of docker-py might have this fixed already. + + For Debian based distributions: + + apt-get install libffi-dev libssl-dev python-docker + + ## Translation + + Everything can be translated. See + [Translation and Localization](https://f-droid.org/docs/Translation_and_Localization) + for more info. + [](https://hosted.weblate.org/engage/f-droid/?utm_source=widget) + Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers diff --git a/fdroidserver.egg-info/requires.txt b/fdroidserver.egg-info/requires.txt index dd403933..e5ccbafc 100644 --- a/fdroidserver.egg-info/requires.txt +++ b/fdroidserver.egg-info/requires.txt @@ -13,4 +13,4 @@ pyasn1<0.5.0,>=0.4.1 python-vagrant qrcode requests!=2.11.0,!=2.12.2,!=2.18.0,>=2.5.2 -ruamel.yaml>=0.13 +ruamel.yaml>=0.15 diff --git a/fdroidserver/index.py b/fdroidserver/index.py index 7fbbea44..fd659407 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -317,13 +317,17 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing parent.appendChild(el) def addElementCheckLocalized(name, app, key, doc, parent, default=''): - '''Fill in field from metadata or localized block + """Fill in field from metadata or localized block For name/summary/description, they can come only from the app source, or from a dir in fdroiddata. They can be entirely missing from the metadata file if there is localized versions. This will fetch those from the localized version if its not available in the metadata file. - ''' + + Attributes should be alpha-sorted, so they must be added in + alpha- sort order. + + """ el = doc.createElement(name) value = app.get(key) @@ -349,21 +353,20 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing doc.appendChild(root) repoel = doc.createElement("repo") - - repoel.setAttribute("name", repodict['name']) + repoel.setAttribute("icon", os.path.basename(repodict['icon'])) if 'maxage' in repodict: repoel.setAttribute("maxage", str(repodict['maxage'])) - repoel.setAttribute("icon", os.path.basename(repodict['icon'])) + repoel.setAttribute("name", repodict['name']) + pubkey, repo_pubkey_fingerprint = extract_pubkey() + repoel.setAttribute("pubkey", pubkey.decode('utf-8')) + repoel.setAttribute("timestamp", '%d' % repodict['timestamp'].timestamp()) repoel.setAttribute("url", repodict['address']) + repoel.setAttribute("version", str(repodict['version'])) + addElement('description', repodict['description'], doc, repoel) for mirror in repodict.get('mirrors', []): addElement('mirror', mirror, doc, repoel) - repoel.setAttribute("version", str(repodict['version'])) - repoel.setAttribute("timestamp", '%d' % repodict['timestamp'].timestamp()) - - pubkey, repo_pubkey_fingerprint = extract_pubkey() - repoel.setAttribute("pubkey", pubkey.decode('utf-8')) root.appendChild(repoel) for command in ('install', 'uninstall'): @@ -541,16 +544,16 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing for permission in sorted_permissions: permel = doc.createElement('uses-permission') - permel.setAttribute('name', permission[0]) if permission[1] is not None: permel.setAttribute('maxSdkVersion', '%d' % permission[1]) apkel.appendChild(permel) + permel.setAttribute('name', permission[0]) for permission_sdk_23 in sorted(apk['uses-permission-sdk-23']): permel = doc.createElement('uses-permission-sdk-23') - permel.setAttribute('name', permission_sdk_23[0]) if permission_sdk_23[1] is not None: permel.setAttribute('maxSdkVersion', '%d' % permission_sdk_23[1]) apkel.appendChild(permel) + permel.setAttribute('name', permission_sdk_23[0]) if 'nativecode' in apk: addElement('nativecode', ','.join(sorted(apk['nativecode'])), doc, apkel) addElementNonEmpty('features', ','.join(sorted(apk['features'])), doc, apkel) diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index d8ed98b9..e8bde005 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -457,7 +457,7 @@ valuetypes = { ["Bitcoin"]), FieldValidator("Litecoin address", - r'^L[a-zA-Z0-9]{33}$', + r'^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$', ["Litecoin"]), FieldValidator("Repo Type", diff --git a/fdroidserver/nightly.py b/fdroidserver/nightly.py index 7a90294d..b67a4097 100644 --- a/fdroidserver/nightly.py +++ b/fdroidserver/nightly.py @@ -102,7 +102,7 @@ def main(): help=_('The file to be included in the repo (path or glob)')) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) - parser.add_argument("--archive-older", default=20, + parser.add_argument("--archive-older", type=int, default=20, help=_("Set maximum releases in repo before older ones are archived")) # TODO add --with-btlog options = parser.parse_args() @@ -232,9 +232,11 @@ Last updated: {date}'''.format(repo_git_base=repo_git_base, config += "repo_name = '%s'\n" % repo_git_base config += "repo_url = '%s'\n" % repo_url config += "repo_icon = 'icon.png'\n" + config += "repo_description = 'Nightly builds from %s'\n" % git_user_email config += "archive_name = '%s'\n" % (repo_git_base + ' archive') config += "archive_url = '%s'\n" % (repo_base + '/archive') config += "archive_icon = 'icon.png'\n" + config += "archive_description = 'Old nightly builds that have been archived.'\n" config += "archive_older = %i\n" % options.archive_older config += "servergitmirrors = '%s'\n" % servergitmirror config += "keystore = '%s'\n" % KEYSTORE_FILE diff --git a/setup.py b/setup.py index 61b4e6e1..2ffcc1fd 100755 --- a/setup.py +++ b/setup.py @@ -49,10 +49,14 @@ def get_data_files(): return data_files +with open("README.md", "r") as fh: + long_description = fh.read() + + setup(name='fdroidserver', - version='1.1.4', + version='1.1.7', description='F-Droid Server Tools', - long_description='README.md', + long_description=long_description, long_description_content_type='text/markdown', author='The F-Droid Project', author_email='t...@f-droid.org', @@ -80,7 +84,7 @@ setup(name='fdroidserver', 'python-vagrant', 'PyYAML', 'qrcode', - 'ruamel.yaml >= 0.13', + 'ruamel.yaml >= 0.15', 'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0', 'docker-py >= 1.9, < 2.0', ], diff --git a/tests/metadata.TestCase b/tests/metadata.TestCase index dc786095..d7b72f71 100755 --- a/tests/metadata.TestCase +++ b/tests/metadata.TestCase @@ -39,7 +39,7 @@ class MetadataTest(unittest.TestCase): os.makedirs(self.tmpdir) os.chdir(self.basedir) - def test_FieldValidator(self): + def test_FieldValidator_BitcoinAddress(self): validator = None for vali in fdroidserver.metadata.valuetypes: if vali.name == 'Bitcoin address': @@ -54,9 +54,9 @@ class MetadataTest(unittest.TestCase): self.assertIsNone(validator.check('3JrrrrWrEZr3rNrrvrecrnyirrnqRhWNLy', 'fake.app.id')) self.assertIsNone(validator.check('bc1qar0srrr7xrkvr5lr43lrdnwrre5rgtrzrf5rrq', 'fake.app.id')) - # some invalid addresses (various special use/testnet addresses) + # some invalid addresses self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, - '21BvMrSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + '21BvMrSYsrWrtrrlL5A10mlGFr7rrarrN2', 'fake.app.id') self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, '5Hrgr3ur5rGLrfKrrrrrrHSrqJrroGrrzrQrrrrrrLNrsrDrrrA', 'fake.app.id') self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, @@ -68,6 +68,35 @@ class MetadataTest(unittest.TestCase): self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, 'tb1qw5r8drrejxrrg4y5rrrrrraryrrrrwrkxrjrsx', 'fake.app.id') + def test_FieldValidator_LitecoinAddress(self): + validator = None + for vali in fdroidserver.metadata.valuetypes: + if vali.name == 'Litecoin address': + validator = vali + break + self.assertIsNotNone(validator, "could not find 'Litecoin address' validator") + + fdroidserver.metadata.warnings_action = 'error' + + # some valid addresses (L, M, 3) + self.assertIsNone(validator.check('LgeGrrrrJAxyXprrPrrBrrX5Qrrrrrrrrd', 'fake.app.id')) + self.assertIsNone(validator.check('MrrrrrrrJAxyXpanPtrrRAX5QHxvUJo8id', 'fake.app.id')) + self.assertIsNone(validator.check('3rereVr9rAryrranrrrrrAXrrHx', 'fake.app.id')) + + # some invalid addresses (various special use/testnet addresses, invalid chars) + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '21BvMrSYsrWrtrrrn5Au4l4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '5Hrgr3ur5rGLrfKrrrrrr1SrqJrroGrrzrQrrrrrrLNrsrDrrrA', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '92rr46rUrgTrrromrVrirW6r1rrrdrerrdbJrrrhrCsYrrrrrrc', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'K1BvMrSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'L0000rSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'tb1qw5r8drrejxrrg4y5rrrrrraryrrrrwrkxrjrsx', 'fake.app.id') + def test_read_metadata(self): def _build_yaml_representer(dumper, data):
signature.asc
Description: OpenPGP digital signature