123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # versioning
- BUMP_VERSION_CONFIG = .bumpversion.cfg
- # allow missing "patch" number
- BUMP_VERSION_PARSE_REGEX = (?P<major>\d+)\.(?P<minor>\d+)(?:\.(?P<patch>\d+))?
- CURRENT_VERSION_FILE ?= VERSION
- BUMP_VERSION_FILES = $(shell sed -n 's/^\[bumpversion:file:\(.*\)\]$$/\1/p' "$(BUMP_VERSION_CONFIG)")
- IS_VERSION_WITH_BUMPVERSION = $(wildcard .bumpversion.cfg)
- IS_VERSION_WITH_GIT = $(wildcard .git)
- IS_VERSION_WITH_DEB = $(wildcard debian/changelog)
- get_current_version = $(shell cat "$(CURRENT_VERSION_FILE)")
- .PHONY: help
- help: help-release
- .PHONY: help-release
- help-release:
- @echo "Release-related packaging targets:"
- @echo " release-major"
- @echo " release-minor"
- @echo " release-patch"
- @echo " release-undo"
- @echo " release-push"
- @echo
- release-major: VERSION_BUMP=major
- release-minor: VERSION_BUMP=minor
- release-patch: VERSION_BUMP=patch
- .PHONY: release-major release-minor release-patch
- release-major release-minor release-patch: release-generic
- .PHONY: release-generic
- ifneq ($(IS_VERSION_WITH_BUMPVERSION),)
- release-generic:: | release-bumpversion
- endif
- ifneq ($(IS_VERSION_WITH_DEB),)
- release-generic:: | release-debchange
- endif
- # take care for the ordering: 'release-git' needs to run before '-debchange' and '-bumpversion'
- ifneq ($(IS_VERSION_WITH_GIT),)
- release-generic:: release-git
- endif
- .PHONY: release-bumpversion
- release-bumpversion:
- @if [ ! -e "$(BUMP_VERSION_CONFIG)" ]; then \
- echo >&2 "Configuration file '$(BUMP_VERSION_CONFIG)' missing"; \
- exit 1; \
- fi
- @# bump version without committing (done after updating debian/changelog)
- @bumpversion --config-file "$(BUMP_VERSION_CONFIG)" \
- --parse "$(BUMP_VERSION_PARSE_REGEX)" \
- --current-version "$(call get_current_version)" \
- "$(VERSION_BUMP)"
- .PHONY: release-debchange
- release-debchange:
- debchange --newversion "$(call get_current_version)-1" "New upstream release"
- debchange --release ""
- .PHONY: release-git
- release-git:
- git add $(BUMP_VERSION_FILES)
- @# add other version-related files (if they exist)
- for file in "$(BUMP_VERSION_CONFIG)" debian/changelog; do \
- if [ -e "$$file" ]; then git add "$$file"; fi; done
- git commit -m "Bump version: $$(git show "HEAD:$(CURRENT_VERSION_FILE)") -> $(call get_current_version)"
- git tag -a "v$(call get_current_version)" -m "Bump version: $(VERSION_BUMP)"
- .PHONY: check-release-is-current-commit
- check-release-is-current-commit:
- [ "$$(git show -s --format=%H v$(call get_current_version)^{commit})" \
- = "$$(git show -s --format=%H)" ]; # refuse to run if the current commit is not the latest tag
- .PHONY: release-undo
- release-undo: check-release-is-current-commit
- [ -z "$$(git status -s)" ]; # refuse to run in a non-clean working directory
- git tag -d "v$(call get_current_version)"
- git reset --hard HEAD~
- .PHONY: release-push
- release-push:
- git push --follow-tags
|