[v5,06/15] bugreport: add compiler info
diff mbox series

Message ID 20200124033436.81097-7-emilyshaffer@google.com
State New
Headers show
Series
  • add git-bugreport tool
Related show

Commit Message

Emily Shaffer Jan. 24, 2020, 3:34 a.m. UTC
From: Emily Shaffer <emilyshaffer@google.com>

To help pinpoint the source of a regression, it is useful to know some
info about the compiler which the user's Git client was built with. By
adding a generic get_compiler_info() in 'compat/' we can choose which
relevant information to share per compiler; to get started, let's
demonstrate the version of glibc if the user built with 'gcc'.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
---
 bugreport.c       |  5 +++++
 compat/compiler.h | 24 ++++++++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 compat/compiler.h

Comments

Martin Ågren Jan. 30, 2020, 10:21 p.m. UTC | #1
On Fri, 24 Jan 2020 at 04:40, <emilyshaffer@google.com> wrote:
> +#else
> +
> +static inline void get_compiler_info(struct strbuf *info)
> +{
> +       strbuf_addstr(info, "get_compiler_info() not implemented");

Maybe "no compiler info available" (or s/ available//, or
s/available/reported/), or something else more human-readable?


> +}
> +
> +#endif
> +
> +#endif /* COMPILER_H */

Martin
Emily Shaffer Feb. 4, 2020, 10:51 p.m. UTC | #2
On Thu, Jan 30, 2020 at 11:21:39PM +0100, Martin Ågren wrote:
> On Fri, 24 Jan 2020 at 04:40, <emilyshaffer@google.com> wrote:
> > +#else
> > +
> > +static inline void get_compiler_info(struct strbuf *info)
> > +{
> > +       strbuf_addstr(info, "get_compiler_info() not implemented");
> 
> Maybe "no compiler info available" (or s/ available//, or
> s/available/reported/), or something else more human-readable?

Hm. I envisioned the target audience for this as "Git developers" (and
that's why I didn't mark the unimplemented string for translation); Git
developers know exactly what "get_compiler_info() not implemented"
means. But I suppose it's just as easy to grep for one string as the
other.

I am hesitant to say "no info available" or "no info reported" when I'm
certain there is some environment variable set at build time which
contains the info we'd want to show here; it really is just a question
of some Git developer having put in the time to implement this function.

So, I think I will leave it. Thanks for your suggestions.

 - Emily
Martin Ågren Feb. 5, 2020, 7:47 p.m. UTC | #3
On Tue, 4 Feb 2020 at 23:51, Emily Shaffer <emilyshaffer@google.com> wrote:
>
> On Thu, Jan 30, 2020 at 11:21:39PM +0100, Martin Ågren wrote:
> > On Fri, 24 Jan 2020 at 04:40, <emilyshaffer@google.com> wrote:
> > > +#else
> > > +
> > > +static inline void get_compiler_info(struct strbuf *info)
> > > +{
> > > +       strbuf_addstr(info, "get_compiler_info() not implemented");
> >
> > Maybe "no compiler info available" (or s/ available//, or
> > s/available/reported/), or something else more human-readable?
>
> Hm. I envisioned the target audience for this as "Git developers" (and
> that's why I didn't mark the unimplemented string for translation); Git
> developers know exactly what "get_compiler_info() not implemented"
> means. But I suppose it's just as easy to grep for one string as the
> other.
>
> I am hesitant to say "no info available" or "no info reported" when I'm
> certain there is some environment variable set at build time which
> contains the info we'd want to show here; it really is just a question
> of some Git developer having put in the time to implement this function.
>
> So, I think I will leave it. Thanks for your suggestions.

Ok, that makes sense.

Martin

Patch
diff mbox series

diff --git a/bugreport.c b/bugreport.c
index 720c91e1bd..818ccb385c 100644
--- a/bugreport.c
+++ b/bugreport.c
@@ -4,6 +4,7 @@ 
 #include "strbuf.h"
 #include "time.h"
 #include "help.h"
+#include "compat/compiler.h"
 
 static void get_system_info(struct strbuf *sys_info)
 {
@@ -26,6 +27,10 @@  static void get_system_info(struct strbuf *sys_info)
 			    uname_info.release,
 			    uname_info.version,
 			    uname_info.machine);
+
+	strbuf_addstr(sys_info, "compiler info: ");
+	get_compiler_info(sys_info);
+	strbuf_complete_line(sys_info);
 }
 
 static const char * const bugreport_usage[] = {
diff --git a/compat/compiler.h b/compat/compiler.h
new file mode 100644
index 0000000000..bda5098e1b
--- /dev/null
+++ b/compat/compiler.h
@@ -0,0 +1,24 @@ 
+#ifndef COMPILER_H
+#define COMPILER_H
+
+#include "git-compat-util.h"
+#include "strbuf.h"
+
+#ifdef __GLIBC__
+#include <gnu/libc-version.h>
+
+static inline void get_compiler_info(struct strbuf *info)
+{
+	strbuf_addf(info, "glibc: %s", gnu_get_libc_version());
+}
+
+#else
+
+static inline void get_compiler_info(struct strbuf *info)
+{
+	strbuf_addstr(info, "get_compiler_info() not implemented");
+}
+
+#endif
+
+#endif /* COMPILER_H */