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"
]