source: branches/samba-3.0/release-scripts/create-tarball@ 539

Last change on this file since 539 was 313, checked in by Herwig Bauernfeind, 16 years ago

Update 3.0 to final 3.0.36 (rest)

File size: 4.5 KB
Line 
1#!/bin/bash
2
3## option defaults
4OPT_BRANCH=""
5OPT_DOCSDIR=""
6OPT_TAG=""
7OPT_KEYID=""
8
9TOPDIR="`dirname $0`/.."
10VER_H="${TOPDIR}/source/include/version.h"
11
12function exitOnError
13{
14 local _error="$1"
15 local _msg="$2"
16
17 if [ ${_error} -eq 0 ]; then
18 return 0
19 fi
20
21 echo "FAILURE: ${_msg}"
22 exit ${_error}
23}
24
25##
26## Print help usage
27##
28
29function printUsage
30{
31 echo "Usage $0 [options]"
32 echo " --help Print command usage"
33 echo " --branch <name> Specify the branch to to create the archive file from"
34 echo " --copy-docs <dir> Copy documentation from <dir> rather than building"
35 echo " --tag <name> Tag name for release"
36 echo " --keyid <email> The GnuPG key ID used to sign the release tag"
37 echo ""
38}
39
40##
41## Parse the command line options
42##
43
44function parseOptions
45{
46 while [ -n "$1" ]; do
47 case "$1" in
48 --help)
49 printUsage
50 exit 0
51 ;;
52 --branch)
53 shift
54 if [ -z "$1" ]; then
55 printUsage
56 return 1
57 fi
58 OPT_BRANCH="$1"
59 shift
60 ;;
61 --copy-docs)
62 shift
63 if [ -z "$1" ]; then
64 printUsage
65 return 1
66 fi
67 OPT_DOCSDIR="$1"
68 shift
69 ;;
70 --tag)
71 shift
72 if [ -z "$1" ]; then
73 printUsage
74 return 1
75 fi
76 OPT_TAG="$1"
77 shift
78 ;;
79 --keyid)
80 shift
81 if [ -z "$1" ]; then
82 printUsage
83 return 1
84 fi
85 OPT_KEYID="$1"
86 shift
87 ;;
88 *)
89 printUsage
90 return 1
91 ;;
92 esac
93 done
94
95 if [ -z "${OPT_BRANCH}" ]; then
96 echo "You must specify a branch name!"
97 printUsage
98 return 1
99 fi
100}
101
102##
103## Build the dopcumentation (may be a no-op)
104##
105
106function buildDocs
107{
108 if [ -n "${OPT_DOCSDIR}" ]; then
109 if [ ! -d "${OPT_DOCSDIR}" ]; then
110 exitOnError 1 "${OPT_DOCSDIR} does not exist. Please specify the absolute path."
111 fi
112
113 mkdir docs
114 exitOnError $? "Failed to create docs directory"
115
116 rsync -av "${OPT_DOCSDIR}"/ docs/
117 exitOnError $? "Failed top copy docs from ${OPT_DOCSDIR}"
118
119 return 0
120 fi
121
122 echo "Building documentation. This may take a while. Log file in /tmp/docs-build.log.$$"
123
124 ${TOPDIR}/release-scripts/build-docs 2> /tmp/docs-build.log.$$
125 return $?
126
127}
128
129
130##
131## Create a release tag
132##
133function createReleaseTag
134{
135 if [ -z "${OPT_TAG}" ]; then
136 echo "Tagging disabled"
137 return 0
138 fi
139
140 if [ "x`git tag -l ${OPT_TAG}`" != "x" ]; then
141 echo -n "Tag exists. Do you wish to overwrite? (y/N): "
142 read answer
143
144 if [ "x$answer" != "xy" ]; then
145 echo "Tag creation aborted."
146 exit 1
147 fi
148 fi
149
150 if [ -z "${OPT_KEYID}" ]; then
151 echo -n "Enter the keyid:"
152 read OPT_KEYID
153 if [ -z "${OPT_KEYID}" ]; then
154 exitOnError 1 "No keyid specified"
155 fi
156 fi
157
158 git tag -u ${OPT_KEYID} ${OPT_TAG}
159 exitOnError $? "Failed to create tag"
160
161 return 0
162}
163##
164## Main driver
165##
166function main
167{
168 parseOptions "$@"
169 exitOnError $? "Failed to parse options"
170
171 cd $TOPDIR
172
173 git checkout ${OPT_BRANCH}
174 exitOnError $? "Invalid branch name \"${OPT_BRANCH}\""
175
176 (cd source && ./script/mkversion.sh)
177 if [ ! -f $VER_H ]; then
178 exitOnError 1 "Failed to find ${VER_H}!"
179 fi
180
181 version=`grep SAMBA_VERSION_OFFICIAL_STRING $VER_H | awk '{print $3}'`
182 vendor_version=`grep SAMBA_VERSION_VENDOR_SUFFIX $VER_H | awk '{print $3}'`
183 if [ -n "$vendor_version" ]; then
184 version="$version-$vendor_version"
185 fi
186 vendor_patch=`grep "define SAMBA_VERSION_VENDOR_PATCH" $VER_H | awk '{print $3}'`
187 if [ -n "$vendor_patch" ]; then
188 version="$version-$vendor_patch"
189 fi
190 version=`echo $version | sed 's/\"//g'`
191
192 echo "Creating release tarball for Samba $version"
193
194 /bin/rm -rf ../samba-${version}
195 git archive --format=tar --prefix=samba-${version}/ HEAD | (cd .. && tar xf -)
196 exitOnError $? "Failed to create release directory tree"
197
198 pushd ../samba-${version}
199
200 packaging/bin/update-pkginfo ${version} 1 ""
201
202 buildDocs
203 exitOnError $? "Failed to build documentation"
204
205 ( cd source && ./autogen.sh )
206
207 cd ..
208 tar cf samba-${version}.tar --exclude=.git* --exclude=CVS --exclude=.svn samba-${version}
209 exitOnError $? "Failed to create tarball from git tree"
210
211 gpg --detach-sign --armor samba-${version}.tar
212 ## exitOnError $? "Failed to sign tarball"
213
214 gzip -9 samba-${version}.tar
215 exitOnError $? "Failed to compress archive"
216
217 popd
218
219 createReleaseTag
220 exitOnError $? "Failed to create release tag"
221
222 return 0
223}
224
225main "$@"
226exit $?
Note: See TracBrowser for help on using the repository browser.