@cryptotaxi247 / netdata-1 / commits / 85b6ae632

Add hooks and packaging scripts

Include missing files in package

Philip Whineray committed Jan 21, 2016 at 07:15 UTC 85b6ae63295138ae94691aeea494e9ecee85dae8
16 files changed +838 -2
.gitignore
+2
@@ -25,3 +25,5 @@ stamp-h1
25 netdata
26 apps.plugin
27 netdata.spec
28 +
29 +*.tar.*
ChangeLog new
+3
@@ -0,0 +1,3 @@
1 +netdata (1.0.0-rc.1) - 2015-11-28
2 +
3 + - initial packaging
Makefile.am
+4 -1
@@ -1,7 +1,7 @@
1 #
2 # Copyright (C) 2015 Alon Bar-Lev <alon.barlev@gmail.com>
3 #
4 -AUTOMAKE_OPTIONS=foreign dist-bzip2 1.10
4 +AUTOMAKE_OPTIONS=foreign dist-bzip2 dist-xz 1.10
5 ACLOCAL_AMFLAGS = -I m4
6
7 MAINTAINERCLEANFILES= \
@@ -18,9 +18,12 @@ MAINTAINERCLEANFILES= \
18
19 EXTRA_DIST = \
20 .gitignore \
21 + autogen.sh \
22 README.md \
23 LICENSE.md \
24 + autogen.sh \
25 netdata-9999.ebuild \
26 + tests/stress.sh \
27 $(NULL)
28
29 SUBDIRS = \
charts.d/Makefile.am
+1
@@ -15,6 +15,7 @@ dist_charts_SCRIPTS = \
15 load_average.chart.sh \
16 mem_apps.chart.sh \
17 mysql.chart.sh \
18 + nginx.chart.sh \
19 nut.chart.sh \
20 opensips.chart.sh \
21 postfix.chart.sh \
conf.d/Makefile.am
+1
@@ -5,4 +5,5 @@ MAINTAINERCLEANFILES= $(srcdir)/Makefile.in
5
6 dist_config_DATA = \
7 apps_groups.conf \
8 + charts.d.conf \
9 $(NULL)
configure.ac
+10 -1
@@ -9,9 +9,18 @@ define([VERSION_FIX], [0])
9 define([VERSION_NUMBER], VERSION_MAJOR[.]VERSION_MINOR[.]VERSION_FIX)
10 define([VERSION_SUFFIX], [_master])
11
12 +dnl Set to "1" for a first RPM release of a new version
13 +PACKAGE_RPM_RELEASE="0.0.$(echo VERSION_SUFFIX | sed 's/^_//')"
14 +
15 AC_INIT([netdata], VERSION_NUMBER[]VERSION_SUFFIX)
16 +
17 +AM_MAINTAINER_MODE([disable])
18 +if test x"$USE_MAINTAINER_MODE" = xyes; then
19 +AC_MSG_NOTICE(***************** MAINTAINER MODE *****************)
20 +PACKAGE_BUILT_DATE=$(date '+%d %b %Y')
21 +fi
22 +
23 PACKAGE_RPM_VERSION="VERSION_NUMBER"
14 -PACKAGE_RPM_RELEASE="0.0.$(echo VERSION_SUFFIX | sed 's/^_//')"
24 AC_SUBST([PACKAGE_RPM_VERSION])
25 AC_SUBST([PACKAGE_RPM_RELEASE])
26
hooks/post-commit new
+5
@@ -0,0 +1,5 @@
1 +#!/bin/sh
2 +if [ -x ./packaging/update-tags ]
3 +then
4 + exec git diff HEAD^ | ./packaging/update-tags -
5 +fi
hooks/pre-commit new
+5
@@ -0,0 +1,5 @@
1 +#!/bin/sh
2 +if [ -x ./packaging/check-files ]
3 +then
4 + exec git diff --cached | ./packaging/check-files -
5 +fi
hooks/prepare-commit-msg new
+2
@@ -0,0 +1,2 @@
1 +#!/bin/sh
2 +test -x ./packaging/release-msg && exec ./packaging/release-msg "$@"
packaging/README.md new
+53
@@ -0,0 +1,53 @@
1 +Packaging Tools
2 +===============
3 +
4 +The programs in this folder are used when packaging from within git
5 +and are not included in source or binary packages.
6 +
7 +For the most part they are used from the git commit hooks (copy
8 +`../hooks/*` to `../.git/hooks` to automate checking and the release
9 +process.
10 +
11 +The check-files script pulls in `*.functions` and `*/*.functions` to
12 +do the actual work.
13 +
14 +`packaging.functions` contains generic checks on e.g `ChangeLog`
15 +and `configure.ac` and automates release version, checking, tagging
16 +and post-release update.
17 +
18 +Programs and packages with specific needs should create extra
19 +`whatever.functions` and supporting scripts in a subdirectory.
20 +
21 +Making a release
22 +----------------
23 +`
24 +Just update ChangeLog and configure.ac to specify a suitable version
25 +suffix:
26 +
27 + empty - final release
28 + pre.# - pre-release candidate
29 + rc.# - pre-release candidate
30 +
31 +If it is a final release and there is a package.spec.in, add a new
32 +entry to the top of the %changelog section and update:
33 + PACKAGE_RPM_RELEASE="1"
34 +
35 +The hooks will take over and if everything is OK will tag the release
36 +(you will be asked to sign the tag) and then update the files ready
37 +for further development.
38 +
39 +The release is not pushed out automatically, so if you want to undo
40 +it, run:
41 +
42 +~~~~
43 +git reset --hard HEAD^^
44 +git tag -d vx.y.z
45 +~~~~
46 +
47 +Otherwise you can just push the results; the script outputs the required
48 +instructions upon success.
49 +
50 +Once pushed the infrastructure will build a set of tar-files on the server.
51 +For information on how to verify, sign and make these available, see:
52 +
53 + https://github.com/firehol/infrastructure/raw/master/doc/release.txt
packaging/check-files new
+126
@@ -0,0 +1,126 @@
1 +#!/bin/bash
2 +
3 +#
4 +# check-files
5 +#
6 +scriptname=check-files
7 +if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
8 +then
9 + echo >&2
10 + echo >&2
11 + echo >&2 "Cannot create temporary directory."
12 + echo >&2
13 + exit 1
14 +fi
15 +
16 +cleanup() {
17 + status=$?
18 + rm -rf "${MYTMP}"
19 + exit $status
20 +}
21 +
22 +# clean up if we get stopped by Crtl-C or forced logout or normal exit
23 +trap cleanup INT
24 +trap cleanup HUP
25 +trap cleanup 0
26 +
27 +set -e
28 +if [ "$1" = "--debug" ]
29 +then
30 + set -x
31 + shift
32 +fi
33 +
34 +if [ $# -lt 1 ]
35 +then
36 + echo "check-files [--debug] -|filenames"
37 + echo "e.g."
38 + echo " git diff | ./packaging/check-files -"
39 + echo "or in .git/hooks/pre-commit:"
40 + echo " exec git diff --cached | ./packaging/check-files -"
41 + exit 1
42 +fi
43 +
44 +if [ ! -x packaging/check-files ]
45 +then
46 + echo "Must be run from base directory"
47 + exit 1
48 +fi
49 +
50 +if [ "$1" = "-" ]
51 +then
52 + from_cache=Y
53 + f=""
54 +else
55 + from_cache=
56 + for f in "$@"
57 + do
58 + if [ ! -f "$f" ]
59 + then
60 + echo "$f: no such file"
61 + exit 1
62 + fi
63 + done
64 +
65 + git status --porcelain "$@" | grep "^?" | cut -c4- > $MYTMP/missing.lst
66 +
67 + while read missing
68 + do
69 + git update-index --add --cacheinfo \
70 + 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 $missing
71 + done < $MYTMP/missing.lst
72 +
73 + empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
74 + git diff $empty_tree -- "$@" > $MYTMP/diff.full
75 + f=$MYTMP/diff.full
76 +
77 + while read missing
78 + do
79 + git update-index --force-remove $missing
80 + done < $MYTMP/missing.lst
81 +fi
82 +
83 +> $MYTMP/diff.lst sed -e "/^+++ b/{p;s:^+++ b/::;w $MYTMP/files.lst" -e "d;}" $f
84 +
85 +#cat $MYTMP/diff.lst
86 +#cat $MYTMP/files.lst
87 +
88 +dirname="${0%/*}"
89 +if [ "$dirname" = "$0" ]; then dirname="."; fi
90 +
91 +for i in $dirname/*.functions $dirname/*/*.functions
92 +do
93 + if [ -f "$i" ]
94 + then
95 + source $i
96 + echo $i | sed -e 's:.*/::' -e 's/\.functions$//' -e 's/\./_/g' >> $MYTMP/fns
97 + fi
98 +done
99 +
100 +status=0
101 +while read fn
102 +do
103 + "${fn}_check_init" $filename || status=1
104 +done < $MYTMP/fns
105 +
106 +while read filename
107 +do
108 + #echo Checking $filename
109 + while read fn
110 + do
111 + if [ $status -eq 0 ]
112 + then
113 + "${fn}_check_file" $filename || status=1
114 + fi
115 + done < $MYTMP/fns
116 +done < $MYTMP/files.lst
117 +
118 +if [ $status -eq 0 ]
119 +then
120 + while read fn
121 + do
122 + "${fn}_check_fin" $filename || status=1
123 + done < $MYTMP/fns
124 +fi
125 +
126 +exit $status
packaging/git-build new
+40
@@ -0,0 +1,40 @@
1 +#!/bin/sh
2 +
3 +# When run from the top-level repository, performs a complete clean
4 +# and maintainer-mode rebuild of the FireHOL package.
5 +
6 +if [ ! -f .gitignore -o ! -f configure.ac -o ! -x autogen.sh ]
7 +then
8 + echo "Run as ./packaging/git-build from an autotools git repository"
9 + exit 1
10 +fi
11 +
12 +# If we are genuinely in a git repo, try to clean it up, otherwise
13 +# just make the assumption
14 +if [ -d .git ]
15 +then
16 + clean=$(git status -s | grep "^?")
17 +
18 + if [ "$clean" ]
19 + then
20 + if [ "$1" != "-ok" ]
21 + then
22 + echo "Warning: this script runs: git clean -d -f -x"
23 + echo " ensure all required ?? files are added, then re-run with '-ok'"
24 + git status -s | grep '^?'
25 + exit 1
26 + fi
27 + fi
28 +
29 + set -e
30 + git clean -d -f -x
31 + set +e
32 +fi
33 +
34 +set -e
35 +./autogen.sh
36 +./configure --enable-maintainer-mode
37 +set +e
38 +make dist
39 +status=$?
40 +exit $status
packaging/packaging.functions new
+316
@@ -0,0 +1,316 @@
1 +#!/bin/bash
2 +
3 +packaging_check_init() {
4 + version_check=
5 +}
6 +
7 +packaging_check_file() {
8 + local filename="$1" status=0
9 +
10 + case $filename in
11 + configure.ac)
12 + check_versions || status=1
13 + version_check=Y
14 + ;;
15 + *.spec.in)
16 + check_versions || status=1
17 + version_check=Y
18 + ;;
19 + ChangeLog)
20 + check_versions || status=1
21 + version_check=Y
22 + if [ $status -eq 0 ]
23 + then
24 + check_changelog || status=1
25 + fi
26 + ;;
27 + *)
28 + #echo "No checks found for $filename"
29 + :
30 + ;;
31 + esac
32 + return $status
33 +}
34 +
35 +packaging_check_fin() {
36 + if [ "$version_check" ]
37 + then
38 + version=`get_configure_ac_version`
39 + case "$(match_version $version)" in
40 + prerelease|candidate|release)
41 + try_build || status=1
42 + if [ $status -eq 0 ]
43 + then
44 + cp $MYTMP/build/*.tar.* .
45 + echo "Check $(cd $MYTMP/build && ls *.tar.gz) before pushing tags"
46 + fi
47 + ;;
48 + esac
49 + fi
50 +}
51 +
52 +get_staged_file() {
53 + local optional=0
54 + if [ "$1" = "-o" ]
55 + then
56 + optional=1
57 + shift
58 + fi
59 +
60 + local dir="${1%/*}"
61 + if [ "$dir" = "$1" ]; then dir="."; fi
62 + mkdir -p $MYTMP/files/$dir
63 +
64 + test -f $MYTMP/files/$1 && return 0
65 +
66 + if [ "$from_cache" ]
67 + then
68 + if [ $optional -eq 1 ]
69 + then
70 + git show :$1 > $MYTMP/files/$1 2> /dev/null || rm -f $MYTMP/files/$1
71 + else
72 + git show :$1 > $MYTMP/files/$1
73 + fi
74 + else
75 + if [ $optional -eq 0 -o -f $1 ]
76 + then
77 + cp $1 $MYTMP/files/$1
78 + fi
79 + fi
80 +}
81 +
82 +try_build() {
83 + if [ -f $MYTMP/success ]; then return 0; fi
84 + mkdir -p $MYTMP/build
85 + git archive HEAD | tar -xf - -C "$MYTMP/build"
86 + git diff --staged | patch -p1 -d "$MYTMP/build"
87 + (cd $MYTMP/build; ./packaging/git-build || touch $MYTMP/fail)
88 + if [ -f $MYTMP/fail ]; then return 1; fi
89 + (cd $MYTMP/build; ./packaging/tar-compare . *.tar.gz || touch $MYTMP/fail)
90 + if [ -f $MYTMP/fail ]; then return 1; fi
91 + touch $MYTMP/success
92 + return 0
93 +}
94 +
95 +get_changelog_version() {
96 + get_staged_file ChangeLog
97 + local v=`sed -ne '1s/.*(\(.*\)).*/\1/p' $MYTMP/files/ChangeLog`
98 + if [ ! "$v" ]; then v="No version in ChangeLog!"; fi
99 + echo "$v"
100 +}
101 +
102 +get_configure_ac_version() {
103 + get_staged_file configure.ac
104 + local v=`sed -n \
105 + -e '/define(\[VERSION_\(MINOR\|FIX\)/s/.*\[\([^[]*\)\].*/.\1/p' \
106 + -e '/define(\[VERSION_\(MAJOR\|SUFFIX\)/s/.*\[\([^[]*\)\].*/\1/p' \
107 + $MYTMP/files/configure.ac | tr -d '\n'`
108 + if [ ! "$v" ]; then v="No version in configure.ac!"; fi
109 + echo "$v"
110 +}
111 +
112 +get_configure_ac_package() {
113 + get_staged_file configure.ac
114 + local v=`sed -n -e 's/AC_INIT(\[\([^]]*\)\].*/\1/p' configure.ac`
115 + if [ ! "$v" ]; then v="noname"; fi
116 + echo "$v"
117 +}
118 +
119 +get_configure_ac_rpmrel() {
120 + get_staged_file configure.ac
121 + local v=`sed -n -e 's/PACKAGE_RPM_RELEASE="\([^"]*\)".*/\1/p' configure.ac`
122 + if [ ! "$v" ]; then v="norpmrel"; fi
123 + echo "$v"
124 +}
125 +
126 +get_spec_version() {
127 + get_staged_file "$1".spec.in
128 + test -f $MYTMP/files/"$1".spec.in || return 0 # Spec file is optional
129 + sed -n -e '1,/^%changelog/d' -e '/^*/{s/.*- \([0-9].*\)/\1/p;q}' "$1".spec.in
130 +}
131 +
132 +splitver() {
133 + local maj min fix sfx IFS=.-_
134 +
135 + maj=$1
136 + min=$2
137 + fix=$3
138 + sfx=$4
139 +
140 + set -- $5
141 + eval $maj=\$1 $min=\$2 $fix=\$3 $sfx=\$4
142 +}
143 +
144 +match_version() {
145 + case "$1" in
146 + [0-9]*.[0-9]*.[0-9]*_*)
147 + # x.y.z_ZZZZ = development branch (can be before or after pre/rc)
148 + echo "development"
149 + ;;
150 + [0-9]*.[0-9]*.[0-9]-pre[0-9]*)
151 + echo "prerelease"
152 + ;;
153 + [0-9]*.[0-9]*.[0-9]-rc.[0-9]*)
154 + echo "candidate"
155 + ;;
156 + [0-9]*.[0-9]*.[0-9]*)
157 + echo "release"
158 + ;;
159 + *)
160 + # Unknown
161 + :
162 + ;;
163 + esac
164 +}
165 +
166 +check_versions() {
167 + local status=0 exact=0 prerelease=0
168 +
169 + if [ -f $MYTMP/version-checked ]
170 + then
171 + read status < $MYTMP/version-checked
172 + return $status
173 + fi
174 +
175 + local confver=`get_configure_ac_version`
176 + case "$(match_version $confver)" in
177 + development)
178 + :
179 + ;;
180 + prerelease|candidate|release)
181 + exact=1
182 + ;;
183 + *)
184 + echo "Unrecognised version in configure.ac ($confver)"
185 + status=1
186 + ;;
187 + esac
188 +
189 + local clogver=`get_changelog_version`
190 + case "$(match_version $clogver)" in
191 + development)
192 + echo "Do not include development branch version in ChangeLog ($clogver)"
193 + status=1
194 + ;;
195 + prerelease|candidate)
196 + prerelease=1
197 + ;;
198 + release)
199 + :
200 + ;;
201 + *)
202 + echo "Unrecognised version format in ChangeLog ($clogver)"
203 + status=1
204 + ;;
205 + esac
206 +
207 + local package=`get_configure_ac_package`
208 + local specver=`get_spec_version $package`
209 +
210 + local clogmaj clogmin clogfix clogsfx
211 + local confmaj confmin conffix confsfx
212 + local specmaj specmin specfix specsfx
213 +
214 + splitver clogmaj clogmin clogfix clogsfx "$clogver"
215 + splitver confmaj confmin conffix confsfx "$confver"
216 + splitver specmaj specmin specfix specsfx "$specver"
217 +
218 + if [ "$specver" ]
219 + then
220 + if [ $specmaj -ne $clogmaj \
221 + -o $specmin -ne $clogmin \
222 + -o $specfix -ne $clogfix ]
223 + then
224 + echo "Main version of $package.spec.in ($specver) differs from ChangeLog ($clogver)"
225 + status=1
226 + fi
227 + fi
228 +
229 + if [ $status -eq 0 -a $exact -eq 0 ]
230 + then
231 +
232 + if [ $confmaj -gt $clogmaj \
233 + -o $confmin -gt $clogmin \
234 + -o $conffix -gt $clogfix ]
235 + then
236 + :
237 + elif [ $confmaj -eq $clogmaj \
238 + -a $confmin -eq $clogmin \
239 + -a $conffix -eq $clogfix \
240 + -a $prerelease -eq 1 ]
241 + then
242 + :
243 + else
244 + echo "Version in configure.ac ($confver) lesser than ChangeLog ($clogver)"
245 + status=1
246 + fi
247 + fi
248 +
249 + if [ $exact -eq 1 ]
250 + then
251 + echo "Running additional release checks"
252 +
253 + if [ "$confver" != "$clogver" ]
254 + then
255 + echo "Version in configure.ac ($confver) differs from ChangeLog ($clogver)"
256 + status=1
257 + elif [ "$(git tag -l v$confver)" ]
258 + then
259 + echo "Tag v$confver already exists"
260 + status=1
261 + fi
262 +
263 + if [ "$specver" ]
264 + then
265 + local confrpmrel=`get_configure_ac_rpmrel`
266 + if [ "$specsfx" != "$confrpmrel" ]
267 + then
268 + echo "%changelog suffix in $package.spec.in ($specsfx) differs from configure.ac PACKAGE_RPM_RELEASE ($confrpmrel)"
269 + status=1
270 + fi
271 + fi
272 +
273 + if [ "$(git config user.signingkey)" = "" ]
274 + then
275 + echo "You need to set up a PGP signing key e.g.:"
276 + echo " gpg --list-keys"
277 + echo "and"
278 + echo " git config user.signingkey SHORTID"
279 + echo "or"
280 + echo " git config --global user.signingkey SHORTID"
281 + status=1
282 + fi
283 +
284 + git status -s | grep "^?" > $MYTMP/needclean
285 + if [ -s $MYTMP/needclean ]
286 + then
287 + echo "The following files must be dealt with before commit:"
288 + cat $MYTMP/needclean
289 + echo "e.g. add them to .gitignore or remove with 'git clean -fdx'"
290 + status=1
291 + fi
292 + fi
293 +
294 + echo $status > $MYTMP/version-checked
295 + return $status
296 +}
297 +
298 +check_changelog() {
299 + local status=0
300 +
301 + if [ -f $MYTMP/changelog-checked ]
302 + then
303 + read status < $MYTMP/changelog-checked
304 + return $status
305 + fi
306 +
307 + local version=`sed -ne '1s/.*(\(.*\)).*/\1/p' $filename`
308 + if [ "`echo $version | grep '[[:space:]]'`" != "" ]
309 + then
310 + echo "ChangeLog version contains whitespace! Fix it!"
311 + status=1
312 + fi
313 +
314 + echo $status > $MYTMP/changelog-checked
315 + return $status
316 +}
packaging/release-msg new
+59
@@ -0,0 +1,59 @@
1 +#!/bin/bash
2 +
3 +#
4 +# release-msg
5 +#
6 +scriptname=release-msg
7 +if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
8 +then
9 + echo >&2
10 + echo >&2
11 + echo >&2 "Cannot create temporary directory."
12 + echo >&2
13 + exit 1
14 +fi
15 +
16 +cleanup() {
17 + status=$?
18 + rm -rf "${MYTMP}"
19 + exit $status
20 +}
21 +
22 +# clean up if we get stopped by Crtl-C or forced logout or normal exit
23 +trap cleanup INT
24 +trap cleanup HUP
25 +trap cleanup 0
26 +
27 +set -e
28 +if [ "$1" = "--debug" ]
29 +then
30 + set -x
31 + shift
32 +fi
33 +
34 +if [ $# -lt 1 ]
35 +then
36 + echo "Use only from .git/hooks/prepare-commit-msg"
37 + exit 1
38 +fi
39 +
40 +if [ ! -x packaging/release-msg ]
41 +then
42 + echo "Must be run from base directory"
43 + exit 1
44 +fi
45 +
46 +dirname="${0%/*}"
47 +if [ "$dirname" = "$0" ]; then dirname="."; fi
48 +source $dirname/packaging.functions
49 +
50 +mkdir -p $MYTMP/files
51 +git show :configure.ac > $MYTMP/files/configure.ac
52 +version=`get_configure_ac_version`
53 +case "$(match_version $version)" in
54 + prerelease|candidate|release)
55 + sed -i -e "1s/.*/Prepare release $version/" "$1"
56 + ;;
57 +esac
58 +
59 +exit 0
packaging/tar-compare new
+62
@@ -0,0 +1,62 @@
1 +#!/bin/sh
2 +
3 +# When provided with a git repo, which has been used to produce a
4 +# distribution tar.gz (with make dist) and the resultant tar-file,
5 +# lists files which appear in one or the other only, to help check
6 +# for missing EXTRA_DIST entries in Makefile.am files.
7 +
8 +scriptname=tar-compare
9 +if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
10 +then
11 + echo >&2
12 + echo >&2
13 + echo >&2 "Cannot create temporary directory."
14 + echo >&2
15 + exit 1
16 +fi
17 +
18 +cleanup() {
19 + status=$?
20 + rm -rf "${MYTMP}"
21 + exit $status
22 +}
23 +
24 +# clean up if we get stopped by Crtl-C or forced logout or normal exit
25 +trap cleanup INT
26 +trap cleanup HUP
27 +trap cleanup 0
28 +
29 +if [ $# -ne 2 ]
30 +then
31 + echo "tar-compare git-dir tar-gz-file"
32 + exit 1
33 +fi
34 +
35 +mkdir $MYTMP/unpack
36 +tar xfzC "$2" $MYTMP/unpack
37 +diff -r "$1" $MYTMP/unpack/* | grep "^Only" | sed \
38 + -e '/: autom4te\.cache$/d' \
39 + -e '/: \.deps$/d' \
40 + -e '/: \.git$/d' \
41 + -e '/: \.gitattributes$/d' \
42 + -e '/: \.gitignore$/d' \
43 + -e '/: config\.log$/d' \
44 + -e '/: config\.status$/d' \
45 + -e '/: config\.h.*$/d' \
46 + -e '/: Makefile$/d' \
47 + -e '/: hooks$/d' \
48 + -e '/: packaging$/d' \
49 + -e '/: stamp-h1$/d' \
50 + -e '/: README\.md$/d' \
51 + -e '/: tmp-anchor-links$/d' \
52 + -e '/: tmp-manproc$/d' \
53 + -e '/: .*\.tar\.\(gz\|bz2\|xz\)$/d' \
54 + -e '/: unittest$/d' \
55 + -e '/: iprange$/d' \
56 + -e '/: .*\.o$/d' \
57 + -e '/sbin: \(firehol\|fireqos\|link-balancer\)$/d' \
58 + -e '/sbin: \(update-ipsets\|vnetbuild\|commands.sed\)$/d' > $MYTMP/out
59 +
60 +cat $MYTMP/out
61 +test -s $MYTMP/out && exit 1
62 +exit 0
packaging/update-tags new
+149
@@ -0,0 +1,149 @@
1 +#!/bin/bash
2 +
3 +#
4 +# update-tags
5 +#
6 +scriptname=update-tags
7 +if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
8 +then
9 + echo >&2
10 + echo >&2
11 + echo >&2 "Cannot create temporary directory."
12 + echo >&2
13 + exit 1
14 +fi
15 +
16 +cleanup() {
17 + status=$?
18 + if [ $status -ne 0 ]
19 + then
20 + echo "FAILED."
21 + if [ "$TAGVER" ]
22 + then
23 + git tag -d "$TAGVER"
24 + fi
25 + echo "To re-run manually:"
26 + echo " git diff HEAD^ | ./packaging/update-tags -"
27 + echo "To undo commit:"
28 + echo " git reset HEAD^"
29 + fi
30 + rm -rf "${MYTMP}"
31 + exit $status
32 +}
33 +
34 +# clean up if we get stopped by Crtl-C or forced logout or normal exit
35 +trap cleanup INT
36 +trap cleanup HUP
37 +trap cleanup 0
38 +
39 +set -e
40 +if [ "$1" = "--debug" ]
41 +then
42 + set -x
43 + shift
44 +fi
45 +
46 +if [ $# -lt 1 ]
47 +then
48 + echo "Use only from .git/hooks/post-commit"
49 + exit 1
50 +fi
51 +
52 +if [ ! -x packaging/update-tags ]
53 +then
54 + echo "Must be run from base directory"
55 + exit 1
56 +fi
57 +
58 +if [ "$1" = "-" ]
59 +then
60 + from_cache=Y
61 + f=""
62 +else
63 + from_cache=
64 + for f in "$@"
65 + do
66 + if [ ! -f "$f" ]
67 + then
68 + echo "$f: no such file"
69 + exit 1
70 + fi
71 + done
72 +
73 + git status --porcelain "$@" | grep "^?" | cut -c4- > $MYTMP/missing.lst
74 +
75 + while read missing
76 + do
77 + git update-index --add --cacheinfo \
78 + 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 $missing
79 + done < $MYTMP/missing.lst
80 +
81 + empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
82 + git diff $empty_tree -- "$@" > $MYTMP/diff.full
83 + f=$MYTMP/diff.full
84 +
85 + while read missing
86 + do
87 + git update-index --force-remove $missing
88 + done < $MYTMP/missing.lst
89 +fi
90 +
91 +> $MYTMP/diff.lst sed -e "/^+++ b/{p;s:^+++ b/::;w $MYTMP/files.lst" -e "d;}" $f
92 +
93 +#cat $MYTMP/diff.lst
94 +#cat $MYTMP/files.lst
95 +
96 +dirname="${0%/*}"
97 +if [ "$dirname" = "$0" ]; then dirname="."; fi
98 +source $dirname/packaging.functions
99 +
100 +status=0
101 +while read filename
102 +do
103 + #echo Checking $filename
104 + case $filename in
105 + configure.ac|ChangeLog)
106 + mkdir -p $MYTMP/files
107 + git show HEAD:configure.ac > $MYTMP/files/configure.ac
108 + version=`get_configure_ac_version`
109 + case "$(match_version $version)" in
110 + prerelease|candidate|release)
111 + do_release=Y
112 + ;;
113 + esac
114 + ;;
115 + *)
116 + #echo "No checks found for $filename"
117 + :
118 + ;;
119 + esac
120 +done < $MYTMP/files.lst
121 +
122 +if [ "$do_release" ]
123 +then
124 + echo "Tagging new release with:"
125 + echo " git tag -s \"v$version\" -m \"Release version $version\""
126 + git tag -s "v$version" -m "Release version $version"
127 + TAGVER="v$version"
128 +
129 + splitver confmaj confmin conffix confsfx "$version"
130 + if [ ! "$confsfx" ]
131 + then
132 + echo "Incrementing version in configure.ac:"
133 + conffix=`expr $conffix + 1`
134 + sed -i -e "s/define(\[VERSION_FIX\], \[.*])/define([VERSION_FIX], [$conffix])/" configure.ac
135 + fi
136 +
137 + echo "Resetting suffix in configure.ac:"
138 + sed -i -e 's/define(\[VERSION_SUFFIX\], \[.*])/define([VERSION_SUFFIX], [_master])/' configure.ac
139 + sed -i -e 's:^PACKAGE_RPM_RELEASE=.*:PACKAGE_RPM_RELEASE="0.0.$(echo VERSION_SUFFIX | sed s/^_//)":' configure.ac
140 +
141 + echo "Committing new configure.ac:"
142 + git commit --no-verify -m "Post release $version" -- configure.ac
143 + echo ""
144 + echo "Verify, then:"
145 + echo " git push origin"
146 + echo " git push origin tag $TAGVER"
147 +fi
148 +
149 +exit $status