source: SMSSender/deploy/ubuntu/deploy @ 399:f89a0033c4fd

Last change on this file since 399:f89a0033c4fd was 399:f89a0033c4fd, checked in by Sämy Zehnder <saemy.zehnder@…>, 6 years ago
  • Merges the different ubuntu package definitions into a single one which builds them all in one go.
  • Adjusts the deploy script to reflect the above change.
  • Adjusts the no_update patch to the new version of the source.
  • Updates the pbuilder howto to work with a per-user configuration.
  • Property exe set to *
File size: 7.8 KB
Line 
1#!/bin/bash
2
3#REPO="ssh://hg@gorrion.ch:222/smssender"
4REPO=`hg root`
5
6warn() {
7        echo
8        echo "WARNING: "$1
9        echo
10}
11error() {
12        echo 
13        echo "ERROR: "$1
14        echo
15        exit 1
16}
17
18prepare() {
19        if [ -e $tmp_deploy_dir ]; then
20                echo "Content already exists. Not doing a clone."
21        else
22                # Clone the newest source
23                echo "Cloning into $tmp_dir"
24                hg clone --rev $rev $REPO . > /dev/null
25
26                # Check if successful
27                if [ $? -ne 0 ]; then
28                        error "Could not clone the repository!"
29                fi
30        fi
31
32        # Change into the deployment directory
33        cd $tmp_deploy_dir
34
35        # Patch the gateways.pri
36        sed -i -r -e '/DESTDIR = /d' $tmp_dir/gateways/gateways.pri
37
38        # Symlinking some files to the correct place
39        ln -s $tmp_dir/gateways/gateways.pri $tmp_dir/gateways.pri
40        for gtwy in $tmp_dir/gateways/*; do
41                if [ -d $gtwy ]; then
42                        ln -s $tmp_dir/copyright.txt $gtwy/copyright.txt
43                fi
44        done
45}
46
47packages=""
48which_packages() {
49        all=""
50
51        echo "Which packages should be processed? [all]"
52        for f in $tmp_deploy_dir/* ; do
53                if [ -d $f ]; then
54                        pkg=`basename $f`
55                        pkg=`echo $pkg | sed -e 's/smssender-gateway-//'` # Remove the "smssender-gateway-" part
56
57                        all=$all$pkg" "
58                        echo "  - "$pkg
59                fi
60        done
61       
62        read ans
63        if [ "$ans" = "all" ] || [ "$ans" = "" ] ; then
64                ans=$all
65        fi
66
67        packages=$ans
68}
69
70base_version=""
71get_base_version() {
72        pkg=$1
73
74        lower_case=`echo $pkg | tr "[[:upper:]]" "[[:lower:]]"`
75        if [ "$lower_case" = "smssender" ]; then
76                pro="smssender.pri"
77        else
78                get_data_dir $pkg
79                pro="$data_dir/$lower_case.pro"
80        fi
81
82        base_version=`egrep -o "^BASE_VERSION[[:space:]]*=[[:space:]]*[[:digit:].]+" $tmp_dir/$pro | sed -e 's/BASE_VERSION[[:space:]]*=[[:space:]]*//'`
83}
84
85development_version=""
86get_development_version() {
87        develop_version_tmp=`egrep -o "^DEVELOPMENT_VERSION[[:space:]]*=[[:space:]]*[[:digit:]]+" $tmp_dir/smssender.pri | sed -e 's/DEVELOPMENT_VERSION[[:space:]]*=[[:space:]]*//'`
88        case $develop_version_tmp in
89                0) development_version="alpha" ;;
90                1) development_version="beta" ;;
91                2) development_version="rc" ;;
92                3|*) development_version="rev" ;;
93        esac
94}
95
96version_revision=""
97get_version_revision() {
98        version_revision=`egrep -o "^VERSION_REVISION[[:space:]]*=[[:space:]]*[[:digit:]]+" $tmp_dir/smssender.pri | sed -e 's/VERSION_REVISION[[:space:]]*=[[:space:]]*//'`
99
100        proceed "The shared revision is $development_version$version_revision. Proceed?"
101}
102
103data_dir=""
104get_data_dir() {
105        pkg=`echo $1 | tr "[[:upper:]]" "[[:lower:]]"`
106        case $pkg in
107                smssender) data_dir="" ;;
108                ethz) data_dir="/gateways/ETHZ" ;;
109                post) data_dir="/gateways/Post" ;;
110                orange) data_dir="/gateways/Orange" ;;
111                schoolnet) data_dir="/gateways/Schoolnet" ;;
112                smartphone) data_dir="/gateways/Smartphone" ;;
113                sunrise) data_dir="/gateways/Sunrise" ;;
114                *) return 1; ;;
115        esac
116        return 0
117}
118
119create_tarball() {
120        pkg=$1
121
122        pkg_long=$pkg
123        if [ "$pkg_long" != "smssender" ]; then
124                pkg_long="smssender-gateway-"$pkg
125        fi
126       
127        if [ -d $tmp_deploy_dir/$pkg_long ]; then
128                echo ""
129                echo "Processing $pkg... "
130               
131                # Get version
132                echo -n "  - Reading version... "
133                get_base_version $pkg
134        if [ "$development_version" == "rev" ]; then
135            if [ "$version_revision" -ne "0" ]; then
136                echo "failed."
137                echo "When building a revision, the development version has to be 0!"
138                return
139            fi
140            version_suffix=""
141        else
142            version_suffix="~$development_version$version_revision"
143        fi
144        pkg_with_version=${pkg_long}_$base_version$version_suffix
145                echo "$pkg_with_version."
146               
147                # Get data directory
148                get_data_dir $pkg
149               
150                # Create symlink (Directory name workaround)
151                link_dir=/tmp/$pkg_with_version
152                ln -s $tmp_dir/$data_dir /tmp/$pkg_with_version
153               
154                # Create tarball
155                echo -n "  - Creating tarball... "
156                tar_name=$pkg_with_version.orig.tar.gz
157                tar --create --dereference --hard-dereference \
158            --exclude "deploy*" --exclude "priv*" \
159                        --exclude "\.*" --exclude-vcs --exclude-caches-all \
160                        --exclude-backups --gzip \
161                        --file $deploy_dir/$tar_name --directory /tmp $pkg_with_version
162                rm $link_dir
163                echo "done."
164               
165                echo -n "  - Extracting tarball... "
166                # Delete old stuff in the destination
167                rm -rf $(find $deploy_dir/$pkg_long -mindepth 1 -maxdepth 1 | grep -v "debian$")
168                # Extract the tarball
169                tar --extract --gzip --file $deploy_dir/$tar_name \
170                        --directory $deploy_dir/$pkg_long \
171                        --strip-components=1
172                echo "done."
173
174                echo -n "  - Updating dependencies in debian/... "
175                get_base_version "smssender"
176
177        req_version=$base_version$version_revision
178        if [ "$development_version" == "rev" ]; then
179            minVersion=$base_version
180            # 3.1 -> 3.2
181            maxVersion=$(echo $base_version | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{$NF=sprintf("%0*d", length($NF), $NF+1); print}')
182        else
183            minVersion=$base_version~$development_version$version_revision
184            maxVersion=$base_version~$development_version$(( $version_revision + 1 ))
185        fi
186                sed -r -i -e 's/smssender(-dev)?[[:space:]]?\(>= [^)]+\)/smssender\1 (>= '$minVersion')/g' \
187                        $deploy_dir/$pkg_long/debian/control
188                sed -r -i -e 's/smssender(-dev)?[[:space:]]?\(<< [^)]+\)/smssender\1 (<< '$maxVersion')/g' \
189                        $deploy_dir/$pkg_long/debian/control
190                echo "done."
191        fi
192}
193
194cleanup() {
195        # Remove the clone of the repo.
196        rm -Rf $tmp_dir
197}
198
199proceed() {
200        echo -en "$1 (y/n) [y]"
201        read ans
202
203        if [ "$ans" = "" ] || [ "$ans" = "y" ] || [ "$ans" = "Y" ] || [ "$ans" = "yes" ] || [ "$ans" = "Yes" ] || [ "$ans" = "YES" ]; then
204                return 0
205        else
206                cleanup
207                exit 1
208        fi
209}
210
211
212#### Alg starts here... ####
213
214# Read the input parameters
215rev=${1:-"tip"}
216if [ $rev = "tip" ]; then
217        rev=`hg summary | gawk 'match($0, "^parent: ([[:digit:]]+)", a) { print a[1] }'`
218        warn "No revision given. Using $rev."
219fi
220
221
222# Create the tmp directory
223#dir=`mktemp -d --tmpdir smssender-XXXXX`
224deploy_dir="$( cd "$( dirname "$0" )" && pwd )"
225tmp_dir="/tmp/smssender-deploy"
226tmp_deploy_dir="$tmp_dir/deploy/ubuntu"
227mkdir -p $tmp_dir
228cd $tmp_dir
229
230
231echo "***** Preparing the deployment *****"
232prepare
233
234# checking the differences
235#echo "***** Checking for differences ****"
236#changed=""
237#check_differences
238#if [ "$changed" = "" ]; then
239#       echo "We have nothing to do -> abort."
240#       cleanup
241#       exit 0
242#fi
243echo ""
244echo ""
245echo "***** Reading the version *****"
246get_development_version
247get_version_revision
248
249echo ""
250echo ""
251echo "***** Processing the packages *****"
252#which_packages
253packages=smssender
254for pkg in $packages ; do
255        create_tarball $pkg
256done
257
258echo ""
259echo ""
260echo "***** Cleaning up the temporary files *****"
261cleanup
262echo "Done."
263
264echo ""
265echo ""
266echo "Further steps: "
267echo "  - dch -i"
268echo "  - debuild -S"
269
270echo ""
271echo ""
272echo "Finished!"
273
274
275
276
277
278# returns
279#  0 <=> $1 < $2
280#  1 <=> $1 > $2
281#  2 <=> $1 = $2
282compare_versions() {
283        if [ $1 = "" ] || [ $1 = $2 ]; then
284                return 2; # They are "equal"
285        fi
286
287        $comp=`echo -e "$1\n$2" | sort -V | head -n1`
288        [  "$1" = "$comp" ]
289
290}
291get_version() {
292        different=false
293        for proFile in `find $tmp_dir | grep "\.pro$"`; do
294                $currVersion = `egrep -x -E "^VERSION\s?=\s?" $f | egrep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"`
295
296                # Check if the matching was ok
297                if [ $? -ne 0 ]; then
298                        error "Could not determine the application version."
299                fi
300
301                # Compare the versions
302                compare_versions $version $currVersion
303                case $? in
304                        0)
305                                $different=true
306                                $version=$currVersion
307                        ;;
308                        1)
309                                $different=true
310                        ;;
311                        2)
312                                $version=$currVersion
313                        ;;
314                esac
315        done
316
317        if [ $different ]; then
318                warning "Versions in project files differ"
319        fi
320}
321
322#       d="$tmp_deploy_dir/*"
323#       for f in $d ; do
324#               if [ -d "$f" ]; then
325#                       changes=`hg status $f`
326#                       if [ "$changes" != "" ]; then
327#                               # Found some changes --> Add this package to the todo list
328#                               echo "Discovered `basename $f` has changed"
329#                               changed=$changed" "$f
330#                       else
331#                               # No changes detected (Already commited?)
332#                               proceed "Force `basename $f`?"
333#                               if [ "$?" = "1" ]; then
334#                                       changed=$changed" "$f
335#                               fi
336#                       fi
337#               fi
338#       done
339#}
Note: See TracBrowser for help on using the repository browser.