Merge build identification to 3.2 branch.

This commit is contained in:
Georg Brandl 2011-03-06 10:13:00 +01:00
commit 13039c87f1
8 changed files with 128 additions and 7 deletions

View File

@ -182,6 +182,8 @@ PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
PyAPI_FUNC(const char *) _Py_svnversion(void); PyAPI_FUNC(const char *) _Py_svnversion(void);
PyAPI_FUNC(const char *) Py_SubversionRevision(void); PyAPI_FUNC(const char *) Py_SubversionRevision(void);
PyAPI_FUNC(const char *) Py_SubversionShortBranch(void); PyAPI_FUNC(const char *) Py_SubversionShortBranch(void);
PyAPI_FUNC(const char *) _Py_hgidentifier(void);
PyAPI_FUNC(const char *) _Py_hgversion(void);
#endif #endif
/* Internal -- various one-time initializations */ /* Internal -- various one-time initializations */

View File

@ -1392,7 +1392,9 @@ def _sys_version(sys_version=None):
name = 'CPython' name = 'CPython'
builddate = builddate + ' ' + buildtime 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 # sys.subversion was added in Python 2.5
_, branch, revision = sys.subversion _, branch, revision = sys.subversion
else: else:

View File

@ -57,11 +57,13 @@ class PlatformTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.save_version = sys.version self.save_version = sys.version
self.save_subversion = sys.subversion self.save_subversion = sys.subversion
self.save_mercurial = sys._mercurial
self.save_platform = sys.platform self.save_platform = sys.platform
def tearDown(self): def tearDown(self):
sys.version = self.save_version sys.version = self.save_version
sys.subversion = self.save_subversion sys.subversion = self.save_subversion
sys._mercurial = self.save_mercurial
sys.platform = self.save_platform sys.platform = self.save_platform
def test_sys_version(self): def test_sys_version(self):
@ -109,10 +111,12 @@ class PlatformTest(unittest.TestCase):
sys_versions.items(): sys_versions.items():
sys.version = version_tag sys.version = version_tag
if subversion is None: if subversion is None:
if hasattr(sys, "_mercurial"):
del sys._mercurial
if hasattr(sys, "subversion"): if hasattr(sys, "subversion"):
del sys.subversion del sys.subversion
else: else:
sys.subversion = subversion sys._mercurial = subversion
if sys_platform is not None: if sys_platform is not None:
sys.platform = sys_platform sys.platform = sys_platform
self.assertEqual(platform.python_implementation(), info[0]) self.assertEqual(platform.python_implementation(), info[0])

View File

@ -37,6 +37,9 @@ RANLIB= @RANLIB@
SVNVERSION= @SVNVERSION@ SVNVERSION= @SVNVERSION@
SOABI= @SOABI@ SOABI= @SOABI@
LDVERSION= @LDVERSION@ LDVERSION= @LDVERSION@
HGVERSION= @HGVERSION@
HGTAG= @HGTAG@
HGBRANCH= @HGBRANCH@
GNULD= @GNULD@ GNULD= @GNULD@
@ -552,7 +555,12 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
$(SIGNAL_OBJS) \ $(SIGNAL_OBJS) \
$(MODOBJS) \ $(MODOBJS) \
$(srcdir)/Modules/getbuildinfo.c $(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 Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ $(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \

View File

@ -28,15 +28,28 @@
#define SVNVERSION "$WCRANGE$$WCMODS?M:$" #define SVNVERSION "$WCRANGE$$WCMODS?M:$"
#endif #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 * const char *
Py_GetBuildInfo(void) Py_GetBuildInfo(void)
{ {
static char buildinfo[50]; static char buildinfo[50];
const char *revision = Py_SubversionRevision(); const char *revision = _Py_hgversion();
const char *sep = *revision ? ":" : ""; const char *sep = *revision ? ":" : "";
const char *branch = Py_SubversionShortBranch(); const char *hgid = _Py_hgidentifier();
if (!(*hgid))
hgid = "default";
PyOS_snprintf(buildinfo, sizeof(buildinfo), PyOS_snprintf(buildinfo, sizeof(buildinfo),
"%s%s%s, %.20s, %.9s", branch, sep, revision, "%s%s%s, %.20s, %.9s", hgid, sep, revision,
DATE, TIME); DATE, TIME);
return buildinfo; return buildinfo;
} }
@ -50,3 +63,21 @@ _Py_svnversion(void)
return svnversion; /* it was interpolated, or passed on command line */ return svnversion; /* it was interpolated, or passed on command line */
return "Unversioned directory"; 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;
}

View File

@ -1600,6 +1600,9 @@ _PySys_Init(void)
SET_SYS_FROM_STRING("subversion", SET_SYS_FROM_STRING("subversion",
Py_BuildValue("(sss)", "CPython", branch, Py_BuildValue("(sss)", "CPython", branch,
svn_revision)); svn_revision));
SET_SYS_FROM_STRING("_mercurial",
Py_BuildValue("(szz)", "CPython", _Py_hgidentifier(),
_Py_hgversion()));
SET_SYS_FROM_STRING("dont_write_bytecode", SET_SYS_FROM_STRING("dont_write_bytecode",
PyBool_FromLong(Py_DontWriteBytecodeFlag)); PyBool_FromLong(Py_DontWriteBytecodeFlag));
SET_SYS_FROM_STRING("api_version", SET_SYS_FROM_STRING("api_version",

58
configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh #! /bin/sh
# From configure.in Revision: 88430 . # From configure.in Revision.
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.68 for python 3.2. # Generated by GNU Autoconf 2.68 for python 3.2.
# #
@ -644,6 +644,10 @@ LN
INSTALL_DATA INSTALL_DATA
INSTALL_SCRIPT INSTALL_SCRIPT
INSTALL_PROGRAM INSTALL_PROGRAM
HAS_HG
HGBRANCH
HGTAG
HGVERSION
SVNVERSION SVNVERSION
ARFLAGS ARFLAGS
AR AR
@ -5166,6 +5170,58 @@ else
SVNVERSION="echo Unversioned directory" SVNVERSION="echo Unversioned directory"
fi 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 case $MACHDEP in
bsdos*|hp*|HP*) bsdos*|hp*|HP*)
# install -d does not work on BSDI or HP-UX # install -d does not work on BSDI or HP-UX

View File

@ -817,6 +817,21 @@ else
SVNVERSION="echo Unversioned directory" SVNVERSION="echo Unversioned directory"
fi 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 case $MACHDEP in
bsdos*|hp*|HP*) bsdos*|hp*|HP*)
# install -d does not work on BSDI or HP-UX # install -d does not work on BSDI or HP-UX