[flashrom] [patch] add version information similar to 'uname -mrs'

Idwer Vollering vidwer at gmail.com
Wed Mar 24 23:38:45 CET 2010


2010/3/24 Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

> New version: Improve reliability of utsname detection.
>
> Add runtime and build environment info to the flashrom version message.
> This patch uses code from Idwer Vollering and Maciej Pijanka.
> I've added Makefile support and compiler version printing and
> restructured the code heavily.
> The code prints runtime system information and buildtime libpci
> information (I couldn't find any runtime libpci version function). Due
> to our ability to cross-compile flashrom, buildtime system information
> from "uname -mrs" doesn't help diagnosing any problems. That's why only
> libpci and gcc are buildtime info, and the rest is runtime info.
>
> Examples:
> With PCI support:
> flashrom v0.9.1-r971 on Linux 2.6.22.19-0.2-default (i686), built with
> libpci 2.2.6, GCC 4.2.1 (SUSE Linux)
> flashrom v0.9.1-r971 on Linux 2.6.22.19-0.2-default (i686), built with
> libpci 2.2.6, LLVM 1/clang 1
> flashrom v0.9.1-r972 on Linux 2.6.27.29-0.1-default (x86_64), built with
> libpci 3.0.1, GCC 4.3.2 [gcc-4_3-branch revision 141291]
>
> Without PCI support:
> flashrom v0.9.1-r971 on Linux 2.6.22.19-0.2-default (i686), built with GCC
> 4.2.1 (SUSE Linux)
> flashrom v0.9.1-r971 on Linux 2.6.22.19-0.2-default (i686), built with LLVM
> 1/clang 1
> flashrom v0.9.1-r972 on Linux 2.6.27.29-0.1-default (x86_64), built with
> GCC 4.3.2 [gcc-4_3-branch revision 141291]
>
> Reviews appreciated, especially about the compiler part. I think this
> can be valuable (e.g. if someone compiles with clang and triggers the
> clang/flashrom miscompile), but I'm unsure if/how this works on Windows
> and DOS. I tried to make it non-explosive, but...
>
>
> Output from "flashrom --version" for non-Linux platforms and unusual
> compilers would be appreciated.
>

flashrom v0.9.1-r973 on CYGWIN_NT-5.1 1.7.1(0.218/5/3) (i686), built with
GCC 4.3.4 20090804 (release) 1

flashrom v0.9.1-r973 on FreeBSD 8.0-RELEASE-p2 (i386), built with libpci
3.1.7, GCC 4.2.1 20070719  [FreeBSD]

>
> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>

Signed-off-by: Idwer Vollering <vidwer at gmail.com>


> Index: flashrom-uname/Makefile
> ===================================================================
> --- flashrom-uname/Makefile     (Revision 971)
> +++ flashrom-uname/Makefile     (Arbeitskopie)
> @@ -230,6 +230,8 @@
>  CLI_OBJS += print_wiki.o
>  endif
>
> +FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "UTSNAME := yes" .features &&
> printf "%s" "-D'HAVE_UTSNAME=1'")
> +
>  # We could use PULLED_IN_LIBS, but that would be ugly.
>  FEATURE_LIBS += $(shell LC_ALL=C grep -q "NEEDLIBZ := yes" .libdeps &&
> printf "%s" "-lz")
>
> @@ -308,12 +310,29 @@
>        @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o
> .featuretest $(FTDILIBS) $(LIBS) >/dev/null 2>&1 &&   \
>                ( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp
> ) ||        \
>                ( echo "not found."; echo "FTDISUPPORT := no" >>
> .features.tmp )
> +       @printf "Checking for utsname support... "
> +       @$(shell ( echo "#include <sys/utsname.h>";                \
> +                  echo "struct utsname osinfo;";          \
> +                  echo "int main(int argc, char **argv)"; \
> +                  echo "{ uname (&osinfo); return 0; }"; ) >
> .featuretest.c )
> +       @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o
> .featuretest >/dev/null 2>&1 &&       \
> +               ( echo "found."; echo "UTSNAME := yes" >> .features.tmp )
> ||    \
> +               ( echo "not found."; echo "UTSNAME := no" >> .features.tmp
> )
>        @$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm
> .features.tmp || mv .features.tmp .features
>        @rm -f .featuretest.c .featuretest
>  else
>  features: compiler
>        @echo "FEATURES := yes" > .features.tmp
> +       @printf "Checking for utsname support... "
> +       @$(shell ( echo "#include <sys/utsname.h>";                \
> +                  echo "struct utsname osinfo;";          \
> +                  echo "int main(int argc, char **argv)"; \
> +                  echo "{ uname (&osinfo); return 0; }"; ) >
> .featuretest.c )
> +       @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o
> .featuretest >/dev/null 2>&1 &&       \
> +               ( echo "found."; echo "UTSNAME := yes" >> .features.tmp )
> ||    \
> +               ( echo "not found."; echo "UTSNAME := no" >> .features.tmp
> )
>        @$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm
> .features.tmp || mv .features.tmp .features
> +       @rm -f .featuretest.c .featuretest
>  endif
>
>  install: $(PROGRAM)
> Index: flashrom-uname/flashrom.c
> ===================================================================
> --- flashrom-uname/flashrom.c   (Revision 971)
> +++ flashrom-uname/flashrom.c   (Arbeitskopie)
> @@ -27,6 +27,9 @@
>  #include <string.h>
>  #include <stdlib.h>
>  #include <getopt.h>
> +#if HAVE_UTSNAME == 1
> +#include <sys/utsname.h>
> +#endif
>  #include "flash.h"
>  #include "flashchips.h"
>
> @@ -1133,9 +1136,44 @@
>         printf("\n");
>  }
>
> +void print_sysinfo(void)
> +{
> +#if HAVE_UTSNAME == 1
> +       struct utsname osinfo;
> +       uname(&osinfo);
> +
> +       msg_ginfo(" on %s %s (%s)", osinfo.sysname, osinfo.release,
> +                 osinfo.machine);
> +#else
> +       msg_ginfo(" on unknown machine");
> +#endif
> +       msg_ginfo(", built with");
> +#if NEED_PCI == 1
> +#ifdef PCILIB_VERSION
> +       msg_ginfo(" libpci %s,", PCILIB_VERSION);
> +#else
> +       msg_ginfo(" unknown PCI library,");
> +#endif
> +#endif
> +#ifdef __clang__
> +       msg_ginfo(" LLVM %i/clang %i", __llvm__, __clang__);
> +#elif defined(__GNUC__)
> +       msg_ginfo(" GCC");
> +#ifdef __VERSION__
> +       msg_ginfo(" %s", __VERSION__);
> +#else
> +       msg_ginfo(" unknown version");
> +#endif
> +#else
> +       msg_ginfo(" unknown compiler");
> +#endif
> +       msg_ginfo("\n");
> +}
> +
>  void print_version(void)
>  {
> -       printf("flashrom v%s\n", flashrom_version);
> +       printf("flashrom v%s", flashrom_version);
> +       print_sysinfo();
>  }
>
>  int selfcheck(void)
>
>
> --
> http://www.hailfinger.org/
>
>
> _______________________________________________
> flashrom mailing list
> flashrom at flashrom.org
> http://www.flashrom.org/mailman/listinfo/flashrom
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20100324/1b3fa167/attachment.html>


More information about the flashrom mailing list