From dc2b37cec12da7fe73e6844e7efb2412b5ea77a9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 4 Sep 2013 22:33:26 +0200 Subject: [PATCH] release in Makefile is cumbersome, use shell Signed-off-by: Nico Schottelius --- Makefile | 47 +----------------------------- bin/build-helper | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 46 deletions(-) diff --git a/Makefile b/Makefile index e13c5fc7..419f8023 100644 --- a/Makefile +++ b/Makefile @@ -170,39 +170,6 @@ $(FREECODE_FILE): $(CHANGELOG_FILE) freecode-release: $(FREECODE_FILE) -################################################################################ -# git and git dependent stuff -# - -GIT_TAG_FILE=.git/refs/tags/$(CHANGELOG_VERSION) -GIT_SRC_BRANCH=master -GIT_DST_BRANCH=$(shell echo $(CHANGELOG_VERSION) | cut -d. -f '1,2') -GIT_CURRENT=.git-current-branch - -git-tag: $(GIT_TAG_FILE) - -$(GIT_TAG_FILE): - @printf "Enter tag description for $(CHANGELOG_VERSION)> " - @read tagmessage; git tag "$(CHANGELOG_VERSION)" -m "$$tagmessage" - -git-branch-merge: git-checkout-stable - git merge "$(CHANGELOG_VERSION)" - -git-checkout-stable: git-tag - @git rev-parse --abbrev-ref HEAD > $(GIT_CURRENT) - @git checkout "$(GIT_DST_BRANCH)" - -git-checkout-current: - git checkout "$$(cat $(GIT_CURRENT))" - -$(VERSION_FILE): .git/refs/heads/* .git/refs/tags/* .git/HEAD - echo "VERSION = \"$$(git describe)\"" > $@ - -git-release: git-tag - make git-branch-merge - make git-checkout-current - make pub - ################################################################################ # pypi # @@ -236,20 +203,8 @@ archlinux-release: $(ARCHLINUX_FILE) # Release # -CHECKS=check-date check-unittest - -check-unittest: $(VERSION_FILE) - -RELEASE=speeches-dist web-release -RELEASE+=ml-release freecode-release -RELEASE+=man-dist pypi-release git-release -RELEASE+=archlinux-release - -release: $(CHECKS) $(RELEASE) - echo "Manual steps: linkedin, twitter" - # Code that is better handled in a shell script -check-%: +check-% release: $(helper) $@ ################################################################################ diff --git a/bin/build-helper b/bin/build-helper index 9409975c..033d4ff7 100755 --- a/bin/build-helper +++ b/bin/build-helper @@ -173,11 +173,82 @@ eof ;; + release-git-tag) + target_version=$($0 changelog-version) + if git rev-parse --verify refs/tags/$target_version; then + echo "Tag for $target_version exists, aborting" + exit 1 + fi + printf "Enter tag description for ${target_version}: " + read tagmessage + git tag "$target_version" -m "$$tagmessage" + ;; + release) set -e + target_version=$($0 changelog-version) + target_branch=$($0 version-branch) + + echo "Beginning release process for $target_version" + # First check everything is sane "$0" check-date "$0" check-unittest + + # Generate version file to be included in packaging + "$0" version + + # Ensure the git status is clean, else abort + if ! git diff-index --exit-code --quiet HEAD; then + echo "Unclean tree, aborting" + exit 1 + fi + + # Ensure we are on the master branch + if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then + echo "Releases are happening from the master branch, aborting" + exit 1 + fi + + # Ensure version branch exists + if ! git rev-parse --verify refs/heads/$target_branch 2>/dev/null; then + git branch "$target_branch" + fi + + # Merge master branch into version branch + git checkout "$target_branch" + git merge master + + # Verify that after the merge everything works + "$0" check-date + "$0" check-unittest + + # Generate man pages (indirect check if they build) + make man + + # Generate speeches (indirect check if they build) + make speeches + + ############################################################# + # Everything green, let's do the release + + # Tag the current commit + "$0" release-git-tag + + # Also merge back the version branch + git checkout master + git merge "$target_branch" + + + exit 0 + + make speeches-dist + + RELEASE=speeches-dist web-release + RELEASE+=ml-release freecode-release + RELEASE+=man-dist pypi-release git-release + RELEASE+=archlinux-release + ;; test) @@ -190,6 +261,10 @@ eof fi ;; + version-branch) + "$0" changelog-version | cut -d. -f '1,2' + ;; + version) echo "VERSION = \"$(git describe)\"" > cdist/version.py ;;