getbuildinfo.c 1.24 KB
Newer Older
1
#include "Python.h"
2

3
#ifndef DONT_HAVE_STDIO_H
4
#include <stdio.h>
5
#endif
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

#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

23 24 25 26 27 28 29 30 31 32 33
/* XXX Only unix build process has been tested */
#ifndef HGVERSION
#define HGVERSION ""
#endif
#ifndef HGTAG
#define HGTAG ""
#endif
#ifndef HGBRANCH
#define HGBRANCH ""
#endif

34
const char *
35
Py_GetBuildInfo(void)
36
{
37 38 39
    static char buildinfo[50 + sizeof(HGVERSION) +
                          ((sizeof(HGTAG) > sizeof(HGBRANCH)) ?
                           sizeof(HGTAG) : sizeof(HGBRANCH))];
40
    const char *revision = _Py_hgversion();
41
    const char *sep = *revision ? ":" : "";
42 43 44
    const char *hgid = _Py_hgidentifier();
    if (!(*hgid))
        hgid = "default";
45
    PyOS_snprintf(buildinfo, sizeof(buildinfo),
46
                  "%s%s%s, %.20s, %.9s", hgid, sep, revision,
47 48
                  DATE, TIME);
    return buildinfo;
49
}
50

51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
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;
}