• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 *
Py_GetBuildInfo(void)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 *
_Py_svnversion(void)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 *
_Py_hgversion(void)70 _Py_hgversion(void)
71 {
72     return HGVERSION;
73 }
74 
75 const char *
_Py_hgidentifier(void)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 }
86