Modules/getbuildinfo.c
#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; } |