Added experimental support to python-elementary
[maemo-efl] / trunk / scripts / gen-deb-src.sh
1 #!/bin/bash
2
3 E_BASE_REPO="http://svn.enlightenment.org/svn/e/trunk"
4 E_PYTHON_REPO="$E_BASE_REPO/BINDINGS/python"
5 E_SVN_REV="41533"
6
7 TMP_DIR="maemo-efl-deb-src-$E_SVN_REV"
8 VERSIONS_DIR="$TMP_DIR/versions"
9
10 ALL_MODULES=("eina"
11              "eet"
12              "evas"
13              "ecore"
14              "embryo"
15              "edje"
16              "epsilon"
17              "etk"
18              "e_dbus"
19              "efl-core"
20              "python-evas"
21              "python-ecore"
22              "python-edje"
23              "python-epsilon"
24              "python-etk"
25              "python-e_dbus"
26              "python-efl_utils"
27              "python-efl-core")
28
29 ALL_MODULES+=("elementary"
30               "python-elementary")
31
32 MAEMO_REV="maemo1"
33 MAEMO_REPO="extras-devel"
34
35 MAEMO_EFL_BASE_REPO="https://garage.maemo.org/svn/maemo-efl/trunk/"
36
37 exit_error(){
38     echo " ERROR" && exit 1
39 }
40
41 init(){
42     if [ -d $TMP_DIR ]; then
43                 echo -n "Cleaning up ..."
44                 rm -rf $TMP_DIR || exit_error
45         echo " OK"
46     fi
47
48         echo -n "Creating build dir ..."
49     mkdir -p $TMP_DIR || exit_error
50     echo " OK"
51 }
52
53 checkout_repositories(){
54     echo "Checking out repositories ..."
55     for module in ${ALL_MODULES[@]};do
56         echo -n "       $module"
57
58                 REPO=$E_BASE_REPO
59                 REV="-r$E_SVN_REV "
60                 echo -n $module | grep elementary > /dev/null 2>&1 && REPO="$E_BASE_REPO/TMP/st"
61                 echo -n $module | grep ethumb > /dev/null 2>&1 && REPO="$E_BASE_REPO/PROTO"
62                 echo -n $module | grep python > /dev/null 2>&1 && REPO=$E_PYTHON_REPO
63                 echo -n $module | grep efl-core > /dev/null 2>&1 && cp -r $module $TMP_DIR && echo " ... OK" && continue
64
65         echo -n " ."
66         svn co $REV $REPO/$module $TMP_DIR/$module > /dev/null 2>&1 || exit_error
67         echo -n "."
68         rm -rf $TMP_DIR/$module/debian
69         echo -n "."
70         cp -r $module/debian $TMP_DIR/$module/debian > /dev/null 2>&1 || exit_error
71         echo " OK"
72     done
73
74         echo -n "Cleaning up repositories ..."
75         rm -rf `find $TMP_DIR -name .svn -type d`
76         rm -rf `find $TMP_DIR -name .git -type d`
77     echo " OK"
78 }
79
80 update_changelogs(){
81         echo "Updating changelogs ..."
82     for module in ${ALL_MODULES[@]};do
83         echo -n "       $module "
84
85         echo -n $module | grep -v python | grep -v efl-core > /dev/null 2>&1 && VERSION=`grep AC_INIT $TMP_DIR/$module/configure.ac | cut -d[ -f3 | cut -d] -f1 || exit_error`
86         echo -n "."
87         echo -n $module | grep python | grep -v efl-core > /dev/null 2>&1 && VERSION=`grep version $TMP_DIR/$module/setup.py | cut -d\' -f2 || exit_error`
88         echo -n "."
89         echo -n $module | grep efl-core > /dev/null 2>&1 && VERSION=`grep AC_INIT $TMP_DIR/evas/configure.ac | cut -d[ -f3 | cut -d] -f1 || exit_error`
90
91         echo -n "."
92         dch --force-distribution -b -c $TMP_DIR/$module/debian/changelog -v $VERSION+svn$E_SVN_REV-$MAEMO_REV -D $MAEMO_REPO "SVN snapshot release $E_SVN_REV" > /dev/null 2>&1 || exit_error
93         echo " `head -n1 $TMP_DIR/$module/debian/changelog`"
94     done
95 }
96
97 gen_versions(){
98     if [ ! -d $VERSIONS_DIR ]; then
99         echo -n "Creating versions dir $VERSIONS_DIR ..."
100         mkdir -p $VERSIONS_DIR || exit_error
101         echo " OK"
102     fi
103
104     echo "Generating version files ..."
105     for module in ${ALL_MODULES[@]};do
106         VERSION=`dpkg-parsechangelog -l$TMP_DIR/$module/debian/changelog | grep Version: | cut -d" " -f2 || exit_error`
107         echo "  $module ... $VERSION"
108         echo "$VERSION" > $VERSIONS_DIR/"$module"_version
109     done
110 }
111
112 gen_control(){
113     echo "Generating control files ..."
114     for module in ${ALL_MODULES[@]}; do
115         echo -n "       $module ..."
116         if [ -e $TMP_DIR/$module/debian/control.in ]; then
117             TO_REPLACE=`grep -o -E '@([A-Z]|[0-9])+((-|_)*([A-Z]|[0-9]))*_VERSION@' $TMP_DIR/$module/debian/control.in | cut -d @ -f 2 | sort -u`
118             cp $TMP_DIR/$module/debian/control.in $TMP_DIR/$module/debian/control.temp
119
120             for replacement in $TO_REPLACE; do
121                 replacement_lowercase=`echo $replacement | tr "[:upper:]" "[:lower:]"`
122                 version_file=$VERSIONS_DIR/$replacement_lowercase
123                 if [ ! -e $version_file ]; then
124                     echo -n " Could not find a replacement for $replacement" && exit_error
125                 fi
126                 version_number=`cat $version_file`
127                 echo -n " $replacement: $version_number"
128                 sed -i s/@$replacement@/$version_number/g $TMP_DIR/$module/debian/control.temp
129             done
130
131             mv $TMP_DIR/$module/debian/control.temp $TMP_DIR/$module/debian/control
132         fi
133
134         echo " OK"
135     done
136 }
137
138 gen_src_packages(){
139     echo "Generating source packages ..."
140     for module in ${ALL_MODULES[@]}; do
141         echo -n "       $module ."
142         cd $TMP_DIR/$module || exit_error
143         echo -n "."
144         dpkg-buildpackage -rfakeroot -us -uc -sa -d -S -I.git -I.gitignore -I.svn -I.svnignore -ICVS -I.cvsignore > /dev/null 2>&1|| exit_error
145         echo -n "."
146         cd - > /dev/null 2>&1 || exit_error
147         echo " OK"
148     done
149 }
150
151 init
152 checkout_repositories
153 update_changelogs
154 gen_versions
155 gen_control
156 gen_src_packages
157 echo "All done. Packages in $TMP_DIR"
158 exit 0