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 /* XXX Only unix build process has been tested */ 24 #ifndef GITVERSION 25 #define GITVERSION "" 26 #endif 27 #ifndef GITTAG 28 #define GITTAG "" 29 #endif 30 #ifndef GITBRANCH 31 #define GITBRANCH "" 32 #endif 33 34 const char * 35 Py_GetBuildInfo(void) 36 { 37 static char buildinfo[50 + sizeof(GITVERSION) + 38 ((sizeof(GITTAG) > sizeof(GITBRANCH)) ? 39 sizeof(GITTAG) : sizeof(GITBRANCH))]; 40 const char *revision = _Py_gitversion(); 41 const char *sep = *revision ? ":" : ""; 42 const char *gitid = _Py_gitidentifier(); 43 if (!(*gitid)) 44 gitid = "default"; 45 PyOS_snprintf(buildinfo, sizeof(buildinfo), 46 "%s%s%s, %.20s, %.9s", gitid, sep, revision, 47 DATE, TIME); 48 return buildinfo; 49 } 50 51 const char * 52 _Py_gitversion(void) 53 { 54 return GITVERSION; 55 } 56 57 const char * 58 _Py_gitidentifier(void) 59 { 60 const char *gittag, *gitid; 61 gittag = GITTAG; 62 if ((*gittag) && strcmp(gittag, "undefined") != 0) 63 gitid = gittag; 64 else 65 gitid = GITBRANCH; 66 return gitid; 67 } 68