4 # This script builds a delivery
8 # $2: build type (dev, rel)
9 # $3: SVN location (trunk, tags, branches)
11 # $5: delivery version
12 # $6: branch identifier
15 # Environment variable that MUST be defined
16 # by the calling script
18 # SVN_URL SVN_USER SVN_PASS
23 BIN_CHMOD="/bin/chmod"
26 BIN_GETDIST="/usr/bin/getdist"
27 BIN_MKDIR="/bin/mkdir"
29 BIN_SVN="/usr/bin/svn"
65 if [ -n "$DIR" ] ; then
66 if [ "$DIR" != "/" ] ; then
69 $BIN_ECHO "-> The name of the directory to delete is '/' !!!"
73 $BIN_ECHO "-> The name of the directory to delete is empty"
79 # $1: target directory
80 # $2: build type (dev, rel)
81 # $3: SVN location (trunk, tags, branches)
83 # $5: delivery version
84 # $6: branch identifier
86 if [ $EXIT -eq 0 ] ; then
87 $BIN_ECHO "Reading configuration"
89 $BIN_ECHO "-> Target directory parameter is missing"
95 $BIN_ECHO "-> Target directory '$1' does not exist"
100 $BIN_ECHO "-> Build type is missing"
103 if [ "$2" != "dev" -a "$2" != "rel" ] ; then
104 $BIN_ECHO "-> Build type '$2' is not supported"
110 if [ -z "$3" ] ; then
111 $BIN_ECHO "-> SVN location parameter is missing"
114 if [ "$3" != "trunk" -a "$3" != "tags" -a "$3" != "branches" ] ; then
115 $BIN_ECHO "-> SVN location '$3' is not supported"
121 if [ -z "$4" ] ; then
122 $BIN_ECHO "-> SVN delivery parameter is missing"
127 if [ -z "$5" ] ; then
128 if [ "$SVN_LOCATION" = "tags" -o "$SVN_LOCATION" = "branches" ] ; then
129 $BIN_ECHO "-> SVN version parameter is missing"
135 if [ -z "$6" ] ; then
136 if [ "$SVN_LOCATION" = "branches" ] ; then
137 $BIN_ECHO "-> SVN branch parameter is missing"
143 if [ -x $BIN_GETDIST ] ; then
144 HOST_OS=`$BIN_GETDIST`
146 $BIN_ECHO "-> Binary '$BIN_GETDIST' is missing"
149 if [ ! -x $BIN_SVN ] ; then
150 $BIN_ECHO "-> Binary '$BIN_SVN' is missing"
154 if [ $EXIT -eq 0 ] ; then
155 case "$SVN_LOCATION" in
159 SVN_PATH_PACKAGE="trunk/delivery/$SVN_DELIVERY/package"
160 SVN_LOG="$TARGET_DIR/delivery-$SVN_DELIVERY-trunk.svnlog"
161 TARBALL_NAME=$SVN_DELIVERY-trunk
165 SVN_PATH_PACKAGE="tags/delivery/$SVN_DELIVERY/$SVN_VERSION/package"
166 SVN_LOG="$TARGET_DIR/delivery-$SVN_DELIVERY-$SVN_VERSION.svnlog"
167 TARBALL_NAME=$SVN_DELIVERY-$SVN_VERSION
170 SVN_PATH_PACKAGE="branches/delivery/$SVN_DELIVERY/$SVN_VERSION-$SVN_BRANCH/package"
171 SVN_LOG="$TARGET_DIR/delivery-$SVN_DELIVERY-$SVN_VERSION-$SVN_BRANCH.svnlog"
172 TARBALL_NAME=$SVN_DELIVERY-$SVN_VERSION-$SVN_BRANCH
175 $BIN_ECHO "-> SVN location '$SVN_LOCATION' is not supported"
179 if [ $EXIT -eq 0 ] ; then
180 if [ -e $TARGET_DIR/$TARBALL_NAME ] ; then
181 $BIN_ECHO "-> Directory '$TARGET_DIR/$TARBALL_NAME' already exists"
185 if [ $EXIT -eq 0 ] ; then
188 if [ $EXIT -eq 0 ] ; then
189 TMP_DIR="$TARGET_DIR/readconfig"
190 if [ -e $TMP_DIR ] ; then
191 $BIN_ECHO "-> Directory '$TMP_DIR' already exists"
194 $BIN_MKDIR -p $TMP_DIR
195 if [ $? -ne 0 ] ; then
196 $BIN_ECHO "-> Error while creating directory '$TMP_DIR'"
201 if [ $EXIT -eq 0 ] ; then
202 pushd $TMP_DIR >> /dev/null 2>&1
203 $BIN_ECHO -e "\n\n\n$BIN_SVN checkout --username $SVN_USER --password $SVN_PASS $SVN_URL/$SVN_PATH_PACKAGE .\n\n\n" >> $SVN_LOG
204 $BIN_SVN checkout --username $SVN_USER --password $SVN_PASS $SVN_URL/$SVN_PATH_PACKAGE . >> $SVN_LOG 2>&1
205 if [ $? -ne 0 ] ; then
206 $BIN_ECHO "-> Error while checkouting URL '$SVN_URL/$SVN_PATH_PACKAGE'"
209 popd >> /dev/null 2>&1
211 if [ $EXIT -eq 0 ] ; then
212 if [ -e $TMP_DIR/config ] ; then
217 if [ "$BUILD_TYPE" = "dev" ] ; then
218 COMPONENTS=$DEV_COMPONENTS
220 COMPONENTS=$REL_COMPONENTS
223 $BIN_ECHO "-> File '$TMP_DIR/config' is missing"
228 if [ $EXIT -eq 0 ] ; then
235 if [ $EXIT -eq 0 ] ; then
236 $BIN_ECHO "Checking delivery '$SVN_DELIVERY'"
238 if [ -z "$TARGET_OS" ] ; then
241 for OS in $TARGET_OS ; do
242 if [ "$OS" = "$HOST_OS" ] ; then
247 if [ $BUILD -eq 1 ] ; then
248 MESSAGE="Delivery need to be built for this OS"
250 MESSAGE="No need to build for this OS"
253 if [ $EXIT -eq 0 ] ; then
254 $BIN_ECHO "-> $MESSAGE"
260 if [ $EXIT -eq 0 ] ; then
262 $BIN_ECHO "Preparing to build component '$COMPONENT'"
263 COMPONENT_SVN_LOCATION=`$BIN_ECHO $COMPONENT | $BIN_CUT -d':' -f1`
264 COMPONENT_SVN_COMPONENT=`$BIN_ECHO $COMPONENT | $BIN_CUT -d':' -f2`
265 COMPONENT_SVN_VERSION=""
266 COMPONENT_SVN_RELEASE=""
267 COMPONENT_SVN_BRANCH=""
268 if [ "$COMPONENT_SVN_LOCATION" != "trunk" ] ; then
269 COMPONENT_SVN_VERSION_RELEASE_BRANCH=`$BIN_ECHO $COMPONENT | $BIN_CUT -d':' -f3`
270 COMPONENT_SVN_VERSION=`$BIN_ECHO $COMPONENT_SVN_VERSION_RELEASE_BRANCH | $BIN_CUT -d'-' -f1`
271 COMPONENT_SVN_RELEASE=`$BIN_ECHO $COMPONENT_SVN_VERSION_RELEASE_BRANCH | $BIN_CUT -d'-' -f2`
272 if [ "$COMPONENT_SVN_LOCATION" = "branches" ] ; then
273 COMPONENT_SVN_BRANCH=`$BIN_ECHO $COMPONENT_SVN_VERSION_RELEASE_BRANCH | $BIN_CUT -d'-' -f3`
276 case "$COMPONENT_SVN_LOCATION" in
278 COMPONENT_SVN_PATH_PACKAGE="trunk/component/$COMPONENT_SVN_COMPONENT/package"
281 COMPONENT_SVN_PATH_PACKAGE="tags/component/$COMPONENT_SVN_COMPONENT/package/$COMPONENT_SVN_VERSION-$COMPONENT_SVN_RELEASE"
284 COMPONENT_SVN_PATH_PACKAGE="branches/component/$COMPONENT_SVN_COMPONENT/package/$COMPONENT_SVN_VERSION-$COMPONENT_SVN_RELEASE-$COMPONENT_SVN_BRANCH"
287 $BIN_ECHO "-> SVN location '$COMPONENT_SVN_LOCATION' is not supported"
291 if [ $EXIT -eq 0 ] ; then
292 TMP_DIR="$TARGET_DIR/buildcomponent"
293 if [ -e $TMP_DIR ] ; then
294 $BIN_ECHO "-> Directory '$TMP_DIR' already exists"
297 $BIN_MKDIR -p $TMP_DIR/package
298 if [ ! -d $TMP_DIR/package ] ; then
299 $BIN_ECHO "-> Error while creating directory '$TMP_DIR/package'"
304 if [ $EXIT -eq 0 ] ; then
305 pushd $TMP_DIR/package >> /dev/null 2>&1
307 $BIN_ECHO -e "\n\n\n$BIN_SVN checkout --username $SVN_USER --password $SVN_PASS $SVN_URL/$COMPONENT_SVN_PATH_PACKAGE .\n\n\n" >> $SVN_LOG
308 $BIN_SVN checkout --username $SVN_USER --password $SVN_PASS $SVN_URL/$COMPONENT_SVN_PATH_PACKAGE . >> $SVN_LOG 2>&1
309 if [ $? -ne 0 ] ; then
310 $BIN_ECHO "-> Error while checkouting URL '$SVN_URL/$COMPONENT_SVN_PATH_PACKAGE'"
313 popd >> /dev/null 2>&1
315 if [ $EXIT -eq 0 ] ; then
316 if [ ! -e $TMP_DIR/package/config ] ; then
317 $BIN_ECHO "-> The package configuration file '$TMP_DIR/package/config' is missing"
321 if [ $EXIT -eq 0 ] ; then
322 . $TMP_DIR/package/config
323 if [ -z "$VERSION" ] ; then
324 $BIN_ECHO "-> Version of packaging scripts is missing"
328 if [ $EXIT -eq 0 ] ; then
329 $BIN_MKDIR -p $TMP_DIR/packaging
330 if [ ! -d $TMP_DIR/packaging ] ; then
331 $BIN_ECHO "-> Error while creating directory '$TMP_DIR/packaging'"
335 if [ $EXIT -eq 0 ] ; then
336 pushd $TMP_DIR/packaging >> /dev/null 2>&1
337 case "$COMPONENT_SVN_LOCATION" in
339 COMPONENT_SVN_PATH_PACKAGING="trunk/packaging/component"
342 COMPONENT_SVN_PATH_PACKAGING="$COMPONENT_SVN_LOCATION/packaging/$VERSION/component"
345 $BIN_ECHO -e "\n\n\n$BIN_SVN checkout --username $SVN_USER --password $SVN_PASS $SVN_URL/$COMPONENT_SVN_PATH_PACKAGING .\n\n\n" >> $SVN_LOG
346 $BIN_SVN checkout --username $SVN_USER --password $SVN_PASS $SVN_URL/$COMPONENT_SVN_PATH_PACKAGING . >> $SVN_LOG 2>&1
347 if [ $? -ne 0 ] ; then
348 $BIN_ECHO "-> Error while checkouting URL '$SVN_URL/$COMPONENT_SVN_PATH_PACKAGING'"
351 popd >> /dev/null 2>&1
353 if [ $EXIT -eq 0 ] ; then
354 if [ ! -e $TMP_DIR/packaging/build ] ; then
355 $BIN_ECHO "-> File '$TMP_DIR/packaging/build' is missing"
359 if [ $EXIT -eq 0 ] ; then
361 $BIN_CHMOD 755 $TMP_DIR/packaging/build
362 $TMP_DIR/packaging/build "$TARGET_DIR/$TARBALL_NAME" "$COMPONENT_SVN_LOCATION" "$COMPONENT_SVN_COMPONENT" "$COMPONENT_SVN_VERSION" "$COMPONENT_SVN_RELEASE" "$COMPONENT_SVN_BRANCH"
363 if [ $? -ne 0 ] ; then
372 if [ $EXIT -eq 0 ] ; then
373 $BIN_ECHO "Deleting files for delivery '$SVN_DELIVERY'"
374 if [ -n "$FILES_TO_DELETE" ] ; then
375 pushd $TARGET_DIR/$TARBALL_NAME >> /dev/null 2>&1
376 $BIN_RM -f $FILES_TO_DELETE
377 popd >> /dev/null 2>&1
380 $BIN_ECHO "-> No files to delete"
387 if [ $EXIT -eq 0 ] ; then
388 $BIN_ECHO "Creating tarball for delivery '$SVN_DELIVERY'"
389 pushd $TARGET_DIR >> /dev/null 2>&1
390 $BIN_TAR -czf $TARBALL_NAME.tar.gz $TARBALL_NAME
391 if [ $? -ne 0 ] ; then
392 $BIN_ECHO "-> Error while creating tarball"
396 popd >> /dev/null 2>&1
403 readconfig $1 $2 $3 $4 $5 $6
405 if [ $BUILD -eq 1 ] ; then
407 if [ $EXIT -eq 0 ] ; then
408 $BIN_MKDIR -p $TARGET_DIR/$TARBALL_NAME
409 if [ $? -ne 0 ] ; then
410 $BIN_ECHO "-> Error while creating directory '$TARGET_DIR/$TARBALL_NAME'"
416 for COMPONENT in $COMPONENTS ; do
417 buildcomponent $COMPONENT
421 if [ $DELETE_TARBALL_DIR -eq 1 ] ; then
422 deletedir $TARGET_DIR/$TARBALL_NAME
425 if [ $EXIT -ne 0 ] ; then
427 $BIN_ECHO "****************************************"
428 $BIN_ECHO "Build of delivery '$SVN_DELIVERY' failed !"
429 $BIN_ECHO "SVN log: $SVN_LOG"
430 $BIN_ECHO "****************************************"