mirror of https://github.com/mpv-player/mpv
build: add version.py for generating version.h
version.h is essential for building, and its generation was done by a shell script. Strictly speaking, python should in general be more portable (windows), and would be better for the upcoming meson build to simply just execute a python script. version.py has some small differences with version.sh which shouldn't matter but they are noted below. - version.sh accepted several arguments that seemed useless (like --cwd). These were removed from version.py. - version.py takes either no arguments (prints the version) or it takes exactly one argument specifying the complete path of where the header should be generated. - version.sh attempted to read a file named "snapshot_version". The comments noted that this was for "daily tarball snapshots". Such a file does not exist in the source tree, and it's not really clear that anyone actually uses this. This logic was removed from version.py. - version.py reads the SOURCE_DATE_EPOCH environment variable. Some distros use this for reproducible builds. Technically you could also just disable the build date but this is only a couple of extra lines and maybe it's prettier than UNKNOWN. - version.py also doesn't attempt to display timezone information in the build date. It only shows UTC time.
This commit is contained in:
parent
c478a1efba
commit
37549b6faa
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
|
||||
from datetime import datetime,timezone
|
||||
from shutil import which
|
||||
from subprocess import check_output
|
||||
|
||||
srcdir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||
git_dir = os.path.join(srcdir, ".git")
|
||||
git = which('git')
|
||||
|
||||
if git and os.path.exists(git_dir):
|
||||
version = check_output([git, "-C", srcdir, "describe", "--always", "--tags",
|
||||
"--dirty"], encoding="UTF-8")
|
||||
version = version[1:].strip()
|
||||
else:
|
||||
version_path = os.path.join(srcdir, "VERSION")
|
||||
with open(version_path, "r") as f:
|
||||
version = f.readline().strip()
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print(version)
|
||||
sys.exit()
|
||||
|
||||
date = datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
|
||||
if date == "":
|
||||
date = datetime.now(timezone.utc).astimezone()
|
||||
date_str = date.strftime("%a %b %d %I:%M:%S %Y")
|
||||
|
||||
NEW_REVISION = "#define VERSION \"" + version + "\"\n"
|
||||
OLD_REVISION = ""
|
||||
BUILDDATE = "#define BUILDDATE \"" + date_str + "\"\n"
|
||||
MPVCOPYRIGHT = "#define MPVCOPYRIGHT \"Copyright \u00A9 2000-2021 mpv/MPlayer/mplayer2 projects\"" + "\n"
|
||||
|
||||
if os.path.isfile(sys.argv[1]):
|
||||
with open(sys.argv[1], "r") as f:
|
||||
OLD_REVISION = f.readline()
|
||||
|
||||
if NEW_REVISION != OLD_REVISION:
|
||||
with open(sys.argv[1], "w", encoding="utf-8") as f:
|
||||
f.writelines([NEW_REVISION, BUILDDATE, MPVCOPYRIGHT])
|
||||
|
Loading…
Reference in New Issue