Merge build identification to default branch.

This commit is contained in:
Georg Brandl 2011-03-06 10:26:32 +01:00
commit fe09a54280
8 changed files with 659 additions and 495 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_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 */

View File

@ -1311,7 +1311,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:

View File

@ -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])

View File

@ -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)"' \

View File

@ -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;
}

View File

@ -1599,6 +1599,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",

1077
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -810,6 +810,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