diff options
author | Max <msuraev@sysmocom.de> | 2017-07-04 18:19:38 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-08-08 11:55:03 +0000 |
commit | ff932bbc38661a327382495de1e30b521a91b548 (patch) | |
tree | d5b574f48af55a2acc48e9b22626d61d0500d46f | |
parent | a8a8d3977dc3b31352f8a87ca005763677bd7e8c (diff) |
Add release target to Makefile
Add simple helper target to automate basic release steps:
* version bump
* prepare release commit
* git commit, tag and sign
For library projects:
* update debian/changelog from TODO-RELEASE
* cleanup TODO-RELEASE
For non-library projects:
* update debian/changelog from git log
Note: it requires bumpversion package to be installed, debian/control is
adjusted accordingly. The helper itself is installed to facilitate reuse
by other libraries.
N. B: you still have to manually adjust LIBVERSION in previous commit -
see TODO-RELEASE header for details.
Use it as follows:
make REL=minor release
The REL parameter defines which component of the version [1] to bump and
can be any of { major, minor, patch }.
[1] http://semver.org/
Change-Id: I790ceb958195b9f6cbabfe8c977dc30e2bd7414b
Related: OS#1861
-rw-r--r-- | Makefile.am | 9 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | debian/control | 1 | ||||
-rw-r--r-- | osmo-release.mk | 28 |
4 files changed, 41 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index b8de3cad..8b358568 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,13 +7,20 @@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libosmocore.pc libosmocodec.pc libosmovty.pc libosmogsm.pc \ libosmogb.pc libosmoctrl.pc libosmocoding.pc +@RELMAKE@ + +relengdir = $(includedir) +releng_DATA = osmo-release.mk + +osmo-release.mk: git-version-gen + BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ dist-hook: echo $(VERSION) > $(distdir)/.tarball-version -EXTRA_DIST = git-version-gen .version README.md +EXTRA_DIST = git-version-gen .version README.md osmo-release.mk if HAVE_DOXYGEN diff --git a/configure.ac b/configure.ac index 96757df2..5821ad36 100644 --- a/configure.ac +++ b/configure.ac @@ -11,6 +11,10 @@ AC_CONFIG_TESTDIR(tests) dnl kernel style compile messages m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +dnl include release helper +RELMAKE='-include osmo-release.mk' +AC_SUBST([RELMAKE]) + dnl checks for programs AC_PROG_MAKE_SET AC_PROG_MKDIR_P diff --git a/debian/control b/debian/control index b19448e1..e2661735 100644 --- a/debian/control +++ b/debian/control @@ -281,6 +281,7 @@ Architecture: any Multi-Arch: same Section: libdevel Depends: libosmocore, + bumpversion, libtalloc-dev, ${misc:Depends} Description: Development headers for Open Source MObile COMmunications CORE library diff --git a/osmo-release.mk b/osmo-release.mk new file mode 100644 index 00000000..4407c861 --- /dev/null +++ b/osmo-release.mk @@ -0,0 +1,28 @@ +ifdef REL +NEW_VERSION := $(shell bumpversion --list --current-version $(VERSION) $(REL) --allow-dirty | awk -F '=' '{ print $$2 }') +LIBVERS := $(shell git grep -n LIBVERSION | grep '=' | grep am | grep -v LDFLAGS) +ISODATE := $(shell date -I) +endif + +release: +ifeq ($(NEW_VERSION),) + @$(error Failed to determine NEW_VERSION - please fix versioning (current is $(VERSION)) before proceeding with the release) +endif + @echo "Releasing" $(VERSION) "->" $(NEW_VERSION)"..." +ifeq ($(LIBVERS),) + @gbp dch --debian-tag='%(version)s' --auto --meta --git-author --multimaint-merge +else + @echo "You should NOT be doing this unless you've read and understood following article:" + @echo "https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info" + @grep -v '#' TODO-RELEASE | sed 's/\t\+/:/g' | xargs -d'\n' -I entry dch -m -v $(NEW_VERSION) "entry" + @dch -r -m --distribution "unstable" "" + @grep '#' TODO-RELEASE > TODO-RELEASE.clean + @mv TODO-RELEASE.clean TODO-RELEASE + @echo "Do NOT push the release commit if you have not adjusted LIBVERSION in preceeding commit!!!" + @echo "Are you sure the following versions are correct?" + @echo $(LIBVERS) +endif + @git add -u + @bumpversion --current-version $(VERSION) $(REL) --tag --commit --tag-name $(NEW_VERSION) --allow-dirty + @git tag -s $(NEW_VERSION) -f -m "Release v$(NEW_VERSION) on $(ISODATE)." + @echo "Release" $(NEW_VERSION) "prepared, tagged and signed." |