diff --git a/ASSET-LICENSE.md b/ASSET-LICENSE.md deleted file mode 100644 index 56a95ab..0000000 --- a/ASSET-LICENSE.md +++ /dev/null @@ -1,134 +0,0 @@ -# NETfishing Asset License 1.0 - -Copyright © 2026 Alexander Sellite and Rheannon Eisworth. All rights -reserved except for the permissions expressly granted below. - -## 1. Scope - -This license applies to original NETfishing artwork, graphics, textures, -models, animations, music, sound recordings, narrative content, visual -designs, characters, and other creative assets owned by Alexander Sellite and -Rheannon Eisworth (the **“NETfishing Assets”**). - -It does not apply to: - -- software source code identified as GPL-3.0-or-later; -- third-party material identified in `THIRD-PARTY-NOTICES.md`; -- material accompanied by a different license; or -- the NETfishing and Woofmeow names and logos, which are addressed in - `TRADEMARKS.md`. - -Repository location alone does not change third-party ownership or licensing. - -## 2. Definitions - -**Official NETfishing Software** means: - -- an unmodified binary release published by the NETfishing owners through an - official NETfishing distribution channel; or -- a build made from an unmodified official NETfishing source release or tagged - revision. - -**Mod** means a non-standalone add-on created to operate with Official -NETfishing Software. A Mod may add, replace, or alter content loaded by the -Official NETfishing Software, but it may not redistribute a replacement copy -of the game or represent a fork, clone, sequel, or separate game. - -## 3. Permission to use the official game - -You may reproduce NETfishing Assets as technically necessary to install, run, -back up, and privately modify a lawfully obtained copy of Official NETfishing -Software. - -You may capture, publish, and monetize screenshots, gameplay videos, -livestreams, reviews, tutorials, and similar commentary showing a lawfully -obtained copy of NETfishing. This permission does not authorize redistribution -of the source asset files or imply endorsement. - -## 4. Community Mod license - -Subject to this license, you may create, modify, and distribute NETfishing -Assets solely as part of a Mod for Official NETfishing Software. - -This permission is worldwide, nonexclusive, royalty-free, and available for -as long as you comply with this license. It permits only the copies of -NETfishing Assets reasonably necessary for the Mod to function. It does not -permit distributing the original game, a substantially complete collection of -its assets, or a general-purpose asset pack. - -A distributed Mod must: - -1. require a separately obtained copy of Official NETfishing Software; -2. be presented as unofficial community content; -3. include the following notice in its documentation or distribution page: - - > Contains or adapts NETfishing assets © 2026 Alexander Sellite and - > Rheannon Eisworth, used under the NETfishing Asset License 1.0. This Mod - > is unofficial and is not endorsed by Woofmeow. - -4. identify material created by the Mod author separately from NETfishing - Assets; and -5. comply with `TRADEMARKS.md`. - -Mods may be shared without charge and may accept voluntary donations that do -not purchase access, features, or preferential treatment. Selling a Mod, -charging for access to it, licensing it commercially, or using NETfishing -Assets in paid products requires separate written permission from both -NETfishing owners. - -## 5. Uses not permitted - -Except with separate written permission from both NETfishing owners, you may -not use or distribute NETfishing Assets: - -- in a fork, clone, remake, sequel, or standalone game; -- with a modified distribution of the GPL-covered NETfishing code that is not - Official NETfishing Software; -- in another game, application, asset library, template, or merchandise; -- as a substantially complete asset extraction or archive; -- in a way that implies sponsorship, endorsement, or official status; -- to register a confusingly similar trademark, domain, account, or product - identity; or -- under terms that claim ownership of the NETfishing Assets themselves. - -The GPL permits forks and redistribution of the GPL-covered code. This asset -license does not permit those forks to carry NETfishing Assets. A code fork -must remove or replace the NETfishing Assets and reserved branding unless both -owners grant separate written permission. - -## 6. Ownership of Mods - -You retain ownership of your original Mod material. Alexander Sellite and -Rheannon Eisworth retain ownership of the NETfishing Assets and adaptations of -those assets to the extent provided by applicable law. - -This license does not require you to assign your original Mod material to the -NETfishing owners. It also does not grant you ownership of the underlying -NETfishing Assets. - -## 7. Termination and cure - -Your permissions under this license terminate automatically if you violate -its terms. They are reinstated provisionally when you stop the violation and -permanently if both NETfishing owners do not notify you of the violation -within sixty days after it has been cured. - -Termination does not limit remedies available for activity outside this -license. - -## 8. No warranty - -THE NETFISHING ASSETS ARE PROVIDED “AS IS,” WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE, TITLE, OR NON-INFRINGEMENT. TO THE MAXIMUM EXTENT -PERMITTED BY LAW, THE OWNERS WILL NOT BE LIABLE FOR ANY CLAIM, DAMAGES, OR -OTHER LIABILITY ARISING FROM THIS LICENSE OR USE OF THE NETFISHING ASSETS. - -## 9. Additional permission - -Uses not granted here require written permission from both Alexander Sellite -and Rheannon Eisworth. A permission granted to one person or project does not -amend this license for others. - -This is a custom asset license, not an open-source software license or a -Creative Commons license. diff --git a/CREDITS.md b/CREDITS.md deleted file mode 100644 index 088a59e..0000000 --- a/CREDITS.md +++ /dev/null @@ -1,61 +0,0 @@ -# Credits - -## Project ownership and development - -NETfishing is jointly owned, developed, and published by Alexander Sellite and -Rheannon Eisworth, operating collectively as the independent team Woofmeow. - -- Alexander Sellite: co-owner, developer, project director, and 3D artist. -- Rheannon Eisworth: co-owner, developer, and lead 2D artist. - -## Development assistance - -Development has used automated coding assistance for implementation, -investigation, testing, documentation, and review. Design choices, supplied -artwork, acceptance decisions, repository operations, and releases remain -human-controlled. - -This disclosure is intentionally about process. Commit style, code style, or -repository metadata cannot reliably prove whether a particular change was -written with or without assistance. - -## Fonts - -- Tuffy: Thatcher Ulrich, Karoly Barta, and Michael Evans. The bundled license - dedicates the work to the public domain; see `ui/fonts/Tuffy-LICENSE.txt`. -- Seattle Avenue: public-domain font by JLH Fonts, bundled as - `ui/fonts/seattle_avenue.otf`; see `ui/fonts/Seattle-Avenue-LICENSE.txt`. - -## Music - -- `audio/music/title/as_in_four_wolves.ogg`: original title/ambient music by - Alexander Sellite. - -## Sound effects - -- “Spinning reel.wav” by tosha73, used as the source for the fishing fight and - manual-reeling loops. Freesound sound 509902, Creative Commons Zero (CC0): - https://freesound.org/s/509902/ -- “Gentle Ocean Waves Loop” by kkenny101, used for the saltwater shoreline - ambience. Freesound sound 852826, Creative Commons Zero (CC0): - https://freesound.org/s/852826/ -- Rain Loop Ontario by Ayton -- https://freesound.org/s/212799/ -- License: - Attribution 3.0 -- Dog_Bark.wav by ivolipa -- https://freesound.org/s/328729/ -- License: - Creative Commons 0 -- Cat meow.m4a by Christyboy100 -- https://freesound.org/s/495694/ -- License: - Attribution 3.0 -- “Quick Water Droplet” by qubodup, used for the bobber water-impact sound. - Freesound sound 792931, Creative Commons Zero (CC0): - https://freesound.org/s/792931/ - -## Artwork - -- Original 2D artwork: Rheannon Eisworth. -- Original 3D models: Alexander Sellite. - -Asset categories and release-record requirements are listed in -[`docs/ASSET-PROVENANCE.md`](docs/ASSET-PROVENANCE.md). - -Complete license wording, modification notices, and Godot Engine attribution -are recorded in [`THIRD-PARTY-NOTICES.md`](THIRD-PARTY-NOTICES.md). diff --git a/README.md b/README.md index b602134..3f2d0ea 100644 --- a/README.md +++ b/README.md @@ -20,13 +20,18 @@ game_commit="$(git -C ../netfishing rev-parse HEAD)" ./scripts/stage-build.sh \ ../netfishing/builds/vX.Y.Z-alpha/server-linux-x86_64 \ X.Y.Z-alpha \ - "${game_commit}" + "${game_commit}" \ + ../netfishing ``` The staged binaries under `dist/` are release inputs and are intentionally not tracked by Git. `dist/BUILD_INFO` records the version, full game and packaging -commits, export preset, platform, and binary hashes. Packaging refuses a +commits, export preset, platform, and binary hashes. Manifest version 3 also +records the consolidated notice layout. Packaging refuses a version mismatch, packaging-tag mismatch, or failed internal checksum. +Staging also requires the clean main game checkout at that exact commit and +copies its authoritative licenses, attribution/provenance record, and font +notices into the package. This repository does not maintain duplicate copies. Create a deterministic native archive after staging: @@ -123,7 +128,8 @@ For a direct foreground run from staged build inputs: ./scripts/stage-build.sh \ ../netfishing/builds/vX.Y.Z-alpha/server-linux-x86_64 \ X.Y.Z-alpha \ - "$(git -C ../netfishing rev-parse HEAD)" + "$(git -C ../netfishing rev-parse HEAD)" \ + ../netfishing docker compose build docker compose up -d ``` @@ -148,12 +154,14 @@ server code are licensed under [GPL-3.0-or-later](LICENSE). Every binary package includes the license and a corresponding-source record for its exact game commit. -The server PCK contains NETfishing creative assets governed by -[`ASSET-LICENSE.md`](ASSET-LICENSE.md), along with third-party materials listed -in [`THIRD-PARTY-NOTICES.md`](THIRD-PARTY-NOTICES.md). NETfishing and Woofmeow -branding is reserved as described in [`TRADEMARKS.md`](TRADEMARKS.md). +The server PCK contains NETfishing creative assets and third-party material. +Their governing terms, credits, and provenance are maintained once in the +main game's +[`docs/ATTRIBUTION.md`](https://forge.makearmy.io/woofmeow/netfishing/src/branch/main/docs/ATTRIBUTION.md), +with the asset license and trademark terms beside that record. Every staged +server package copies those files from its exact game source commit. Contributions are accepted under [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`CONTRIBUTOR-TERMS.md`](CONTRIBUTOR-TERMS.md). -Copyright © 2026 Alexander Sellite and Rheannon Eisworth. +Copyright © 2026 Woofmeow. diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md deleted file mode 100644 index 243f685..0000000 --- a/THIRD-PARTY-NOTICES.md +++ /dev/null @@ -1,137 +0,0 @@ -# NETfishing third-party notices - -NETfishing includes or is distributed with the materials identified below. -They are not relicensed by the NETfishing GPL or Asset License; their own -terms continue to apply. - -## Godot Engine - -NETfishing uses Godot Engine. Godot Engine is licensed under the MIT License: - -> Copyright (c) 2014-present Godot Engine contributors. -> Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. -> -> 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. - -Godot Engine and its bundled third-party-component notices are documented at: - -- https://godotengine.org/license/ -- https://github.com/godotengine/godot/blob/master/COPYRIGHT.txt - -Godot uses FreeType for font rendering. Portions of the engine are copyright -The FreeType Project (https://www.freetype.org). All rights reserved under the -FreeType Project’s applicable license. - -## Fonts - -### Tuffy Bold - -- Creators: Thatcher Ulrich, Karoly Barta, and Michael Evans -- Repository file: `ui/fonts/Tuffy_Bold.otf` -- Status: dedicated to the public domain -- Bundled notice: `ui/fonts/Tuffy-LICENSE.txt` - -### Seattle Avenue - -- Creator: JLH Fonts -- Repository file: `ui/fonts/seattle_avenue.otf` -- Status: dedicated to the public domain by the creator -- Source record: - https://www.publicdomainfiles.com/show_file.php?id=13486266913972 -- Additional creator attribution and public-domain listing: - https://www.dafont.com/seattle-avenue.font -- Bundled notice: `ui/fonts/Seattle-Avenue-LICENSE.txt` - -Public-domain status means these fonts are not subject to the NETfishing Asset -License. - -## Sound recordings - -### Spinning Reel - -- Original title: “Spinning reel.wav” -- Creator: Freesound user `tosha73` -- Source: https://freesound.org/s/509902/ -- License: Creative Commons Zero (CC0) -- Used for: `audio/sfx/fishing/fighting.wav` and - `audio/sfx/fishing/reeling.wav` -- Changes: edited into separate looping fight and manual-reeling sounds; - converted/exported as runtime WAV files - -CC0 information: https://creativecommons.org/publicdomain/zero/1.0/ - -### Gentle Ocean Waves Loop - -- Original title: “Gentle Ocean Waves Loop” -- Creator: Freesound user `kkenny101` -- Source: https://freesound.org/s/852826/ -- License: Creative Commons Zero (CC0) -- Used for: `audio/ambience/waves.wav` -- Changes: configured as a quiet looping saltwater ambience - -### Quick Water Droplet - -- Original title: “Quick Water Droplet” -- Creator: Freesound user `qubodup` -- Source: https://freesound.org/s/792931/ -- License: Creative Commons Zero (CC0) -- Used for: `audio/sfx/fishing/bobber.wav` -- Changes: used as the bobber water-impact sound - -### Dog Bark - -- Original title: “Dog_Bark.wav” -- Creator: Freesound user `ivolipa` -- Source: https://freesound.org/s/328729/ -- License: Creative Commons Zero (CC0) -- Used for: `sound/dialogue/calls/bark.wav` -- Changes: edited and exported as a short in-game character-call sound - -### Rain Loop Ontario - -- Original title: “Rain Loop Ontario” -- Creator: Freesound user `Ayton` -- Source: https://freesound.org/s/212799/ -- License: Creative Commons Attribution 3.0 -- License text: https://creativecommons.org/licenses/by/3.0/legalcode -- Used for: `audio/ambience/rain_loop_ontario.ogg` -- Changes: converted from the supplied AIFF source to Ogg Vorbis and configured - as looping weather ambience - -### Cat Meow - -- Original title: “Cat meow.m4a” -- Creator: Freesound user `Christyboy100` -- Source: https://freesound.org/s/495694/ -- License: Creative Commons Attribution 3.0 -- License text: https://creativecommons.org/licenses/by/3.0/legalcode -- Used for: `sound/dialogue/calls/meow.wav` -- Changes: converted to WAV and edited into a short in-game character-call - sound - -The attribution above does not imply that any third-party creator endorses -NETfishing, Woofmeow, Alexander Sellite, or Rheannon Eisworth. - -## Complete provenance records - -Source filenames, transformations, and available SHA-256 records are kept in -the main game repository’s -[`docs/ASSET-PROVENANCE.md`](https://forge.makearmy.io/woofmeow/netfishing/src/branch/main/docs/ASSET-PROVENANCE.md). -Absence from that development record does not remove an applicable third-party -license or attribution requirement. diff --git a/TRADEMARKS.md b/TRADEMARKS.md deleted file mode 100644 index fe6df35..0000000 --- a/TRADEMARKS.md +++ /dev/null @@ -1,42 +0,0 @@ -# NETfishing and Woofmeow branding - -The NETfishing and Woofmeow names, logos, icons, trade dress, and other source -identifiers are reserved by Alexander Sellite and Rheannon Eisworth. Their -presence in a GPL-licensed repository does not grant trademark rights or imply -permission to represent another product as official. - -No trademark registration is asserted by this notice. Applicable rights may -exist through use and other law. - -## Permitted references - -You may use the names NETfishing and Woofmeow truthfully to: - -- refer to the official game or development team; -- state that software interoperates with or is a Mod for NETfishing; -- link to an official repository or distribution page; and -- discuss, review, criticize, or report on the Project. - -Use only the amount of branding reasonably necessary to identify the Project. -Do not imply sponsorship, certification, endorsement, or official status. - -An unofficial Mod may use wording such as “Example Mod for NETfishing” if its -name and presentation remain clearly distinct and it displays an unofficial -notice. - -## Forks and redistributed code - -The GNU GPL permits forks and redistribution of covered code. A fork or -modified distribution must: - -- use a distinct product name; -- remove NETfishing and Woofmeow logos, icons, and official trade dress; -- avoid confusingly similar names, domains, package identifiers, and account - names; and -- clearly identify itself as independent and unofficial. - -These branding terms do not limit rights granted by the GPL to the software -code or lawful nominative, descriptive, comparative, or fair use. - -Permission for broader branding use must be obtained in writing from both -Alexander Sellite and Rheannon Eisworth. diff --git a/scripts/install-native-release.sh b/scripts/install-native-release.sh index ae3ff4d..0eda0fd 100755 --- a/scripts/install-native-release.sh +++ b/scripts/install-native-release.sh @@ -91,12 +91,39 @@ 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 + +manifest_value() { + local key="$1" + awk -F= -v key="${key}" '$1 == key {sub(/^[^=]*=/, ""); print; exit}' \ + "${payload_dir}/BUILD_INFO" +} +manifest_version="$(manifest_value manifest_version)" +case "${manifest_version}" in + 1|2) + required_notice_files=( + GPL-3.0-or-later.txt + ASSET-LICENSE.md + THIRD-PARTY-NOTICES.md + TRADEMARKS.md + CREDITS.md + ) + ;; + 3) + required_notice_files=( + GPL-3.0-or-later.txt + ASSET-LICENSE.md + ATTRIBUTION.md + TRADEMARKS.md + Tuffy-LICENSE.txt + Seattle-Avenue-LICENSE.txt + ) + ;; + *) + echo "Unsupported BUILD_INFO format." >&2 + exit 1 + ;; +esac +for filename in "${required_notice_files[@]}"; do if [[ ! -f "${payload_dir}/licenses/${filename}" ]]; then echo "Archive is missing required notice licenses/${filename}." >&2 exit 1 @@ -108,20 +135,10 @@ if [[ ! -f "${payload_dir}/SOURCE-CODE.md" ]]; then fi (cd -- "${payload_dir}" && sha256sum -c SHA256SUMS) -manifest_value() { - local key="$1" - awk -F= -v key="${key}" '$1 == key {sub(/^[^=]*=/, ""); print; exit}' \ - "${payload_dir}/BUILD_INFO" -} -manifest_version="$(manifest_value manifest_version)" game_version="$(manifest_value game_version)" game_commit="$(manifest_value game_commit)" packaging_commit="$(manifest_value packaging_commit)" platform="$(manifest_value platform)" -if [[ "${manifest_version}" != "1" && "${manifest_version}" != "2" ]]; then - echo "Unsupported BUILD_INFO format." >&2 - exit 1 -fi if [[ ! "${game_version}" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]; then echo "Invalid game version in BUILD_INFO." >&2 exit 1 @@ -130,7 +147,7 @@ if [[ ! "${game_commit}" =~ ^[0-9a-f]{40}$ ]]; then echo "Invalid game commit in BUILD_INFO." >&2 exit 1 fi -if [[ "${manifest_version}" == "2" \ +if [[ "${manifest_version}" != "1" \ && ! "${packaging_commit}" =~ ^[0-9a-f]{40}$ ]]; then echo "Invalid packaging commit in BUILD_INFO." >&2 exit 1 @@ -158,12 +175,7 @@ else 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 + for filename in "${required_notice_files[@]}"; do install -m 0444 "${payload_dir}/licenses/${filename}" \ "${release_stage}/licenses/${filename}" done diff --git a/scripts/package-native.sh b/scripts/package-native.sh index ad2cf5a..4d655ce 100755 --- a/scripts/package-native.sh +++ b/scripts/package-native.sh @@ -38,9 +38,10 @@ done for filename in \ GPL-3.0-or-later.txt \ ASSET-LICENSE.md \ - THIRD-PARTY-NOTICES.md \ + ATTRIBUTION.md \ TRADEMARKS.md \ - CREDITS.md; do + Tuffy-LICENSE.txt \ + Seattle-Avenue-LICENSE.txt; do if [[ ! -f "${dist_dir}/licenses/${filename}" ]]; then echo "Staged build is missing licenses/${filename}." >&2 exit 1 @@ -50,6 +51,10 @@ if ! grep -Fxq "game_version=${version}" "${dist_dir}/BUILD_INFO"; then echo "Staged BUILD_INFO does not match package version ${version}." >&2 exit 1 fi +if ! grep -Fxq "manifest_version=3" "${dist_dir}/BUILD_INFO"; then + echo "Staged BUILD_INFO does not use the current manifest format." >&2 + exit 1 +fi packaging_commit="$( awk -F= '$1 == "packaging_commit" {print tolower($2); exit}' \ "${dist_dir}/BUILD_INFO" @@ -91,9 +96,10 @@ install -d "${staging_dir}/${package_name}/licenses" for filename in \ GPL-3.0-or-later.txt \ ASSET-LICENSE.md \ - THIRD-PARTY-NOTICES.md \ + ATTRIBUTION.md \ TRADEMARKS.md \ - CREDITS.md; do + Tuffy-LICENSE.txt \ + Seattle-Avenue-LICENSE.txt; do install -m 0644 "${dist_dir}/licenses/${filename}" \ "${staging_dir}/${package_name}/licenses/${filename}" done diff --git a/scripts/stage-build.sh b/scripts/stage-build.sh index bfd405d..0ede1dc 100755 --- a/scripts/stage-build.sh +++ b/scripts/stage-build.sh @@ -1,14 +1,15 @@ #!/usr/bin/env bash set -euo pipefail -if [[ $# -ne 3 ]]; then - echo "Usage: $0 /path/to/server-linux-x86_64 GAME_VERSION GAME_COMMIT" >&2 +if [[ $# -ne 4 ]]; then + echo "Usage: $0 /path/to/server-linux-x86_64 GAME_VERSION GAME_COMMIT /path/to/netfishing" >&2 exit 2 fi source_dir="${1%/}" game_version="$2" game_commit="${3,,}" +game_repository="${4%/}" repository_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" destination_dir="${repository_dir}/dist" licenses_dir="${destination_dir}/licenses" @@ -28,6 +29,20 @@ if [[ ! "${game_commit}" =~ ^[0-9a-f]{40}$ ]]; then echo "GAME_COMMIT must be the full 40-character Git commit." >&2 exit 2 fi +if [[ ! -f "${game_repository}/project.godot" ]]; then + echo "The NETfishing game repository was not found: ${game_repository}" >&2 + exit 2 +fi +resolved_game_commit="$(git -C "${game_repository}" rev-parse HEAD)" +if [[ "${resolved_game_commit}" != "${game_commit}" ]]; then + echo "The NETfishing repository HEAD does not match GAME_COMMIT." >&2 + exit 2 +fi +if ! git -C "${game_repository}" diff --quiet \ + || ! git -C "${game_repository}" diff --cached --quiet; then + echo "The NETfishing repository must be clean before staging notices." >&2 + exit 1 +fi if [[ ! "${packaging_commit}" =~ ^[0-9a-f]{40}$ ]]; then echo "Could not resolve the dedicated packaging Git commit." >&2 exit 2 @@ -40,22 +55,25 @@ for filename in NETfishingServer.x86_64 NETfishingServer.pck; do fi done +install -d -m 0755 "${destination_dir}" 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" \ +install -m 0644 "${game_repository}/LICENSE" \ "${licenses_dir}/GPL-3.0-or-later.txt" -install -m 0644 "${repository_dir}/ASSET-LICENSE.md" \ +install -m 0644 "${game_repository}/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" \ +install -m 0644 "${game_repository}/docs/ATTRIBUTION.md" \ + "${licenses_dir}/ATTRIBUTION.md" +install -m 0644 "${game_repository}/TRADEMARKS.md" \ "${licenses_dir}/TRADEMARKS.md" -install -m 0644 "${repository_dir}/CREDITS.md" \ - "${licenses_dir}/CREDITS.md" +install -m 0644 "${game_repository}/ui/fonts/Tuffy-LICENSE.txt" \ + "${licenses_dir}/Tuffy-LICENSE.txt" +install -m 0644 "${game_repository}/ui/fonts/Seattle-Avenue-LICENSE.txt" \ + "${licenses_dir}/Seattle-Avenue-LICENSE.txt" cd -- "${destination_dir}" executable_sha256="$(sha256sum NETfishingServer.x86_64 | awk '{print $1}')" @@ -64,7 +82,7 @@ pck_sha256="$(sha256sum NETfishingServer.pck | awk '{print $1}')" apply_umask="$(umask)" umask 022 printf '%s\n' \ - "manifest_version=2" \ + "manifest_version=3" \ "game_version=${game_version}" \ "game_commit=${game_commit}" \ "packaging_commit=${packaging_commit}" \ @@ -93,8 +111,9 @@ sha256sum \ SOURCE-CODE.md \ licenses/GPL-3.0-or-later.txt \ licenses/ASSET-LICENSE.md \ - licenses/THIRD-PARTY-NOTICES.md \ + licenses/ATTRIBUTION.md \ licenses/TRADEMARKS.md \ - licenses/CREDITS.md \ + licenses/Tuffy-LICENSE.txt \ + licenses/Seattle-Avenue-LICENSE.txt \ > SHA256SUMS echo "Staged dedicated server build in ${destination_dir}"