mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	
		
			
	
	
		
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | #! /usr/bin/env python | ||
|  | 
 | ||
|  | import os | ||
|  | import re | ||
|  | import sys | ||
|  | 
 | ||
|  | try: | ||
|  |     __file__ | ||
|  | except NameError: | ||
|  |     __file__ = sys.argv[0] | ||
|  | 
 | ||
|  | tools = os.path.dirname(os.path.abspath(__file__)) | ||
|  | Doc = os.path.dirname(tools) | ||
|  | src = os.path.dirname(Doc) | ||
|  | patchlevel_h = os.path.join(src, "Include", "patchlevel.h") | ||
|  | 
 | ||
|  | # This won't pick out all #defines, but it will pick up the ones we | ||
|  | # care about. | ||
|  | rx = re.compile(r"\s*#define\s+([a-zA-Z][a-zA-Z_0-9]*)\s+([a-zA-Z_0-9]+)") | ||
|  | 
 | ||
|  | d = {} | ||
|  | f = open(patchlevel_h) | ||
|  | for line in f: | ||
|  |     m = rx.match(line) | ||
|  |     if m is not None: | ||
|  |         name, value = m.group(1, 2) | ||
|  |         d[name] = value | ||
|  | f.close() | ||
|  | 
 | ||
|  | release = "%s.%s" % (d["PY_MAJOR_VERSION"], d["PY_MINOR_VERSION"]) | ||
|  | micro = int(d["PY_MICRO_VERSION"]) | ||
|  | shortversion = release | ||
|  | if micro != 0: | ||
|  |     release += "." + str(micro) | ||
|  | level = d["PY_RELEASE_LEVEL"] | ||
|  | 
 | ||
|  | suffixes = { | ||
|  |     "PY_RELEASE_LEVEL_ALPHA": "a", | ||
|  |     "PY_RELEASE_LEVEL_BETA":  "b", | ||
|  |     "PY_RELEASE_LEVEL_GAMMA": "c", | ||
|  |     } | ||
|  | 
 | ||
|  | releaseinfo = "" | ||
|  | if level != "PY_RELEASE_LEVEL_FINAL": | ||
|  |     releaseinfo = suffixes[level] + str(int(d["PY_RELEASE_SERIAL"])) | ||
|  | 
 | ||
|  | def write_file(name, text): | ||
|  |     """Write text to a file if the file doesn't exist or if text | ||
|  |     differs from any existing content.""" | ||
|  |     if os.path.exists(name): | ||
|  |         f = open(name, "r") | ||
|  |         s = f.read() | ||
|  |         f.close() | ||
|  |         if s == text: | ||
|  |             return | ||
|  |     f = open(name, "w") | ||
|  |     f.write(text) | ||
|  |     f.close() | ||
|  | 
 | ||
|  | patchlevel_tex = os.path.join(Doc, "commontex", "patchlevel.tex") | ||
|  | 
 | ||
|  | write_file(patchlevel_tex, | ||
|  |            "%% This file is generated by ../tools/getversioninfo;\n" | ||
|  |            "%% do not edit manually.\n" | ||
|  |            "\n" | ||
|  |            "\\release{%s}\n" | ||
|  |            "\\setreleaseinfo{%s}\n" | ||
|  |            "\\setshortversion{%s}\n" | ||
|  |            % (release, releaseinfo, shortversion)) | ||
|  | 
 | ||
|  | print release + releaseinfo |