From 8d62f506ee0f2a62459964e703a9e53b6a3ae6e3 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Wed, 11 Jun 2025 15:30:15 -0400 Subject: [PATCH 1/3] makejson: Use `.startswith`, not `is` More specifically, the use of `is` here appears to be a bug, since that operator tests for operator identity. The correct operator to use is `==`, but in this context using `.startswith()` better expresses what we're actually checking. --- scripts/makejson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/makejson b/scripts/makejson index 4334b623..aa843b83 100755 --- a/scripts/makejson +++ b/scripts/makejson @@ -34,7 +34,7 @@ json_file = os.getenv("JSON") if version is None: sys.stderr.write("Version is not specified for release\n") sys.exit(1) -if version[0] is "v": +if version.startswith("v"): # Strip the leading "v" from versioning version = version[1:] From f6b286f19591caa32a5f912796ccdbea92018c0d Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Wed, 11 Jun 2025 15:32:28 -0400 Subject: [PATCH 2/3] makejson: Add SHA3, BLAKE2b, deprecate MD5 The MD5 hash algorithm has been deprecated industry-wide for many years now and we should stop using it. As a replacement, add SHA3 and BLAKE2b. We keep the MD5 hash for now but with a TODO to remove entirely it in a future release. --- scripts/makejson | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/makejson b/scripts/makejson index aa843b83..0179bc99 100755 --- a/scripts/makejson +++ b/scripts/makejson @@ -42,14 +42,15 @@ if json_file is None: sys.stderr.write("JSON file not specified!\n") sys.exit(1) -with open("wads/freedoom1.wad", "rb") as f: - iwads["freedoom1.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() +for filename in iwads: + with open(os.path.join("wads", filename), "rb") as f: + data = f.read() + # TODO: MD5 is long-deprecated throughout the industry; this hash + # will be removed in a future version. + iwads[filename]["md5"] = hashlib.md5(data).hexdigest() + iwads[filename]["sha3"] = hashlib.sha3_512(data).hexdigest() + iwads[filename]["blake2b"] = hashlib.blake2b(data).hexdigest() -with open("wads/freedoom2.wad", "rb") as f: - iwads["freedoom2.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() - -with open("wads/freedm.wad", "rb") as f: - iwads["freedm.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() iwads["freedoom1.wad"]["url"] = ( "https://github.com/freedoom/freedoom/releases/download/v" From 7dae0bc53276f0701a05b9c29b4a24d7a17156d2 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Wed, 11 Jun 2025 15:34:18 -0400 Subject: [PATCH 3/3] makejson: De-dupe some code The `freedoom1.wad` and `freedoom2.wad` files are shipped in the same .zip, so we can just construct the URL once and be done with it. --- scripts/makejson | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/scripts/makejson b/scripts/makejson index 0179bc99..755720f8 100755 --- a/scripts/makejson +++ b/scripts/makejson @@ -51,6 +51,7 @@ for filename in iwads: iwads[filename]["sha3"] = hashlib.sha3_512(data).hexdigest() iwads[filename]["blake2b"] = hashlib.blake2b(data).hexdigest() + iwads[filename]["version"] = version iwads["freedoom1.wad"]["url"] = ( "https://github.com/freedoom/freedoom/releases/download/v" @@ -59,15 +60,7 @@ iwads["freedoom1.wad"]["url"] = ( + version + ".zip" ) -iwads["freedoom1.wad"]["version"] = version -iwads["freedoom2.wad"]["url"] = ( - "https://github.com/freedoom/freedoom/releases/download/v" - + version - + "/freedoom-" - + version - + ".zip" -) -iwads["freedoom2.wad"]["version"] = version +iwads["freedoom2.wad"]["url"] = iwads["freedoom1.wad"]["url"] iwads["freedm.wad"]["url"] = ( "https://github.com/freedoom/freedoom/releases/download/v" + version @@ -75,7 +68,6 @@ iwads["freedm.wad"]["url"] = ( + version + ".zip" ) -iwads["freedm.wad"]["version"] = version with open(json_file, "w") as f: json.dump(iwads, f, indent=2, sort_keys=True)