import os import sys VERSION_FILE = """ def get_version(): return "{version}" """ def get_version(): 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() version += ".0" if os.path.exists(os.path.join(srcroot, "BETA")): version += ".beta" return version def write_to_version_file(filename, version): os.unlink(filename) with open(filename, "w") as f: f.write(VERSION_FILE.format(version=version)) def get_cmdclass(): cmds = {} # 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 class cmd_build_py(_build_py): def run(self): version = get_version() _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) cmds["build_py"] = cmd_build_py # 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 # unless we update this, the command will keep using the old # version self.distribution.metadata.version = version 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") print("UPDATING %s" % target_versionfile) write_to_version_file(target_versionfile, self._versioneer_generated_version) cmds["sdist"] = cmd_sdist return cmds