License dedicated server packaging under GPLv3

This commit is contained in:
Alexander Sellite 2026-08-12 10:11:20 -04:00
parent a68d6157be
commit 9473fc0b33
12 changed files with 774 additions and 3 deletions

View file

@ -91,6 +91,21 @@ for filename in NETfishingServer.x86_64 NETfishingServer.pck BUILD_INFO SHA256SU
exit 1
fi
done
for filename in \
GPL-3.0-or-later.txt \
ASSET-LICENSE.md \
THIRD-PARTY-NOTICES.md \
TRADEMARKS.md \
CREDITS.md; do
if [[ ! -f "${payload_dir}/licenses/${filename}" ]]; then
echo "Archive is missing required notice licenses/${filename}." >&2
exit 1
fi
done
if [[ ! -f "${payload_dir}/SOURCE-CODE.md" ]]; then
echo "Archive is missing SOURCE-CODE.md." >&2
exit 1
fi
(cd -- "${payload_dir}" && sha256sum -c SHA256SUMS)
manifest_value() {
@ -135,6 +150,17 @@ else
install -m 0444 "${payload_dir}/NETfishingServer.pck" "${release_stage}/"
install -m 0444 "${payload_dir}/BUILD_INFO" "${release_stage}/"
install -m 0444 "${payload_dir}/SHA256SUMS" "${release_stage}/"
install -m 0444 "${payload_dir}/SOURCE-CODE.md" "${release_stage}/"
install -d -m 0755 "${release_stage}/licenses"
for filename in \
GPL-3.0-or-later.txt \
ASSET-LICENSE.md \
THIRD-PARTY-NOTICES.md \
TRADEMARKS.md \
CREDITS.md; do
install -m 0444 "${payload_dir}/licenses/${filename}" \
"${release_stage}/licenses/${filename}"
done
if [[ -f "${payload_dir}/README.md" ]]; then
install -m 0444 "${payload_dir}/README.md" "${release_stage}/"
fi

View file

@ -18,12 +18,28 @@ package_name="netfishing-dedicated-server-${version}-linux-x86_64"
staging_dir="$(mktemp -d)"
trap 'rm -rf -- "${staging_dir}"' EXIT
for filename in NETfishingServer.x86_64 NETfishingServer.pck BUILD_INFO SHA256SUMS; do
for filename in \
NETfishingServer.x86_64 \
NETfishingServer.pck \
BUILD_INFO \
SOURCE-CODE.md \
SHA256SUMS; do
if [[ ! -f "${dist_dir}/${filename}" ]]; then
echo "Run scripts/stage-build.sh before packaging." >&2
exit 1
fi
done
for filename in \
GPL-3.0-or-later.txt \
ASSET-LICENSE.md \
THIRD-PARTY-NOTICES.md \
TRADEMARKS.md \
CREDITS.md; do
if [[ ! -f "${dist_dir}/licenses/${filename}" ]]; then
echo "Staged build is missing licenses/${filename}." >&2
exit 1
fi
done
if ! grep -Fxq "game_version=${version}" "${dist_dir}/BUILD_INFO"; then
echo "Staged BUILD_INFO does not match package version ${version}." >&2
exit 1
@ -39,10 +55,22 @@ install -m 0644 "${dist_dir}/BUILD_INFO" \
"${staging_dir}/${package_name}/BUILD_INFO"
install -m 0644 "${dist_dir}/SHA256SUMS" \
"${staging_dir}/${package_name}/SHA256SUMS"
install -m 0644 "${dist_dir}/SOURCE-CODE.md" \
"${staging_dir}/${package_name}/SOURCE-CODE.md"
install -m 0644 "${repository_dir}/config/server.cfg.example" \
"${staging_dir}/${package_name}/server.cfg"
install -m 0644 "${repository_dir}/README.md" \
"${staging_dir}/${package_name}/README.md"
install -d "${staging_dir}/${package_name}/licenses"
for filename in \
GPL-3.0-or-later.txt \
ASSET-LICENSE.md \
THIRD-PARTY-NOTICES.md \
TRADEMARKS.md \
CREDITS.md; do
install -m 0644 "${dist_dir}/licenses/${filename}" \
"${staging_dir}/${package_name}/licenses/${filename}"
done
mkdir -p -- "${packages_dir}"
archive="${packages_dir}/${package_name}.tar.gz"

View file

@ -11,6 +11,7 @@ game_version="$2"
game_commit="${3,,}"
repository_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
destination_dir="${repository_dir}/dist"
licenses_dir="${destination_dir}/licenses"
if [[ ! "${game_version}" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]; then
echo "GAME_VERSION must contain only letters, numbers, dots, underscores, or hyphens." >&2
@ -32,6 +33,18 @@ install -m 0755 "${source_dir}/NETfishingServer.x86_64" \
"${destination_dir}/NETfishingServer.x86_64"
install -m 0644 "${source_dir}/NETfishingServer.pck" \
"${destination_dir}/NETfishingServer.pck"
rm -rf -- "${licenses_dir}"
install -d -m 0755 "${licenses_dir}"
install -m 0644 "${repository_dir}/LICENSE" \
"${licenses_dir}/GPL-3.0-or-later.txt"
install -m 0644 "${repository_dir}/ASSET-LICENSE.md" \
"${licenses_dir}/ASSET-LICENSE.md"
install -m 0644 "${repository_dir}/THIRD-PARTY-NOTICES.md" \
"${licenses_dir}/THIRD-PARTY-NOTICES.md"
install -m 0644 "${repository_dir}/TRADEMARKS.md" \
"${licenses_dir}/TRADEMARKS.md"
install -m 0644 "${repository_dir}/CREDITS.md" \
"${licenses_dir}/CREDITS.md"
cd -- "${destination_dir}"
executable_sha256="$(sha256sum NETfishingServer.x86_64 | awk '{print $1}')"
@ -48,6 +61,27 @@ printf '%s\n' \
"executable_sha256=${executable_sha256}" \
"pck_sha256=${pck_sha256}" \
> BUILD_INFO
cat >SOURCE-CODE.md <<EOF
# Corresponding source
NETfishing dedicated game-server code is licensed under GPL-3.0-or-later.
Source repository: https://forge.makearmy.io/woofmeow/netfishing
Exact game source revision: ${game_commit}
Packaging source:
https://forge.makearmy.io/woofmeow/netfishing-dedicated-server
EOF
umask "${apply_umask}"
sha256sum NETfishingServer.x86_64 NETfishingServer.pck BUILD_INFO > SHA256SUMS
sha256sum \
NETfishingServer.x86_64 \
NETfishingServer.pck \
BUILD_INFO \
SOURCE-CODE.md \
licenses/GPL-3.0-or-later.txt \
licenses/ASSET-LICENSE.md \
licenses/THIRD-PARTY-NOTICES.md \
licenses/TRADEMARKS.md \
licenses/CREDITS.md \
> SHA256SUMS
echo "Staged dedicated server build in ${destination_dir}"