"""Generate header file with macros defining MicroPython version info.This script works with Python 2.6, 2.7, 3.3 and 3.4."""from __future__ import print_functionimport sysimport osimport datetimeimport subprocessdef get_version_info_from_git():# Python 2.6 doesn't have check_output, so check for thattry:subprocess.check_outputsubprocess.check_callexcept AttributeError:return None# Note: git describe doesn't work if no tag is availabletry:git_tag = subprocess.check_output(["git", "describe", "--dirty", "--always", "--tags"], stderr=subprocess.STDOUT, universal_newlines=True).strip()except subprocess.CalledProcessError as er:if er.returncode == 128:# git exit code of 128 means no repository foundreturn Nonegit_tag = ""except OSError:return Nonetry:git_hash = subprocess.check_output(["git", "rev-parse", "--short", "HEAD"], stderr=subprocess.STDOUT, universal_newlines=True).strip()except subprocess.CalledProcessError:git_hash = "unknown"except OSError:return Nonetry:# Check if there are any modified files.subprocess.check_call(["git", "diff", "--no-ext-diff", "--quiet", "--exit-code"], stderr=subprocess.STDOUT)# Check if there are any staged files.subprocess.check_call(["git", "diff-index", "--cached", "--quiet", "HEAD", "--"], stderr=subprocess.STDOUT)except subprocess.CalledProcessError:git_hash += "-dirty"except OSError:return None# Try to extract MicroPython version from git tagver = git_tag.split("-")[0].split(".")return git_tag, git_hash, verdef get_version_info_from_docs_conf():with open(os.path.join(os.path.dirname(sys.argv[0]), "..", "conf.py")) as f:for line in f:if line.startswith("version = release = '"):ver = line.strip().split(" = ")[2].strip("'")git_tag = "v" + verver = ver.split(".")if len(ver) == 2:ver.append("0")return git_tag, "<no hash>", verreturn Nonedef make_version_header(filename):# Get version info using git, with fallback to docs/conf.pyinfo = get_version_info_from_git()if info is None:info = get_version_info_from_docs_conf()git_tag, git_hash, ver = infoif len(ver) < 3:ver = ("0", "0", "0")version_string = git_hashelse:version_string = ".".join(ver)# Generate the file with the git and version infofile_data = """\// This file was generated by py/makeversionhdr.py#define MICROPY_GIT_TAG "%s"#define MICROPY_GIT_HASH "%s"#define MICROPY_BUILD_DATE "%s"#define MICROPY_VERSION_MAJOR (%s)#define MICROPY_VERSION_MINOR (%s)#define MICROPY_VERSION_MICRO (%s)#define MICROPY_VERSION_STRING "%s"#define MICROPY_FULL_VERSION_INFO ("Adafruit CircuitPython " MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE "; " MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME)""" % (git_tag, git_hash, datetime.date.today().strftime("%Y-%m-%d"),ver[0].replace('v', ''), ver[1], ver[2], version_string)# Check if the file contents changed from last timewrite_file = Trueif os.path.isfile(filename):with open(filename, 'r') as f:existing_data = f.read()if existing_data == file_data:write_file = False# Only write the file if we need toif write_file:with open(filename, 'w') as f:f.write(file_data)if __name__ == "__main__":make_version_header(sys.argv[1])
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。