Makefile: complicate version detection script
We've declared that we are using semantic versioning. We also want to use `git describe` to make version strings for us because it's very convenient for development builds (tagged versions are way simpler). The problem is that the default `git describe` behavior is not semver compliant. If the most recent tag is v0.99.2 then it'll generate something like '0.99.2-131-g8dc5b385', which according to semver is a development version _before_ 0.99.2. While it's obviously a version _after_ 0.99.2. That's the one and only reason we have vX.Y.Z-pre tags in our repo. We set them right after the release according to the release process and that gives us some '0.99.3-pre-131-g8dc5b385' versions we're all used to. But these tags are ugly as hell and they clutter up our repo over time. So there is this idea that we can do patch version increment dynamically. Making '0.99.2-131-g8dc5b385' be '0.99.3-pre-131-g8dc5b385' without any *-pre tags. This patch implements this. It's ugly as hell as well, but at least that's an ugliness somewhere inside our Makefile and not directly visible in our tags. If we're to do this we can then greatly simplify our release process (and even allow for CHANGELOG patches to be merged normally). I know this can be done with awk in somewhat easier way, but no, I'm not into awk, sorry.
This commit is contained in:
parent
87a4fa827a
commit
b27e6918bd
1 changed files with 1 additions and 1 deletions
2
Makefile
2
Makefile
|
@ -16,7 +16,7 @@ DC_FILE ?= ".docker/docker-compose.yml" # Single docker-compose for Ubuntu/WSC,
|
|||
ENV_IMAGE_TAG="env_neo_go_image"
|
||||
|
||||
REPO ?= "$(shell go list -m)"
|
||||
VERSION ?= "$(shell git describe --tags --match "v*" --abbrev=8 2>/dev/null | sed 's/^v//')"
|
||||
VERSION ?= "$(shell git describe --tags --match "v*" --abbrev=8 2>/dev/null | sed -r 's,^v([0-9]+\.[0-9]+)\.([0-9]+)(-.*)?$$,\1 \2 \3,' | while read mm patch suffix; do if [ -z "$$suffix" ]; then echo $$mm.$$patch; else patch=`expr $$patch + 1`; echo $$mm.$${patch}-pre$$suffix; fi; done)"
|
||||
MODVERSION ?= "$(shell cat go.mod | cat go.mod | sed -r -n -e 's|.*pkg/interop (.*)|\1|p')"
|
||||
BUILD_FLAGS = "-X '$(REPO)/pkg/config.Version=$(VERSION)' -X '$(REPO)/cli/smartcontract.ModVersion=$(MODVERSION)'"
|
||||
|
||||
|
|
Loading…
Reference in a new issue