From 079e6ab647649d03f9eb6feda33802b3d2fa8317 Mon Sep 17 00:00:00 2001 From: Tim Schlueter Date: Sun, 13 Jan 2019 15:01:12 -0800 Subject: [PATCH 1/2] Only run pkg-config once in Makefile, added EXTRA linker vars * Only run the pkg-config --cflags command once (instead of every .c file) * Added EXTRA_LDFLAGS and EXTRA_LDLIBS vars * Removed tabs in the middle of commands to make it easier to manually re-run commands manually (e.g. if a compilation fails) * Replaced `cd dir; git command` in favor of $(shell git -C dir command) * Minor version format change: dirty trees just append "+" instead of "-dirty" and if git describe fails, it now sets the version to "v0.1-nogit" Also, don't ignore .gitignore files. --- .gitignore | 3 +++ Makefile | 28 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 7e4ee7a3..57664356 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ bcachefs tags cscope* bcachefs-tools + +# dot-files that we don't want to ignore +!.gitignore diff --git a/Makefile b/Makefile index 06a826c1..d64553ea 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,9 @@ CFLAGS+=-std=gnu89 -O2 -g -MMD -Wall \ -DNO_BCACHEFS_SYSFS \ -DVERSION_STRING='"$(VERSION)"' \ $(EXTRA_CFLAGS) -LDFLAGS+=$(CFLAGS) +LDFLAGS+=$(CFLAGS) $(EXTRA_LDFLAGS) -VERSION?=$(shell git describe --dirty 2>/dev/null || echo 0.1-nogit) +VERSION?=$(shell git describe --dirty=+ 2>/dev/null || echo v0.1-nogit) CC_VERSION=$(shell $(CC) -v 2>&1|grep -E '(gcc|clang) version') @@ -36,10 +36,14 @@ endif PKGCONFIG_LIBS="blkid uuid liburcu libsodium zlib liblz4 libzstd" -CFLAGS+=`pkg-config --cflags ${PKGCONFIG_LIBS}` -LDLIBS+=`pkg-config --libs ${PKGCONFIG_LIBS}` +PKGCONFIG_CFLAGS:=$(shell pkg-config --cflags $(PKGCONFIG_LIBS)) +PKGCONFIG_LDLIBS:=$(shell pkg-config --libs $(PKGCONFIG_LIBS)) + +CFLAGS+=$(PKGCONFIG_CFLAGS) +LDLIBS+=$(PKGCONFIG_LDLIBS) LDLIBS+=-lm -lpthread -lrt -lscrypt -lkeyutils -laio +LDLIBS+=$(EXTRA_LDLIBS) ifeq ($(PREFIX),/usr) ROOT_SBINDIR=/sbin @@ -73,17 +77,17 @@ cmd_version.o : .version install: bcachefs mkdir -p $(DESTDIR)$(ROOT_SBINDIR) mkdir -p $(DESTDIR)$(PREFIX)/share/man/man8/ - $(INSTALL) -m0755 bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR) $(INSTALL) -m0755 -D initramfs/hook $(DESTDIR)$(INITRAMFS_DIR)/hooks/bcachefs echo "copy_exec $(ROOT_SBINDIR)/bcachefs /sbin/bcachefs" >> $(DESTDIR)$(INITRAMFS_DIR)/hooks/bcachefs $(INSTALL) -m0755 -D initramfs/script $(DESTDIR)$(INITRAMFS_DIR)/scripts/local-premount/bcachefs - $(INSTALL) -m0644 bcachefs.8 $(DESTDIR)$(PREFIX)/share/man/man8/ + $(INSTALL) -m0644 bcachefs.8 $(DESTDIR)$(PREFIX)/share/man/man8/ .PHONY: clean clean: - $(RM) bcachefs $(OBJS) $(DEPS) + $(RM) bcachefs .version $(OBJS) $(DEPS) .PHONY: deb deb: all @@ -94,11 +98,13 @@ deb: all .PHONE: update-bcachefs-sources update-bcachefs-sources: git rm -rf --ignore-unmatch libbcachefs + test -d libbcachefs || mkdir libbcachefs cp $(LINUX_DIR)/fs/bcachefs/*.[ch] libbcachefs/ cp $(LINUX_DIR)/include/trace/events/bcachefs.h include/trace/events/ - echo `cd $(LINUX_DIR); git rev-parse HEAD` > .bcachefs_revision + $(RM) libbcachefs/*.mod.c + git -C $(LINUX_DIR) rev-parse HEAD | tee .bcachefs_revision git add libbcachefs/*.[ch] include/trace/events/bcachefs.h .bcachefs_revision .PHONE: update-commit-bcachefs-sources update-commit-bcachefs-sources: update-bcachefs-sources - git commit -m "Update bcachefs sources to `cd $(LINUX_DIR); git show --oneline --no-patch`" + git commit -m "Update bcachefs sources to $(shell git -C $(LINUX_DIR) show --oneline --no-patch)" From bdeffdf3c71eedd99ec275b9cf7b117f8585e37e Mon Sep 17 00:00:00 2001 From: Tim Schlueter Date: Sun, 13 Jan 2019 18:47:41 -0800 Subject: [PATCH 2/2] Replaced mkdir -p with install -D in make install Also added a comment about the bcachefs utility to the initramfs hook --- Makefile | 19 ++++++++++--------- initramfs/hook | 3 +++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index d64553ea..d9220b98 100644 --- a/Makefile +++ b/Makefile @@ -74,16 +74,17 @@ endif cmd_version.o : .version .PHONY: install +install: INITRAMFS_HOOK=$(INITRAMFS_DIR)/hooks/bcachefs +install: INITRAMFS_SCRIPT=$(INITRAMFS_DIR)/scripts/local-premount/bcachefs install: bcachefs - mkdir -p $(DESTDIR)$(ROOT_SBINDIR) - mkdir -p $(DESTDIR)$(PREFIX)/share/man/man8/ - $(INSTALL) -m0755 bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 -D initramfs/hook $(DESTDIR)$(INITRAMFS_DIR)/hooks/bcachefs - echo "copy_exec $(ROOT_SBINDIR)/bcachefs /sbin/bcachefs" >> $(DESTDIR)$(INITRAMFS_DIR)/hooks/bcachefs - $(INSTALL) -m0755 -D initramfs/script $(DESTDIR)$(INITRAMFS_DIR)/scripts/local-premount/bcachefs - $(INSTALL) -m0644 bcachefs.8 $(DESTDIR)$(PREFIX)/share/man/man8/ + $(INSTALL) -m0755 -D bcachefs -t $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0644 -D bcachefs.8 -t $(DESTDIR)$(PREFIX)/share/man/man8/ + $(INSTALL) -m0755 -D initramfs/script $(DESTDIR)$(INITRAMFS_SCRIPT) + $(INSTALL) -m0755 -D initramfs/hook $(DESTDIR)$(INITRAMFS_HOOK) + sed -i '/^# Note: make install replaces/,$$d' $(DESTDIR)$(INITRAMFS_HOOK) + echo "copy_exec $(ROOT_SBINDIR)/bcachefs /sbin/bcachefs" >> $(DESTDIR)$(INITRAMFS_HOOK) .PHONY: clean clean: diff --git a/initramfs/hook b/initramfs/hook index 404a2499..c172dbdb 100755 --- a/initramfs/hook +++ b/initramfs/hook @@ -22,3 +22,6 @@ manual_add_modules 'bcachefs' add_loaded_modules 'chacha20[-_]*' add_loaded_modules 'poly1305[-_]*' +# Add the bcachefs utility to the initramfs +# Note: make install replaces this with the install path, so it must be last +#copy_exec /usr/local/sbin/bcachefs /sbin/bcachefs