From 80d927a7708d9cb638b889a804651734dcae577c Mon Sep 17 00:00:00 2001 From: Paul Gerber Date: Sat, 8 Aug 2026 12:01:06 +0200 Subject: [PATCH 1/3] CI: Copy LICENSE to package directories before building distributions --- .github/workflows/pr.yml | 5 ++++- .github/workflows/release.yml | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ce3008e4..860a7506 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -236,7 +236,8 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install build - - name: Create source and wheel dist + - name: Copy LICENSE into build directory + run: cp ../LICENSE . run: | python -m build @@ -339,6 +340,8 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install build + - name: Copy LICENSE into build directory + run: cp ../LICENSE . - name: Create source and wheel dist run: | python -m build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36c0a04b..38aeffce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,6 +27,8 @@ jobs: run: | python -m pip install --upgrade pip pip install build + - name: Copy LICENSE into build directory + run: cp ../LICENSE . - name: Create source and wheel dist # (2024-12-11, s-heppner) # The PyPI Action expects the dist files in a toplevel `/dist` directory, @@ -54,6 +56,8 @@ jobs: run: | python -m pip install --upgrade pip pip install build + - name: Copy LICENSE into build directory + run: cp ../LICENSE . - name: Create source and wheel dist # (2024-12-11, s-heppner) # The PyPI Action expects the dist files in a toplevel `/dist` directory, From ab837b5c64a318aa842d359331aedd02cf21322c Mon Sep 17 00:00:00 2001 From: Paul Gerber Date: Sat, 8 Aug 2026 12:13:29 +0200 Subject: [PATCH 2/3] CI: copy central LICENSE into package directories before build Previously, the python build backend failed to include the `LICENSE` file in sdist and wheel distributions because build processes run isolated within subpackage directories (`./sdk` and `./compliance_tool`) without access to the root `LICENSE` file. Now, the CI workflows (`pr.yml` and `release.yml`) copy the root `LICENSE` file into the respective package directories immediately before executing `python -m build`, ensuring correct metadata inclusion for PyPI releases. Fixes #562 --- .github/workflows/pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 860a7506..6e4dffe0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -238,6 +238,7 @@ jobs: python -m pip install build - name: Copy LICENSE into build directory run: cp ../LICENSE . + - name: Create source and wheel dist run: | python -m build From 53fda3b7dc6aff0eb053fb6577027caeb2f71e85 Mon Sep 17 00:00:00 2001 From: Paul Gerber Date: Fri, 14 Aug 2026 15:24:42 +0200 Subject: [PATCH 3/3] Refactor: update pyproject.toml license metadata to PEP 639 and copy LICENSE in Dockerfile. Also remove duplicate LICENSE file. --- compliance_tool/LICENSE | 21 --------------------- compliance_tool/pyproject.toml | 4 ++-- sdk/pyproject.toml | 4 ++-- server/docker/discovery/Dockerfile | 1 + server/docker/registry/Dockerfile | 2 +- server/docker/repository/Dockerfile | 1 + server/pyproject.toml | 4 ++-- 7 files changed, 9 insertions(+), 28 deletions(-) delete mode 100644 compliance_tool/LICENSE diff --git a/compliance_tool/LICENSE b/compliance_tool/LICENSE deleted file mode 100644 index ead7d5c4..00000000 --- a/compliance_tool/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 IAT, RWTH Aachen University - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/compliance_tool/pyproject.toml b/compliance_tool/pyproject.toml index a26b85a5..35afda8d 100644 --- a/compliance_tool/pyproject.toml +++ b/compliance_tool/pyproject.toml @@ -27,10 +27,10 @@ authors = [ { name = "The AAS Compliance Tool authors", email = "admins@iat.rwth-aachen.de" } ] readme = "README.md" -license = { file = "LICENSE" } +license = "MIT" +license-files = ["LICENSE"] classifiers = [ "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Development Status :: 5 - Production/Stable" ] diff --git a/sdk/pyproject.toml b/sdk/pyproject.toml index ba010aa4..611bed25 100644 --- a/sdk/pyproject.toml +++ b/sdk/pyproject.toml @@ -27,10 +27,10 @@ authors = [ { name = "The Eclipse BaSyx Authors", email = "admins@iat.rwth-aachen.de" } ] readme = "README.md" -license = { file = "LICENSE" } +license = "MIT" +license-files = ["LICENSE"] classifiers = [ "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Development Status :: 5 - Production/Stable" ] diff --git a/server/docker/discovery/Dockerfile b/server/docker/discovery/Dockerfile index 66c9618e..43ab3314 100644 --- a/server/docker/discovery/Dockerfile +++ b/server/docker/discovery/Dockerfile @@ -15,6 +15,7 @@ RUN apk update && \ pip install uwsgi && \ apk del git bash +COPY ./LICENSE /LICENSE COPY ./sdk /sdk COPY ./server/app /server/app COPY ./server/pyproject.toml /server/pyproject.toml diff --git a/server/docker/registry/Dockerfile b/server/docker/registry/Dockerfile index df367f2d..6e6f13a1 100644 --- a/server/docker/registry/Dockerfile +++ b/server/docker/registry/Dockerfile @@ -15,7 +15,7 @@ RUN apk update && \ pip install uwsgi && \ apk del git bash - +COPY ./LICENSE /LICENSE COPY ./sdk /sdk COPY ./server/app /server/app COPY ./server/pyproject.toml /server/pyproject.toml diff --git a/server/docker/repository/Dockerfile b/server/docker/repository/Dockerfile index bc58e3e6..82cd80e2 100644 --- a/server/docker/repository/Dockerfile +++ b/server/docker/repository/Dockerfile @@ -17,6 +17,7 @@ RUN apk update && \ # Copy only the files we need to run the container # The argumentation for this is to keep the containers as slim as possible. +COPY ./LICENSE /LICENSE COPY ./sdk /sdk COPY ./server/app /server/app COPY ./server/pyproject.toml /server/pyproject.toml diff --git a/server/pyproject.toml b/server/pyproject.toml index e8799039..ead8092e 100644 --- a/server/pyproject.toml +++ b/server/pyproject.toml @@ -27,10 +27,10 @@ authors = [ { name = "The Eclipse BaSyx Authors", email = "admins@iat.rwth-aachen.de" } ] readme = "README.md" -license = { file = "LICENSE" } +license = "MIT" +license-files = ["LICENSE"] classifiers = [ "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Development Status :: 5 - Production/Stable" ]