From 17748b8d5466f761d70e3665afc2b89c07c6f325 Mon Sep 17 00:00:00 2001 From: Adric Norris Date: Wed, 31 Aug 2016 16:09:14 -0500 Subject: [PATCH 1/2] Preliminary support for reporting build platform Add preliminary support for detection of the build plaform, and reporting of same with the `git version --build-options' command. This can be useful for bug reporting, to distinguish between 32 and 64-bit builds for example. The current implementation can only distinguish between x86 and x86_64. This will be extended in future patches. In addition, all 32-bit variants (i686, i586, etc.) are collapsed into `x86'. An example of the output is: $ git version --build-options git version 2.9.3.windows.2.826.g06c0f2f sizeof-long: 4 machine: x86_64 The label of `machine' was chosen so the new information will approximate the output of `uname -m'. Signed-off-by: Adric Norris --- help.c | 2 ++ help.h | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/help.c b/help.c index 88a3aeaeb9..df1332fa3c 100644 --- a/help.c +++ b/help.c @@ -390,6 +390,7 @@ const char *help_unknown_cmd(const char *cmd) int cmd_version(int argc, const char **argv, const char *prefix) { + static char build_platform[] = GIT_BUILD_PLATFORM; int build_options = 0; const char * const usage[] = { N_("git version []"), @@ -413,6 +414,7 @@ int cmd_version(int argc, const char **argv, const char *prefix) if (build_options) { printf("sizeof-long: %d\n", (int)sizeof(long)); + printf("machine: %s\n", build_platform); /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ } return 0; diff --git a/help.h b/help.h index b21d7c94e8..42dd985219 100644 --- a/help.h +++ b/help.h @@ -33,3 +33,16 @@ extern void list_commands(unsigned int colopts, struct cmdnames *main_cmds, stru */ extern void help_unknown_ref(const char *ref, const char *cmd, const char *error); #endif /* HELP_H */ + +/* + * identify build platform + */ +#ifndef GIT_BUILD_PLATFORM + #if defined __x86__ || defined __i386__ || defined __i586__ || defined __i686__ + #define GIT_BUILD_PLATFORM "x86" + #elif defined __x86_64__ + #define GIT_BUILD_PLATFORM "x86_64" + #else + #define GIT_BUILD_PLATFORM "unknown" + #endif +#endif From 45de5cd1df021e47352eb29eabca9363d6c1d947 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 9 Dec 2016 17:48:24 +0100 Subject: [PATCH 2/2] version --build-options: report commit, too, if possible In particular when local tags are used (or tags that are pushed to some fork) to build Git, it is very hard to figure out from which particular revision a particular Git executable was built. Let's just report that in our build options. We need to be careful, though, to report when the current commit cannot be determined, e.g. when building from a tarball without any associated Git repository. Signed-off-by: Johannes Schindelin --- Makefile | 4 +++- help.c | 2 ++ version.c | 1 + version.h | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ee9d5eb11e..aa8d6e7638 100644 --- a/Makefile +++ b/Makefile @@ -1889,7 +1889,9 @@ builtin/help.sp builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \ version.sp version.s version.o: GIT-VERSION-FILE GIT-USER-AGENT version.sp version.s version.o: EXTRA_CPPFLAGS = \ '-DGIT_VERSION="$(GIT_VERSION)"' \ - '-DGIT_USER_AGENT=$(GIT_USER_AGENT_CQ_SQ)' + '-DGIT_USER_AGENT=$(GIT_USER_AGENT_CQ_SQ)' \ + '-DGIT_BUILT_FROM_COMMIT="$(shell git rev-parse -q --verify HEAD || \ + echo "(unknown)")"' $(BUILT_INS): git$X $(QUIET_BUILT_IN)$(RM) $@ && \ diff --git a/help.c b/help.c index df1332fa3c..6ebea66578 100644 --- a/help.c +++ b/help.c @@ -413,6 +413,8 @@ int cmd_version(int argc, const char **argv, const char *prefix) printf("git version %s\n", git_version_string); if (build_options) { + printf("built from commit: %s\n", + git_built_from_commit_string); printf("sizeof-long: %d\n", (int)sizeof(long)); printf("machine: %s\n", build_platform); /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ diff --git a/version.c b/version.c index 6106a8098c..41b718c29e 100644 --- a/version.c +++ b/version.c @@ -3,6 +3,7 @@ #include "strbuf.h" const char git_version_string[] = GIT_VERSION; +const char git_built_from_commit_string[] = GIT_BUILT_FROM_COMMIT; const char *git_user_agent(void) { diff --git a/version.h b/version.h index 6911a4f155..7c62e80577 100644 --- a/version.h +++ b/version.h @@ -2,6 +2,7 @@ #define VERSION_H extern const char git_version_string[]; +extern const char git_built_from_commit_string[]; const char *git_user_agent(void); const char *git_user_agent_sanitized(void);