diff options
-rw-r--r-- | Include/pythonrun.h | 2 | ||||
-rwxr-xr-x | Lib/platform.py | 4 | ||||
-rw-r--r-- | Lib/test/test_platform.py | 6 | ||||
-rw-r--r-- | Makefile.pre.in | 10 | ||||
-rw-r--r-- | Modules/getbuildinfo.c | 37 | ||||
-rw-r--r-- | Python/sysmodule.c | 3 | ||||
-rwxr-xr-x | configure | 58 | ||||
-rw-r--r-- | configure.in | 15 |
8 files changed, 128 insertions, 7 deletions
diff --git a/Include/pythonrun.h b/Include/pythonrun.h index 86da6e0..bbcae73 100644 --- a/Include/pythonrun.h +++ b/Include/pythonrun.h @@ -182,6 +182,8 @@ PyAPI_FUNC(const char *) Py_GetBuildInfo(void); PyAPI_FUNC(const char *) _Py_svnversion(void); PyAPI_FUNC(const char *) Py_SubversionRevision(void); PyAPI_FUNC(const char *) Py_SubversionShortBranch(void); +PyAPI_FUNC(const char *) _Py_hgidentifier(void); +PyAPI_FUNC(const char *) _Py_hgversion(void); #endif /* Internal -- various one-time initializations */ diff --git a/Lib/platform.py b/Lib/platform.py index b9bc303..de81b63 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -1392,7 +1392,9 @@ def _sys_version(sys_version=None): name = 'CPython' builddate = builddate + ' ' + buildtime - if hasattr(sys, 'subversion'): + if hasattr(sys, '_mercurial'): + _, branch, revision = sys._mercurial + elif hasattr(sys, 'subversion'): # sys.subversion was added in Python 2.5 _, branch, revision = sys.subversion else: diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index 7dd7eef..ec134a1 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -57,11 +57,13 @@ class PlatformTest(unittest.TestCase): def setUp(self): self.save_version = sys.version self.save_subversion = sys.subversion + self.save_mercurial = sys._mercurial self.save_platform = sys.platform def tearDown(self): sys.version = self.save_version sys.subversion = self.save_subversion + sys._mercurial = self.save_mercurial sys.platform = self.save_platform def test_sys_version(self): @@ -109,10 +111,12 @@ class PlatformTest(unittest.TestCase): sys_versions.items(): sys.version = version_tag if subversion is None: + if hasattr(sys, "_mercurial"): + del sys._mercurial if hasattr(sys, "subversion"): del sys.subversion else: - sys.subversion = subversion + sys._mercurial = subversion if sys_platform is not None: sys.platform = sys_platform self.assertEqual(platform.python_implementation(), info[0]) diff --git a/Makefile.pre.in b/Makefile.pre.in index 24d364d..d665939 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -37,6 +37,9 @@ RANLIB= @RANLIB@ SVNVERSION= @SVNVERSION@ SOABI= @SOABI@ LDVERSION= @LDVERSION@ +HGVERSION= @HGVERSION@ +HGTAG= @HGTAG@ +HGBRANCH= @HGBRANCH@ GNULD= @GNULD@ @@ -552,7 +555,12 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ $(SIGNAL_OBJS) \ $(MODOBJS) \ $(srcdir)/Modules/getbuildinfo.c - $(CC) -c $(PY_CORE_CFLAGS) -DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" -o $@ $(srcdir)/Modules/getbuildinfo.c + $(CC) -c $(PY_CORE_CFLAGS) \ + -DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" \ + -DHGVERSION="\"`LC_ALL=C $(HGVERSION)`\"" \ + -DHGTAG="\"`LC_ALL=C $(HGTAG)`\"" \ + -DHGBRANCH="\"`LC_ALL=C $(HGBRANCH)`\"" \ + -o $@ $(srcdir)/Modules/getbuildinfo.c Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile $(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ diff --git a/Modules/getbuildinfo.c b/Modules/getbuildinfo.c index 3bac1c5..c70126d 100644 --- a/Modules/getbuildinfo.c +++ b/Modules/getbuildinfo.c @@ -28,15 +28,28 @@ #define SVNVERSION "$WCRANGE$$WCMODS?M:$" #endif +/* XXX Only unix build process has been tested */ +#ifndef HGVERSION +#define HGVERSION "" +#endif +#ifndef HGTAG +#define HGTAG "" +#endif +#ifndef HGBRANCH +#define HGBRANCH "" +#endif + const char * Py_GetBuildInfo(void) { static char buildinfo[50]; - const char *revision = Py_SubversionRevision(); + const char *revision = _Py_hgversion(); const char *sep = *revision ? ":" : ""; - const char *branch = Py_SubversionShortBranch(); + const char *hgid = _Py_hgidentifier(); + if (!(*hgid)) + hgid = "default"; PyOS_snprintf(buildinfo, sizeof(buildinfo), - "%s%s%s, %.20s, %.9s", branch, sep, revision, + "%s%s%s, %.20s, %.9s", hgid, sep, revision, DATE, TIME); return buildinfo; } @@ -50,3 +63,21 @@ _Py_svnversion(void) return svnversion; /* it was interpolated, or passed on command line */ return "Unversioned directory"; } + +const char * +_Py_hgversion(void) +{ + return HGVERSION; +} + +const char * +_Py_hgidentifier(void) +{ + const char *hgtag, *hgid; + hgtag = HGTAG; + if ((*hgtag) && strcmp(hgtag, "tip") != 0) + hgid = hgtag; + else + hgid = HGBRANCH; + return hgid; +} diff --git a/Python/sysmodule.c b/Python/sysmodule.c index de51155..ea095d2 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1600,6 +1600,9 @@ _PySys_Init(void) SET_SYS_FROM_STRING("subversion", Py_BuildValue("(sss)", "CPython", branch, svn_revision)); + SET_SYS_FROM_STRING("_mercurial", + Py_BuildValue("(szz)", "CPython", _Py_hgidentifier(), + _Py_hgversion())); SET_SYS_FROM_STRING("dont_write_bytecode", PyBool_FromLong(Py_DontWriteBytecodeFlag)); SET_SYS_FROM_STRING("api_version", @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 88430 . +# From configure.in Revision. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for python 3.2. # @@ -644,6 +644,10 @@ LN INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM +HAS_HG +HGBRANCH +HGTAG +HGVERSION SVNVERSION ARFLAGS AR @@ -5166,6 +5170,58 @@ else SVNVERSION="echo Unversioned directory" fi + + + +# Extract the first word of "hg", so it can be a program name with args. +set dummy hg; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_HAS_HG+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$HAS_HG"; then + ac_cv_prog_HAS_HG="$HAS_HG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_HAS_HG="found" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_HAS_HG" && ac_cv_prog_HAS_HG="not-found" +fi +fi +HAS_HG=$ac_cv_prog_HAS_HG +if test -n "$HAS_HG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAS_HG" >&5 +$as_echo "$HAS_HG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test $HAS_HG = found +then + HGVERSION="hg id -i \$(srcdir)" + HGTAG="hg id -t \$(srcdir)" + HGBRANCH="hg id -b \$(srcdir)" +else + HGVERSION="" + HGTAG="" + HGBRANCH="" +fi + case $MACHDEP in bsdos*|hp*|HP*) # install -d does not work on BSDI or HP-UX diff --git a/configure.in b/configure.in index 6f4ffa5..aaeb9bc 100644 --- a/configure.in +++ b/configure.in @@ -817,6 +817,21 @@ else SVNVERSION="echo Unversioned directory" fi +AC_SUBST(HGVERSION) +AC_SUBST(HGTAG) +AC_SUBST(HGBRANCH) +AC_CHECK_PROG(HAS_HG, hg, found, not-found) +if test $HAS_HG = found +then + HGVERSION="hg id -i \$(srcdir)" + HGTAG="hg id -t \$(srcdir)" + HGBRANCH="hg id -b \$(srcdir)" +else + HGVERSION="" + HGTAG="" + HGBRANCH="" +fi + case $MACHDEP in bsdos*|hp*|HP*) # install -d does not work on BSDI or HP-UX |