source: vendor/3.6.23/release-scripts/create-tarball

Last change on this file was 740, checked in by Silvan Scherrer, 13 years ago

Samba Server: update vendor to 3.6.0

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