-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakelocal-version-svn
79 lines (61 loc) · 2.55 KB
/
Makelocal-version-svn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#---*- Makefile -*-------------------------------------------------------
#$Author: vantanas $
#$Date: 2020-01-23 16:02:01 +0200 (Thu, 23 Jan 2020) $
#$Revision: 239 $
#$URL: svn+ssh://saulius-grazulis.lt/home/saulius/svn-repositories/makefiles/versions/Makelocal-version-svn $
#------------------------------------------------------------------------
TRUNK ?= ^/trunk
BRANCHES ?= ^/branches
RELEASES ?= ${BRANCHES}
PKG_NAME ?= $(shell pwd | xargs dirname | xargs basename)
SVN_VERSION_KEYWORDS ?= WIP $$Revision: 239 $$ $$URL: svn+ssh://saulius-grazulis.lt/home/saulius/svn-repositories/makefiles/versions/Makelocal-version-svn $$
.PHONY: release major minor patch
VFILE ?= .version
VERSION_PM ?= lib/perl5/Version.pm
.PRECIOUS: ${VERSION_PM}
REPORTED_VERSION := $(shell grep -v "^\#" ${VFILE} | awk '{print $$0}' | sed 's/\$$//g; s/ */ /g')
VERSION := $(shell grep -v "^\#" ${VFILE} | awk '{print $$1}' )
## all tests test: lib/Version.slib
version.h: version.hin ${VFILE}
sed 's,@VERSION@,${REPORTED_VERSION},' $< > $@
%/Version.pm: %/Version.pmin ${VFILE}
sed 's,@VERSION@,${REPORTED_VERSION},' $< > $@
%/package-version: %/package-version.in ${VFILE}
sed 's,@VERSION@,${REPORTED_VERSION},' $< > $@
chmod 755 $@
%/Version.slib: %/Version.sin ${VFILE}
sed 's,@VERSION@,${REPORTED_VERSION},' $< > $@
release:
svn ci
perl -lpi -e 's/\(unreleased\)/(${VERSION})/ if $$. == 1' CHANGELOG
perl -lpi -e 's/\.\.\./${PKG_NAME}/ if $$. == 1' CHANGELOG
awk '/^#/{print} !/^#/{print $$1}' ${VFILE} > ${VFILE}.$$$$; \
mv -f ${VFILE}.$$$$ ${VFILE}
svn ci -m "CHANGELOG: switching from 'unreleased' to '${VERSION}'"
svn cp ${TRUNK} ${RELEASES}/v${VERSION} \
-m "Preparing version ${VERSION} for release in the release branch."
${MAKE} minor
echo "${PKG_NAME} (unreleased)\n\n * ...\n" | cat - CHANGELOG \
> CHANGELOG.$$$$.tmp; \
mv -f CHANGELOG.$$$$.tmp CHANGELOG
awk '/^#/{print} !/^#/{print $$1, "${SVN_VERSION_KEYWORDS}"}' ${VFILE} \
> ${VFILE}.$$$$; \
mv -f ${VFILE}.$$$$ ${VFILE}
major:
awk -F. '/^#/{print} !/^#/{print $$1+1 ".0" ".0", "${SVN_VERSION_KEYWORDS}"}' \
${VFILE} > ${VFILE}.$$$$; \
cat ${VFILE}.$$$$ > ${VFILE}; \
rm -f ${VFILE}.$$$$
minor:
awk -F. '/^#/{print} !/^#/{print $$1 "." $$2+1 ".0", "${SVN_VERSION_KEYWORDS}"}' \
${VFILE} > ${VFILE}.$$$$; \
cat ${VFILE}.$$$$ > ${VFILE}; \
rm -f ${VFILE}.$$$$
patch:
awk -F. '/^#/{print} !/^#/{print $$1 "." $$2 "." $$3+1, "${SVN_VERSION_KEYWORDS}"}' \
${VFILE} > ${VFILE}.$$$$; \
cat ${VFILE}.$$$$ > ${VFILE}; \
rm -f ${VFILE}.$$$$
cleanAll distclean: clean-version
clean-version:
rm -f ${VERSION_PM}