generate __version__.py during the buck build

Summary:
The chg code now always attempts to import __version__.py
Previously this was not generated during buck-based builds.  This updates the
buck build to generate a __version__.py file now.

Reviewed By: ryanmce

Differential Revision: D8601650

fbshipit-source-id: 59bd0605394feeabcc41766a7e55cbdd253f07ad
This commit is contained in:
Adam Simpkins 2018-06-25 15:37:51 -07:00 committed by Facebook Github Bot
parent fa3024b2ce
commit 71dc89f250
2 changed files with 49 additions and 0 deletions

48
gen_version.py Executable file
View File

@ -0,0 +1,48 @@
#!/usr/bin/env python
# Copyright 2004-present Facebook. All Rights Reserved.
import argparse
import errno
import hashlib
import os
import struct
MAIN_VERSION = "4.4.2"
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--version", required=True)
ap.add_argument("--release", required=True)
ap.add_argument("--revision", required=True)
ap.add_argument("output_path")
args = ap.parse_args()
if args.version and args.release:
sub_version = "%s_%s_%s" % (args.version, args.release, args.revision[:8])
elif args.revision:
sub_version = args.revision[:8]
else:
# Buck does not pass in any build data info in dev builds
sub_version = "dev"
version = "%s_%s" % (MAIN_VERSION, sub_version)
versionb = version.encode("ascii")
versionhash = struct.unpack(">Q", hashlib.sha1(versionb).digest()[:8])[0]
contents = (
"# auto-generated by the build\n" 'version = "%s"\n' "versionhash = %s\n"
) % (version, versionhash)
try:
output_dir = os.path.dirname(args.output_path)
os.makedirs(output_dir)
except OSError as ex:
if ex.errno != errno.EEXIST:
raise
with open(args.output_path, "w") as f:
f.write(contents)
main()

View File

@ -217,6 +217,7 @@ Prevent adding new files in the root directory accidentally.
Makefile
README.rst
TARGETS
gen_version.py
hg
hgeditor
hgweb.cgi