[Skiboot] [PATCH v2 08/10] external/gard: Add version information
Cyril Bur
cyril.bur at au1.ibm.com
Wed Nov 11 15:40:02 AEDT 2015
Method for recording version is identical to pflash. Uses the current
skiboot version and any current repository state.
Signed-off-by: Cyril Bur <cyril.bur at au1.ibm.com>
---
external/gard/Makefile | 20 +++++++++++++++-----
external/gard/gard.c | 9 +++++++++
external/gard/rules.mk | 11 ++++++++++-
external/gard/test/results/02-usage.out | 1 +
external/gard/test/tests/02-usage | 2 ++
5 files changed, 37 insertions(+), 6 deletions(-)
diff --git a/external/gard/Makefile b/external/gard/Makefile
index c3dc6fb..2f21607 100644
--- a/external/gard/Makefile
+++ b/external/gard/Makefile
@@ -6,7 +6,7 @@ include ../../external/common/rules.mk
all: $(EXE)
.PHONY: links
-links: libflash ccan common
+links: libflash ccan common make_version.sh
libflash:
ln -sf ../../libflash .
@@ -17,17 +17,27 @@ ccan:
common:
ln -sf ../common .
-check: all
+make_version.sh:
+ ln -sf ../../make_version.sh
+
+#Rebuild version.o so that the the version always matches
+#what the test suite will get from ./make_version.sh
+check: version.o all
@ln -sf ../../test/test.sh test/test.sh
@test/test-gard
$(OBJS): | links arch_links
+.PHONY: VERSION-always
+.version: VERSION-always
+ @echo $(GARD_VERSION) > $@.tmp
+ @cmp -s $@ $@.tmp || cp $@.tmp $@
+ @rm -f $@.tmp
+
clean: arch_clean
- rm -f $(OBJS) $(EXE) *.o *.d
+ rm -f $(OBJS) $(EXE) *.o *.d .version .version.tmp
distclean: clean
rm -f *.c~ *.h~ *.sh~ Makefile~ config.mk~ libflash/*.c~ libflash/*.h~
- rm -f libflash ccan .version .version.tmp
- rm -f common io.h make_version.sh
+ rm -f libflash ccan common io.h make_version.sh
diff --git a/external/gard/gard.c b/external/gard/gard.c
index b656f40..e41047f 100644
--- a/external/gard/gard.c
+++ b/external/gard/gard.c
@@ -44,6 +44,9 @@
#define SYSFS_MTD_PATH "/sys/class/mtd/"
#define FLASH_GARD_PART "GUARD"
+/* Full gard version number (possibly includes gitid). */
+extern const char version[];
+
struct gard_ctx {
bool ecc;
uint32_t f_size;
@@ -637,10 +640,16 @@ struct {
{ "clear", "Clear GARD records", do_clear },
};
+static void print_version(void)
+{
+ printf("Open-Power GARD tool %s\n", version);
+}
+
static void usage(const char *progname)
{
unsigned int i;
+ print_version();
fprintf(stderr, "Usage: %s [-a -e -f <file> -p] <command> [<args>]\n\n",
progname);
fprintf(stderr, "-e --ecc\n\tForce reading/writing with ECC bytes.\n\n");
diff --git a/external/gard/rules.mk b/external/gard/rules.mk
index bef8fbb..a78a401 100644
--- a/external/gard/rules.mk
+++ b/external/gard/rules.mk
@@ -1,7 +1,7 @@
.DEFAULT_GOAL := all
override CFLAGS += -O2 -Wall -Werror -I.
-OBJS = gard.o
+OBJS = version.o gard.o
OBJS += libflash/file.o libflash/libflash.o libflash/libffs.o libflash/ecc.o libflash/blocklevel.o
OBJS += common/arch_flash.o
EXE = gard
@@ -13,6 +13,15 @@ sbindir = $(prefix)/sbin
datadir = $(prefix)/share
mandir = $(datadir)/man
+GARD_VERSION ?= $(shell ./make_version.sh $(EXE))
+
+version.c: make_version.sh .version
+ @(if [ "a$(GARD_VERSION)" = "a" ]; then \
+ echo "#error You need to set GARD_VERSION environment variable" > $@ ;\
+ else \
+ echo "const char version[] = \"$(GARD_VERSION)\";" ;\
+ fi) > $@
+
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
diff --git a/external/gard/test/results/02-usage.out b/external/gard/test/results/02-usage.out
index e69de29..c862167 100644
--- a/external/gard/test/results/02-usage.out
+++ b/external/gard/test/results/02-usage.out
@@ -0,0 +1 @@
+Open-Power GARD tool VERSION
diff --git a/external/gard/test/tests/02-usage b/external/gard/test/tests/02-usage
index 768f5d0..45e5e02 100644
--- a/external/gard/test/tests/02-usage
+++ b/external/gard/test/tests/02-usage
@@ -5,6 +5,8 @@ if [ "$?" -ne 1 ] ; then
fail_test
fi
+strip_version_from_result "gard"
+
diff_with_result
pass_test
--
2.6.2
More information about the Skiboot
mailing list