aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2011-03-05 20:51:24 +0100
committerGeorg Brandl <georg@python.org>2011-03-05 20:51:24 +0100
commit1ca2e7965c52525684bb517401c513158a8af989 (patch)
treebb4d18504b81ba63fc7b46ebf05d839b51338dd7
parent7b50c2c6aed2754f205835420d7450f2e401ebfd (diff)
downloadcpython3-1ca2e7965c52525684bb517401c513158a8af989.tar.gz
Commit the hg build identification patch from the pymigr repo.
-rw-r--r--Include/pythonrun.h2
-rw-r--r--Makefile.pre.in10
-rw-r--r--Modules/getbuildinfo.c37
-rw-r--r--Python/sysmodule.c3
-rwxr-xr-xconfigure58
-rw-r--r--configure.in15
6 files changed, 120 insertions, 5 deletions
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index 0c380e6be9..96a0e232f9 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -120,6 +120,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);
/* Internal -- various one-time initializations */
PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 7788cba62f..211a70354f 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -35,6 +35,9 @@ LINKCC= @LINKCC@
AR= @AR@
RANLIB= @RANLIB@
SVNVERSION= @SVNVERSION@
+HGVERSION= @HGVERSION@
+HGTAG= @HGTAG@
+HGBRANCH= @HGBRANCH@
GNULD= @GNULD@
@@ -525,7 +528,12 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
$(SIGNAL_OBJS) \
$(MODOBJS) \
$(srcdir)/Modules/getbuildinfo.c
- $(CC) -c $(PY_CFLAGS) -DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" -o $@ $(srcdir)/Modules/getbuildinfo.c
+ $(CC) -c $(PY_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_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
diff --git a/Modules/getbuildinfo.c b/Modules/getbuildinfo.c
index 3bac1c50c4..c70126d584 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 e33047308d..f85cc55ad1 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1358,6 +1358,9 @@ _PySys_Init(void)
SET_SYS_FROM_STRING("subversion",
Py_BuildValue("(UUU)", "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",
diff --git a/configure b/configure
index cc86b96926..1ef57d06bc 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Revision: 88561 .
+# From configure.in Revision.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.68 for python 3.1.
#
@@ -639,6 +639,10 @@ LN
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
+HAS_HG
+HGBRANCH
+HGTAG
+HGVERSION
SVNVERSION
ARFLAGS
AR
@@ -5089,6 +5093,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 d1833be836..3c6bd6f1a9 100644
--- a/configure.in
+++ b/configure.in
@@ -785,6 +785,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