source: main/trunk/greenstone2/build-src/packages/configure@ 36343

Last change on this file since 36343 was 36343, checked in by kjdon, 21 months ago

changed the name of OPENSSL_HOST to GS_OPENSSL_HOST to make it clear that its a variable that gs is defining, not one that comes from openssl

  • Property svn:executable set to *
File size: 15.6 KB
Line 
1#! /bin/bash
2
3PACKAGES=`pwd`
4cd ../..
5GSDLHOME=`pwd`
6cd $PACKAGES
7
8GSDLOS=`uname -s |tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
9# check for running bash under cygwin
10if test "`echo $GSDLOS | sed 's/cygwin//'`" != "$GSDLOS" ;
11then
12 GSDLOS=windows
13fi
14if test "x$crossOS" != "x" ; then
15 # Override derived value with value explicitly provided in crossOS
16 GSDLOS=$crossOS
17fi
18
19prefix=""
20bindir=""
21HOSTTARGETFLAGS=""
22
23# only some of the packages can take environment variables as options to
24# configure
25# format is VAR=value, e.g "LDFLAGS=-static"
26ENVIRONMENT=""
27
28# WVWARE compilation enabled by default, can switch it off with --disable-wvware
29USE_WVWARE=true
30# GDBM compilation enabled by default, can switch it off with --disable-gdbm
31USE_GDBM=true
32# JDBM compilation enabled by default, can switch it off with --disable-jdbm
33USE_JDBM=true
34# SQLite support enabled by default, can switch it off with --disable-sqlite
35USE_SQLITE=true
36# yaz compilation enabled by default, can switch it off with --disable-yaz
37USE_YAZ=true
38# z3950 server disabled by default, switch it on with --enable-z3950
39USE_Z3950=false
40# CORBA support disabled by default, switch it on with --enable-corba
41USE_CORBA=false
42MICO_DIR=default
43
44# parse any arguments given from toplevel configure
45while test $# -ne 0; do
46 case "$1" in
47 --cache-file=*)
48 cache_filename=`echo $1 | sed s/--cache-file=//`
49 # turn relative path into an absolute path
50 cache_dir=`echo $cache_filename | sed 's@/[^/]*$@@'`
51 cache_dir=`cd $cache_dir 2>/dev/null && pwd`
52
53 cache_basefile=`echo $cache_filename | sed 's@.*/@@'`
54 cache_file="$cache_dir/$cache_basefile"
55 if test ! -f "$cache_file"; then
56 CACHE_FILE=""
57 else
58 CACHE_FILE="--cache-file=$cache_file"
59 fi
60 ;;
61 --disable-wvware)
62 USE_WVWARE=false
63 ;;
64 --disable-gdbm)
65 USE_GDBM=false
66 ;;
67 --disable-jdbm)
68 USE_JDBM=false
69 ;;
70 --disable-sqlite)
71 USE_SQLITE=false
72 ;;
73 --disable-yaz)
74 USE_YAZ=false
75 ;;
76 --enable-z3950)
77 USE_Z3950=true
78 ;;
79 --enable-corba)
80 USE_CORBA=true
81 ;;
82 --with-micodir=*)
83 if test $1 = ""; then
84 $1 = "default"
85 fi
86 MICO_DIR=$1
87 ;;
88 --prefix=*)
89 prefix=`echo $1 | sed s/--prefix=//`
90 ;;
91 --bindir=*)
92 # where to install binaries to
93 bindir=`echo $1 | sed s/--bindir=//`
94 # turn relative path into an absolute path
95 if test -d "$bindir" ; then
96 bindir=`cd "$bindir" ; pwd `
97 cd "$PACKAGES"
98 elif test -z `echo $bindir | sed '/^\// p;D'` ; then
99 rel_bindir="`echo $bindir | sed s@/.*@@`"
100 cd "$rel_bindir"
101 bindir="`pwd`/`echo $bindir | sed s@^[^/]*/@@`"
102 cd "$PACKAGES"
103 else
104 # bindir doesn't exist, and isn't relative
105 true
106 fi
107 ;;
108 --host=* | --target=* | --build=*)
109 HOSTTARGETFLAGS="$HOSTTARGETFLAGS $1"
110 ;;
111 *)
112 # ignore all other options for now
113 ;;
114 esac
115 shift
116done
117
118# note! Our GSDL package currently always installs into it's source
119# directory, ignoring any --prefix given to configure.
120# When this is fixed, uncomment the relevant lines below...
121
122##if test -z "$prefix" ; then
123prefix="${GSDLHOME}"
124##fi
125
126##if test -z "$bindir" ; then
127bindir="${prefix}/bin/$GSDLOS"
128##fi
129
130libdir="${prefix}/lib/$GSDLOS"
131
132# This loads the top configure's cache file, with variables already set.
133if test -f "$cache_file" ; then
134 . $cache_file
135fi
136
137# we assume that gzip and tar are on the search path.
138# non-GNU versions of tar don't take the -z option.
139
140
141
142# The way common-src compiles up expat during the configure stage itself,
143# configure openssl (needs to be done before wget)
144# and compile openssl during the configure stage itself.
145# Needed by wget for https support
146
147echo ""
148echo "Configuring openssl"
149echo ""
150cd "$PACKAGES/openssl"
151openssl_pkgname=openssl-1.0.2l
152#openssl_pkgname=openssl-1.1.0f
153if test ! -d $openssl_pkgname ;
154then
155 gzip -dc $openssl_pkgname.tar.gz | tar -xf -
156fi
157cd $openssl_pkgname
158
159# configure
160# see the INSTALL file for OpenSSL to see config options for openssl
161# --prefix indicates where the generated lib, include and bin folders will go
162# --openssldir will contain the manuals and other non-essentials
163# BEWARE: The defaults for --prefix and meaning of --openssldir differ between
164# versions of openssl. In the earlier version (1.0.* like 1.0.2l), if
165# --prefix is not supplied, then the generated lib, include and bin folders
166# will also go into --openssldir.
167# In the newer version 1.1.* 1.1.0f, if --prefix is not supplied, it will
168# try to install the generated lib, include and bin folders into a system place.
169# So better to provide both --openssldir and --prefix, for both openssl versions
170# to compile succesfully.
171# If you ever want to have the .a libraries that building openssl generates,
172# then point the --prefix to the $bindir. We currently don't need to put them
173# into $bindir/openssl for wget to use, since wget is built against openssl's
174# static libraries and therefore wget doesn't need these when running.
175
176# for 64 bit Macs, need to run ./Configure with darwin64-x86_64-cc, rather than ./config
177# To overcome an error in openssl's perl script determining the LLVM version, we also need force the
178# compilers to be GNU since Clang comes back with an LLVM version that doesn't work out
179stored_CC=$CC
180stored_CXX=$CXX
181ssl_status=-1
182if [[ "x$GSDLOS" == "xdarwin" ]] && [[ `uname -m` == *"64" ]] ; then
183 echo Darwin 64, using darwin64-x86_64-cc for OPENSSL_HOST
184 export CC="gcc"
185 export CXX="g++"
186 echo ./Configure --openssldir=$PACKAGES/openssl no-shared darwin64-x86_64-cc
187 #CC="gcc" CXX="g++" ./Configure --openssldir=$PACKAGES/openssl no-shared darwin64-x86_64-cc
188 ./Configure --openssldir=$PACKAGES/openssl no-shared darwin64-x86_64-cc
189 ssl_status=$?
190
191elif [[ "x$GS_OPENSSL_HOST" != "x" ]] ; then
192 echo "have found environment variable GS_OPENSSL_HOST - using that with Configure, instead of running config which will guess the host"
193 echo ./Configure --prefix=$PACKAGES/openssl --openssldir=$PACKAGES/openssl no-shared $GS_OPENSSL_HOST
194 # we found that the following needs bash to run as running it directly here (from within ant)
195 # as ./Configure had an error, even though the command worked fine on the command line
196 ./Configure --prefix=$PACKAGES/openssl --openssldir=$PACKAGES/openssl no-shared $GS_OPENSSL_HOST
197 ssl_status=$?
198
199else
200 # this will auto guess the system you are running on
201 echo ./config --prefix=$PACKAGES/openssl --openssldir=$PACKAGES/openssl no-shared
202 ./config --prefix=$PACKAGES/openssl --openssldir=$PACKAGES/openssl no-shared
203 ssl_status=$?
204fi
205
206if [ $ssl_status != 0 ] ; then
207 echo "ERROR: something went wrong with configuring openssl, returning $ssl_status"
208 exit $ssl_status
209fi
210
211# make
212echo Making OpenSSL
213
214make
215# make 'install_sw' is a target this package has for installing just the software,
216# skipping the installation of, for example, the man pages
217echo make install_sw
218make install_sw
219# restore the compile flags
220export CC=$stored_CC
221export CXX=$stored_CXX
222
223# GS3 needs the now-built openssl to set up https. So we copy (hardlink?) the necessary openssl stuff
224# Copying is perhaps OK: <12Mb without the manual or 14.4Mb with manuals.
225# to GSDL3SRCHOME/bin/$GSDLOS. Not sure if GSDL3SRCHOME is even set during configure
226# if this is a GS3 installation. But we have $GSDLHOME.
227cd $PACKAGES
228gs3_bin_osdir=../../../bin/$GSDLOS
229if [[ -f ../../../gs3-setup.sh ]] && [[ -d $gs3_bin_osdir ]] ; then
230 # get rid of any openssl copy from a previous installation
231 if [ -d $gs3_bin_osdir/openssl ] ; then
232 rm -rf $gs3_bin_osdir/openssl
233 fi
234 mkdir $gs3_bin_osdir/openssl
235 cp -r $PACKAGES/openssl/bin $PACKAGES/openssl/certs $PACKAGES/openssl/include $PACKAGES/openssl/lib $PACKAGES/openssl/misc $PACKAGES/openssl/private $gs3_bin_osdir/openssl/.
236fi
237
238# now move the include, lib and bin folders to the correct place
239
240# configure the wvWare Word document converter
241echo ""
242echo "Configuring wvWare"
243echo ""
244
245# datadir flag is for default location of wvHtml.xml config file
246if test x$USE_WVWARE = xtrue ;
247then
248
249 # Look to see if gnome-lib extension is present and if so, source its devel.bash file
250 if [ -d ../../ext/gnome-lib ] ; then
251 pushd ../../ext/gnome-lib
252 source ./devel.bash
253 popd
254 fi
255
256 if [ -d ../../../ext/gnome-lib-minimal ] ; then
257 pushd ../../../ext/gnome-lib-minimal
258 source ./devel.bash
259 popd
260 fi
261
262 cd "$PACKAGES/wv"
263 if [ "x$GSDLOS" = "xdarwin" ]; then
264 WV_LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Carbon"
265 else
266 WV_LDFLAGS="$LDFLAGS"
267 fi
268 gzip -dc wv-1.2.4-gs.tar.gz | tar -xf -
269 cd wv-gs && \
270 ./configure $CACHE_FILE --prefix=$PACKAGES/wv --bindir="$bindir" --libdir="$libdir" --datadir="$prefix/etc/packages" $HOSTTARGETFLAGS --disable-shared --enable-static LDFLAGS="$WV_LDFLAGS"
271else
272 echo "wvWare support disabled."
273 echo " add '--enable-wvware' to the configure command to include wvWare support."
274 echo ""
275fi
276
277if test x$? = x1 ;
278then
279 echo "Configuration of wvWare failed."
280 exit 1
281fi
282
283# configure the pdftohtml converter
284echo ""
285echo "Configuring pdftohtml"
286echo ""
287
288cd "$PACKAGES/pdftohtml"
289gzip -dc pdftohtml_0_36_gs.tar.gz | tar -xf -
290cd pdftohtml_gs && \
291./configure $CACHE_FILE --prefix="$prefix" --bindir="$bindir" $HOSTTARGETFLAGS $ENVIRONMENT
292
293if test x$? = x1 ;
294then
295 echo "Configuration of pdftohtml failed."
296 exit 1
297fi
298
299# rtftohtml converter
300echo ""
301echo "Configuring rtftohtml"
302echo ""
303
304cd "$PACKAGES/rtftohtml"
305gzip -dc rtftohtml-gs.tar.gz | tar -xf -
306cd rtftohtml_src && \
307./configure $CACHE_FILE --prefix="$prefix" --bindir="$bindir" $HOSTTARGETFLAGS
308
309if test x$? = x1 ;
310then
311 echo "Configuration of rtftohtml failed."
312 exit 1
313fi
314
315# On darwin, the wget binary that we build (in $GSDLHOME/bin/$GSDLOS/wget)
316# finds a system libiconv, as you'll notice when you run "otool -L wget"
317# That's because we expressly don't compile up libiconv on Macs anymore,
318# as the Mac system will have the right libiconv installed.
319
320# configure wget
321#wget_pkgname=wget-1.15-gs
322wget_pkgname=wget-1.17.1-gs
323#wget_pkgname=wget-1.19-gs
324echo ""
325echo "Configuring wget"
326echo ""
327cd "$PACKAGES/wget"
328gzip -dc $wget_pkgname.tar.gz | tar -xf -
329if test x$crossOS = "xandroid" ;
330then
331 wget_extraargs="gl_cv_header_working_stdint_h=yes ac_cv_func_getopt_long_only=no"
332else
333 wget_extraargs=
334fi
335
336# When compiling wget-1.15-gs without openssl as before:
337#./configure $CACHE_FILE --prefix=$PACKAGES/wget --without-ssl --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraargs
338
339# We weren't compiling up wget statically before either and we still aren't
340# However, to compile up wget (statically or not) with openssl, as we do now to support retrieving from https urls, see
341# https://stackoverflow.com/questions/9817337/compiling-wget-with-static-linking-self-compiled-openssl-library-linking-issu
342# Note: contrary to the instructions at the link, if the cppflags and ldflags are set during the
343# configure stage, as we now do, then the make command needn't additionally set them as well.
344# So just make, make install works thereafter
345
346echo copying "$PACKAGES/wget/wgetrc-gs.in" file to "$bindir/wgetrc"
347cp "$PACKAGES/wget/wgetrc-gs.in" "$bindir/wgetrc"
348echo cd "$PACKAGES/wget/$wget_pkgname"
349
350# for wget-1.15-gs. (can also try adding --localstatedir="$bindir/wget" --enable-iri)
351##echo CPPFLAGS="-I$PACKAGES/openssl/include $CPPFLAGS" LDFLAGS="-L$PACKAGES/openssl/lib $LDFLAGS" ./configure $CACHE_FILE --prefix=$PACKAGES/wget --with-ssl=openssl --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraarg
352##cd "$PACKAGES/wget/$wget_pkgname" && \
353##CPPFLAGS="-I$PACKAGES/openssl/include $CPPFLAGS" LDFLAGS="-L$PACKAGES/openssl/lib $LDFLAGS" ./configure $CACHE_FILE --prefix=$PACKAGES/wget --with-ssl=openssl --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraargs
354
355# for wget-1.17.1-gs and wget-1.19-gs (can also try adding --localstatedir="$bindir/wget" --enable-iri)
356# The following ran in to a problem on a Linux (centos) machine with lib32 and lib64 libraries. It tested for
357# openssl/lib64 when in fact the folder we produce is 'openssl/lib' causing ./configure to bail
358#echo OPENSSL_CFLAGS="-I$PACKAGES/openssl/include" OPENSSL_LIBS="-L$PACKAGES/openssl/lib -lssl -lcrypto" ./configure $CACHE_FILE --prefix=$PACKAGES/wget --with-ssl=openssl --with-openssl=auto --with-libssl-prefix="$PACKAGES/openssl" --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraargs
359#cd "$PACKAGES/wget/$wget_pkgname" && \
360#OPENSSL_CFLAGS="-I$PACKAGES/openssl/include" OPENSSL_LIBS="-L$PACKAGES/openssl/lib -lssl -lcrypto" ./configure $CACHE_FILE --prefix=$PACKAGES/wget --with-ssl=openssl --with-openssl=auto --with-libssl-prefix="$PACKAGES/openssl" --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraargs
361
362
363echo OPENSSL_CFLAGS="-I$PACKAGES/openssl/include" OPENSSL_LIBS="-L$PACKAGES/openssl/lib -lssl -lcrypto -lz -ldl" ./configure $CACHE_FILE --prefix=$PACKAGES/wget --with-ssl=openssl --with-openssl=auto --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraargs
364cd "$PACKAGES/wget/$wget_pkgname" && \
365OPENSSL_CFLAGS="-I$PACKAGES/openssl/include" OPENSSL_LIBS="-L$PACKAGES/openssl/lib -lssl -lcrypto -lz -ldl" ./configure $CACHE_FILE --prefix=$PACKAGES/wget --with-ssl=openssl --with-openssl=auto --bindir="$bindir" -disable-nls $HOSTTARGETFLAGS $wget_extraargs
366
367
368
369if test x$? = x1 ;
370then
371 echo "Configuration of wget failed."
372 exit 1
373fi
374
375# configure XML::Parser perl module
376echo ""
377echo "Configuring XML::Parser"
378echo ""
379cd "$PACKAGES/cpan"
380
381perl_dir=`echo 'my $vn = sprintf("%vd", $^V); $vn =~ s/\.\d+?$//; print "perl-$vn";' | perl`
382
383gzip -dc XML-Parser-2.41.tar.gz | tar -xf -
384cd "$PACKAGES/cpan/XML-Parser-2.41" && \
385
386perl Makefile.PL \
387 PREFIX="$GSDLHOME/perllib/cpan/XML" \
388 INSTALLSITELIB="$GSDLHOME/perllib/cpan/$perl_dir" \
389 INSTALLSITEARCH="$GSDLHOME/perllib/cpan/$perl_dir" \
390 INSTALLMAN1DIR="$GSDLHOME/perllib/cpan/$perl_dir" \
391 INSTALLMAN3DIR="$GSDLHOME/perllib/cpan/$perl_dir" \
392 SITEPREFIX="$GSDLHOME/perllib/cpan" \
393 EXPATINCPATH="$GSDLHOME/common-src/packages/expat/include" \
394 EXPATLIBPATH="$GSDLHOME/common-src/packages/expat/lib"
395
396if test x$? = x1 ;
397then
398 echo "Configuration of XML-Parser failed."
399 exit 1
400fi
401
402cpan_extras=1
403if test $cpan_extras = 1 ;
404then
405
406 for pack in Digest-MD5-2.55 Digest-SHA-5.92 Text-CSV-1.99 ;
407 do
408 cd "$PACKAGES/cpan"
409 gzip -dc $pack.tar.gz | tar -xf -
410 cd "$PACKAGES/cpan/$pack" \
411 && \
412 perl Makefile.PL \
413 PREFIX="$GSDLHOME/perllib/cpan" \
414 INSTALLSITELIB="$GSDLHOME/perllib/cpan/$perl_dir" \
415 INSTALLSITEARCH="$GSDLHOME/perllib/cpan/$perl_dir" \
416 INSTALLMAN1DIR="$GSDLHOME/perllib/cpan/$perl_dir" \
417 INSTALLMAN3DIR="$GSDLHOME/perllib/cpan/$perl_dir" \
418 SITEPREFIX="$GSDLHOME/perllib/cpan"
419
420 if test x$? = x1 ;
421 then
422 echo "Configuration of $pack failed."
423 exit 1
424 fi
425 done
426fi
427
428# configure powerpoint converter
429echo ""
430echo "Configuring xlhtml (powerpoint & excel converter)"
431echo ""
432cd "$PACKAGES/xlhtml"
433gzip -dc xlhtml-0.4.9.0-gs.tar.gz | tar -xf -
434cd xlhtml-0.4.9.0 && \
435./configure $CACHE_FILE --prefix="$prefix" --bindir="$bindir" $HOSTTARGETFLAGS
436
437if test x$? = x1 ;
438then
439 echo "Configuration of xlhtml failed."
440 exit 1
441fi
442
443# configure IsisGdl program
444echo ""
445echo "Configuring IsisGdl (CDS/ISIS database reader)"
446echo ""
447cd "$PACKAGES/isis-gdl" && \
448./configure $CACHE_FILE --prefix="$prefix" --bindir="$bindir" $HOSTTARGETFLAGS $ENVIRONMENT
449
450if test x$? = x1 ;
451then
452 echo "Configuration of IsisGdl failed."
453 exit 1
454fi
455
456# configure HTMLTidy program
457echo ""
458echo "Configuring HTMLTidy"
459echo ""
460cd "$PACKAGES/html-tidy"
461gzip -dc tidy.tgz | tar -xf -
462cd "$PACKAGES/html-tidy/tidy" && \
463./configure $CACHE_FILE --prefix="$prefix" --bindir="$bindir" $HOSTTARGETFLAGS $ENVIRONMENT
464
465if test x$? = x1 ;
466then
467 echo "Configuration of HTMLTidy failed."
468 exit 1
469fi
Note: See TracBrowser for help on using the repository browser.