diff --git a/Makefile b/Makefile index 83f33382..7c1f30e8 100644 --- a/Makefile +++ b/Makefile @@ -34,9 +34,13 @@ STRIP = $(shell which strip) PANDOC = $(shell which pandoc) GIT2DEBCL = ./tools/git2debcl CPPFIND = ./tools/cppfind +RPMBUILD = $(shell which rpmbuild) +GZIP = $(shell which gzip) +SED = $(shell which sed) +MKDIR = $(shell which mkdir) ifeq ($(PKGCONFIG),"") -$(error "pkg-config not installed" +$(error "pkg-config not installed") endif ifeq ($(PANDOC),"") @@ -118,7 +122,7 @@ obj/%.o: src/%.cpp $(CXX) $(CFLAGS) -c $< -o $@ clean: - $(RM) -rf obj "$(TARGET)" "$(MANPAGE)" + $(RM) -rf obj "$(TARGET)" "$(MANPAGE)" rpmbuild $(FIND) -name "*~" -delete distclean: clean @@ -154,6 +158,16 @@ deb: $(GIT2DEBCL) $(TARGET) $(VERSION) > debian/changelog $(GIT) buildpackage --git-ignore-new +rpm: + $(eval VERSION := $(subst -,_,$(shell $(GIT) describe --always --tags --dirty))) + $(MKDIR) -p rpmbuild/{BUILD,RPMS,SOURCES} + $(GIT) archive --prefix="$(TARGET)-$(VERSION)/" --format tar HEAD | \ + $(GZIP) > rpmbuild/SOURCES/$(TARGET)-$(VERSION).tar.gz + $(SED) 's/__VERSION__/$(VERSION)/g' $(TARGET).spec > \ + rpmbuild/SOURCES/$(TARGET).spec + $(RPMBUILD) -ba rpmbuild/SOURCES/$(TARGET).spec \ + --define "_topdir $(CURDIR)/rpmbuild" + .PHONY: all clean install help include $(wildcard obj/*.d) diff --git a/mergerfs.spec b/mergerfs.spec new file mode 100644 index 00000000..ac75d23f --- /dev/null +++ b/mergerfs.spec @@ -0,0 +1,46 @@ +Name: mergerfs +Version: __VERSION__ +Release: 1%{?dist} +Summary: A FUSE union filesystem + +Group: Applications/System +License: MIT +URL: https://github.com/trapexit/mergerfs +Source: mergerfs-%{version}.tar.gz + +BuildRequires: gcc-c++ +BuildRequires: libattr-devel +BuildRequires: fuse-devel +# rpmbuild driven by the Makefile uses git to generate a version number +BuildRequires: git +# pandoc pulls in ~60 packages (87M installed) from EPEL :( +BuildRequires: pandoc + +Requires: fuse-libs + +%prep +%setup -q + +%description +mergerfs is similar to mhddfs, unionfs, and aufs. Like mhddfs in that it too +uses FUSE. Like aufs in that it provides multiple policies for how to handle +behavior. + +%build +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} + +%files +%{_bindir}/* +%doc %{_mandir}/* + +%changelog +* Mon Dec 29 2014 Joe Lawrence +- Tweak rpmbuild to archive current git HEAD into a tarball, then (re)build in + the rpmbuild directory -- more complicated but seemingly better suited to + generate source and debug rpms. + +* Fri Jun 20 2014 Joe Lawrence +- Initial rpm spec file.