Browse Source

rework makefiles + install mount tools

pull/716/head
Antonio SJ Musumeci 5 years ago
parent
commit
5ce428ca59
  1. 32
      Makefile
  2. 72
      libfuse/Makefile
  3. 6
      libfuse/lib/mount_generic.c
  4. 2
      libfuse/util/fusermount.c
  5. 1
      libfuse/util/mount.mergerfs.c
  6. 3
      mergerfs.spec

32
Makefile

@ -37,8 +37,7 @@ endif
endif endif
USE_XATTR = 1 USE_XATTR = 1
FUSE_CFLAGS = -D_FILE_OFFSET_BITS=64 -Ilibfuse/include
UGID_USE_RWLOCK = 0
ifeq ($(DEBUG),1) ifeq ($(DEBUG),1)
DEBUG_FLAGS := -g DEBUG_FLAGS := -g
@ -58,29 +57,30 @@ else
LTO_FLAGS := LTO_FLAGS :=
endif endif
UGID_USE_RWLOCK = 0
OPTS = -O2
SRC = $(wildcard src/*.cpp) SRC = $(wildcard src/*.cpp)
OBJS = $(SRC:src/%.cpp=build/%.o) OBJS = $(SRC:src/%.cpp=build/%.o)
DEPS = $(SRC:src/%.cpp=build/%.d) DEPS = $(SRC:src/%.cpp=build/%.d)
MANPAGE = mergerfs.1 MANPAGE = mergerfs.1
CXXFLAGS += \
$(OPTS) \
CXXFLAGS = \
-O2 \
$(DEBUG_FLAGS) \ $(DEBUG_FLAGS) \
$(STATIC_FLAGS) \ $(STATIC_FLAGS) \
$(LTO_FLAGS) \ $(LTO_FLAGS) \
-Wall \ -Wall \
-Wno-unused-result \ -Wno-unused-result \
$(FUSE_CFLAGS) \
-DFUSE_USE_VERSION=29 \
-MMD \
-MMD
FUSE_FLAGS = \
-Ilibfuse/include \
-D_FILE_OFFSET_BITS=64 \
-DFUSE_USE_VERSION=29
MFS_FLAGS = \
-DUSE_XATTR=$(USE_XATTR) \ -DUSE_XATTR=$(USE_XATTR) \
-DUGID_USE_RWLOCK=$(UGID_USE_RWLOCK) -DUGID_USE_RWLOCK=$(UGID_USE_RWLOCK)
LDFLAGS += \
LDFLAGS = \
-pthread \ -pthread \
-lrt -lrt
DESTDIR =
PREFIX = /usr/local PREFIX = /usr/local
EXEC_PREFIX = $(PREFIX) EXEC_PREFIX = $(PREFIX)
DATAROOTDIR = $(PREFIX)/share DATAROOTDIR = $(PREFIX)/share
@ -108,7 +108,7 @@ objects: version build/stamp
$(MAKE) $(OBJS) $(MAKE) $(OBJS)
build/mergerfs: libfuse objects build/mergerfs: libfuse objects
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OBJS) -o $@ libfuse/build/libfuse.a $(LDFLAGS)
$(CXX) $(CXXFLAGS) $(FUSE_FLAGS) $(MFS_FLAGS) $(CPPFLAGS) $(OBJS) -o $@ libfuse/build/libfuse.a $(LDFLAGS)
mergerfs: build/mergerfs mergerfs: build/mergerfs
@ -128,7 +128,7 @@ build/stamp:
$(TOUCH) $@ $(TOUCH) $@
build/%.o: src/%.cpp build/%.o: src/%.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
$(CXX) $(CXXFLAGS) $(FUSE_FLAGS) $(MFS_FLAGS) $(CPPFLAGS) -c $< -o $@
.PHONY: clean .PHONY: clean
clean: rpm-clean clean: rpm-clean
@ -142,15 +142,15 @@ ifeq ($(GIT_REPO),1)
endif endif
.PHONY: install .PHONY: install
install: install-base install-mount.mergerfs install-man
install: install-base install-mount-tools install-man
install-base: build/mergerfs install-base: build/mergerfs
$(MKDIR) -p "$(INSTALLBINDIR)" $(MKDIR) -p "$(INSTALLBINDIR)"
$(INSTALL) -v -m 0755 build/mergerfs "$(INSTALLBINDIR)/mergerfs" $(INSTALL) -v -m 0755 build/mergerfs "$(INSTALLBINDIR)/mergerfs"
install-mount.mergerfs: install-base
install-mount-tools: install-base
$(MKDIR) -p "$(INSTALLBINDIR)" $(MKDIR) -p "$(INSTALLBINDIR)"
$(LN) -fs "mergerfs" "$(INSTALLBINDIR)/mount.mergerfs"
$(MAKE) -C libfuse install
install-man: $(MANPAGE) install-man: $(MANPAGE)
$(MKDIR) -p "$(INSTALLMAN1DIR)" $(MKDIR) -p "$(INSTALLMAN1DIR)"

72
libfuse/Makefile

@ -1,5 +1,4 @@
VERSION = "2.9.7-mergerfs_2.29.0"
OPTS = -O2
VERSION = 2.9.7-mergerfs_2.29.0
ifeq ($(DEBUG),1) ifeq ($(DEBUG),1)
DEBUG_FLAGS := -g DEBUG_FLAGS := -g
@ -7,9 +6,20 @@ else
DEBUG_FLAGS := DEBUG_FLAGS :=
endif endif
DESTDIR = "/"
BINDIR = "/bin"
SBINDIR = "/sbin"
DESTDIR =
PREFIX = /usr/local
EXEC_PREFIX = $(PREFIX)
DATAROOTDIR = $(PREFIX)/share
DATADIR = $(DATAROOTDIR)
BINDIR = $(EXEC_PREFIX)/bin
SBINDIR = $(EXEC_PREFIX)/sbin
MANDIR = $(DATAROOTDIR)/man
MAN1DIR = $(MANDIR)/man1
INSTALLBINDIR = $(DESTDIR)$(BINDIR)
INSTALLSBINDIR = $(DESTDIR)$(SBINDIR)
INSTALLMAN1DIR = $(DESTDIR)$(MAN1DIR)
SRC = \ SRC = \
lib/buffer.c \ lib/buffer.c \
lib/cuse_lowlevel.c \ lib/cuse_lowlevel.c \
@ -27,24 +37,26 @@ SRC = \
OBJS = $(SRC:lib/%.c=build/%.o) OBJS = $(SRC:lib/%.c=build/%.o)
DEPS = $(SRC:lib/%.c=build/%.d) DEPS = $(SRC:lib/%.c=build/%.d)
CFLAGS += \
$(OPTS) \
CFLAGS = \
-O2 \
$(DEBUG_FLAGS) \ $(DEBUG_FLAGS) \
-Wall \ -Wall \
-pipe \ -pipe \
'-D_FILE_OFFSET_BITS=64' \
'-D_REENTRANT' \
'-DFUSE_USE_VERSION=29' \
'-DFUSERMOUNT_DIR="/usr/local/bin"' \
'-DPACKAGE_VERSION=$(VERSION)' \
-MMD
FUSERMOUNT_DIR = $(BINDIR)
FUSE_FLAGS = \
-Iinclude \ -Iinclude \
-Ibuild \ -Ibuild \
-MMD
LDFLAGS += \
-D_REENTRANT \
-D_FILE_OFFSET_BITS=64 \
-DFUSE_USE_VERSION=29 \
-DPACKAGE_VERSION=\"$(VERSION)\" \
-DFUSERMOUNT_DIR=\"$(FUSERMOUNT_DIR)\"
LDFLAGS = \
-lrt \ -lrt \
-pthread -pthread
all: build/libfuse.a
all: build/libfuse.a mount.mergerfs mergerfs-fusermount
build/config.h: build/stamp build/config.h: build/stamp
ecfd/build | tee build/config.h ecfd/build | tee build/config.h
@ -59,26 +71,34 @@ objects: build/config.h
build/libfuse.a: objects build/libfuse.a: objects
ar rcs build/libfuse.a $(OBJS) ar rcs build/libfuse.a $(OBJS)
build/mergerfs-mount: build/config.h util/fusermount.c lib/mount_util.c
$(CC) $(CFLAGS) -Ilib -o mergerfs-mount util/fusermount.c lib/mount_util.c
build/mergerfs-fusermount: build/config.h util/fusermount.c lib/mount_util.c
$(CC) $(CFLAGS) $(FUSE_FLAGS) -Ilib -o build/mergerfs-fusermount util/fusermount.c lib/mount_util.c
build/mount.mergerfs: build/libfuse.a util/mount.fuse.c
$(CC) $(CFLAGS) -o mount.mergerfs util/mount.fuse.c build/libfuse.a $(LDFLAGS)
mergerfs-fusermount: build/mergerfs-fusermount
build/mount.mergerfs: build/libfuse.a util/mount.mergerfs.c
$(CC) $(CFLAGS) $(FUSE_FLAGS) -o build/mount.mergerfs util/mount.mergerfs.c build/libfuse.a $(LDFLAGS)
mount.mergerfs: build/mount.mergerfs
build/%.o: lib/%.c build/%.o: lib/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(CC) $(CFLAGS) $(FUSE_FLAGS) -c $< -o $@
clean: clean:
rm -rf build rm -rf build
distclean: clean distclean: clean
install: build/mergerfs-mount build/mount.mergerfs
install -D build/mergerfs-mount "$(DESTDIR)$(BINDIR)/mergerfs-mount"
chown root:root "$(DESTDIR)$(BINDIR)/mergerfs-mount"
chmod u+s "$(DESTDIR)$(BINDIR)/mergerfs-mount"
install -D build/mount.mergerfs "$(DESTDIR)$(SBINDIR)/mount.mergerfs"
strip:
strip --strip-all build/mount.mergerfs
strip --strip-all build/mergerfs-fusermount
install: mergerfs-fusermount mount.mergerfs strip
install -D build/mergerfs-fusermount "$(INSTALLBINDIR)/mergerfs-fusermount"
install -D build/mount.mergerfs "$(INSTALLSBINDIR)/mount.mergerfs"
chown root:root "$(INSTALLBINDIR)/mergerfs-fusermount"
chmod u+s "$(INSTALLBINDIR)/mergerfs-fusermount"
.PHONY: objects
.PHONY: objects strip
-include $(DEPS) -include $(DEPS)

6
libfuse/lib/mount_generic.c

@ -143,7 +143,9 @@ static void mount_help(void)
static void exec_fusermount(const char *argv[]) static void exec_fusermount(const char *argv[])
{ {
execv(FUSERMOUNT_DIR "/" FUSERMOUNT_PROG, (char **) argv);
execv(FUSERMOUNT_DIR "/mergerfs-" FUSERMOUNT_PROG, (char **) argv);
execvp("mergerfs-" FUSERMOUNT_PROG, (char **) argv);
execv(FUSERMOUNT_DIR "/" FUSERMOUNT_PROG, (char **) argv);
execvp(FUSERMOUNT_PROG, (char **) argv); execvp(FUSERMOUNT_PROG, (char **) argv);
} }
@ -407,7 +409,7 @@ static int fuse_mount_fusermount(const char *mountpoint, struct mount_opts *mo,
rv = receive_fd(fds[1]); rv = receive_fd(fds[1]);
if (!mo->auto_unmount) { if (!mo->auto_unmount) {
/* with auto_unmount option fusermount will not exit until
/* with auto_unmount option fusermount will not exit until
this socket is closed */ this socket is closed */
close(fds[1]); close(fds[1]);
waitpid(pid, NULL, 0); /* bury zombie */ waitpid(pid, NULL, 0); /* bury zombie */

2
libfuse/util/fusermount.c

@ -1293,7 +1293,7 @@ int main(int argc, char *argv[])
return 0; return 0;
/* Become a daemon and wait for the parent to exit or die. /* Become a daemon and wait for the parent to exit or die.
ie For the control socket to get closed.
ie For the control socket to get closed.
btw We don't want to use daemon() function here because btw We don't want to use daemon() function here because
it forks and messes with the file descriptors. */ it forks and messes with the file descriptors. */
setsid(); setsid();

1
libfuse/util/mount.fuse.c → libfuse/util/mount.mergerfs.c

@ -93,6 +93,7 @@ int main(int argc, char *argv[])
else else
basename = argv[0]; basename = argv[0];
type = "mergerfs";
if (strncmp(basename, "mount.fuse.", 11) == 0) if (strncmp(basename, "mount.fuse.", 11) == 0)
type = basename + 11; type = basename + 11;
if (strncmp(basename, "mount.fuseblk.", 14) == 0) if (strncmp(basename, "mount.fuseblk.", 14) == 0)

3
mergerfs.spec

@ -1,7 +1,7 @@
Name: mergerfs Name: mergerfs
Version: __VERSION__ Version: __VERSION__
Release: 1%{?dist} Release: 1%{?dist}
Summary: A FUSE union filesystem
Summary: A featureful FUSE based union filesystem
Group: Applications/System Group: Applications/System
License: ISC License: ISC
@ -33,6 +33,7 @@ make install PREFIX=%{_prefix} DESTDIR=%{buildroot}
%files %files
%{_bindir}/* %{_bindir}/*
%{_sbindir}/*
%doc %{_mandir}/* %doc %{_mandir}/*
%changelog %changelog

Loading…
Cancel
Save