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