New version of build scripts
[maemo-efl] / trunk / build-all.sh
1 #!/bin/sh
2
3 ###########################################################
4 # Maemo-efl building script
5 # Build script
6 #
7 ###########################################################
8
9 source "./scripts/helper-functions.sh"
10 source "./scripts/var-definitions.sh"
11 source "./scripts/log-functions.sh"
12 source "./scripts/repository-functions.sh"
13 source "./scripts/package-functions.sh"
14 source "./scripts/setup-functions.sh"
15
16 ###########################################################
17 # Begin script
18 ###########################################################
19
20
21 # Parse comand line options
22 while getopts "anchs:t:p:" opt ; do
23     case "$opt" in
24         p)
25            __python_etk_module=""
26            __python_efl_utils_module=""
27            __lib_modules=""
28            __python_modules=""
29            __lib_modules_temp=""
30            __python_modules_temp=""
31            __not_all_pkgs=1
32            __parameters=`echo $OPTARG | $__sed -e 's/:/ /g'`
33            for i in $__parameters; do
34                __i_temp=`echo $i | grep python`
35                if [ -z $__i_temp ]; then
36                    __lib_modules_temp=$i:$__lib_modules_temp
37                else
38                    if [ $__i_temp == "python-etk" ]; then
39                        __python_etk_module="python-etk"
40                    elif [ $__i_temp == "python-efl_utils" ]; then
41                        __python_efl_utils_module="python-efl_utils"
42                    else
43                        __python_modules_temp=$i:$__python_modules_temp
44                    fi
45                fi
46            done
47            __lib_modules=`echo $__lib_modules_temp | tr "[:upper:]" "[:lower:]"`
48            __python_modules=`echo $__python_modules_temp | tr "[:upper:]" "[:lower:]"`
49            ;;
50         c)
51             __update_repositories=0
52             ;;
53         h)
54             usage
55             exit 0
56             ;;
57         s)
58             __sbox_path=$OPTARG
59             if [ "x$__sbox_path" = "x" ] || [ ! -d $__sbox_path ]; then
60                 error "Invalid scratchbox path: $__sbox_path"
61                 exit 1
62             fi
63             ;;
64         n)
65             __no_signing=1
66             ;;
67         t)
68             __sbox_targets_temp=`echo $OPTARG | tr "[:lower:]" "[:upper:]"`
69             ;;
70         ?)
71             usage
72             exit 1
73             ;;
74     esac
75 done
76
77
78 ############################
79 #     Initial checks       #
80 ###########################
81 # Removing generated hash
82 rm -f $__tmp_hash
83
84 # Check if we're running inside scratchbox
85 if [ -r /targets/links/scratchbox.config ]; then
86     error "You should run this script outside the scratchbox environment."
87 fi
88
89 # Create base packages dir
90 if [ ! -d $__base_pkg_dir ]; then
91     msg_begin "Creating base packages dir $__base_pkg_dir"
92     $__mkdir -p $__base_pkg_dir
93     msg_end $?
94 fi
95
96 # Create tmp dir
97 if [ ! -d $__tmp_dir ]; then
98     msg_begin "Creating tmp dir $__tmp_dir"
99     $__mkdir -p $__tmp_dir
100     msg_end $?
101 fi
102
103 # Create versions dir
104 if [ ! -d $__versions_dir ]; then
105     msg_begin "Creating versions dir $__versions_dir"
106     $__mkdir -p $__versions_dir
107     msg_end $?
108 fi
109
110 # Create log file
111 create_log_file
112 start_log
113
114 # Download modules under e17/libs
115 if [ ! -z $__lib_modules ];then
116     msg "Downloading e17 modules"
117     get_sources $__lib_modules $__git_repo$__e17_libs
118 fi
119
120 # Download python modules under proto/python/efl
121 if [ ! -z $__python_modules ];then
122     msg "Downloading python modules"
123     get_sources $__python_modules $__git_repo$__e17_python_efl
124 fi
125
126 # Download python-etk module
127 if [ ! -z $__python_etk_module ];then
128     get_sources $__python_etk_module $__git_repo$__e17_python_etk
129 fi
130
131 # Download python-efl-utils module
132 if [ ! -z $__python_efl_utils_module ];then
133     get_sources $__python_efl_utils_module $__git_repo$__e17_python_efl_utils
134 fi
135
136 # Download python-dispatcher module
137 #get_sources $__python_dispatcher_module $__git_repo$__e17_python_dispatcher
138
139 # Setup scratchbox variables
140 setup_sbox
141
142 # Setup scratchbox targets if option -t was used
143 if [ ! -z $__sbox_targets_temp ]; then
144     __sbox_targets=`echo $__sbox_targets_temp|$__sed -e 's/:/ /g'`
145 fi
146
147 ###########################################################
148 # ARCHITECTURE DEPENDENT MODULES
149 ###########################################################
150 # For each scratchbox target
151 for target in $__sbox_targets; do
152     msg_begin "Checking distro and arch for target $target"
153     setup_distro $target
154     msg_end $?
155
156     msg "  Distribution..: $__distro"
157     msg "  Architecture..: $__arch"
158     msg "  Build Options.: $__build_pkg_options"
159
160     if [ ! -d $__pkg_dir ]; then
161         msg_begin "  Creating dir for $__distro $__arch packages"
162         $__mkdir -p $__pkg_dir
163         msg_end $?
164     fi
165
166     msg_begin "  Changing current sbox target to $target"
167     change_sbox_target $target
168     msg_end $?
169
170     # For each module
171     for module in `echo $__lib_modules:$__python_modules:$__python_etk_module|$__sed -e 's/:/ /g'`; do
172         msg "  Building $module packages for $__distro $__arch"
173
174         if [ -d ./$module/$module/debian ]; then
175             msg_begin "  Removing existing debian directory"
176             rm -rf ./$module/$module/debian
177             msg_end $?
178         fi
179
180         msg_begin "  Copying specific debian directory"
181         if [ -d ./$module/debian ]; then
182             cp -r ./$module/debian ./$module/$module/
183
184             if [ -d ./$module/debian_$__distro ]; then
185                 cp -r ./$module/debian_$__distro/* ./$module/$module/debian/
186             fi
187         else
188             if [ -d ./$module/debian_$__distro ]; then
189                 cp -r ./$module/debian_$__distro ./$module/$module/debian
190             else
191                 echo ""
192                 warn "Missing debian directory for $module. Ignoring"
193                 continue
194             fi
195         fi
196         msg_end $?
197
198         if [ -d $__tmp_dir/$module/$module ]; then
199             msg_begin "  Removing temporary $module"
200             rm -rf $__tmp_dir/$module/$module
201             msg_end $?
202         fi
203
204         msg_begin "  Copying $module dir to $__tmp_dir"
205         cp -f -u -r $module $__tmp_dir
206         msg_end $?
207
208         msg_begin "  Cleaning $module repository"
209         clean_repository $module/$module
210         msg_end $?
211
212         msg_begin "  Building $module packages"
213         build_pkg $__tmp_dir/$module
214         msg_end $?
215
216         if [ -z $__no_signing ]; then
217             msg_begin "  Signing $module packages"
218             sign_pkgs $__tmp_dir/$module
219             msg_end $?
220         fi
221
222         msg_begin "  Installing $module packages"
223         install_pkgs $__tmp_dir/$module
224         msg_end $?
225
226         msg_begin "  Copying $module packages"
227         if [ "x$__arch" != "xarm" ]; then
228             mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__pkg_dir
229         fi
230         mv $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
231         msg_end $?
232
233         msg_begin "  Removing temporary $module"
234         rm -rf $__tmp_dir/$module/$module
235         msg_end $?
236     done
237
238     msg_begin "  Uninstalling packages $__installed_packages"
239     uninstall_pkgs
240     msg_end $?
241 done
242
243 exit 0
244 ###########################################################
245 # ARCHITECTURE INDEPENDENT MODULES
246 ###########################################################
247 # For each scratchbox target
248 for target in $__sbox_targets; do
249     msg_begin "Checking distro and arch for target $target"
250     setup_distro $target
251     msg_end $?
252
253     msg "  Distribution..: $__distro"
254     msg "  Architecture..: $__arch"
255     msg "  Build Options.: $__build_pkg_options"
256
257     if [ "x$__arch" = "xarm" ]; then
258         warn "Skipping target $target for architecture independent packages"
259         continue
260     fi
261
262     __arch="all"
263     __pkg_dir=`dirname $__pkg_dir`/$__arch
264
265     if [ ! -d $__pkg_dir ]; then
266         msg_begin "  Creating dir for $__distro $__arch packages"
267         $__mkdir -p $__pkg_dir
268         msg_end $?
269     fi
270
271     msg_begin "  Changing current sbox target to $target"
272     change_sbox_target $target
273     msg_end $?
274
275     # For each module
276     for module in $__python_efl_utils_module; do
277         msg "  Building $module packages for $__distro $__arch"
278
279         if [ ! -d $__tmp_dir/$module ]; then
280             mkdir $__tmp_dir/$module
281         fi
282
283         if [ -d $__tmp_dir/$module/$module ]; then
284             msg_begin "  Removing temporary $module"
285             rm -rf $__tmp_dir/$module/$module
286             msg_end $?
287         fi
288
289         msg_begin "  Copying specific debian directory"
290         if [ -d ./$module/debian ]; then
291             cp -r ./$module/debian ./$module/$module/
292
293             if [ -d ./$module/debian_$__distro ]; then
294                 cp -r ./$module/debian_$__distro/* ./$module/$module/debian/
295             fi
296         else
297             echo ""
298             warn "  Missing debian directory for $module. Ignoring"
299             continue
300         fi
301         msg_end $?
302
303         msg_begin "  Copying $module dir to $__tmp_dir"
304         cp -f -u -r $module $__tmp_dir
305         msg_end $?
306
307         msg_begin "  Cleaning $module repository"
308         clean_repository $module/$module
309         msg_end $?
310
311         msg_begin "  Building $module packages"
312         build_pkg $__tmp_dir/$module
313         msg_end $?
314
315         if [ -z $__no_signing ]; then
316             msg_begin "  Signing $module packages"
317             sign_pkgs $__tmp_dir/$module
318             msg_end $?
319         fi
320
321         msg_begin "  Installing $module packages"
322         install_pkgs $__tmp_dir/$module
323         msg_end $?
324
325         msg_begin "  Copying $module packages"
326         mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
327         msg_end $?
328
329         msg_begin "  Removing temporary $module"
330         rm -rf $__tmp_dir/$module/$module
331         msg_end $?
332     done
333
334     msg_begin "  Uninstalling packages $__installed_packages"
335     uninstall_pkgs
336     msg_end $?
337 done
338
339 ###########################################################
340 # VIRTUAL PACKAGES
341 ###########################################################
342 # For each scratchbox target
343 for target in $__sbox_targets; do
344     msg_begin "Checking distro and arch for target $target"
345     setup_distro $target
346     msg_end $?
347
348     msg "  Distribution..: $__distro"
349     msg "  Architecture..: $__arch"
350     msg "  Build Options.: $__build_pkg_options"
351
352     if [ "x$__arch" = "xarm" ]; then
353         warn "Skipping target $target for architecture independent packages"
354         continue
355     fi
356
357     __arch="all"
358     __pkg_dir=`dirname $__pkg_dir`/$__arch
359
360     if [ ! -d $__pkg_dir ]; then
361         msg_begin "  Creating dir for $__distro $__arch packages"
362         $__mkdir -p $__pkg_dir
363         msg_end $?
364     fi
365
366     msg_begin "  Changing current sbox target to $target"
367     change_sbox_target $target
368     msg_end $?
369
370     # For each module
371     for module in $__virtual_packages; do
372         msg "  Building $module packages for $__distro $__arch"
373
374         if [ ! -d $__tmp_dir/$module ]; then
375             mkdir $__tmp_dir/$module
376         fi
377
378         if [ -d $__tmp_dir/$module/$module ]; then
379             msg_begin "  Removing temporary $module"
380             rm -rf $__tmp_dir/$module/$module
381             msg_end $?
382         fi
383
384         msg_begin "  Copying $module dir to $__tmp_dir"
385         cp -f -u -r $module $__tmp_dir/$module
386         msg_end $?
387
388         msg_begin "  Building $module packages"
389         build_pkg $__tmp_dir/$module
390         msg_end $?
391
392         if [ -z $__no_signing ]; then
393             msg_begin "  Signing $module packages"
394             sign_pkgs $__tmp_dir/$module
395             msg_end $?
396         fi
397
398         msg_begin "  Installing $module packages"
399         install_pkgs $__tmp_dir/$module
400         msg_end $?
401
402         msg_begin "  Copying $module packages"
403         mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir
404         msg_end $?
405
406         msg_begin "  Removing temporary $module"
407         rm -rf $__tmp_dir/$module/$module
408         msg_end $?
409     done
410
411     msg_begin "  Uninstalling packages $__installed_packages"
412     uninstall_pkgs
413     msg_end $?
414 done
415
416 # END
417 finish_log
418