| 
									
										
										
										
											2003-09-27 22:07:05 +00:00
										 |  |  | #! /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)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-21 02:11:39 +00:00
										 |  |  | print(release + releaseinfo) |