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