]> git.notmuchmail.org Git - notmuch/blobdiff - Makefile.local
build-system: tag debian-version as part of the release target
[notmuch] / Makefile.local
index 971ddd523f5d9272461ed02531c10cbd0a72d49e..33fdcc93fc6903975b8593848ac664b4c9cddc20 100644 (file)
@@ -12,7 +12,7 @@ PACKAGE=notmuch
 
 IS_GIT=$(shell if [ -d .git ] ; then echo yes ; else echo no; fi)
 
-VERSION:=$(shell cat version)
+VERSION:=$(shell cat ${srcdir}/version)
 ifneq ($(MAKECMDGOALS),release)
 ifneq ($(MAKECMDGOALS),release-message)
 ifeq ($(IS_GIT),yes)
@@ -25,24 +25,23 @@ RELEASE_HOST=notmuchmail.org
 RELEASE_DIR=/srv/notmuchmail.org/www/releases
 RELEASE_URL=http://notmuchmail.org/releases
 TAR_FILE=$(PACKAGE)-$(VERSION).tar.gz
+DEB_TAR_FILE=$(PACKAGE)_$(VERSION).orig.tar.gz
 SHA1_FILE=$(TAR_FILE).sha1
 GPG_FILE=$(SHA1_FILE).asc
 
 # Smash together user's values with our extra values
 FINAL_CFLAGS = -DNOTMUCH_VERSION=$(VERSION) $(CFLAGS) $(WARN_CFLAGS) $(CONFIGURE_CFLAGS) $(extra_cflags)
 FINAL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(CONFIGURE_CXXFLAGS) $(extra_cflags) $(extra_cxxflags)
-FINAL_NOTMUCH_LDFLAGS = $(LDFLAGS) -Llib -lnotmuch $(GMIME_LDFLAGS) $(TALLOC_LDFLAGS)
+FINAL_NOTMUCH_LDFLAGS = $(LDFLAGS) -Llib -lnotmuch $(AS_NEEDED_LDFLAGS) $(GMIME_LDFLAGS) $(TALLOC_LDFLAGS)
 FINAL_NOTMUCH_LINKER = CC
 ifneq ($(LINKER_RESOLVES_LIBRARY_DEPENDENCIES),1)
 FINAL_NOTMUCH_LDFLAGS += $(CONFIGURE_LDFLAGS)
 FINAL_NOTMUCH_LINKER = CXX
 endif
-ifeq ($(PLATFORM),LINUX)
 ifeq ($(LIBDIR_IN_LDCONFIG),0)
-FINAL_NOTMUCH_LDFLAGS += -Wl,--enable-new-dtags -Wl,-rpath,$(libdir)
+FINAL_NOTMUCH_LDFLAGS += $(RPATH_LDFLAGS)
 endif
-endif
-FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS)
+FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
 
 .PHONY: all
 all: notmuch notmuch-shared notmuch.1.gz
@@ -62,7 +61,13 @@ endif
 endif
 
 $(TAR_FILE):
-       git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ HEAD > $(TAR_FILE).tmp
+       if git tag -v $(VERSION) >/dev/null 2>&1; then \
+           ref=$(VERSION); \
+        else \
+           ref="HEAD" ; \
+          echo "Warning: No signed tag for $(VERSION)"; \
+       fi ; \
+       git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ $$ref > $(TAR_FILE).tmp
        echo $(VERSION) > version.tmp
        tar --append -f $(TAR_FILE).tmp --transform s_^_$(PACKAGE)-$(VERSION)/_  --transform 's_.tmp$$__' version.tmp
        rm version.tmp
@@ -83,27 +88,27 @@ dist: $(TAR_FILE)
 # targets in the case of parallel invocation of make (-j).
 #
 # We carefully ensure that our VERSION variable is passed down to any
-# sub-ordinate make invocations (which won't otherwhise know that they
+# sub-ordinate make invocations (which won't otherwise know that they
 # are part of the release and need to take the version from the
 # version file).
 .PHONY: release
 release: verify-source-tree-and-version
        $(MAKE) VERSION=$(VERSION) verify-newer
+       $(MAKE) VERSION=$(VERSION) clean
        $(MAKE) VERSION=$(VERSION) test
-       rm -rf ./debian-build
-       git-buildpackage
-       cp debian-build/notmuch_$(VERSION).tar.gz notmuch-$(VERSION).tar.gz
+       git tag -s -m "$(PACKAGE) $(VERSION) release" $(VERSION)
        $(MAKE) VERSION=$(VERSION) $(GPG_FILE)
-       scp $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) $(RELEASE_HOST):$(RELEASE_DIR)
-       ssh $(RELEASE_HOST) "rm -f $(RELEASE_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(TAR_FILE) $(RELEASE_DIR)/LATEST-$(PACKAGE)-$(VERSION)"
+       ln -sf $(TAR_FILE) $(DEB_TAR_FILE)
+       pristine-tar commit $(DEB_TAR_FILE) $(VERSION)
+       git tag -s -m "$(PACKAGE) Debian $(VERSION)-1 upload (same as $(VERSION))" debian/$(VERSION)-1
        mkdir -p releases
        mv $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) releases
-       (cd debian-build; dput *.changes)
-       mv debian-build/* releases
-       rmdir debian-build
-       git tag -s -m "$(PACKAGE) $(VERSION) release" $(VERSION)
-       git push origin $(VERSION)
        $(MAKE) VERSION=$(VERSION) release-message > $(PACKAGE)-$(VERSION).announce
+ifeq ($(REALLY_UPLOAD),yes)
+       git push origin $(VERSION)
+       cd releases && scp $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) $(RELEASE_HOST):$(RELEASE_DIR)
+       ssh $(RELEASE_HOST) "rm -f $(RELEASE_DIR)/LATEST-$(PACKAGE)-[0-9]* ; ln -s $(TAR_FILE) $(RELEASE_DIR)/LATEST-$(PACKAGE)-$(VERSION)"
+endif
        @echo "Please send a release announcement using $(PACKAGE)-$(VERSION).announce as a template."
 
 .PHONY: release-message
@@ -163,8 +168,8 @@ endif
 
 .PHONY: verify-version-debian
 verify-version-debian: verify-version-components
-       @echo -n "Checking that Debian package version is $(VERSION)..."
-       @if [ "$(VERSION)" != $$(dpkg-parsechangelog | grep ^Version | awk '{print $$2}') ] ; then \
+       @echo -n "Checking that Debian package version is $(VERSION)-1..."
+       @if [ "$(VERSION)-1" != $$(dpkg-parsechangelog | grep ^Version | awk '{print $$2}') ] ; then \
                (echo "No." && \
                 echo "Please edit version and debian/changelog to have consistent versions." && false) \
         fi
@@ -182,11 +187,16 @@ verify-version-components:
 .PHONY: verify-newer
 verify-newer:
        @echo -n "Checking that no $(VERSION) release already exists..."
-       @ssh $(RELEASE_HOST) test ! -e $(RELEASE_DIR)/$(TAR_FILE) \
-               || (echo "Ouch." && echo "Found: $(RELEASE_HOST):$(RELEASE_DIR)/$(TAR_FILE)" \
-               && echo "Refusing to replace an existing release." \
-               && echo "Don't forget to update \"version\" as described in RELEASING before release." && false)
-       @echo "Good."
+       @wget -q -O /dev/null $(RELEASE_URL)/$(TAR_FILE) ; \
+       case $$? in \
+          8) echo "Good." ;; \
+          0) echo "Ouch."; \
+            echo "Found: $(RELEASE_URL)/$(TAR_FILE)"; \
+            echo "Refusing to replace an existing release."; \
+            echo "Don't forget to update \"version\" as described in RELEASING before release." ; \
+            false ;; \
+         *) echo "An unexpected error occured"; \
+            false;; esac
 
 # The user has not set any verbosity, default to quiet mode and inform the
 # user how to enable verbose compiles.
@@ -244,14 +254,14 @@ notmuch_client_srcs =             \
        notmuch-reply.c         \
        notmuch-restore.c       \
        notmuch-search.c        \
-       notmuch-search-tags.c   \
        notmuch-setup.c         \
        notmuch-show.c          \
        notmuch-tag.c           \
        notmuch-time.c          \
        query-string.c          \
        show-message.c          \
-       json.c
+       json.c                  \
+       xutil.c
 
 notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
 
@@ -266,10 +276,10 @@ notmuch.1.gz: notmuch.1
 
 .PHONY: install
 install: all notmuch.1.gz
-       mkdir -p $(DESTDIR)$(mandir)/man1
-       install -m0644 notmuch.1.gz $(DESTDIR)$(mandir)/man1/
-       mkdir -p $(DESTDIR)$(prefix)/bin/
-       install notmuch-shared $(DESTDIR)$(prefix)/bin/notmuch
+       mkdir -p "$(DESTDIR)$(mandir)/man1"
+       install -m0644 notmuch.1.gz "$(DESTDIR)$(mandir)/man1/"
+       mkdir -p "$(DESTDIR)$(prefix)/bin/"
+       install notmuch-shared "$(DESTDIR)$(prefix)/bin/notmuch"
 ifeq ($(MAKECMDGOALS), install)
        @echo ""
        @echo "Notmuch is now installed to $(DESTDIR)$(prefix)"
@@ -278,6 +288,7 @@ ifeq ($(MAKECMDGOALS), install)
        @echo "through the process of configuring notmuch and creating"
        @echo "a database of existing email messages. The \"notmuch\""
        @echo "command will also offer some sample search commands."
+ifeq ($(WITH_EMACS), 1)
        @echo ""
        @echo "Beyond the command-line interface, notmuch also offers"
        @echo "a full-featured interface for reading and writing mail"
@@ -289,11 +300,12 @@ ifeq ($(MAKECMDGOALS), install)
        @echo "And then run emacs as \"emacs -f notmuch\" or invoke"
        @echo "the command \"M-x notmuch\" from within emacs."
 endif
+endif
 
 .PHONY: install-desktop
 install-desktop:
-       mkdir -p $(DESTDIR)$(desktop_dir)
-       desktop-file-install --mode 0644 --dir $(DESTDIR)$(desktop_dir) notmuch.desktop
+       mkdir -p "$(DESTDIR)$(desktop_dir)"
+       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