summaryrefslogtreecommitdiffstats
path: root/matchbox-autobuild.sh
blob: 723968b08ba76c96a2e1b5fc077dc41f49ae5269 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
#!/bin/sh
#
# To run once built. 
#
# Xnest :1 -ac
# export LD_LIBRARY_PATH=/tmp/mb/lib
# export PATH="/tmp/mb/bin:$PATH"
# export DISPLAY=:1
# matchbox-session &
#
# ( Substitute /tmp/mb for your DEST var - see below )
#

# TODO
# add +cvs20040129 etc to ipkg VERSION from CVS builds
#


######################### Configuration ###################################

## install destination
DEST="/tmp/mb"

## Set to 'sudo' if you need root to make install 
SUDO=

## Optional compile time deps and features

WANT_DEBUG="n"
WANT_PNG="y"
WANT_JPEG="y"
WANT_XSETTINGS="n"
WANT_XFT="y"
WANT_STARTUP_NOTIFICATION="n"
WANT_EXPAT="n"
WANT_DNOTIFY="n"
WANT_PANGO="n"
WANT_GCONF="n"
WANT_COMPOSITE="n"
WANT_NLS="y"
WANT_MSG_WINS="n"
WANT_PDA_FOLDERS="n"
WANT_PDA_ICONS="n"

## build type - can be 'local', 'svn' or 'release'
# 'local' assumes you have downloaded the svn trunk and it's in the current dir

BUILD="local"

## do you want ipkgs built ?

BUILD_IPKS="n"

## Names of bits to build
## Only change versions for noncvs build, set names to "" to avoid building

MBLIB="libmatchbox"
MBLIB_V="1.6"
MBCMN="matchbox-common"
MBCMN_V="0.9"
MBCMN_MV=".1"
MBWM="matchbox-window-manager"
MBWM_V="0.9"
MBWM_MV=".3"
MBPANEL="matchbox-panel"
MBPANEL_V="0.9"
MBPANEL_MV=".1"
MBDSKTP="matchbox-desktop"
MBDSKTP_V="0.9"
MBDSKTP_MV=".1"

SRC_URL='http://projects.o-hand.com/matchbox/sources/'


##############################################################################




SEP="-"

if [ "$1" = '-h' ]; then
   echo "See source for usage instructions."
   exit 0
fi 

if [ -r matchbox-autobuild.config ] 
then
  echo
  echo "** using matchbox-autobuild.config **"
  echo
  cat matchbox-autobuild.config 
  echo
  echo "*************************************"
  echo
  source ./matchbox-autobuild.config
fi

## IF we want ipkgs, check autoipkg is in PATH
if [ $BUILD_IPKS = 'y' ]; then
   which autoipkg > /dev/null || ( echo "autoipkg script not found in PATH"; exit );
fi 

## XXX Check autotool versions 

# for gentoo ? 
export WANT_AUTOCONF=2.5
export WANT_AUTOMAKE=1.9

## translate options into ipk deps and configure switches

PNG_CONF_ARG=
PNG_IPK_DEPS=
if [ "$WANT_PNG" != 'y' ]; then
   PNG_CONF_ARG="--disable-png"
   PNG_IPK_DEPS="libpng12,"
fi

XFT_CONF_ARG=
XFT_IPK_DEPS=
if [ "$WANT_XFT" != 'y' ]; then
   XFT_CONF_ARG="--disable-xft"
   XFT_IPK_DEPS="libxft2,"
fi

PANGO_CONF_ARG=
PANGO_IPK_DEPS=
if [ "$WANT_PANGO" != 'n' ]; then
   PANGO_CONF_ARG="--enable-pango"
   PANGO_IPK_DEPS=""
fi

GCONF_CONF_ARG=
GCONF_IPK_DEPS=
if [ "$WANT_GCONF" != 'n' ]; then
   GCONF_CONF_ARG="--enable-gconf"
   GCONF_IPK_DEPS=""
fi

DEBUG_CONF_ARG=
if [ "$WANT_DEBUG" != 'n' ]; then
   DEBUG_CONF_ARG="--enable-debug"
fi

JPEG_CONF_ARG=
JPEG_IPK_DEPS=
if [ "$WANT_JPEG" != 'n' ]; then
   JPEG_CONF_ARG="--enable-jpeg"
   JPEG_IPK_DEPS="libjpeg62,"
fi

XSET_CONF_ARG=
XSET_IPK_DEPS=
if [ "$WANT_XSETTINGS" != 'n' ]; then
   XSET_CONF_ARG="--enable-xsettings"
   XSET_IPK_DEPS="libxsettings-client0,"
fi

SN_CONF_ARG=
SN_IPK_DEPS=
if [ "$WANT_STARTUP_NOTIFICATION" != 'n' ]; then
   SN_CONF_ARG="--enable-startup-notification"
   SN_IPK_DEPS="startup-notification,"
fi

EXPAT_CONF_ARG=
EXPAT_IPK_DEPS=
if [ "$WANT_EXPAT" != 'n' ]; then
   EXPAT_CONF_ARG="--enable-expat"
   EXPAT_IPK_DEPS="libexpat1,"
fi

COMP_CONF_ARG=
COMP_IPK_DEPS=
if [ "$WANT_COMPOSITE" != 'n' ]; then
   COMP_CONF_ARG="--enable-composite"
   COMP_IPK_DEPS="libxcomposite1, libxfixes0, libxdamage0,"
fi

NLS_CONF_ARG=
if [ "$WANT_NLS" != 'n' ]; then
   NLS_CONF_ARG="--enable-nls"
fi

DNOTIFY_CONF_ARG=
if [ "$WANT_DNOTIFY" != 'n' ]; then
   DNOTIFY_CONF_ARG="--enable-dnotify"
fi

MSG_CONF_ARG=
if [ "$WANT_MSG_WINS" != 'n' ]; then
   MSG_CONF_ARG="--enable-message-wins"
fi

FOLDERS_CONF_ARG=
if [ "$WANT_PDA_FOLDERS" != 'n' ]; then
   FOLDERS_CONF_ARG="--enable-pda-folders"
fi

ICONS_CONF_ARG=
if [ "$WANT_PDA_ICONS" != 'n' ]; then
   ICONS_CONF_ARG="--enable-small-icons"
fi

SRC_PREFIX=

if ([ "$BUILD" = "svn" ]||[ "$BUILD" = "local" ]); then

  if [ "$BUILD" = "svn" ]; then
    echo "Getting matchbox source via SVN..."
    echo
    svn co http://svn.o-hand.com/repos/matchbox/trunk

    SRC_PREFIX="./trunk/"
  fi

  # dont need versions..
  
  MBLIB_V=""
  MBLIB_MV=""
  MBCMN_V=""
  MBCMN_MV=""
  MBWM_V=""
  MBWM_MV=""
  MBPANEL_V=""
  MBPANEL_MV=""
  MBDSKTP_V=""
  MBDSKTP_MV=""
  SEP=""

elif [ "$BUILD" = "release" ]; then

  # download releases

  wget "${SRC_URL}${MBLIB}/${MBLIB_V}/${MBLIB}-${MBLIB_V}.tar.gz" || exit
  tar xvzf ${MBLIB}-${MBLIB_V}.tar.gz

  wget "${SRC_URL}${MBPANEL}/${MBPANEL_V}/${MBPANEL}-${MBPANEL_V}${MBPANEL_MV}.tar.gz" || exit
  tar xvzf ${MBPANEL}-${MBPANEL_V}${MBPANEL_MV}.tar.gz

  wget "${SRC_URL}${MBWM}/${MBWM_V}/${MBWM}-${MBWM_V}${MBWM_MV}.tar.gz" || exit
  tar xvzf ${MBWM}-${MBWM_V}${MBWM_V}.tar.gz

  wget "${SRC_URL}${MBCMN}/${MBCMN_V}/${MBCMN}-${MBCMN_V}${MBCMN_MV}.tar.gz" || exit
  tar xvzf ${MBCMN}-${MBCMN_V}${MBCMN_MV}.tar.gz

  wget "${SRC_URL}${MBDSKTP}/${MBDSKTP_V}/${MBDSKTP}-${MBDSKTP_V}${MBDSKTP_MV}.tar.gz" || exit
  tar xvzf ${MBDSKTP}-${MBDSKTP_V}${MBDSKTP_MV}.tar.gz

  SRC_PREFIX=

else
  echo "Unrecognised build option: \"$BUILD\""
  exit 1
fi

# XXX download xsettings

#mv apps/matchbox .
#rm -fr apps

build_source()
{
   echo "Now building \"$1\""

   sdir=$1
   extra=$2
   ipk_raw=$3	

   ## strip the trailing ',' 
   if [ -z "$ipk_raw" ]; then
      ipk_deps=""
   else
      ipk_deps=${ipk_raw:0:(${#ipk_raw})-1}
      echo "ipkg deps are $ipk_deps"
   fi

   if [ ! -x ${sdir} ]; then
      echo "Unable to cd to ${sdir}"
      exit
   fi
   pushd $sdir

   if [ "$BUILD" != "release" ]; then	
      ./autogen.sh --prefix=$DEST $2 || exit
   else
      ./configure --prefix=$DEST $2 || exit
   fi

   make  || exit
   $SUDO make install || exit

   if [ "$BUILD_IPKS" = 'y' ]; then
      INTERACTIVE='n' DEPS="${ipk_deps}" MAINTAINER="${EMAIL_ADDRESS}" SOURCE='http://matchbox.handhelds.org' autoipkg || exit
   fi 

   popd
}

export PKG_CONFIG_PATH="${DEST}/lib/pkgconfig:$PKG_CONFIG_PATH"

#
# Lots of env vars are needed here to pass options of to autoipkg
# for created ipkg as well as workround various ipkg problems and
# naming issues :(
# Fortunatly you can ignore most of em if not building ipks
#
# build_source <src location> <configure args> <ipkg deps>
#
# really need to clean this up 
#

# messy epoc damn ipkg problems means we need versions as 1:0.8 ...  
export EPOCH='1:'

## Matchbox lib ##

if [ ! -z "$MBLIB" ]; then

export PACKAGE="libmb1" # hack for correct ipk name
export CONFIGURE_ARGS="$PNG_CONF_ARG $XFT_CONF_ARG $PANGO_CONF_ARG $JPEG_CONF_ARG $XSET_CONF_ARG $DEBUG_CONF_ARG" 

# xxx also need to up version
build_source "${SRC_PREFIX}${MBLIB}${SEP}${MBLIB_V}" \
	     "$CONFIGURE_ARGS" \
	     "xlibs,${PNG_IPK_DEPS}${XFT_IPK_DEPS}${PANGO_IPK_DEPS}${JPEG_IPK_DEPS}${XSET_IPK_DEPS}" 
unset PACKAGE
unset CONFIGURE_ARGS

fi

### Matchbox Common ###

if [ ! -z "$MBCMN" ]; then

export CONFIGURE_ARGS="$DEBUG_CONF_ARG $FOLDERS_CONF_ARG" 
build_source "${SRC_PREFIX}${MBCMN}${SEP}${MBCMN_V}${MBCMN_MV}" \
	     "$CONFIGURE_ARGS"
unset CONFIGURE_ARGS

fi

### Matchbox-window-manager ###

if [ ! -z "$MBWM" ]; then

export CONFIGURE_ARGS="$DEBUG_CONF_ARG $COMP_CONF_ARG $EXPAT_CONF_ARG $MSG_CONF_ARG $SN_CONF_ARG $GCONF_CONF_ARG" 

export PACKAGE="matchbox-wm" # hack for correct ipk name
export POSTINST="postinst"
cat <<STOP  > "${SRC_PREFIX}${MBWM}${SEP}${MBWM_V}${MBWM_MV}/postinst"
update-alternatives --install /usr/bin/x-window-manager x-window-manager /usr/bin/matchbox-session 10010
STOP
chmod a+x ."${SRC_PREFIX}${MBWM}${SEP}${MBWM_V}${MBWM_MV}/postinst"
build_source "${SRC_PREFIX}${MBWM}${SEP}${MBWM_V}${MBWM_MV}" \
	     "$CONFIGURE_ARGS" \
	     "xlibs,libmb1,${SN_IPK_DEPS}${EXPAT_IPK_DEPS}${COMP_IPK_DEPS}" 
unset CONFIGURE_ARGS
unset PACKAGE
unset POSTINST

fi


## matchbox panel ##

if [ ! -z "$MBPANEL" ]; then

export CONFIGURE_ARGS="$DEBUG_CONF_ARG $NLS_CONF_ARG $ICONS_CONF_ARG $SN_CONF_ARG $DNOTIFY_CONF_ARG" 

build_source "${SRC_PREFIX}${MBPANEL}${SEP}${MBPANEL_V}${MBPANEL_MV}" \
	     "$CONFIGURE_ARGS" \
	     "xlibs,libmb1,matchbox-common,${SN_IPK_DEPS}" 
unset CONFIGURE_ARGS

fi


## matchbox desktop ##

if [ ! -z "$MBDSKTP" ]; then

export CONFIGURE_ARGS="$DEBUG_CONF_ARG $SN_CONF_ARG $DNOTIFY_CONF_ARG" 

build_source "${SRC_PREFIX}${MBDSKTP}${SEP}${MBDSKTP_V}${MBDSKTP_MV}" \
	     "$CONFIGURE_ARGS" \
	     "xlibs,libmb1,matchbox-common,${SN_IPK_DEPS}" 
unset CONFIGURE_ARGS

fi