update to use efl svn
[maemo-efl] / trunk / build-all.sh
1 #!/bin/sh
2
3 ###########################################################
4 # Maemo-efl building script
5 # Build script
6 ###########################################################
7
8 source "./scripts/message-functions.sh"
9 source "./scripts/var-definitions.sh"
10 source "./scripts/log-functions.sh"
11 source "./scripts/repository-functions.sh"
12 source "./scripts/package-functions.sh"
13 source "./scripts/setup-functions.sh"
14
15 ###########################################################
16 # Begin script
17 ###########################################################
18
19
20 # Parse comand line options
21
22 usage () {
23      cat << EOF
24 Usage: $__this_script [OPTIONS]
25 Build script for Maemo EFL debian packages.
26 Options:
27     -n           Don't sign packages.
28     -c           Don't update source repositories.
29     -h           Show this usage guide.
30     -s PATH      Specify alternate scratchbox path (default: $__sbox_path).
31     -r           Remove module sub-directories (not the high level debian dir)
32                  and then exit.
33     -t A:B:Z     Specify scratchbox building targets 
34                  (default: all targets installed).
35     -u svn_rev   Update the latest revision number to "svn_rev" and exit. This
36                  only works on revision numbers that has the svn label on
37                  the version part (e.g 0.9.9.043+svn32000-maemo1)  Also,
38                  this option will not create a new entry on the changelog
39                  file, it will only change its first line. If you want to
40                  update to the latest repository revision number, just use
41                  HEAD as parameter.
42     -p P1:P2:PN  Specify packges to build (default: build all packages available).
43
44 EOF
45 }
46
47 while getopts "anchre:s:t:u:p:" opt ; do
48     case "$opt" in
49         p)
50             __lib_modules_temp=""
51             __python_modules_temp=""
52             __python_efl_utils_module_temp=""
53             __python_dispatcher_module_temp=""
54             __virtual_packages_temp=""
55             __not_all_pkgs=1
56             __parameters=`echo "$OPTARG" | $__sed -e 's/:/ /g'`
57             for i in $__parameters; do
58                 for module in `echo "$__lib_modules"|$__sed -e 's/:/ /g'`; do
59                     if [ x$module == x$i ]; then
60                         __lib_modules_temp=$__lib_modules_temp:$i
61                         continue
62                     fi
63                 done
64
65                 for module in `echo "$__python_modules"|$__sed -e 's/:/ /g'`; do
66                     if [ x$module == x$i ]; then
67                         __python_modules_temp=$__python_modules_temp:$i
68                     fi
69                 done
70
71                 for module in `echo "$__python_efl_utils_module"|$__sed -e 's/:/ /g'`; do
72                     if [ x$module == x$i ]; then
73                         __python_efl_utils_module_temp=$__python_efl_utils_module_temp:$i
74                         continue
75                     fi
76                 done
77
78                 for module in `echo "$__python_dispatcher_module" |$__sed -e 's/:/ /g'`; do
79                     if [ x$module == x$i ]; then
80                         __python_dispatcher_module_temp=$__python_dispatcher_module_temp:$i
81                         continue
82                     fi
83                 done
84
85                 for module in `echo "$__virtual_packages" |$__sed -e 's/:/ /g'`; do
86                     if [ x$module == x$i ]; then
87                         __virtual_packages_temp=$__virtual_packages_temp:$i
88                         continue
89                     fi
90                 done
91
92             done
93             __lib_modules_temp=`echo "$__lib_modules_temp" | tr "[:upper:]" "[:lower:]"`
94             __python_modules_temp=`echo "$__python_modules_temp" | tr "[:upper:]" "[:lower:]"`
95             __python_efl_utils_module_temp=`echo "$__python_efl_utils_module_temp" | tr "[:upper:]" "[:lower:]"`
96             __python_dispatcher_module_temp=`echo "$__python_dispatcher_module_temp" | tr "[:upper:]" "[:lower:]"`
97             __virtual_packages_temp=`echo "$__virtual_packages_temp" | tr "[:upper:]" "[:lower:]"`
98         ;;
99         c)
100             __update_repositories=0
101         ;;
102         e)
103             __export_dir=$OPTARG
104             if [ "x$__sbox_path" = "x" ] || [ ! -d $__sbox_path ]; then
105                 error "Invalid export path: $__export_dir"
106                 exit 1
107             fi
108         ;;
109         h)
110             usage
111             exit 0
112         ;;
113         r)
114             __force_remove=1
115         ;;
116         s)
117             __sbox_path=$OPTARG
118             if [ "x$__sbox_path" = "x" ] || [ ! -d $__sbox_path ]; then
119                 error "Invalid scratchbox path: $__sbox_path"
120                 exit 1
121             fi
122         ;;
123         n)
124             __no_signing=1
125         ;;
126         t)
127             __sbox_targets_temp=`echo $OPTARG | tr "[:lower:]" "[:upper:]"`
128         ;;
129         u)
130             __changelog_update=$OPTARG
131         ;;
132         ?)
133             usage
134             exit 1
135         ;;
136     esac
137 done
138
139 ############################
140 #     Initial checks       #
141 ###########################
142
143 update_all_modules
144 init_checks
145
146 # Remove modules subdirectories and exit
147 if [ $__force_remove -eq 1 ]; then
148     clean_modules
149     exit 0
150 fi
151
152 # Modify debian changelog
153 if [ -n "$__changelog_update" ]; then
154     update_changelog $__changelog_update
155     exit 0
156 fi
157
158 setup_dirs
159
160 generate_versions
161
162 if [ $__not_all_pkgs -eq 1 ]; then
163     __lib_modules=$__lib_modules_temp
164     __python_modules=$__python_modules_temp
165     __python_efl_utils_module=$__python_efl_utils_module_temp
166     __python_dispatcher_module=$__python_dispatcher_module_temp
167     __virtual_packages=$__virtual_packages_temp
168
169     update_all_modules
170
171 fi
172
173 # Create log file
174 create_log_file
175 start_log
176
177
178
179 generate_versions
180
181 # update modules
182 download_modules
183 # Setup scratchbox variables
184 setup_sbox
185
186 # Setup scratchbox targets if option -t was used
187 if [ ! -z $__sbox_targets_temp ]; then
188     __sbox_targets=`echo $__sbox_targets_temp|$__sed -e 's/:/ /g'`
189 fi
190
191 ###########################################################
192 # ARCHITECTURE DEPENDENT MODULES
193 ###########################################################
194 # For each scratchbox target
195 for target in $__sbox_targets; do
196     msg_begin "Checking distro and arch for target $target"
197     setup_distro $target
198     msg_end $?
199
200     msg "  Distribution..: $__distro"
201     msg "  Architecture..: $__arch"
202     msg "  Build Options.: $__build_pkg_options"
203
204     if [ ! -d $__pkg_dir ]; then
205         msg_begin "  Creating dir for $__distro $__arch packages"
206         $__mkdir -p $__pkg_dir
207         msg_end $?
208     fi
209
210     msg_begin "  Changing current sbox target to $target"
211     change_sbox_target $target
212     msg_end $?
213
214     # For each module
215     for module in `echo $__lib_modules:$__python_modules|$__sed -e 's/:/ /g'`; do
216         msg "  Building $module packages for $__distro $__arch"
217
218         update_debian_dir $module
219
220         if [ -d $__tmp_dir/$module/$module ]; then
221             msg_begin "  Removing temporary $module"
222             rm -rf $__tmp_dir/$module/$module
223             msg_end $?
224         fi
225
226         msg_begin "  Copying $module dir to $__tmp_dir"
227         $__tar c --exclude=.svn --exclude=.git $module | $__tar x --directory $__tmp_dir
228         msg_end $?
229
230 #        msg_begin "  Cleaning $module repository"
231 #        git_clean_repository $module/$module
232 #        msg_end $?
233
234         msg_begin "  Building $module packages"
235         build_pkg $__tmp_dir/$module
236         msg_end $?
237
238         if [ -z $__no_signing ]; then
239             msg_begin "  Signing $module packages"
240             sign_pkgs $__tmp_dir/$module
241             msg_end $?
242         fi
243
244         msg_begin "  Installing $module packages"
245         install_pkgs $__tmp_dir/$module
246         msg_end $?
247
248         msg_begin "  Copying $module packages"
249         if [ "x$__arch" != "xarmel" ]; then
250             mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__pkg_dir
251         fi
252         mv $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
253         msg_end $?
254
255         msg_begin "  Removing temporary $module"
256         rm -rf $__tmp_dir/$module/$module
257         msg_end $?
258     done
259
260     msg_begin "  Uninstalling packages $__installed_packages"
261     uninstall_pkgs
262     msg_end $?
263 done
264
265 ###########################################################
266 # ARCHITECTURE INDEPENDENT MODULES
267 ###########################################################
268 # For each scratchbox target
269 for target in $__sbox_targets; do
270     msg_begin "Checking distro and arch for target $target"
271     setup_distro $target
272     msg_end $?
273
274     msg "  Distribution..: $__distro"
275     msg "  Architecture..: $__arch"
276     msg "  Build Options.: $__build_pkg_options"
277
278     if [ "x$__arch" = "xarmel" ]; then
279         warn "Skipping target $target for architecture independent packages"
280         continue
281     fi
282
283     __arch="all"
284     __pkg_dir=`dirname $__pkg_dir`/$__arch
285
286     if [ ! -d $__pkg_dir ]; then
287         msg_begin "  Creating dir for $__distro $__arch packages"
288         $__mkdir -p $__pkg_dir
289         msg_end $?
290     fi
291
292     msg_begin "  Changing current sbox target to $target"
293     change_sbox_target $target
294     msg_end $?
295
296     # For each module
297     for module in `echo $__python_efl_utils_module|$__sed -e 's/:/ /g'`; do
298
299         msg "  Building $module packages for $__distro $__arch"
300         update_debian_dir $module
301
302
303         if [ ! -d $__tmp_dir/$module ]; then
304             mkdir $__tmp_dir/$module
305         fi
306
307         if [ -d $__tmp_dir/$module/$module ]; then
308             msg_begin "  Removing temporary $module"
309             rm -rf $__tmp_dir/$module/$module
310             msg_end $?
311         fi
312
313
314         msg_begin "  Copying $module dir to $__tmp_dir"
315         $__tar c --exclude=.svn --exclude=.git $module | $__tar x --directory $__tmp_dir
316     #cp -f -u -r $module $__tmp_dir
317         msg_end $?
318
319 #        msg_begin "  Cleaning $module repository"
320 #        git_clean_repository $module/$module
321 #        msg_end $?
322
323         msg_begin "  Building $module packages"
324         build_pkg $__tmp_dir/$module
325         msg_end $?
326
327         if [ -z $__no_signing ]; then
328             msg_begin "  Signing $module packages"
329             sign_pkgs $__tmp_dir/$module
330             msg_end $?
331     fi
332
333         msg_begin "  Installing $module packages"
334         install_pkgs $__tmp_dir/$module
335         msg_end $?
336
337         msg_begin "  Copying $module packages"
338         mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
339         msg_end $?
340
341         msg_begin "  Removing temporary $module"
342         rm -rf $__tmp_dir/$module/$module
343         msg_end $?
344     done
345
346     msg_begin "  Uninstalling packages $__installed_packages"
347     uninstall_pkgs
348     msg_end $?
349 done
350
351 ###########################################################
352 # VIRTUAL PACKAGES
353 ###########################################################
354 # For each scratchbox target
355 for target in $__sbox_targets; do
356     msg_begin "Checking distro and arch for target $target"
357     setup_distro $target
358     msg_end $?
359
360     msg "  Distribution..: $__distro"
361     msg "  Architecture..: $__arch"
362     msg "  Build Options.: $__build_pkg_options"
363
364     if [ "x$__arch" = "xarmel" ]; then
365         warn "Skipping target $target for architecture independent packages"
366         continue
367     fi
368
369     __arch="all"
370     __pkg_dir=`dirname $__pkg_dir`/$__arch
371
372     if [ ! -d $__pkg_dir ]; then
373         msg_begin "  Creating dir for $__distro $__arch packages"
374         $__mkdir -p $__pkg_dir
375         msg_end $?
376     fi
377
378     msg_begin "  Changing current sbox target to $target"
379     change_sbox_target $target
380     msg_end $?
381
382     # For each module
383     for module in `echo $__virtual_packages|$__sed -e 's/:/ /g'`; do
384         msg "  Building $module packages for $__distro $__arch"
385
386         update_debian_dir $module
387
388         if [ ! -d $__tmp_dir/$module ]; then
389             mkdir $__tmp_dir/$module
390         fi
391
392         if [ -d $__tmp_dir/$module/$module ]; then
393             msg_begin "  Removing temporary $module"
394             rm -rf $__tmp_dir/$module/$module
395             msg_end $?
396         fi
397
398         msg_begin "  Copying $module dir to $__tmp_dir"
399         $__tar c --exclude=.svn --exclude=.git $module | $__tar x --directory $__tmp_dir
400     #cp -f -u -r $module $__tmp_dir/$module
401         msg_end $?
402
403         msg_begin "  Building $module packages"
404         build_pkg $__tmp_dir/$module
405         msg_end $?
406
407     if [ -z $__no_signing ]; then
408             msg_begin "  Signing $module packages"
409             sign_pkgs $__tmp_dir/$module
410             msg_end $?
411     fi
412
413         msg_begin "  Installing $module packages"
414         install_pkgs $__tmp_dir/$module
415         msg_end $?
416
417         msg_begin "  Copying $module packages"
418         mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
419         msg_end $?
420
421         msg_begin "  Removing temporary $module"
422         rm -rf $__tmp_dir/$module/$module
423         msg_end $?
424     done
425
426     msg_begin "  Uninstalling packages $__installed_packages"
427     uninstall_pkgs
428     msg_end $?
429 done
430
431 # END
432 finish_log