forked from cruzdb/zlog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmake-dist.sh
executable file
·77 lines (63 loc) · 2.38 KB
/
make-dist.sh
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
#!/bin/sh
set -e
# adapted from github.com/ceph/ceph make-dist script
if [ ! -d .git ]; then
echo "no .git directory found."
exit 1
fi
# TODO: build the tarball without making a copy of the source. zlog repo isn't
# very big, so this isn't a big deal. much easier than editing this script :)
if [ ! -z "$OUTDIR" ]; then
cp -a ${PWD} ${OUTDIR}/zlog
cd ${OUTDIR}/zlog
fi
# get version from git tags and the current working directory version. it will
# show vX.Y.Z-patch_count-sha1 where X.Y.Z is the most recent reachable tag. And
# run on a checked out version that matches a tag the version will be exactly:
# x.y.z for a clean release name.
version=$1
[ -z "$version" ] && version=`git describe --match 'v*' | sed 's/^v//'`
echo "version $version"
# clean out old cruft...
outfile="zlog-$version"
echo "cleanup..."
rm -f $outfile*
# update submodules
echo "updating submodules..."
force=$(if git submodule usage 2>&1 | grep --quiet 'update.*--force'; then echo --force ; fi)
if ! git submodule sync || ! git submodule update $force --init --recursive; then
echo "Error: could not initialize submodule projects"
echo " Network connectivity might be required."
exit 1
fi
# build tarball
echo "building tarball..."
bin/git-archive-all.sh --prefix ${outfile}/ --verbose ${outfile}.tar
# populate files with version strings
(git rev-parse HEAD ; git describe) 2> /dev/null > src/.git_version
# if the version has '-' in it, it has a 'release' part,
# like vX.Y.Z-N-g<shortsha1>. If it doesn't, it's just
# vX.Y.Z. Handle both, and translate - to . for rpm
# naming rules (the - separates version and release).
if expr index ${version} '-' > /dev/null; then
rpm_version=`echo ${version} | cut -d - -f 1-1`
rpm_release=`echo ${version} | cut -d - -f 2- | sed 's/-/./'`
else
rpm_version=${version}
rpm_release=0
fi
for tmpl in zlog.spec.in alpine/APKBUILD.in; do
cat ${tmpl} |
sed "s/@VERSION@/${rpm_version}/g" |
sed "s/@RELEASE@/${rpm_release}/g" |
sed "s/@TARBALL_BASENAME@/${outfile}/g" > `echo ${tmpl} | sed 's/.in$//'`
done
ln -s . ${outfile}
tar cvf ${outfile}.version.tar ${outfile}/src/.git_version ${outfile}/alpine/APKBUILD
tar --concatenate -f ${outfile}.both.tar ${outfile}.version.tar
tar --concatenate -f ${outfile}.both.tar ${outfile}.tar
mv ${outfile}.both.tar ${outfile}.tar
rm -f ${outfile} ${outfile}.version.tar
echo "compressing..."
bzip2 -9 ${outfile}.tar
echo "done."