From deadf1d01ff8ea3aac0d03baabb2bded5c6a30a5 Mon Sep 17 00:00:00 2001 From: Edward Ly Date: Mon, 6 Jan 2025 14:42:37 -0800 Subject: [PATCH] feat: re-add licenses by SPDX identifier, mark shorthand aliases as deprecated Signed-off-by: Edward Ly --- docs/developer.rst | 20 +++++++- nextcloudappstore/api/v1/release/info.xsd | 9 ++++ .../api/v1/release/pre-info.xslt | 16 +++++- .../api/v1/tests/data/infoxmls/app_api.xml | 2 +- .../api/v1/tests/data/infoxmls/fullimport.xml | 2 +- .../api/v1/tests/data/infoxmls/minimal.xml | 2 +- nextcloudappstore/api/v1/tests/test_parser.py | 2 +- .../api/v1/tests/test_release_importer.py | 6 +-- nextcloudappstore/core/fixtures/licenses.json | 49 +++++++++++++++++++ 9 files changed, 99 insertions(+), 9 deletions(-) diff --git a/docs/developer.rst b/docs/developer.rst index 888133105f2..90b0545cd8b 100644 --- a/docs/developer.rst +++ b/docs/developer.rst @@ -335,7 +335,25 @@ version * must be a `semantic version `_ without build metadata, e.g. 9.0.1 or 9.1.0-alpha.1 licence * required - * must contain **agpl**, **mpl*** and/or **apache** as the only valid values. These refer to the AGPLv3, MPL 2.0 and Apache License 2.0 + * can occur multiple times with different licenses + * must contain one of the following licenses (see the `SPDX License List `_ for details): + + * **AGPL-3.0-only** + * **AGPL-3.0-or-later** + * **Apache-2.0** + * **GPL-3.0-only** + * **GPL-3.0-or-later** + * **MIT** + * **MPL-2.0** + + * (deprecated) the following shorthand aliases are also used: + + * **agpl** (AGPL-3.0) + * **apache** (Apache-2.0) + * **gpl3** (GPL-3.0) + * **mit** (MIT) + * **mpl** (MPL-2.0) + author * required * can occur multiple times with different authors diff --git a/nextcloudappstore/api/v1/release/info.xsd b/nextcloudappstore/api/v1/release/info.xsd index cd716e0052b..d5244d4eef8 100644 --- a/nextcloudappstore/api/v1/release/info.xsd +++ b/nextcloudappstore/api/v1/release/info.xsd @@ -369,6 +369,15 @@ + + + + + + + + + diff --git a/nextcloudappstore/api/v1/release/pre-info.xslt b/nextcloudappstore/api/v1/release/pre-info.xslt index 915aafb4575..a1297b33540 100644 --- a/nextcloudappstore/api/v1/release/pre-info.xslt +++ b/nextcloudappstore/api/v1/release/pre-info.xslt @@ -16,7 +16,21 @@ - + + + + agpl + Apache-2.0 + gpl3 + MIT + MPL-2.0 + + + + diff --git a/nextcloudappstore/api/v1/tests/data/infoxmls/app_api.xml b/nextcloudappstore/api/v1/tests/data/infoxmls/app_api.xml index afb9bc28d83..188c0f732af 100644 --- a/nextcloudappstore/api/v1/tests/data/infoxmls/app_api.xml +++ b/nextcloudappstore/api/v1/tests/data/infoxmls/app_api.xml @@ -4,7 +4,7 @@ AppAPI Skeleton2 Testing info.xml 2.0.0 - AGPL + AGPL-3.0-or-later Andrey Borysenko tools https://github.com/cloud-py-api/nc_py_api/issues diff --git a/nextcloudappstore/api/v1/tests/data/infoxmls/fullimport.xml b/nextcloudappstore/api/v1/tests/data/infoxmls/fullimport.xml index 5a439d1db9b..f2eef64a4ad 100644 --- a/nextcloudappstore/api/v1/tests/data/infoxmls/fullimport.xml +++ b/nextcloudappstore/api/v1/tests/data/infoxmls/fullimport.xml @@ -16,7 +16,7 @@ 8.8.2 - agpl + AGPL-3.0-or-later Bernhard Posselt diff --git a/nextcloudappstore/api/v1/tests/data/infoxmls/minimal.xml b/nextcloudappstore/api/v1/tests/data/infoxmls/minimal.xml index 62d27ef85ef..6b3f17a3ebf 100644 --- a/nextcloudappstore/api/v1/tests/data/infoxmls/minimal.xml +++ b/nextcloudappstore/api/v1/tests/data/infoxmls/minimal.xml @@ -5,7 +5,7 @@ An RSS/Atom feed reader An RSS/Atom feed reader 8.8.2 - agpl + AGPL-3.0-or-later Bernhard Posselt multimedia https://github.com/nextcloud/news/issues diff --git a/nextcloudappstore/api/v1/tests/test_parser.py b/nextcloudappstore/api/v1/tests/test_parser.py index dbe568faeca..12165a35d1e 100644 --- a/nextcloudappstore/api/v1/tests/test_parser.py +++ b/nextcloudappstore/api/v1/tests/test_parser.py @@ -46,7 +46,7 @@ def test_parse_minimal(self): "donations": [], "release": { "databases": [], - "licenses": [{"license": {"id": "agpl"}}], + "licenses": [{"license": {"id": "AGPL-3.0-or-later"}}], "min_int_size": 32, "php_extensions": [], "php_max_version": "*", diff --git a/nextcloudappstore/api/v1/tests/test_release_importer.py b/nextcloudappstore/api/v1/tests/test_release_importer.py index 764174a3f78..0de358570b9 100644 --- a/nextcloudappstore/api/v1/tests/test_release_importer.py +++ b/nextcloudappstore/api/v1/tests/test_release_importer.py @@ -66,7 +66,7 @@ def test_import_minimal(self): self.assertEqual(0, release.shell_commands.count()) self.assertEqual(0, release.shell_commands.count()) self.assertEqual(1, release.licenses.count()) - self.assertEqual("agpl", release.licenses.all()[0].id) + self.assertEqual("AGPL-3.0-or-later", release.licenses.all()[0].id) self.assertEqual(None, release.aa_is_system) def test_full(self): @@ -230,7 +230,7 @@ def test_import_minimal(self): self.assertEqual(0, release.php_extensions.count()) self.assertEqual(0, release.databases.count()) self.assertEqual(0, release.shell_commands.count()) - self.assertEqual("mit", release.licenses.all()[0].id) + self.assertEqual("MIT", release.licenses.all()[0].id) self.assertEqual(False, release.aa_is_system) self.assertEqual(1, release.deploy_methods.count()) all_scopes = release.api_scopes.all() @@ -275,7 +275,7 @@ def test_full(self): self.assertEqual("*", release.raw_php_version_spec) self._assert_all_empty(release, ["signature", "download"]) self.assertEqual(1, release.licenses.count()) - self.assertEqual("agpl", release.licenses.all()[0].id) + self.assertEqual("AGPL-3.0-or-later", release.licenses.all()[0].id) self.assertEqual(True, release.aa_is_system) self.assertEqual(1, release.deploy_methods.count()) all_scopes = release.api_scopes.all() diff --git a/nextcloudappstore/core/fixtures/licenses.json b/nextcloudappstore/core/fixtures/licenses.json index 577e1596f58..61280911c01 100644 --- a/nextcloudappstore/core/fixtures/licenses.json +++ b/nextcloudappstore/core/fixtures/licenses.json @@ -1,4 +1,53 @@ [ + { + "model": "core.license", + "pk": "AGPL-3.0-only", + "fields": { + "name": "GNU Affero General Public License v3.0 only" + } + }, + { + "model": "core.license", + "pk": "AGPL-3.0-or-later", + "fields": { + "name": "GNU Affero General Public License v3.0 or later" + } + }, + { + "model": "core.license", + "pk": "Apache-2.0", + "fields": { + "name": "Apache License 2.0" + } + }, + { + "model": "core.license", + "pk": "GPL-3.0-only", + "fields": { + "name": "GNU General Public License v3.0 only" + } + }, + { + "model": "core.license", + "pk": "GPL-3.0-or-later", + "fields": { + "name": "GNU General Public License v3.0 or later" + } + }, + { + "model": "core.license", + "pk": "MIT", + "fields": { + "name": "MIT License" + } + }, + { + "model": "core.license", + "pk": "MPL-2.0", + "fields": { + "name": "Mozilla Public License 2.0" + } + }, { "model": "core.license", "pk": "agpl",