update to use efl svn
[maemo-efl] / trunk / scripts / package-functions.sh
1 #!/bin/sh
2
3 ###########################################################
4 # Maemo-efl building script
5 # Package functions definitions
6 #
7 # Note: var-definitions.sh needed.
8 ###########################################################
9
10 configure_pkg() {
11     local dir
12     dir=$1
13
14     cd $dir/`basename $dir`
15
16     if [ -x ./autogen.sh ]; then
17         NOCONFIGURE=1 ./autogen.sh >> $dir/sbox_build_pkgs.log 2>&1 || return 1
18     fi
19
20     cd - > /dev/null 2>&1
21
22     return 0
23 }
24
25 update_changelog() {
26     local rev
27     local rev_tmp
28     local fst
29     rev=$1
30
31     if [ x$rev == xHEAD ]; then
32        msg_begin "Getting latest repository revision number"
33        svn_latest_rev
34        msg_end $?
35        rev=$__svn_latest_rev
36     fi
37     rev_tmp=`echo $rev | $__sed -nr 's/^([0-9]+)$/\1/p'`
38     if [ -z "$rev_tmp" ]; then
39         error "Invalid revision number '$rev'"
40     fi
41     rev=$rev_tmp
42     msg_begin "Updating changelog files to svn$rev"
43     for module in `echo $__all_modules|$__sed -e 's/:/ /g'`; do
44         if [ -e $module/debian/changelog ]; then
45             fst=`$__head -1 $module/debian/changelog | grep svn`
46             if [ -n "$fst" ]; then
47                 cp -f $module/debian/changelog $module/debian/changelog.orig
48                 fst=`echo $fst | $__sed -nr "s/(.*)svn([0-9]+)(.*)/\1svn$rev\3/p"`
49                 echo "$fst" > $module/debian/changelog
50                 $__tail -n +2 $module/debian/changelog.orig >> $module/debian/changelog
51             fi
52         fi
53     done
54     msg_end $?
55 }
56
57 update_debian_dir() {
58
59     local module
60     local TO_REPLACE
61     local replacement_lowercase
62     local version_file
63     local version_number
64     local replacement
65     module=$1
66
67     if [ -d ./$module/$module/debian ]; then
68          msg_begin "  Removing existing debian directory"
69          rm -rf ./$module/$module/debian
70           msg_end $?
71     fi
72
73     mkdir -p $module/$module/debian
74
75     msg_begin "  Copying specific debian directory"
76     if [ -d ./$module/debian ]; then
77         $__tar c --exclude=.svn --exclude=.git --exclude=changelog.orig $module/debian | $__tar x --directory $module/
78         if [ -d ./$module/debian_$__distro ]; then
79             cp -r ./$module/debian_$__distro/* ./$module/$module/debian/
80         fi
81     else
82         if [ -d ./$module/debian_$__distro ]; then
83         $__tar c --exclude=.svn --exclude=.git --exclude=changelog.orig $module/debian_$__distro | $__tar x --directory $module/
84         else
85             echo ""
86             warn "Missing debian directory for $module. Ignoring"
87             return
88         fi
89     fi
90     msg_end $?
91
92     if [ -e ./$module/$module/debian/control.in ]; then
93         msg_begin "  Replacing versions in control file"
94 #TO_REPLACE=`grep -o -E '@([A-Z]|[0-9])+(-|_)*([A-Z]|[0-9])+_VERSION@' ./$module/$module/debian/control.in | cut -d @ -f 2 | sort -u`
95         TO_REPLACE=`grep -o -E '@([A-Z]|[0-9])+((-|_)*([A-Z]|[0-9]))*_VERSION@' ./$module/$module/debian/control.in | cut -d @ -f 2 | sort -u`
96         cp ./$module/$module/debian/control.in ./$module/$module/debian/control.temp
97
98         for replacement in $TO_REPLACE
99         do
100             replacement_lowercase=`echo $replacement | tr "[:upper:]" "[:lower:]"`
101             version_file=$__versions_dir/$replacement_lowercase
102             if [ ! -e $version_file ]; then
103                 echo ""
104                 warn "Could not find a replacement for $replacement"
105                 continue
106             fi
107             version_number=`cat $version_file`
108             sed -i s/@$replacement@/$version_number/g ./$module/$module/debian/control.temp
109         done
110
111         mv ./$module/$module/debian/control.temp ./$module/$module/debian/control
112         msg_end $?
113     fi
114 }
115
116 generate_versions() {
117     if [ ! -d $__versions_dir ]; then
118         msg_begin "Creating versions dir $__versions_dir"
119         $__mkdir -p $__versions_dir
120         msg_end $?
121     fi
122
123     msg_begin "Generating version files"
124     for module in `echo $__all_modules |$__sed -e 's/:/ /g'`; do
125         if [ -e $module/debian/changelog ]; then
126             VERSION=`$__dpkg_parsechangelog -l$module/debian/changelog | grep Version: | cut -d" " -f2 | cut -d- -f1`
127             REVISION=`$__dpkg_parsechangelog -l$module/debian/changelog | grep Version: | cut -d- -f2`
128             if [ -z \$REVISION ]; then
129                 echo "$VERSION" > $__versions_dir/"$module"_version
130             else
131                 echo "$VERSION-$REVISION" >  $__versions_dir/"$module"_version
132             fi
133         fi
134     done
135     msg_end $?
136 }
137
138 build_pkg() {
139     local dir
140     dir=$1
141
142     configure_pkg $dir || return 1
143
144     local DEB_BUILD_OPTIONS=n8x0
145     if [ "x$__distro" = "xgregale" ]; then
146         DEB_BUILD_OPTIONS=n770
147     fi
148
149     cat << EOF > $dir/sbox_build_pkgs
150 #!/bin/sh
151
152 export DEBFULLNAME="$DEBFULLNAME"
153 export DEBEMAIL="$DEBEMAIL"
154 export DEB_BUILD_OPTIONS="$DEB_BUILD_OPTIONS"
155
156 cd $dir/`basename $dir`
157
158 #VERSION=\`$__sbox_dpkg_parsechangelog | grep Version: | cut -d" " -f2 | cut -d- -f1 >> $dir/sbox_build_pkgs.log 2>&1 || exit 1\`
159 #REVISION=\`$__sbox_dpkg_parsechangelog | grep Version: | cut -d- -f2 >> $dir/sbox_build_pkgs.log 2>&1 || exit 1\`
160
161 VERSION=\`$__sbox_dpkg_parsechangelog | grep Version: | cut -d" " -f2 | cut -d- -f1\`
162 REVISION=\`$__sbox_dpkg_parsechangelog | grep Version: | cut -d- -f2\`
163
164
165 builddeps=\`$__sbox_dpkg_checkbuilddeps ./debian/control 2>&1 | grep Unmet | cut -d: -f3\`
166 target_lowercase=\`echo $target | cut -d_ -f1 | tr "[:upper:]" "[:lower:]"\`
167
168 if [ -z $__pkgslist_updated ];then
169
170     has_extras_rep=\`grep 'deb http://repository.maemo.org/extras' $__srclist_file\`
171     if [ -z "\$has_extras_rep" ];then
172         echo "deb http://repository.maemo.org/extras \$target_lowercase free non-free" >> $__srclist_file
173     fi
174
175     has_extras_rep=\`grep 'deb-src http://repository.maemo.org/extras' $__srclist_file\`
176     if [ -z "\$has_extras_rep" ];then
177         echo "deb-src http://repository.maemo.org/extras \$target_lowercase free non-free" >> $__srclist_file
178     fi
179
180     apt-get update >> $dir/sbox_apt_update.log 2>&1
181     __pkgslist_updated=1
182 fi
183
184 if [ -n "\$builddeps" ];then
185     echo \$builddeps | while read line
186     do
187         pkg_name=\`echo \$line | cut -d'(' -f1 | tr -d "[:blank:]"\`
188         pkg_version=\`echo \$line | cut -d= -f2 | cut -d')' -f1 | tr -d "[:blank:]"\`
189         apt-get -y install \$pkg_name=\$pkg_version >> $dir/sbox_builddeps.log 2>&1
190     done
191 fi
192
193 # $__sbox_dch -v \$VERSION+cvs$__today-\$REVISION -D $__distro "Snapshot CVS release of $__today" >> $dir/sbox_build_pkgs.log 2>&1 || exit 1
194 $__sbox_dpkg_buildpackage $__build_pkg_options >> $dir/sbox_build_pkgs.log 2>&1
195
196 exit \$?
197 EOF
198
199     $__chmod 755 $dir/sbox_build_pkgs
200     $__sbox $dir/sbox_build_pkgs
201     return $?
202 }
203
204 install_pkgs() {
205     local dir
206     dir=$1
207
208     cat << EOF > $dir/sbox_install_pkgs
209 #!/bin/sh
210
211 cd $dir
212 $__sbox_dpkg --install *.deb >> $dir/sbox_install_pkgs.log 2>&1
213 exit \$?
214 EOF
215
216     $__chmod 755 $dir/sbox_install_pkgs
217     $__sbox $dir/sbox_install_pkgs || return 1
218
219     for package in $dir/*.deb; do
220         pkg=`basename $package | cut -d_ -f1`
221         echo $__installed_packages | tr " " "\n" | sort -u | $__egrep "\^$pkg\$" > /dev/null 2>&1
222
223         if [ ! $? -eq 0 ]; then
224             __installed_packages="$__installed_packages $pkg"
225         fi
226     done
227
228     return 0
229 }
230
231 uninstall_pkgs() {
232
233     cat << EOF > $__tmp_dir/sbox_uninstall_pkgs
234 #!/bin/sh
235
236 cd $__tmp_dir
237 $__sbox_dpkg --purge $__installed_packages >> $__tmp_dir/sbox_uninstall_pkgs.log 2>&1
238 exit \$?
239 EOF
240
241     __installed_packages=""
242     $__chmod 755 $__tmp_dir/sbox_uninstall_pkgs
243     #$__sbox $__tmp_dir/sbox_uninstall_pkgs
244     return $?
245 }
246
247 sign_pkgs() {
248     local dir
249     dir=$1
250
251     cd $dir
252     print $__debsign
253     $__debsign *.changes >> $dir/sign_pkgs.log 2>&1 || return 1
254
255     cd - > /dev/null 2>&1
256
257     return 0
258 }