| 1 | #include "Python.h"
|
|---|
| 2 |
|
|---|
| 3 | #ifndef DONT_HAVE_STDIO_H
|
|---|
| 4 | #include <stdio.h>
|
|---|
| 5 | #endif
|
|---|
| 6 |
|
|---|
| 7 | #ifndef DATE
|
|---|
| 8 | #ifdef __DATE__
|
|---|
| 9 | #define DATE __DATE__
|
|---|
| 10 | #else
|
|---|
| 11 | #define DATE "xx/xx/xx"
|
|---|
| 12 | #endif
|
|---|
| 13 | #endif
|
|---|
| 14 |
|
|---|
| 15 | #ifndef TIME
|
|---|
| 16 | #ifdef __TIME__
|
|---|
| 17 | #define TIME __TIME__
|
|---|
| 18 | #else
|
|---|
| 19 | #define TIME "xx:xx:xx"
|
|---|
| 20 | #endif
|
|---|
| 21 | #endif
|
|---|
| 22 |
|
|---|
| 23 | /* on unix, SVNVERSION is passed on the command line.
|
|---|
| 24 | * on Windows, the string is interpolated using
|
|---|
| 25 | * subwcrev.exe
|
|---|
| 26 | */
|
|---|
| 27 | #ifndef SVNVERSION
|
|---|
| 28 | #define SVNVERSION "$WCRANGE$$WCMODS?M:$"
|
|---|
| 29 | #endif
|
|---|
| 30 |
|
|---|
| 31 | /* XXX Only unix build process has been tested */
|
|---|
| 32 | #ifndef HGVERSION
|
|---|
| 33 | #define HGVERSION ""
|
|---|
| 34 | #endif
|
|---|
| 35 | #ifndef HGTAG
|
|---|
| 36 | #define HGTAG ""
|
|---|
| 37 | #endif
|
|---|
| 38 | #ifndef HGBRANCH
|
|---|
| 39 | #define HGBRANCH ""
|
|---|
| 40 | #endif
|
|---|
| 41 |
|
|---|
| 42 | const char *
|
|---|
| 43 | Py_GetBuildInfo(void)
|
|---|
| 44 | {
|
|---|
| 45 | static char buildinfo[50 + sizeof(HGVERSION) +
|
|---|
| 46 | ((sizeof(HGTAG) > sizeof(HGBRANCH)) ?
|
|---|
| 47 | sizeof(HGTAG) : sizeof(HGBRANCH))];
|
|---|
| 48 | const char *revision = _Py_hgversion();
|
|---|
| 49 | const char *sep = *revision ? ":" : "";
|
|---|
| 50 | const char *hgid = _Py_hgidentifier();
|
|---|
| 51 | if (!(*hgid))
|
|---|
| 52 | hgid = "default";
|
|---|
| 53 | PyOS_snprintf(buildinfo, sizeof(buildinfo),
|
|---|
| 54 | "%s%s%s, %.20s, %.9s", hgid, sep, revision,
|
|---|
| 55 | DATE, TIME);
|
|---|
| 56 | return buildinfo;
|
|---|
| 57 | }
|
|---|
| 58 |
|
|---|
| 59 | const char *
|
|---|
| 60 | _Py_svnversion(void)
|
|---|
| 61 | {
|
|---|
| 62 | /* the following string can be modified by subwcrev.exe */
|
|---|
| 63 | static const char svnversion[] = SVNVERSION;
|
|---|
| 64 | if (svnversion[0] != '$')
|
|---|
| 65 | return svnversion; /* it was interpolated, or passed on command line */
|
|---|
| 66 | return "Unversioned directory";
|
|---|
| 67 | }
|
|---|
| 68 |
|
|---|
| 69 | const char *
|
|---|
| 70 | _Py_hgversion(void)
|
|---|
| 71 | {
|
|---|
| 72 | return HGVERSION;
|
|---|
| 73 | }
|
|---|
| 74 |
|
|---|
| 75 | const char *
|
|---|
| 76 | _Py_hgidentifier(void)
|
|---|
| 77 | {
|
|---|
| 78 | const char *hgtag, *hgid;
|
|---|
| 79 | hgtag = HGTAG;
|
|---|
| 80 | if ((*hgtag) && strcmp(hgtag, "tip") != 0)
|
|---|
| 81 | hgid = hgtag;
|
|---|
| 82 | else
|
|---|
| 83 | hgid = HGBRANCH;
|
|---|
| 84 | return hgid;
|
|---|
| 85 | }
|
|---|