From af12e5a3ac887cd7dde344f67d9d43688e78e295 Mon Sep 17 00:00:00 2001 From: David Bremner Date: Tue, 20 Dec 2011 16:35:13 -0400 Subject: [PATCH] build-system: update for split man pages - We have to remove the installation of notmuch.1.gz from the top level Makefile.local. - Man pages with multiple names are handled by making relative symlinks in the install-man target. - update version tests and convenience rules for split man pages The man page version test still only checks notmuch.1, but the location is updated. update-man-versions is longer than the one-line previously in update-versions mainly because I decided to take the high road and stick to POSIX sed (thus, no sed -i). The sed regex itself is more complicated to cope with variations in the headers. --- Makefile | 2 +- Makefile.local | 22 +++-------------- man/Makefile | 5 ++++ man/Makefile.local | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 19 deletions(-) create mode 100644 man/Makefile create mode 100644 man/Makefile.local diff --git a/Makefile b/Makefile index 2fb2a613..e5e2e3a3 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ all: # List all subdirectories here. Each contains its own Makefile.local -subdirs = compat completion emacs lib util test +subdirs = compat completion emacs lib man util test # We make all targets depend on the Makefiles themselves. global_deps = Makefile Makefile.config Makefile.local \ diff --git a/Makefile.local b/Makefile.local index 516f26e8..d3bf9478 100644 --- a/Makefile.local +++ b/Makefile.local @@ -53,7 +53,7 @@ endif FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS) .PHONY: all -all: notmuch notmuch-shared notmuch.1.gz +all: notmuch notmuch-shared ifeq ($(MAKECMDGOALS),) ifeq ($(shell cat .first-build-message 2>/dev/null),) @NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all @@ -95,8 +95,7 @@ dist: $(TAR_FILE) .PHONY: update-versions -update-versions: - sed -i "s/^.TH NOTMUCH 1.*$$/.TH NOTMUCH 1 ${DATE} \"Notmuch ${VERSION}\"/" notmuch.1 +update-versions: update-man-versions sed -i "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" $(PV_FILE) # We invoke make recursively only to force ordering of our phony @@ -221,14 +220,6 @@ verify-version-python: verify-version-components echo "Please edit version and $(PV_FILE) to have consistent versions." && false) @echo "Good." -.PHONY: verify-version-manpage -verify-version-manpage: verify-version-components - @echo -n "Checking that manual page version is $(VERSION)..." - @[ "$(VERSION)" = $$(sed -n '/^[.]TH NOTMUCH 1/{s/.*"Notmuch //;s/".*//p;}' notmuch.1) ] || \ - (echo "No." && \ - echo "Please edit version and notmuch.1 to have consistent versions." && false) - @echo "Good." - .PHONY: verify-version-components verify-version-components: @echo -n "Checking that $(VERSION) consists only of digits and periods..." @@ -326,13 +317,8 @@ notmuch: $(notmuch_client_modules) lib/libnotmuch.a util/libutil.a notmuch-shared: $(notmuch_client_modules) lib/$(LINKER_NAME) $(call quiet,$(FINAL_NOTMUCH_LINKER) $(CFLAGS)) $(notmuch_client_modules) $(FINAL_NOTMUCH_LDFLAGS) -o $@ -notmuch.1.gz: notmuch.1 - gzip --stdout $^ > $@ - .PHONY: install -install: all notmuch.1.gz - mkdir -p "$(DESTDIR)$(mandir)/man1" - install -m0644 notmuch.1.gz "$(DESTDIR)$(mandir)/man1/" +install: all install-man mkdir -p "$(DESTDIR)$(prefix)/bin/" install notmuch-shared "$(DESTDIR)$(prefix)/bin/notmuch" ifeq ($(MAKECMDGOALS), install) @@ -363,4 +349,4 @@ install-desktop: desktop-file-install --mode 0644 --dir "$(DESTDIR)$(desktop_dir)" notmuch.desktop SRCS := $(SRCS) $(notmuch_client_srcs) -CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc notmuch.1.gz +CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc diff --git a/man/Makefile b/man/Makefile new file mode 100644 index 00000000..fa25832e --- /dev/null +++ b/man/Makefile @@ -0,0 +1,5 @@ +all: + $(MAKE) -C .. all + +.DEFAULT: + $(MAKE) -C .. $@ diff --git a/man/Makefile.local b/man/Makefile.local new file mode 100644 index 00000000..234ae89c --- /dev/null +++ b/man/Makefile.local @@ -0,0 +1,61 @@ +# -*- Makefile -*- + +dir := man + +# this variable seems to be needed to prevent lazy evaluation causing +# problems with $(dir) changing values. +MAIN_PAGE := $(dir)/man1/notmuch.1 + +MAN1 := \ + $(MAIN_PAGE) \ + $(dir)/man1/notmuch-config.1 \ + $(dir)/man1/notmuch-count.1 \ + $(dir)/man1/notmuch-dump.1 \ + $(dir)/man1/notmuch-new.1 \ + $(dir)/man1/notmuch-part.1 \ + $(dir)/man1/notmuch-reply.1 \ + $(dir)/man1/notmuch-search.1 \ + $(dir)/man1/notmuch-show.1 \ + $(dir)/man1/notmuch-tag.1 + +MAN5 := $(dir)/man5/notmuch-hooks.5 +MAN7 := $(dir)/man7/notmuch-search-terms.7 + +MAN1_GZ := $(addsuffix .gz,$(MAN1)) +MAN5_GZ := $(addsuffix .gz,$(MAN5)) +MAN7_GZ := $(addsuffix .gz,$(MAN7)) + +MAN_SOURCE := $(MAN1) $(MAN5) $(MAN7) +MAN_BACKUP := $(addsuffix .bak,$(MAN_SOURCE)) +COMPRESSED_MAN := $(MAN1_GZ) $(MAN5_GZ) $(MAN7_GZ) + +%.gz: % + gzip --stdout $^ > $@ + +.PHONY: install-man update-man-versions verify-version-manpage + +install-man: $(COMPRESSED_MAN) + mkdir -p "$(DESTDIR)$(mandir)/man1" + mkdir -p "$(DESTDIR)$(mandir)/man5" + mkdir -p "$(DESTDIR)$(mandir)/man7" + install -m0644 $(MAN1_GZ) $(DESTDIR)/$(mandir)/man1 + install -m0644 $(MAN5_GZ) $(DESTDIR)/$(mandir)/man5 + install -m0644 $(MAN7_GZ) $(DESTDIR)/$(mandir)/man7 + cd $(DESTDIR)/$(mandir)/man1 && ln -s notmuch.1.gz notmuch-setup.1.gz + cd $(DESTDIR)/$(mandir)/man1 && ln -s notmuch-dump.1.gz notmuch-restore.1.gz + +verify-version-manpage: verify-version-components + @echo -n "Checking that manual page version is $(VERSION)..." + @[ "$(VERSION)" = $$(sed -n '/^[.]TH NOTMUCH 1/{s/.*"Notmuch //;s/".*//p;}' $(MAIN_PAGE)) ] || \ + (echo "No." && \ + echo "Please edit version and notmuch.1 to have consistent versions." && false) + @echo "Good." + +update-man-versions: $(MAN_SOURCE) + for file in $(MAN_SOURCE); do \ + cp $$file $$file.bak ; \ + sed "s/^.TH NOTMUCH\([^[:blank:]]*\) \([1-9]\) .*$$/.TH NOTMUCH\1 \2 ${DATE} \"Notmuch ${VERSION}\"/" \ + < $$file.bak > $$file; \ + done + +CLEAN := $(CLEAN) $(COMPRESSED_MAN) $(MAN_BACKUP) -- 2.26.2