#include "Python.h" | |
#ifndef DONT_HAVE_STDIO_H | |
#include <stdio.h> | |
#endif | |
#ifndef DATE | |
#ifdef __DATE__ | |
#define DATE __DATE__ | |
#else | |
#define DATE "xx/xx/xx" | |
#endif | |
#endif | |
#ifndef TIME | |
#ifdef __TIME__ | |
#define TIME __TIME__ | |
#else | |
#define TIME "xx:xx:xx" | |
#endif | |
#endif | |
/* on unix, SVNVERSION is passed on the command line. | |
* on Windows, the string is interpolated using | |
* subwcrev.exe | |
*/ | |
#ifndef SVNVERSION | |
#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 + sizeof(HGVERSION) + | |
((sizeof(HGTAG) > sizeof(HGBRANCH)) ? | |
sizeof(HGTAG) : sizeof(HGBRANCH))]; | |
const char *revision = _Py_hgversion(); | |
const char *sep = *revision ? ":" : ""; | |
const char *hgid = _Py_hgidentifier(); | |
if (!(*hgid)) | |
hgid = "default"; | |
PyOS_snprintf(buildinfo, sizeof(buildinfo), | |
"%s%s%s, %.20s, %.9s", hgid, sep, revision, | |
DATE, TIME); | |
return buildinfo; | |
} | |
const char * | |
_Py_svnversion(void) | |
{ | |
/* the following string can be modified by subwcrev.exe */ | |
static const char svnversion[] = SVNVERSION; | |
if (svnversion[0] != '$') | |
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; | |
} |