Make fio include the git version in the version output
Makes it easier in bug reporting, don't have to ask people what
they are running...
Here's to you, Kep.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Conflicts:
Makefile
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/FIO-VERSION-GEN b/FIO-VERSION-GEN
new file mode 100755
index 0000000..d812255
--- /dev/null
+++ b/FIO-VERSION-GEN
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+GVF=FIO-VERSION-FILE
+DEF_VER=v2.0.5.GIT
+
+LF='
+'
+
+# First see if there is a version file (included in release tarballs),
+# then try git-describe, then default.
+if test -f version
+then
+ VN=$(cat version) || VN="$DEF_VER"
+elif test -d .git -o -f .git &&
+ VN=$(git describe --match "fio-[0-9]*" --abbrev=4 HEAD 2>/dev/null) &&
+ case "$VN" in
+ *$LF*) (exit 1) ;;
+ v[0-9]*)
+ git update-index -q --refresh
+ test -z "$(git diff-index --name-only HEAD --)" ||
+ VN="$VN-dirty" ;;
+ esac
+then
+ VN=$VN
+else
+ VN="$DEF_VER"
+fi
+
+VN=$(expr "$VN" : v*'\(.*\)')
+
+if test -r $GVF
+then
+ VC=$(sed -e 's/^FIO_VERSION = //' <$GVF)
+else
+ VC=unset
+fi
+test "$VN" = "$VC" || {
+ echo >&2 "FIO_VERSION = $VN"
+ echo "FIO_VERSION = $VN" >$GVF
+}
+
+
diff --git a/Makefile b/Makefile
index 673107f..252b0a9 100644
--- a/Makefile
+++ b/Makefile
@@ -93,9 +93,18 @@
mandir = $(prefix)/man
endif
-all: .depend $(PROGS) $(SCRIPTS)
+all: .depend $(PROGS) $(SCRIPTS) FORCE
-.c.o: .depend
+.PHONY: all install clean
+.PHONY: FORCE cscope
+
+FIO-VERSION-FILE: FORCE
+ @$(SHELL_PATH) ./FIO-VERSION-GEN
+-include FIO-VERSION-FILE
+
+CFLAGS += -DFIO_VERSION='"$(FIO_VERSION)"'
+
+.c.o: .depend FORCE
$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(CPPFLAGS) $<
t/stest: $(T_SMALLOC_OBJS)
@@ -110,15 +119,15 @@
.depend: $(SOURCE)
$(QUIET_DEP)$(CC) -MM $(CFLAGS) $(CPPFLAGS) $(SOURCE) 1> .depend
-$(PROGS): .depend
+$(PROGS): .depend FORCE
-clean:
- -rm -f .depend $(OBJS) $(T_OBJS) $(PROGS) $(T_PROGS) core.* core
+clean: FORCE
+ -rm -f .depend $(OBJS) $(T_OBJS) $(PROGS) $(T_PROGS) core.* core FIO-VERSION-FILE
cscope:
@cscope -b -R
-install: $(PROGS) $(SCRIPTS)
+install: $(PROGS) $(SCRIPTS) FORCE
$(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
$(INSTALL) $(PROGS) $(SCRIPTS) $(DESTDIR)$(bindir)
$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1
diff --git a/init.c b/init.c
index 69ed30c..1eea800 100644
--- a/init.c
+++ b/init.c
@@ -25,14 +25,7 @@
#include "fio_version.h"
-#if FIO_PATCH > 0
-const char fio_version_string[] = __fio_stringify(FIO_MAJOR) "." \
- __fio_stringify(FIO_MINOR) "." \
- __fio_stringify(FIO_PATCH);
-#else
-const char fio_version_string[] = __fio_stringify(FIO_MAJOR) "." \
- __fio_stringify(FIO_MINOR);
-#endif
+const char fio_version_string[] = FIO_VERSION;
#define FIO_RANDSEED (0xb1899bedUL)
@@ -1188,7 +1181,7 @@
static void usage(const char *name)
{
- printf("fio %s\n", fio_version_string);
+ printf("%s\n", fio_version_string);
printf("%s [options] [job options] <job file(s)>\n", name);
printf(" --debug=options\tEnable debug logging. May be one/more of:\n"
"\t\t\tprocess,file,io,mem,blktrace,verify,random,parse,\n"
@@ -1419,7 +1412,7 @@
break;
case 'v':
if (!cur_client) {
- log_info("fio %s\n", fio_version_string);
+ log_info("%s\n", fio_version_string);
do_exit++;
}
break;
@@ -1645,7 +1638,7 @@
}
if (!terse_output)
- log_info("fio %s\n", fio_version_string);
+ log_info("%s\n", fio_version_string);
return 0;
}