1#!/bin/sh 2# 3# Copyright (C) 2000-2020 Kern Sibbald 4# License: BSD 2-Clause; see file LICENSE-FOSS 5# 6# This script is used to make a Bacula release 7# bacula 8# regress 9# gui 10# It writes in the current directory, so we recommend that you 11# do not run it in the Bacula source or Git directory, but 12# in a special release directory. 13# 14# Commit all changes, update the language files, 15# export the release, make a release tar. 16# 17# source config 18. ./config 19 20tagbase=Release- 21base_dir=bacula 22base_pkg=bacula 23 24remote=$2 25branch=$3 26ver=$4 27 28if [ $# != 4 ] ; then 29 echo "Need $0 <source-directory> <remote-name> <branch> <version>" 30 echo "e.g. $0 release-source bee Branch-4.0 4.0.3" 31 exit 1 32fi 33cd $1 34if [ $? -ne 0 ]; then 35 echo "Directory: $1 does not exist" 36 exit 1 37fi 38src=`pwd` 39current=`git branch | awk '/*/ { print $2 }'` 40cd $base_dir 41if [ $? -ne 0 ]; then 42 echo "Directory: $1 does not exist" 43 exit 1 44fi 45git checkout ${branch} 46git pull ${remote} ${branch} 47if [ $? -ne 0 ]; then 48 echo "Checkout of branch ${branch} failed." 49 exit 1 50fi 51fulltag=$tagbase$ver 52echo " " 53echo "Making $reltype for $base_pkg-$ver ..." 54echo " " 55#echo "OK? ctl-c to stop" 56#read a 57rm -rf Release-$ver 58if [ $reltype != "beta" ] ; then 59 cd src 60 cp -fp version.h 1 61 sed 's%^#define DEVELOPER 1%/* #define DEVELOPER 1 */%g' 1 >version.h 62 rm -f 1 63 cd .. 64fi 65if [ a$updatepo != ano ]; then 66 ./configure --enable-client-only 67 cd po 68 make update-po 69 cd ${src} 70fi 71 72git tag -d ${fulltag} 73echo "Creating new tag -- $fulltag" 74git tag $fulltag 75if [ $? != 0 ] ; then 76 echo " " 77 echo "Non-zero return status from Git" 78 echo " " 79 exit 1 80fi 81echo "Create Tag $fulltag done" 82cd ${cwd} 83rm -rf $base_pkg-$ver $base_pkg-$ver.tar.gz $base_pkg-$ver.tar.gz.sig 84rm -rf $fulltag 85cd ${src} 86git archive --format=tar --prefix=$base_pkg-$ver/ $fulltag | gzip >${cwd}/$base_pkg-$ver.tar.gz 87 88if [ $? != 0 ] ; then 89 echo " " 90 echo "Non-zero return status from Git" 91 echo " " 92 exit 1 93fi 94echo "Exported release into ${cwd}/$base_pkg-$ver.tar.gz" 95cd ${cwd} 96tar xfz $base_pkg-$ver.tar.gz 97# First remove Enterprise Win32 plugin source 98cd $base_pkg-$ver/bacula 99cp -fp ReleaseNotes ChangeLog src/version.h ${cwd}/ 100cp -fp LICENSE* ${cwd}/ 101grep -R -a "Copyright.*Bacula Systems" * 102if [ $? != 0 ] ; then 103 echo "error: !!!!! Bacula Systems Copyrights detected !!!!!" 104 exit 105fi 106 107cd ${cwd}/$base_pkg-$ver 108# Move directories to release names including version 109mv bacula $base_pkg-$ver 110mv gui $base_pkg-gui-$ver 111mv regress $base_pkg-regress-$ver 112# Tar each component individually 113tar cvfz ../$base_pkg-$ver.tar.gz $base_pkg-$ver 114tar cvfz ../$base_pkg-gui-$ver.tar.gz $base_pkg-gui-$ver 115tar cvfz ../$base_pkg-regress-$ver.tar.gz $base_pkg-regress-$ver 116cd .. 117rm -rf $base_pkg-$ver 118./sign $base_pkg-$ver.tar.gz 119./sign $base_pkg-gui-$ver.tar.gz 120./sign $base_pkg-regress-$ver.tar.gz 121 122if [ a$push != ano ]; then 123 cd ${src} 124 git push ${remote} ${branch} 125 git push ${remote} tag ${fulltag} 126 echo "Pushed ${remote} and push tag ${fulltag}" 127fi 128 129cd ${src} 130git checkout ${current} 131