]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
Added 'version' command to print when the bcachefs tool was built
authorTim Schlueter <schlueter.tim@linux.com>
Wed, 14 Feb 2018 09:28:24 +0000 (01:28 -0800)
committerTim Schlueter <schlueter.tim@linux.com>
Sat, 26 May 2018 21:32:30 +0000 (14:32 -0700)
Makefile
bcachefs.8
bcachefs.c
cmd_version.c [new file with mode: 0644]
cmds.h

index 267d48510084bee064a29571f538d4171041a62a..57ed873e884118d4a0d67616c5a5b809ce20bc59 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -13,9 +13,12 @@ CFLAGS+=-std=gnu89 -O2 -g -MMD -Wall                         \
        -DNO_BCACHEFS_CHARDEV                                   \
        -DNO_BCACHEFS_FS                                        \
        -DNO_BCACHEFS_SYSFS                                     \
+       -DVERSION_STRING='"$(VERSION)"'                         \
        $(EXTRA_CFLAGS)
 LDFLAGS+=$(CFLAGS)
 
+VERSION?=$(shell git describe --long --dirty 2>/dev/null || echo 0.1-nogit)
+
 CC_VERSION=$(shell $(CC) -v 2>&1|grep -E '(gcc|clang) version')
 
 ifneq (,$(findstring gcc,$(CC_VERSION)))
@@ -56,6 +59,16 @@ DEPS=$(SRCS:.c=.d)
 OBJS=$(SRCS:.c=.o)
 bcachefs: $(OBJS)
 
+# If the version string differs from the last build, update the last version
+ifneq ($(VERSION),$(shell cat .version 2>/dev/null))
+.PHONY: .version
+endif
+.version:
+       echo '$(VERSION)' > $@
+
+# Rebuild the 'version' command any time the version string changes
+cmd_version.o : .version
+
 .PHONY: install
 install: bcachefs
        mkdir -p $(DESTDIR)$(ROOT_SBINDIR)
index 08dd005fd8b9780bb1fd8b51f18543dd373ba2ae..f3fd101167655c4b4be4953ecc5fa63ad8d7f901 100644 (file)
@@ -1,5 +1,5 @@
-.Dd February 9, 2018
-.Dt BCACHEFS 8
+.Dd May 26, 2018
+.Dt BCACHEFS 8 SMM
 .Os
 .Sh NAME
 .Nm bcachefs
@@ -87,6 +87,11 @@ Dump filesystem metadata to a qcow2 image
 .It Ic list
 List filesystem metadata in textual form
 .El
+.Ss Miscellaneous commands
+.Bl -tag -width 18n -compact
+.It Ic version
+Display the version of the invoked bcachefs tool
+.El
 .Sh Superblock commands
 .Bl -tag -width Ds
 .It Nm Ic format Oo Ar options Oc Ar devices\ ...
@@ -310,5 +315,10 @@ Verbose mode
 List mode
 .El
 .El
+.Sh Miscellaneous commands
+.Bl -tag -width Ds
+.It Nm Ic version
+Display the version of the invoked bcachefs tool
+.El
 .Sh EXIT STATUS
 .Ex -std
index 1c56ead736394cb0ea3f1bf9249b69b35bd41539..910e0b16fadfe44d63da2e55ecfd7c13044b6232 100644 (file)
@@ -70,7 +70,10 @@ static void usage(void)
             "Debug:\n"
             "These commands work on offline, unmounted filesystems\n"
             "  dump                 Dump filesystem metadata to a qcow2 image\n"
-            "  list                 List filesystem metadata in textual form\n");
+            "  list                 List filesystem metadata in textual form\n"
+            "\n"
+            "Miscellaneous:\n"
+            "  version              Display the version of the invoked bcachefs tool\n");
 }
 
 static char *full_cmd;
@@ -144,6 +147,8 @@ int main(int argc, char *argv[])
 
        char *cmd = pop_cmd(&argc, argv);
 
+       if (!strcmp(cmd, "version"))
+               return cmd_version(argc, argv);
        if (!strcmp(cmd, "format"))
                return cmd_format(argc, argv);
        if (!strcmp(cmd, "show-super"))
diff --git a/cmd_version.c b/cmd_version.c
new file mode 100644 (file)
index 0000000..3fb4b6e
--- /dev/null
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#include "cmds.h"
+
+int cmd_version(int argc, char *argv[])
+{
+       printf("bcachefs tool version %s\n", VERSION_STRING);
+       return 0;
+}
diff --git a/cmds.h b/cmds.h
index 258a823d04669c7ef4fe13838c347ff5f58daa4d..3ebd12f805e01e6cb87e0cf2aa06f5d4759336eb 100644 (file)
--- a/cmds.h
+++ b/cmds.h
@@ -43,4 +43,6 @@ int cmd_list(int argc, char *argv[]);
 int cmd_migrate(int argc, char *argv[]);
 int cmd_migrate_superblock(int argc, char *argv[]);
 
+int cmd_version(int argc, char *argv[]);
+
 #endif /* _CMDS_H */