5e5fa5a07583624ab2ae0312f28f9f0d5e28ee3c
[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 if [ $__not_all_pkgs -eq 1 ]; then
161     __lib_modules=$__lib_modules_temp
162     __python_modules=$__python_modules_temp
163     __python_efl_utils_module=$__python_efl_utils_module_temp
164     __python_dispatcher_module=$__python_dispatcher_module_temp
165     __virtual_packages=$__virtual_packages_temp
166
167     update_all_modules
168
169 fi
170
171 # Create log file
172 create_log_file
173 start_log
174
175 generate_versions
176
177 # update modules
178 download_modules
179 # Setup scratchbox variables
180 setup_sbox
181
182 # Setup scratchbox targets if option -t was used
183 if [ ! -z $__sbox_targets_temp ]; then
184     __sbox_targets=`echo $__sbox_targets_temp|$__sed -e 's/:/ /g'`
185 fi
186
187 ###########################################################
188 # ARCHITECTURE DEPENDENT MODULES
189 ###########################################################
190 # For each scratchbox target
191 for target in $__sbox_targets; do
192     msg_begin "Checking distro and arch for target $target"
193     setup_distro $target
194     msg_end $?
195
196     msg "  Distribution..: $__distro"
197     msg "  Architecture..: $__arch"
198     msg "  Build Options.: $__build_pkg_options"
199
200     if [ ! -d $__pkg_dir ]; then
201         msg_begin "  Creating dir for $__distro $__arch packages"
202         $__mkdir -p $__pkg_dir
203         msg_end $?
204     fi
205
206     msg_begin "  Changing current sbox target to $target"
207     change_sbox_target $target
208     msg_end $?
209
210     # For each module
211     for module in `echo $__lib_modules:$__python_modules|$__sed -e 's/:/ /g'`; do
212         msg "  Building $module packages for $__distro $__arch"
213
214         update_debian_dir $module
215
216         if [ -d $__tmp_dir/$module/$module ]; then
217             msg_begin "  Removing temporary $module"
218             rm -rf $__tmp_dir/$module/$module
219             msg_end $?
220         fi
221
222         msg_begin "  Copying $module dir to $__tmp_dir"
223         $__tar c --exclude=.svn --exclude=.git $module | $__tar x --directory $__tmp_dir
224         msg_end $?
225
226 #        msg_begin "  Cleaning $module repository"
227 #        git_clean_repository $module/$module
228 #        msg_end $?
229
230         msg_begin "  Building $module packages"
231         build_pkg $__tmp_dir/$module
232         msg_end $?
233
234         if [ -z $__no_signing ]; then
235             msg_begin "  Signing $module packages"
236             sign_pkgs $__tmp_dir/$module
237             msg_end $?
238         fi
239
240         msg_begin "  Installing $module packages"
241         install_pkgs $__tmp_dir/$module
242         msg_end $?
243
244         msg_begin "  Copying $module packages"
245         if [ "x$__arch" != "xarmel" ]; then
246             mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__pkg_dir
247         fi
248         mv $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
249         msg_end $?
250
251         msg_begin "  Removing temporary $module"
252         rm -rf $__tmp_dir/$module/$module
253         msg_end $?
254     done
255
256     msg_begin "  Uninstalling packages $__installed_packages"
257     uninstall_pkgs
258     msg_end $?
259 done
260
261 ###########################################################
262 # ARCHITECTURE INDEPENDENT MODULES
263 ###########################################################
264 # For each scratchbox target
265 for target in $__sbox_targets; do
266     msg_begin "Checking distro and arch for target $target"
267     setup_distro $target
268     msg_end $?
269
270     msg "  Distribution..: $__distro"
271     msg "  Architecture..: $__arch"
272     msg "  Build Options.: $__build_pkg_options"
273
274     if [ "x$__arch" = "xarmel" ]; then
275         warn "Skipping target $target for architecture independent packages"
276         continue
277     fi
278
279     __arch="all"
280     __pkg_dir=`dirname $__pkg_dir`/$__arch
281
282     if [ ! -d $__pkg_dir ]; then
283         msg_begin "  Creating dir for $__distro $__arch packages"
284         $__mkdir -p $__pkg_dir
285         msg_end $?
286     fi
287
288     msg_begin "  Changing current sbox target to $target"
289     change_sbox_target $target
290     msg_end $?
291
292     # For each module
293     for module in `echo $__python_efl_utils_module|$__sed -e 's/:/ /g'`; do
294
295         msg "  Building $module packages for $__distro $__arch"
296         update_debian_dir $module
297
298
299         if [ ! -d $__tmp_dir/$module ]; then
300             mkdir $__tmp_dir/$module
301         fi
302
303         if [ -d $__tmp_dir/$module/$module ]; then
304             msg_begin "  Removing temporary $module"
305             rm -rf $__tmp_dir/$module/$module
306             msg_end $?
307         fi
308
309
310         msg_begin "  Copying $module dir to $__tmp_dir"
311         $__tar c --exclude=.svn --exclude=.git $module | $__tar x --directory $__tmp_dir
312     #cp -f -u -r $module $__tmp_dir
313         msg_end $?
314
315 #        msg_begin "  Cleaning $module repository"
316 #        git_clean_repository $module/$module
317 #        msg_end $?
318
319         msg_begin "  Building $module packages"
320         build_pkg $__tmp_dir/$module
321         msg_end $?
322
323         if [ -z $__no_signing ]; then
324             msg_begin "  Signing $module packages"
325             sign_pkgs $__tmp_dir/$module
326             msg_end $?
327     fi
328
329         msg_begin "  Installing $module packages"
330         install_pkgs $__tmp_dir/$module
331         msg_end $?
332
333         msg_begin "  Copying $module packages"
334         mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
335         msg_end $?
336
337         msg_begin "  Removing temporary $module"
338         rm -rf $__tmp_dir/$module/$module
339         msg_end $?
340     done
341
342     msg_begin "  Uninstalling packages $__installed_packages"
343     uninstall_pkgs
344     msg_end $?
345 done
346
347 ###########################################################
348 # VIRTUAL PACKAGES
349 ###########################################################
350 # For each scratchbox target
351 for target in $__sbox_targets; do
352     msg_begin "Checking distro and arch for target $target"
353     setup_distro $target
354     msg_end $?
355
356     msg "  Distribution..: $__distro"
357     msg "  Architecture..: $__arch"
358     msg "  Build Options.: $__build_pkg_options"
359
360     if [ "x$__arch" = "xarmel" ]; then
361         warn "Skipping target $target for architecture independent packages"
362         continue
363     fi
364
365     __arch="all"
366     __pkg_dir=`dirname $__pkg_dir`/$__arch
367
368     if [ ! -d $__pkg_dir ]; then
369         msg_begin "  Creating dir for $__distro $__arch packages"
370         $__mkdir -p $__pkg_dir
371         msg_end $?
372     fi
373
374     msg_begin "  Changing current sbox target to $target"
375     change_sbox_target $target
376     msg_end $?
377
378     # For each module
379     for module in `echo $__virtual_packages|$__sed -e 's/:/ /g'`; do
380         msg "  Building $module packages for $__distro $__arch"
381
382         update_debian_dir $module
383
384         if [ ! -d $__tmp_dir/$module ]; then
385             mkdir $__tmp_dir/$module
386         fi
387
388         if [ -d $__tmp_dir/$module/$module ]; then
389             msg_begin "  Removing temporary $module"
390             rm -rf $__tmp_dir/$module/$module
391             msg_end $?
392         fi
393
394         msg_begin "  Copying $module dir to $__tmp_dir"
395         $__tar c --exclude=.svn --exclude=.git $module | $__tar x --directory $__tmp_dir
396     #cp -f -u -r $module $__tmp_dir/$module
397         msg_end $?
398
399         msg_begin "  Building $module packages"
400         build_pkg $__tmp_dir/$module
401         msg_end $?
402
403     if [ -z $__no_signing ]; then
404             msg_begin "  Signing $module packages"
405             sign_pkgs $__tmp_dir/$module
406             msg_end $?
407     fi
408
409         msg_begin "  Installing $module packages"
410         install_pkgs $__tmp_dir/$module
411         msg_end $?
412
413         msg_begin "  Copying $module packages"
414         mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
415         msg_end $?
416
417         msg_begin "  Removing temporary $module"
418         rm -rf $__tmp_dir/$module/$module
419         msg_end $?
420     done
421
422     msg_begin "  Uninstalling packages $__installed_packages"
423     uninstall_pkgs
424     msg_end $?
425 done
426
427 # END
428 finish_log