summaryrefslogtreecommitdiff
path: root/Makefile.am
diff options
context:
space:
mode:
authorGravatar Mike Burns <mike@mike-burns.com>2014-11-19 20:05:47 -0800
committerGravatar Mike Burns <mike@mike-burns.com>2014-12-19 15:20:04 +0100
commit1285462a560a65c7de2579af2053e4f62faa28af (patch)
treead5bae9bbc37fd319a4872495a9798f5924a4fad /Makefile.am
parent78db1a5086ccf17345956105e48e649f5e09abbf (diff)
Add a release script
The Makefiles were mostly filled with a complex shell script written in m4sh. Moving that out into a separate script helps debugging and compatibility, and in general makes life better. This also improved the DEVELOPERS.md documentation to be more clear about the steps of a release, including third-party packages.
Diffstat (limited to 'Makefile.am')
-rw-r--r--Makefile.am137
1 files changed, 21 insertions, 116 deletions
diff --git a/Makefile.am b/Makefile.am
index 2525776..c245b7a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,119 +2,24 @@ AUTOMAKE_OPTIONS = foreign
SUBDIRS = man share bin test
EXTRA_DIST = LICENSE README.md NEWS.md
-.PHONY: release \
- release_build release_push release_clean \
- release_build_tarball release_build_homebrew release_build_arch \
- release_push_tarball release_push_homebrew release_push_arch \
- release_clean_tarball release_clean_homebrew release_clean_arch \
- release_build_deb release_push_deb release_clean_deb release_build_tag \
- release_push_tag release_clean_tag release_build_man_html \
- release_push_man_html release_clean_man_html
-
-ORIGIN_URL=$(shell git config --get remote.origin.url)
-CURRENT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
-
-edit_package = sed \
- -e 's|@PACKAGE[@]|$(PACKAGE)|g' \
- -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
- -e 's|@DIST_ARCHIVES[@]|$(DIST_ARCHIVES)|g' \
- -e 's|@DIST_SHA[@]|$(DIST_SHA)|g'
-
-release: release_build release_push release_clean
-
-release_build: release_build_tarball release_build_homebrew release_build_arch \
- release_build_deb release_build_tag release_build_man_html
-
-release_push: release_push_tarball release_push_homebrew release_push_arch \
- release_push_deb release_push_tag release_push_man_html
-
-release_clean: release_clean_tarball release_clean_homebrew release_clean_arch \
- release_clean_deb release_clean_tag release_clean_man_html
-
-###### Tarball
-release_build_tarball: Makefile distcheck
- ([ -d gh-pages ] || git clone --branch gh-pages . gh-pages) && \
- ([ -d gh-pages/dist ] || mkdir gh-pages/dist) && \
- cp $(DIST_ARCHIVES) gh-pages/dist && \
- cd gh-pages &&\
- git add dist/$(DIST_ARCHIVES) &&\
- git commit -m "Release version $(PACKAGE_VERSION) tarball"
-
-release_push_tarball:
- cd gh-pages &&\
- git push
-
-release_clean_tarball:
- rm -rf gh-pages
- rm -rf $(DIST_ARCHIVES)
-
-###### Homebrew
-release_build_homebrew: DIST_SHA
- ([ -d homebrew-formulae ] || git clone git@github.com:thoughtbot/homebrew-formulae.git homebrew-formulae) && \
- $(edit_package) homebrew/$(PACKAGE).rb.in > homebrew-formulae/Formula/$(PACKAGE).rb && \
- cd homebrew-formulae &&\
- git commit -am "$(PACKAGE): Release version $(PACKAGE_VERSION)"
-
-release_push_homebrew:
- cd homebrew-formulae &&\
- git push
-
-release_clean_homebrew:
- rm -rf homebrew-formulae
- rm -rf $(DIST_ARCHIVES)
-
-###### Arch
-release_build_arch: DIST_SHA
- ([ -d gh-pages ] || git clone --branch gh-pages . gh-pages) && \
- ([ -d gh-pages/arch ] || mkdir gh-pages/arch) && \
- $(edit_package) arch/PKGBUILD.in > gh-pages/arch/PKGBUILD &&\
- cd gh-pages &&\
- git add arch/PKGBUILD &&\
- git commit -m "Release version $(PACKAGE_VERSION) Arch package"
-
-release_push_arch:
- cd gh-pages &&\
- git push
-
-release_clean_arch:
- rm -rf gh-pages
- rm -rf $(DIST_ARCHIVES)
-
-###### Deb
-release_build_deb: NEWS.md DIST_SHA distcheck
- ([ -d deb-build ] || mkdir -p deb-build) && \
- cp $(DIST_ARCHIVES) deb-build/$(PACKAGE)_$(PACKAGE_VERSION).orig.tar.gz && \
- tar -C deb-build -xf deb-build/$(PACKAGE)_$(PACKAGE_VERSION).orig.tar.gz && \
- cp -R debian deb-build/$(PACKAGE)-$(PACKAGE_VERSION) && \
- cd deb-build/$(PACKAGE)-$(PACKAGE_VERSION) && \
- dch -d "New upstream release" && dch -r "" && \
- cp debian/changelog $(abs_srcdir)/debian/changelog && \
- debuild -us -uc && \
- cd $(abs_srcdir) && \
- ([ -d gh-pages ] || git clone --branch gh-pages $(ORIGIN_URL) gh-pages) && \
- ([ -d gh-pages/debs ] || mkdir gh-pages/debs) && \
- cp deb-build/$(PACKAGE)_$(PACKAGE_VERSION)*.deb gh-pages/debs && \
- cd gh-pages && \
- git add debs/$(PACKAGE)_$(PACKAGE_VERSION)*deb && \
- git commit -m "Release version $(PACKAGE_VERSION) for Debian" -- debs/$(PACKAGE)_$(PACKAGE_VERSION)*deb
-
-release_push_deb:
- cd gh-pages && \
- git push
-
-release_clean_deb:
- rm -rf gh-pages
- rm -rf deb-build
- rm -rf $(DIST_ARCHIVES)
-
-###### Tag
-release_build_tag:
- git tag -s v$(PACKAGE_VERSION) -m "Release $(PACKAGE_VERSION)"
-
-release_push_tag:
- git push origin --tags
-
-release_clean_tag:
-
-DIST_SHA: Makefile distcheck
- $(eval DIST_SHA := $(shell shasum $(srcdir)/$(DIST_ARCHIVES) | cut -d' ' -f1))
+.PHONY: release
+
+release: NEWS.md Makefile distcheck
+ maint/release build tarball $(DIST_ARCHIVES)
+ maint/release build homebrew $(DIST_ARCHIVES)
+ maint/release build arch $(DIST_ARCHIVES)
+ maint/release build deb $(DIST_ARCHIVES)
+ maint/release build tag $(DIST_ARCHIVES)
+ maint/release build man_html $(DIST_ARCHIVES)
+ maint/release push tarball $(DIST_ARCHIVES)
+ maint/release push homebrew $(DIST_ARCHIVES)
+ maint/release push arch $(DIST_ARCHIVES)
+ maint/release push deb $(DIST_ARCHIVES)
+ maint/release push tag $(DIST_ARCHIVES)
+ maint/release push man_html $(DIST_ARCHIVES)
+ maint/release clean tarball $(DIST_ARCHIVES)
+ maint/release clean homebrew $(DIST_ARCHIVES)
+ maint/release clean arch $(DIST_ARCHIVES)
+ maint/release clean deb $(DIST_ARCHIVES)
+ maint/release clean tag $(DIST_ARCHIVES)
+ maint/release clean man_html $(DIST_ARCHIVES)