summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Schlueter <schlueter.tim@linux.com>2018-02-14 01:28:24 -0800
committerTim Schlueter <schlueter.tim@linux.com>2018-05-26 14:32:30 -0700
commita5d94ce0a883dd2be3ee227772213097fed3ffc4 (patch)
tree2bae827568b3cd9d1682e4a65b5562f7cd5f2780
parent62e4df2a38081f62fd1bd657459b7ffb2d4f522c (diff)
Added 'version' command to print when the bcachefs tool was built
-rw-r--r--Makefile13
-rw-r--r--bcachefs.814
-rw-r--r--bcachefs.c7
-rw-r--r--cmd_version.c9
-rw-r--r--cmds.h2
5 files changed, 42 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 267d4851..57ed873e 100644
--- 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)
diff --git a/bcachefs.8 b/bcachefs.8
index 08dd005f..f3fd1011 100644
--- a/bcachefs.8
+++ b/bcachefs.8
@@ -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
diff --git a/bcachefs.c b/bcachefs.c
index 1c56ead7..910e0b16 100644
--- a/bcachefs.c
+++ b/bcachefs.c
@@ -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
index 00000000..3fb4b6e2
--- /dev/null
+++ b/cmd_version.c
@@ -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 258a823d..3ebd12f8 100644
--- 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 */