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