[Python-checkins] commit of r41765 - in python/trunk: Makefile.pre.in Modules/getbuildinfo.c

barry.warsaw python-checkins at python.org
Sun Dec 18 23:46:36 CET 2005


Author: barry.warsaw
Date: Sun Dec 18 23:46:35 2005
New Revision: 41765

Modified:
   python/trunk/Makefile.pre.in
   python/trunk/Modules/getbuildinfo.c
Log:
Handle a couple of use cases discussed in python-dev w.r.t. calculating the
Subversion revision number.

First, in an svn export, there will be no .svn directory, so use an in-file
$Revision$ keyword string with the keyword chrome stripped off.

Also, use $(srcdir) in the Makefile.pre.in to handle the case where Python is
build outside the source tree.


Modified: python/trunk/Makefile.pre.in
==============================================================================
--- python/trunk/Makefile.pre.in	(original)
+++ python/trunk/Makefile.pre.in	Sun Dec 18 23:46:35 2005
@@ -349,12 +349,9 @@
 		$(SIGNAL_OBJS) \
 		$(MODOBJS) \
 		$(srcdir)/Modules/getbuildinfo.c
-	if test -d .svn; then \
-		svnversion . >buildno; \
-	elif test -f buildno; then \
-		expr `cat buildno` + 1 >buildno1; \
-		mv -f buildno1 buildno; \
-	else echo 1 >buildno; fi
+	if test -d $(srcdir)/.svn; then \
+		svnversion $(srcdir) >buildno; \
+	fi
 
 # Build static library
 # avoid long command lines, same as LIBRARY_OBJS
@@ -446,7 +443,11 @@
 # Special rules for object files
 
 Modules/getbuildinfo.o: $(srcdir)/Modules/getbuildinfo.c buildno
-	$(CC) -c $(PY_CFLAGS) -DBUILD=\"`cat buildno`\" -o $@ $(srcdir)/Modules/getbuildinfo.c
+	if test -f buildno; then \
+		$(CC) -c $(PY_CFLAGS) -DBUILD=\"`cat buildno`\" -o $@ $(srcdir)/Modules/getbuildinfo.c ;\
+	else \
+		$(CC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/getbuildinfo.c ;\
+	fi
 
 Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
 	$(CC) -c $(PY_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \

Modified: python/trunk/Modules/getbuildinfo.c
==============================================================================
--- python/trunk/Modules/getbuildinfo.c	(original)
+++ python/trunk/Modules/getbuildinfo.c	Sun Dec 18 23:46:35 2005
@@ -21,20 +21,38 @@
 #endif
 
 #ifndef BUILD
-#define BUILD "0"
+#define BUILD "$Revision$"
 #endif
 
 const char *
-Py_GetBuildInfo(void)
+Py_GetBuildNumber(void)
 {
-	static char buildinfo[50];
-	PyOS_snprintf(buildinfo, sizeof(buildinfo),
-		      "%s, %.20s, %.9s", BUILD, DATE, TIME);
-	return buildinfo;
+	static char buildno[20];
+	static int buildno_okay;
+
+	if (!buildno_okay) {
+		char *build = BUILD;
+		int len = strlen(build);
+
+		if (len > 13 &&
+		    !strncmp(build, "$Revision: ", 11) &&
+		    !strcmp(build + len - 2, " $"))
+		{
+			memcpy(buildno, build + 11, len - 13);
+		}
+		else {
+			memcpy(buildno, build, 19);
+		}
+		buildno_okay = 1;
+	}
+	return buildno;
 }
 
 const char *
-Py_GetBuildNumber(void)
+Py_GetBuildInfo(void)
 {
-	return BUILD;
+	static char buildinfo[50];
+	PyOS_snprintf(buildinfo, sizeof(buildinfo),
+		      "#%s, %.20s, %.9s", Py_GetBuildNumber(), DATE, TIME);
+	return buildinfo;
 }


More information about the Python-checkins mailing list