source: SMSSender/deploy/ubuntu/deploy @ 465:35585d3fac85

Last change on this file since 465:35585d3fac85 was 465:35585d3fac85, checked in by Sämy Zehnder <saemy.zehnder@…>, 4 years ago

Removes the obsolete Schoolnet gateway.

  • Property exe set to *
File size: 7.0 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 "^VERSION[[:space:]]*=[[:space:]]*[[:digit:].]+" $tmp_dir/$pro | sed -e 's/VERSION[[:space:]]*=[[:space:]]*//'`
83}
84
85development_version=""
86get_development_version() {
87        development_version=`egrep -o "^DEVELOPMENT_VERSION[[:space:]]*=[[:space:]]*[^[:space:]#]+" ../../smssender.pri | sed -e 's/DEVELOPMENT_VERSION[[:space:]]*=[[:space:]]*//' | sed -e 's/#.*//'`
88}
89
90data_dir=""
91get_data_dir() {
92        pkg=`echo $1 | tr "[[:upper:]]" "[[:lower:]]"`
93        case $pkg in
94                smssender) data_dir="" ;;
95                ethz) data_dir="/gateways/ETHZ" ;;
96                post) data_dir="/gateways/Post" ;;
97                orange) data_dir="/gateways/Orange" ;;
98                smartphone) data_dir="/gateways/Smartphone" ;;
99                sunrise) data_dir="/gateways/Sunrise" ;;
100                *) return 1; ;;
101        esac
102        return 0
103}
104
105create_tarball() {
106        pkg=$1
107
108        pkg_long=$pkg
109        if [ "$pkg_long" != "smssender" ]; then
110                pkg_long="smssender-gateway-"$pkg
111        fi
112       
113        if [ -d $tmp_deploy_dir/$pkg_long ]; then
114                echo ""
115                echo "Processing $pkg... "
116               
117                # Get version
118                echo -n "  - Reading version... "
119                get_base_version $pkg
120        get_development_version
121        if [ "$development_version" == "" ]; then
122            version_suffix=""
123        else
124            version_suffix="~$development_version"
125        fi
126        pkg_with_version=${pkg_long}_$base_version$version_suffix
127                echo "$pkg_with_version."
128               
129                # Get data directory
130                get_data_dir $pkg
131               
132                # Create symlink (Directory name workaround)
133                link_dir=/tmp/$pkg_with_version
134                ln -s $tmp_dir/$data_dir /tmp/$pkg_with_version
135               
136                # Create tarball
137                echo -n "  - Creating tarball... "
138                tar_name=$pkg_with_version.orig.tar.gz
139                tar --create --dereference --hard-dereference \
140            --exclude "deploy*" --exclude "priv*" \
141                        --exclude "\.*" --exclude-vcs --exclude-caches-all \
142                        --exclude-backups --gzip \
143                        --file $deploy_dir/$tar_name --directory /tmp $pkg_with_version
144                rm $link_dir
145                echo "done."
146               
147                echo -n "  - Extracting tarball... "
148                # Delete old stuff in the destination
149                rm -rf $(find $deploy_dir/$pkg_long -mindepth 1 -maxdepth 1 | grep -v "debian$")
150                # Extract the tarball
151                tar --extract --gzip --file $deploy_dir/$tar_name \
152                        --directory $deploy_dir/$pkg_long \
153                        --strip-components=1
154                echo "done."
155
156                echo -n "  - Updating dependencies in debian/... "
157                get_base_version "smssender"
158
159        minVersion=$base_version$version_suffix
160        if [ "$development_version" == "" ]; then
161            # 3.1 -> 3.2
162            maxVersion=$(echo $base_version | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{$NF=sprintf("%0*d", length($NF), $NF+1); print}')
163        else
164            # ~rc4 -> ~rc5
165            maxVersion=$base_version$(echo $version_suffix | awk '{s=gensub(/[0-9]+$/, "", "g"); v=gensub(/^[^0-9]+/, "", "g"); print sprintf("%s%d", s, ++v)}')
166        fi
167                sed -r -i -e 's/smssender(-dev)?[[:space:]]?\(>= [^)]+\)/smssender\1 (>= '$minVersion')/g' \
168                        $deploy_dir/$pkg_long/debian/control
169                sed -r -i -e 's/smssender(-dev)?[[:space:]]?\(<< [^)]+\)/smssender\1 (<< '$maxVersion')/g' \
170                        $deploy_dir/$pkg_long/debian/control
171                echo "done."
172        fi
173}
174
175cleanup() {
176        # Remove the clone of the repo.
177        rm -Rf $tmp_dir
178}
179
180proceed() {
181        echo -en "$1 (y/n) [y]"
182        read ans
183
184        if [ "$ans" = "" ] || [ "$ans" = "y" ] || [ "$ans" = "Y" ] || [ "$ans" = "yes" ] || [ "$ans" = "Yes" ] || [ "$ans" = "YES" ]; then
185                return 0
186        else
187                cleanup
188                exit 1
189        fi
190}
191
192
193#### Alg starts here... ####
194
195# Read the input parameters
196rev=${1:-"tip"}
197if [ $rev = "tip" ]; then
198        rev=`hg summary | gawk 'match($0, "^parent: ([[:digit:]]+)", a) { print a[1] }'`
199        warn "No revision given. Using $rev."
200fi
201
202
203# Create the tmp directory
204#dir=`mktemp -d --tmpdir smssender-XXXXX`
205deploy_dir="$( cd "$( dirname "$0" )" && pwd )"
206tmp_dir="/tmp/smssender-deploy"
207tmp_deploy_dir="$tmp_dir/deploy/ubuntu"
208mkdir -p $tmp_dir
209cd $tmp_dir
210
211
212echo "***** Preparing the deployment *****"
213prepare
214
215# checking the differences
216#echo "***** Checking for differences ****"
217#changed=""
218#check_differences
219#if [ "$changed" = "" ]; then
220#       echo "We have nothing to do -> abort."
221#       cleanup
222#       exit 0
223#fi
224
225echo ""
226echo ""
227echo "***** Processing the packages *****"
228#which_packages
229packages=smssender
230for pkg in $packages ; do
231        create_tarball $pkg
232done
233
234echo ""
235echo ""
236echo "***** Cleaning up the temporary files *****"
237cleanup
238echo "Done."
239
240echo ""
241echo ""
242echo "Further steps: "
243echo "  - dch -i"
244echo "  - debuild -S"
245
246echo ""
247echo ""
248echo "Finished!"
249
250
251
252
253
254# returns
255#  0 <=> $1 < $2
256#  1 <=> $1 > $2
257#  2 <=> $1 = $2
258compare_versions() {
259        if [ $1 = "" ] || [ $1 = $2 ]; then
260                return 2; # They are "equal"
261        fi
262
263        $comp=`echo -e "$1\n$2" | sort -V | head -n1`
264        [  "$1" = "$comp" ]
265
266}
267get_version() {
268        different=false
269        for proFile in `find $tmp_dir | grep "\.pro$"`; do
270                $currVersion = `egrep -x -E "^VERSION\s?=\s?" $f | egrep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"`
271
272                # Check if the matching was ok
273                if [ $? -ne 0 ]; then
274                        error "Could not determine the application version."
275                fi
276
277                # Compare the versions
278                compare_versions $version $currVersion
279                case $? in
280                        0)
281                                $different=true
282                                $version=$currVersion
283                        ;;
284                        1)
285                                $different=true
286                        ;;
287                        2)
288                                $version=$currVersion
289                        ;;
290                esac
291        done
292
293        if [ $different ]; then
294                warning "Versions in project files differ"
295        fi
296}
297
298#       d="$tmp_deploy_dir/*"
299#       for f in $d ; do
300#               if [ -d "$f" ]; then
301#                       changes=`hg status $f`
302#                       if [ "$changes" != "" ]; then
303#                               # Found some changes --> Add this package to the todo list
304#                               echo "Discovered `basename $f` has changed"
305#                               changed=$changed" "$f
306#                       else
307#                               # No changes detected (Already commited?)
308#                               proceed "Force `basename $f`?"
309#                               if [ "$?" = "1" ]; then
310#                                       changed=$changed" "$f
311#                               fi
312#                       fi
313#               fi
314#       done
315#}
Note: See TracBrowser for help on using the repository browser.