* forgot to remove mesa-utils from the suggestions
[xbmc:xbmc-antiquated.git] / tools / Linux / packaging / ppa-builder.sh
1 #!/bin/bash
2
3 usage()
4 {
5 echo "
6   This script requires debhelper, pbuilder, dput:
7   $ sudo apt-get install debhelper pbuilder dput subversion
8
9   The following options are supported: 
10         --ppa=<your ppa in dput.cf>
11         -t, --tag       : svnsrc=<dir>, version=<version> (without 'xbmc-')
12         -u              : srcdir=<dir> version=<version> revision=<rev> minor=<minor>
13         -nsg            : svnsrc=<dir> revision=<rev>
14         -prev           : revision=<rev> 
15         urgency=(low|medium|high)
16 "
17 exit 0
18 }
19
20 alias echo='echo -e'
21
22 BUILDALL=1
23 FULLDEBUILDOPTS="-S -sa"
24 DEBUILDOPTS="-S -sd"
25 MINOR=1
26 XBMCPPA=xbmc-svn
27 HVERSION=9.11~beta2
28
29 # Packagers should have these two vars in their environment
30 # export DEBFULLNAME="Ouattara Oumar Aziz (alias wattazoum)"
31 # export DEBEMAIL="wattazoum@gmail.com"
32
33 parse_options()
34 {
35   echo "Parse options: $@"
36
37   for I in "$@"
38   do
39     OPT=${I%=*}
40     PAR=${I#*=}
41     case $OPT in
42       --local|-l)
43         LOCAL=1
44       ;;
45       --pbuilder|-p)
46         echo "-p ==> PBUILDER"  
47         PBUILDER=1
48         LOCAL=1
49       ;;
50       hardy|intrepid|jaunty|karmic)
51         BUILDALL=0
52         DIST="$OPT"
53         DEBUILDOPTS=$FULLDEBUILDOPTS
54         echo "DIST ==> $DIST"
55       ;;
56       --noclean|-nc)
57         NOCLEAN=1
58       ;;
59       --no-src-gen|-nsg)
60         NO_SRC_GEN=1
61       ;;
62       --update|-u)
63         UPDPPA=1
64         FULLDEBUILDOPTS=$DEBUILDOPTS
65       ;;
66       --tag|-t)
67         BUILD_TAG=1
68       ;;
69       -prev)
70         EXPORT_PREV_REV=1
71       ;;
72       --ppa)
73         XBMCPPA=$PAR
74       ;;
75       --help|-h)
76         usage
77       ;;
78       *)
79         echo "Setting $OPT=$PAR"
80         export $OPT=$PAR
81       ;;
82     esac
83   done
84 }
85
86 getrootright()
87 {
88   if [[ $PBUILDER ]]; then 
89     echo "Give me the admin rights ... "
90     sudo echo "Thank you !"
91   fi
92 }
93
94 preparesrc() 
95 {
96   echo "Exporting the sources at revision $REVISION ... "
97   if [[ -z $HEAD_REVISION ]]; then
98     # The revision given might not be the head one
99     svn export -r $REVISION $SVNSRC $DESTSRC 2>&1 
100   else
101     svn cleanup $SVNSRC 
102     svn export $SVNSRC $DESTSRC 
103   fi
104   cd $DESTSRC
105   ./bootstrap
106   rm -rf autom4te.cache
107   rm -rf xbmc/lib/libass/autom4te.cache
108   cd $OLDPWD
109   echo "Copying to .orig folder"
110   cp -a $DESTSRC $DESTSRC.orig
111 }
112
113 builddeb()
114 {
115   echo "Build $1 deb package"
116   echo "Copy the debian folder to the root"
117   cp -a $DESTSRC/tools/Linux/packaging/debian $DESTSRC/debian
118
119   if [[ -z $CHNLG ]]; then
120     CHNLG="Build of $VERSION"
121   fi
122   echo "Changelog : $CHNLG"
123   cd $DESTSRC
124   if [[ -z $urgency ]]; then
125     urgency=low
126   fi
127   dch -b -v 1:${VERSION}-$1${MINOR} -D $1 -u $urgency "$CHNLG" 2>&1 
128   echo "$REVISION" > debian/svnrevision
129   echo "Building the $1 debian package" 
130   
131   echo "move the format spec to 1.0 (Ubuntu PPA doesn't support format 3.0 quilt) "
132   echo "1.0" > debian/source/format
133
134   if [[ $BUILT_ONCE ]]; then
135     debuild $DEBUILDOPTS 2>&1
136   else 
137     debuild $FULLDEBUILDOPTS  2>&1
138     BUILT_ONCE=1
139   fi
140   
141   cd $OLDPWD
142   if [[ $PBUILDER ]]; then 
143     echo "'pbuilder' is set. Trying into pbuilder"
144     $SCRIPTDIR/pbuilder-dist $1 build xbmc_${VERSION}-$1${MINOR}.dsc 2>&1 | tee -a $BUILD_LOG
145     rm -rf $DESTSRC/debian
146   fi
147   if [[ -z $LOCAL ]]; then 
148     echo "'--local' is not set. Uploading to PPA"
149     dput $XBMCPPA xbmc_${VERSION}-$1${MINOR}_source.changes 2>&1
150     rm -rf $DESTSRC/debian
151   fi
152 }
153
154 clean()
155 {
156 if [[ -z $NOCLEAN ]] && [[ -z $LOCAL ]] ; then
157   echo "Cleaning ... "
158   find . -depth -maxdepth 1 -regex "\./xbmc[-_].+-.+" -not -name "*.orig.tar.gz" -exec rm -rf {} \;
159   if [[ -z $UPDPPA ]] && [[ -z $NO_SRC_GEN ]] ; then
160     rm -rf xbmc-$VERSION xbmc_$VERSION.orig.tar.gz
161   fi
162 fi
163 }
164
165 preparevars()
166 {
167   echo "Nothing" > test.txt
168   gpg -s test.txt
169   rm test.txt test.txt.gpg
170   
171   echo "Preparing Vars ..."
172   echo "Build directory: $BUILD_DIR"
173
174   if [[ -z $SVNSRC ]]; then
175     SVNSRC=$(readlink -f ../../../)
176   fi
177   if [[ $UPDPPA ]]; then
178     DESTSRC=$srcdir
179     if [[ $revision  ]]; then
180       REVISION=$revision
181       VERSION=${HVERSION}+svn$REVISION
182     fi
183     if [[ -z $VERSION ]] && [[ $version ]]; then
184       VERSION=$version
185     fi
186     MINOR=$minor
187     BUILT_ONCE=1
188   fi
189   if [[ $NO_SRC_GEN ]]; then
190     DESTSRC=$srcdir
191     if [[ $revision  ]]; then
192       REVISION=$revision
193       VERSION=${HVERSION}+svn$REVISION
194     fi
195     if [[ -z $VERSION ]] && [[ $version ]]; then
196       VERSION=$version
197     fi
198   fi
199   if [[ $BUILD_TAG ]]; then
200     VERSION=$version
201   fi
202   if [[ $EXPORT_PREV_REV ]]; then
203     echo "Revision to export: $rev"
204     REVISION=$rev
205   fi
206
207   echo "Setting SVN Sources: $SVNSRC"
208   
209   # If the version is not yet set it
210   if [[ -z $REVISION ]]; then
211     svn update $SVNSRC
212     HEAD_REVISION=$(eval LANG=POSIX svn info $SVNSRC | grep -E "Last Changed Rev: [0-9]+" | grep -o -E "[0-9]+")
213     REVISION=$HEAD_REVISION
214   fi
215   if [[ -z $VERSION ]]; then
216     VERSION=${HVERSION}+svn$REVISION
217   fi
218
219   echo "XBMC version: $VERSION"
220   echo "XBMC revision: $REVISION"
221
222   # Set Destination folder if not set
223   if [[ -z $DESTSRC ]]; then
224     DESTSRC=xbmc-$VERSION
225   fi
226
227   echo "XBMC Destination folder: $DESTSRC"
228   echo "Package minor version: $MINOR"
229
230 }
231
232 # = = = = = = = = = = = = = = 
233
234 SCRIPTDIR=`pwd`
235
236 if [[ -z $BUILD_DIR ]] ; then
237   BUILD_DIR=$(eval readlink -f ../../../../)
238 fi
239
240 BUILD_LOG=$BUILD_DIR/debuilder_`date +%F_%T`.log
241
242 parse_options $@ 
243 getrootright
244 preparevars
245
246 # We are in the source tree. Go out
247 cd $BUILD_DIR
248
249 if [[ -z $UPDPPA ]] && [[ -z $NO_SRC_GEN ]] ; then
250   preparesrc
251 fi
252
253 for distro in hardy intrepid jaunty karmic ; do 
254   if [[ $BUILDALL -eq 1 ]] || [[ $DIST == $distro ]]; then
255     builddeb $distro
256   fi
257 done
258
259 clean
260
261 exit 0