mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-23 01:44:52 +01:00
Makefile: Add an explicit version file to the repository.
We do this so that "git archive" produces a usable tar file without us having to post-modify it, (since tools like git-buildpackage might not give us an easy way to hook into the tar-file-creation step). To support this we also have to change our preference to prefer the git-described-based version (if available) and only if not available do we fallback to using what's in the "version" file. Finally, we also ovverride this preference when releasing, (where what's in the "version" file wins). Note that using our Makefile's rule to create a tar file still will insert the git-based version into the tar file. This is useful for creating snapshots which will correctly report the git version from which they were created.
This commit is contained in:
parent
4b52b918d3
commit
b7dc24298d
2 changed files with 20 additions and 8 deletions
|
@ -9,7 +9,13 @@
|
||||||
# Between releases, (such as when compiling notmuch from the git
|
# Between releases, (such as when compiling notmuch from the git
|
||||||
# repository), we let git append identification of the actual commit.
|
# repository), we let git append identification of the actual commit.
|
||||||
PACKAGE=notmuch
|
PACKAGE=notmuch
|
||||||
VERSION:=$(shell if [ -f version ]; then cat version; else git describe --match '[0-9.]*'; fi)
|
|
||||||
|
VERSION:=$(shell cat version)
|
||||||
|
ifneq ($(MAKECMDGOALS),release)
|
||||||
|
ifneq ($(MAKECMDGOALS),release-message)
|
||||||
|
VERSION:=$(shell if git describe > /dev/null 2>&1; then git describe --match '[0-9.]*'; else cat version; fi)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
RELEASE_HOST=notmuchmail.org
|
RELEASE_HOST=notmuchmail.org
|
||||||
RELEASE_DIR=/srv/notmuchmail.org/www/releases
|
RELEASE_DIR=/srv/notmuchmail.org/www/releases
|
||||||
|
@ -50,9 +56,9 @@ test: all
|
||||||
|
|
||||||
$(TAR_FILE):
|
$(TAR_FILE):
|
||||||
git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ HEAD > $(TAR_FILE).tmp
|
git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ HEAD > $(TAR_FILE).tmp
|
||||||
echo $(VERSION) > version
|
echo $(VERSION) > version.tmp
|
||||||
tar --append -f $(TAR_FILE).tmp --transform s_^_$(PACKAGE)-$(VERSION)/_ version
|
tar --append -f $(TAR_FILE).tmp --transform s_^_$(PACKAGE)-$(VERSION)/_ --transform 's_.tmp$$__' version.tmp
|
||||||
rm version
|
rm version.tmp
|
||||||
gzip < $(TAR_FILE).tmp > $(TAR_FILE)
|
gzip < $(TAR_FILE).tmp > $(TAR_FILE)
|
||||||
@echo "Source is ready for release in $(TAR_FILE)"
|
@echo "Source is ready for release in $(TAR_FILE)"
|
||||||
|
|
||||||
|
@ -68,18 +74,23 @@ dist: $(TAR_FILE)
|
||||||
|
|
||||||
# We invoke make recursively only to force ordering of our phony
|
# We invoke make recursively only to force ordering of our phony
|
||||||
# targets in the case of parallel invocation of make (-j).
|
# 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
|
||||||
|
# are part of the release and need to take the version from the
|
||||||
|
# version file).
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
release: verify-no-dirty-code
|
release: verify-no-dirty-code
|
||||||
$(MAKE) test
|
$(MAKE) VERSION=$(VERSION) test
|
||||||
$(MAKE) $(GPG_FILE)
|
$(MAKE) VERSION=$(VERSION) $(GPG_FILE)
|
||||||
$(MAKE) verify-newer
|
$(MAKE) VERSION=$(VERSION) verify-newer
|
||||||
scp $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) $(RELEASE_HOST):$(RELEASE_DIR)
|
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)"
|
ssh $(RELEASE_HOST) "rm -f $(RELEASE_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(TAR_FILE) $(RELEASE_DIR)/LATEST-$(PACKAGE)-$(VERSION)"
|
||||||
mkdir -p releases
|
mkdir -p releases
|
||||||
mv $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) releases
|
mv $(TAR_FILE) $(SHA1_FILE) $(GPG_FILE) releases
|
||||||
git tag -s -m "$(PACKAGE) $(VERSION) release" $(VERSION)
|
git tag -s -m "$(PACKAGE) $(VERSION) release" $(VERSION)
|
||||||
git push origin $(VERSION)
|
git push origin $(VERSION)
|
||||||
$(MAKE) release-message > $(PACKAGE)-$(VERSION).announce
|
$(MAKE) VERSION=$(VERSION) release-message > $(PACKAGE)-$(VERSION).announce
|
||||||
@echo "Please send a release announcement using $(PACKAGE)-$(VERSION).announce as a template."
|
@echo "Please send a release announcement using $(PACKAGE)-$(VERSION).announce as a template."
|
||||||
|
|
||||||
.PHONY: release-message
|
.PHONY: release-message
|
||||||
|
|
1
version
Normal file
1
version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
0.1
|
Loading…
Reference in a new issue