mirror of
https://github.com/freedoom/freedoom.git
synced 2025-09-01 13:25:46 -04:00
This at least lays some groundwork for doing so, by gathering archive members by wildcard expansion rather than zip's -r parameter (which uses file system order -- essentially random), combined with LC_ALL=C so that locale sorting orders don't matter either. zip's -X option is also used so no Unix metadata (UIDs, GIDs, modes) are saved in the archive. To really complete the effect, faketime should be used to deal with file timestamps. Requiring faketime to do `make dist` seems too extreme to me, so I'm leaving it out, but the general idea is to run a command such as: faketime -f "$(TZ=UTC date -d "@$(git show -q --format=format:%ct)" \ "+%Y-%m-%d %H:%M:%S")" \ make dist This does also assume that zip's default compression algorithm never changes (eg, from DEFLATE to BZip2 or LZMA), or never releases an improved version (eg, a better DEFLATE). It's not perfect, but this should be good enough.
47 lines
1 KiB
Python
Executable file
47 lines
1 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
import os
|
|
import sys
|
|
|
|
# Documentation files included with distributions.
|
|
|
|
GAME_NAME=sys.argv[1]
|
|
FILES=sys.argv[2:]
|
|
|
|
# Run a command, displaying it before executing it.
|
|
|
|
def run_command(command):
|
|
print("> " + command)
|
|
os.system(command)
|
|
|
|
# Find the version to build:
|
|
|
|
version = os.getenv("VERSION")
|
|
|
|
if version is None:
|
|
sys.stderr.write("Version not specified for release\n")
|
|
sys.exit(1)
|
|
if version[0] is 'v':
|
|
# Strip the leading 'v' from versioning
|
|
version = version[1:]
|
|
|
|
path = os.path.dirname(FILES[0])
|
|
basename = os.path.basename(FILES[0])
|
|
|
|
base_dir = GAME_NAME + "-" + version
|
|
full_path = path + "/" + base_dir
|
|
|
|
# Create directory and add files
|
|
|
|
run_command("mkdir {}".format(full_path))
|
|
for file in FILES:
|
|
run_command("cp {} {}".format(file, full_path))
|
|
|
|
orig_dir = os.getcwd()
|
|
|
|
os.chdir(path)
|
|
run_command("rm -f {}.zip".format(base_dir))
|
|
run_command("zip -X {0}.zip {0} {0}/*".format(base_dir))
|
|
run_command("rm -rf {}".format(base_dir))
|
|
os.chdir(orig_dir)
|