License peo4c under GPL-3.0-or-later and ship third-party notices

- Add the GPL-3.0 LICENSE and SPDX headers to peo4c's own files.
- Add THIRD_PARTY_NOTICES.md listing every bundled component, its
  license and where its license text lives in the image, plus a
  trademark disclaimer; reference it from the README.
- Ship neo4j-browser's LICENSE, NOTICE.txt and LICENSES.txt with a
  source archive of the built commit, as the GPL requires.
- Ship Apache AGE's LICENSE and NOTICE, which the base image lacks.
- Collect license texts for Python packages whose wheels omit them,
  from PyPI sdists or vendored copies in docker/licenses/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Bart BroereandClaude Opus 5.5 committed 2026-10-14 11:58:27 +02:00
1 parent e72af59401
commit 04e1c32223
22 files changed
+1152 -1

No files matched your search

+22 -1
View File
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 Bart Broere
# SPDX-License-Identifier: GPL-3.0-or-later
# peo4c: neo4j-browser on top of PostgreSQL + Apache AGE.
#
# Stage 1 builds the neo4j-browser static frontend from source.
@@ -6,6 +9,8 @@
# Cypher into AGE `cypher()` calls, and pgAdmin as a SQL interface.
ARG AGE_IMAGE=docker.io/apache/age:release_PG18_1.8.0
# Commit of apache/age's release/PG18/1.8.0 branch, for AGE's LICENSE and NOTICE.
ARG AGE_SOURCE_REF=b570cf7c1486863f77c14e9c0e07b0e9bfd01bf4
ARG PGADMIN_VERSION=9.18
FROM docker.io/library/node:16.20.2-bullseye AS browser
@@ -17,13 +22,15 @@ WORKDIR /src
RUN git init -q . \
&& git remote add origin "$NEO4J_BROWSER_REPO" \
&& git fetch -q --depth 1 origin "$NEO4J_BROWSER_REF" \
&& git checkout -q FETCH_HEAD
&& git checkout -q FETCH_HEAD \
&& git archive --format=tar.gz --prefix=neo4j-browser/ -o /neo4j-browser-source.tar.gz HEAD
RUN yarn install --frozen-lockfile --network-timeout 600000
RUN yarn build && test -f dist/index.html
FROM ${AGE_IMAGE}
ARG AGE_SOURCE_REF
ARG PGADMIN_VERSION
RUN apt-get update \
@@ -37,6 +44,20 @@ RUN python3 -m venv /opt/pgadmin \
&& mkdir -p /var/lib/pgadmin \
&& chown postgres:postgres /var/lib/pgadmin
# License notices: see THIRD_PARTY_NOTICES.md. neo4j-browser is GPL-3.0, so its
# complete source is shipped next to the license.
COPY docker/collect-python-licenses.py /tmp/
COPY docker/licenses/ /tmp/licenses/
RUN /opt/pgadmin/bin/python /tmp/collect-python-licenses.py \
/usr/share/doc/peo4c/pgadmin-python-licenses /tmp/licenses \
&& rm -r /tmp/collect-python-licenses.py /tmp/licenses
COPY LICENSE THIRD_PARTY_NOTICES.md /usr/share/doc/peo4c/
COPY --from=browser /src/LICENSE /src/NOTICE.txt /src/LICENSES.txt /neo4j-browser-source.tar.gz \
/usr/share/doc/peo4c/neo4j-browser/
ADD https://raw.githubusercontent.com/apache/age/${AGE_SOURCE_REF}/LICENSE \
https://raw.githubusercontent.com/apache/age/${AGE_SOURCE_REF}/NOTICE \
/usr/share/doc/peo4c/apache-age/
COPY --from=browser /src/dist /opt/peo4c/browser
COPY bridge /opt/peo4c/bridge
COPY docker/initdb/ /docker-entrypoint-initdb.d/