artiq/versioneer.py

81 lines
2.5 KiB
Python
Raw Normal View History

2015-11-09 11:33:38 +08:00
import os
import sys
VERSION_FILE = """
def get_version():
return "{version}"
def get_rev():
return "{rev}"
"""
2015-11-09 11:33:38 +08:00
def get_version():
2019-02-17 14:49:45 +08:00
override = os.getenv("VERSIONEER_OVERRIDE")
if override:
return override
srcroot = os.path.dirname(os.path.abspath(__file__))
with open(os.path.join(srcroot, "MAJOR_VERSION"), "r") as f:
version = f.read().strip()
2021-11-19 18:18:24 +08:00
version += ".0"
if os.path.exists(os.path.join(srcroot, "BETA")):
version += ".beta"
return version
def get_rev():
return os.getenv("VERSIONEER_REV", default="unknown")
def write_to_version_file(filename, version, rev):
2015-11-09 11:33:38 +08:00
os.unlink(filename)
with open(filename, "w") as f:
f.write(VERSION_FILE.format(version=version, rev=rev))
2015-11-09 11:33:38 +08:00
def get_cmdclass():
cmds = {}
2015-11-09 12:19:01 +08:00
# we override different "build_py" commands for both environments
if "setuptools" in sys.modules:
from setuptools.command.build_py import build_py as _build_py
else:
from distutils.command.build_py import build_py as _build_py
2015-11-09 11:33:38 +08:00
class cmd_build_py(_build_py):
def run(self):
version = get_version()
rev = get_rev()
2015-11-09 11:33:38 +08:00
_build_py.run(self)
target_versionfile = os.path.join(self.build_lib,
"artiq", "_version.py")
print("UPDATING %s" % target_versionfile)
write_to_version_file(target_versionfile, version, rev)
2015-11-09 11:33:38 +08:00
cmds["build_py"] = cmd_build_py
2017-06-05 13:27:26 +08:00
2015-11-09 11:33:38 +08:00
# we override different "sdist" commands for both environments
if "setuptools" in sys.modules:
from setuptools.command.sdist import sdist as _sdist
else:
from distutils.command.sdist import sdist as _sdist
class cmd_sdist(_sdist):
def run(self):
version = get_version()
self._versioneer_generated_version = version
self._versioneer_rev = get_rev()
2015-11-09 11:33:38 +08:00
# unless we update this, the command will keep using the old
# version
self.distribution.metadata.version = version
2015-11-09 11:33:38 +08:00
return _sdist.run(self)
def make_release_tree(self, base_dir, files):
_sdist.make_release_tree(self, base_dir, files)
target_versionfile = os.path.join(base_dir, "artiq", "_version.py")
2015-11-09 11:33:38 +08:00
print("UPDATING %s" % target_versionfile)
write_to_version_file(target_versionfile,
self._versioneer_generated_version,
self._versioneer_rev)
2015-11-09 11:33:38 +08:00
cmds["sdist"] = cmd_sdist
return cmds