Cleanup script used to generate debian packages
[maemo-efl] / trunk / scripts / gen-deb-src.sh
1 #!/bin/bash
2
3 E_BASE_REPO="http://svn.enlightenment.org/svn/e"
4 E_TRUNK_REPO="$E_BASE_REPO/trunk"
5 E_OLD_REPO="$E_BASE_REPO/OLD"
6 E_PYTHON_SUFIX="BINDINGS/python"
7 E_PYTHON_REPO="$E_TRUNK_REPO/$E_PYTHON_SUFIX"
8 E_OLD_PYTHON_REPO="$E_OLD_REPO/$E_PYTHON_SUFIX"
9 E_PROTO_REPO="$E_TRUNK_REPO/PROTO"
10
11 [ -z $E_SVN_REV ] && E_SVN_REV="44144"
12
13 TMP_DIR="maemo-efl-deb-src-$E_SVN_REV"
14 VERSIONS_DIR="$TMP_DIR/versions"
15
16 # C Modules
17 ALL_MODULES=("eina"
18              "eet"
19              "evas"
20              "ecore"
21              "embryo"
22              "edje"
23              "epsilon"
24              "etk"
25              "e_dbus"
26              "emotion"
27              "epdf"
28              "ethumb"
29              "libeweather"
30              "elementary"
31              "efl-core")
32
33 # Python Bindings
34 ALL_MODULES+=("python-evas"
35               "python-ecore"
36               "python-edje"
37               "python-epsilon"
38               "python-etk"
39               "python-e_dbus"
40               "python-ethumb"
41               "python-efl_utils"
42               "python-elementary"
43               "python-efl-core")
44
45 MAEMO_REV="maemo1"
46 MAEMO_REPO="extras-devel"
47
48 MAEMO_EFL_BASE_REPO="https://garage.maemo.org/svn/maemo-efl/trunk/"
49
50 exit_error(){
51     echo " ERROR" && exit 1
52 }
53
54 init(){
55     if [ -d $TMP_DIR ]; then
56                 echo -n "Cleaning up ..."
57                 rm -rf $TMP_DIR || exit_error
58         echo " OK"
59     fi
60
61         echo -n "Creating build dir ..."
62     mkdir -p $TMP_DIR || exit_error
63     echo " OK"
64 }
65
66 checkout_repositories(){
67     echo "Checking out repositories ..."
68     for module in ${ALL_MODULES[@]};do
69         echo -n "       $module"
70
71         case $module in
72             etk|epsilon)
73                 REPO="$E_OLD_REPO"
74                 ;;
75             python-etk|python-epsilon)
76                 REPO="$E_OLD_PYTHON_REPO"
77                 ;;
78             elementary)
79                 REPO="$E_BASE_REPO/TMP/st"
80                 ;;
81             epdf|libeweather)
82                 REPO="$E_PROTO_REPO"
83                 ;;
84             *efl-core)
85                 cp -r $module $TMP_DIR > /dev/null 2>&1 && echo " ... OK" || exit_error
86                 continue
87                 ;;
88             python-*)
89                 REPO="$E_PYTHON_REPO"
90                 ;;
91             *)
92                 REPO=$E_BASE_REPO
93                 ;;
94         esac
95
96                 REV="-r$E_SVN_REV "
97
98         echo -n " ."
99         svn co $REV $REPO/$module $TMP_DIR/$module > /dev/null 2>&1 || exit_error
100         echo -n "."
101         rm -rf $TMP_DIR/$module/debian
102         echo -n "."
103         cp -r $module/debian $TMP_DIR/$module/debian > /dev/null 2>&1 || exit_error
104         echo " OK"
105     done
106
107         echo -n "Cleaning up repositories ..."
108         rm -rf `find $TMP_DIR -name .svn -type d`
109         rm -rf `find $TMP_DIR -name .git -type d`
110     echo " OK"
111 }
112
113 update_changelogs(){
114         echo "Updating changelogs ..."
115     for module in ${ALL_MODULES[@]};do
116         echo -n "       $module .."
117
118         case $module in
119             *efl-core)
120                 VERSION=`grep AC_INIT $TMP_DIR/evas/configure.ac | cut -d[ -f3 | cut -d] -f1 || exit_error`
121                 ;;
122             python-*)
123                 VERSION=`grep version $TMP_DIR/$module/setup.py | cut -d\' -f2 || exit_error`
124                 ;;
125             *)
126                 VERSION=`grep AC_INIT $TMP_DIR/$module/configure.ac | cut -d[ -f3 | cut -d] -f1 || exit_error`
127                 ;;
128         esac
129
130         echo -n "."
131         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
132         echo " `head -n1 $TMP_DIR/$module/debian/changelog`"
133     done
134 }
135
136 gen_versions(){
137     if [ ! -d $VERSIONS_DIR ]; then
138         echo -n "Creating versions dir $VERSIONS_DIR ..."
139         mkdir -p $VERSIONS_DIR || exit_error
140         echo " OK"
141     fi
142
143     echo "Generating version files ..."
144     for module in ${ALL_MODULES[@]};do
145         VERSION=`dpkg-parsechangelog -l$TMP_DIR/$module/debian/changelog | grep Version: | cut -d" " -f2 || exit_error`
146         echo "  $module ... $VERSION"
147         echo "$VERSION" > $VERSIONS_DIR/"$module"_version
148     done
149 }
150
151 gen_control(){
152     echo "Generating control files ..."
153     for module in ${ALL_MODULES[@]}; do
154         echo -n "       $module ..."
155         if [ -e $TMP_DIR/$module/debian/control.in ]; then
156             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`
157             cp $TMP_DIR/$module/debian/control.in $TMP_DIR/$module/debian/control.temp
158
159             for replacement in $TO_REPLACE; do
160                 replacement_lowercase=`echo $replacement | tr "[:upper:]" "[:lower:]"`
161                 version_file=$VERSIONS_DIR/$replacement_lowercase
162                 if [ ! -e $version_file ]; then
163                     echo -n " Could not find a replacement for $replacement" && exit_error
164                 fi
165                 version_number=`cat $version_file`
166                 echo -n " $replacement: $version_number"
167                 sed -i s/@$replacement@/$version_number/g $TMP_DIR/$module/debian/control.temp
168             done
169
170             mv $TMP_DIR/$module/debian/control.temp $TMP_DIR/$module/debian/control
171         fi
172
173         echo " OK"
174     done
175 }
176
177 gen_src_packages(){
178     echo "Generating source packages ..."
179     for module in ${ALL_MODULES[@]}; do
180         echo -n "       $module ."
181         cd $TMP_DIR/$module || exit_error
182         echo -n "."
183         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
184         echo -n "."
185         cd - > /dev/null 2>&1 || exit_error
186         echo " OK"
187     done
188 }
189
190 init
191 checkout_repositories
192 update_changelogs
193 gen_versions
194 gen_control
195 gen_src_packages
196 echo "All done. Packages in $TMP_DIR"
197 exit 0