]> git.donarmstrong.com Git - lilypond.git/blob - buildscripts/guile-gnome.sh
d23915959f3a473f0727a7dd665f5407e4356eec
[lilypond.git] / buildscripts / guile-gnome.sh
1 #!@BASH@
2
3 # guile-gnome.sh -- download, compile, install g-wrap, guile-gnome,
4 # pango
5
6 # LilyPond has an experimental gnome canvas output backend -- hackers
7 # only.  This depends on rather new versions of guile-gnome, g-wrap
8 # and pango.
9
10 set -ex
11
12 # Where user built stuff will be installed
13 OPT=$HOME/usr/pkg
14 # When using GUILE CVS, make a slib/require like so
15 cat > /dev/null <<EOF
16 cd ~/usr/pkg/guile/share/guile/1.7 && ln -s /usr/share/guile/1.6/slib .
17 cd && guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)"
18 EOF
19 # otherwise, this may fix it...
20 SLIB_PATH=`locate slib/require.scm | head -1 | sed -s 's/require.scm//g'`
21
22 # What extra modules to pull (eg: EXTRA="libgnomecanvas libwnck")
23 EXTRA=${EXTRA-libgnomecanvas}
24 GGVERSION=2.7.95
25 GWRAPVERSION=1.9.3
26
27 download=$HOME/usr/src/releases
28 [ -d $download ] || mkdir -p $download
29 WGET="wget -N -P $download"
30
31 export AUTOMAKE=automake-1.8
32 export ACLOCAL=aclocal-1.8
33 export AUTOCONF=$(which autoconf2.50)
34 export AUTOHEADER=$(which autoheader2.50)
35
36 export PKG_CONFIG_PATH
37 export LD_LIBRARY_PATH
38 export GUILE_LOAD_PATH
39
40 if [ -z "$AUTOCONF" ]; then
41     unset AUTOCONF
42 fi
43 if [ -z "$AUTOHEADER" ]; then
44     unset AUTOHEADER
45 fi
46
47
48 # test: the name of our download and build directory
49 rm -rf test
50 mkdir -p test
51 cd test
52
53 ## 1.  install gnome-devel
54 ##     - Debian/unstable: apt-get install gnome-devel
55 ##     - ...
56
57 ## 2.  get pango CVS
58
59 PKG_CONFIG_PATH=$OPT/pango/lib/pkgconfig:$PKG_CONFIG_PATH
60 LD_LIBRARY_PATH=$OPT/pango/lib:$LD_LIBRARY_PATH
61
62 mkdir -p gnome/CVS
63 if ! pkg-config --atleast-version=1.5.1 pango; then
64     cd gnome
65     if [ -n "$BLOEDIGE_RAND" ]; then
66         echo ":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome" > CVS/Root
67         echo "." > CVS/Repository
68         cvs -z3 checkout -P pango
69     else
70         $WGET ftp://ftp.gtk.org/pub/gtk/v2.5/pango-1.5.2.tar.gz
71         tar -xzf pango-1.5.2.tar.gz
72         ln -s pango-1.5.2 pango
73     fi
74     cd pango
75     rm -rf $OPT/pango
76     if [ ! -f configure ]; then
77         ./autogen.sh --help
78     fi
79     ./configure --prefix=$OPT/pango --enable-maintainer-mode --enable-gtk-doc
80     make XFT_LIBS="-L/usr/lib -lXft -L/usr/X11R6/lib -lfreetype -lz -lXrender -lX11 -lfontconfig" all install
81     cd ../..
82 fi
83
84 ## 3. Currently (2004-9-15) GUILE CVS works somewhat
85 ##    But there's a guile/g-wrap problem with integer parameters
86 unset GUILE_LOAD_PATH
87 PATH=/usr/bin:$PATH
88
89 if [ -d $OPT/libffi/ ]; then
90     export LDFLAGS=-L$OPT/libffi/lib
91     export CPPFLAGS=-I$OPT/libffi/include
92 fi
93
94 PKG_CONFIG_PATH=$OPT/g-wrap/lib/pkgconfig:$PKG_CONFIG_PATH
95 LD_LIBRARY_PATH=$OPT/g-wrap/lib:$LD_LIBRARY_PATH
96 GUILE_LOAD_PATH=$OPT/g-wrap/share/guile/site:$GUILE_LOAD_PATH:$SLIB_PATH
97
98
99 ## 4.  get g-wrap 2.0
100 ## note that bleeding edge (2004-9-13) g-wrap breaks guile-gnome.
101 if ! pkg-config --atleast-version=$GWRAPVERSION g-wrap-2.0-guile; then
102     if [ -n "$BLOEDIGE_RAND" ]; then
103         tla register-archive a.rottmann@gmx.at--2004-main \
104             http://people.debian.org/~rotty/arch/a.rottmann@gmx.at/2004-main || true
105
106         ## tla get a.rottmann@gmx.at--2004-main/g-wrap--tng g-wrap
107         ## tla get a.rottmann@gmx.at--2004-main/g-wrap--mainline--1.9.0 g-wrap
108         tla get a.rottmann@gmx.at--2004-main/g-wrap--dev--0 g-wrap
109         ## ughr:
110         mkdir -p g-wrap/libffi
111     else
112         $WGET http://savannah.nongnu.org/download/g-wrap/g-wrap-$GWRAPVERSION.tar.gz
113         tar xzf $download/g-wrap-$GWRAPVERSION.tar.gz
114         ln -s g-wrap-$GWRAPVERSION g-wrap
115     fi
116     cd g-wrap
117     
118     rm -rf $OPT/g-wrap
119     if [ ! -f configure ]; then
120         sh autogen.sh --noconfigure
121     fi    
122     mkdir =build
123     cd =build
124     ../configure --prefix=$OPT/g-wrap --enable-maintainer-mode
125     make install
126     cd ../..
127 fi    
128
129
130 # not a good idea
131 ## cp srfi-34.scm from CVS head ?  --hwn
132 #(cd $OPT/g-wrap/share/guile/site
133 # mv srfi-34.scm srfi-34.scm-g-wrap
134 # cp $OPT/guile/share/guile-1.7/srfi/srfi-34.scm .)
135
136 PKG_CONFIG_PATH=$OPT/guile-gnome/lib/pkgconfig:$PKG_CONFIG_PATH
137 LD_LIBRARY_PATH=$OPT/guile-gnome/lib:$LD_LIBRARY_PATH
138 GUILE_LOAD_PATH=$OPT/guile-gnome/share/guile:$GUILE_LOAD_PATH
139 ## 5.  get guile-gnome
140 if ! pkg-config --atleast-version=$GGVERSION guile-gnome-glib; then
141     if [ -n "$BLOEDIGE_RAND" ]; then
142
143         if false; then # rotty
144             tla register-archive guile-gnome-devel@gnu.org--2004 \
145                 http://people.debian.org/~rotty/arch/guile-gnome-devel@gnu.org/2004/ || true
146             tla get guile-gnome-devel@gnu.org--2004/dists--dev guile-gnome
147             cd guile-gnome
148             tla build-config -r configs/gnu.org/dev
149             cd src
150
151             # 5a.  get extra modules (gnome canvas)
152             for i in $EXTRA; do
153                 tla get guile-gnome-devel@gnu.org--2004/$i--dev $i
154             done
155         else # andy
156             tla register-archive wingo@pobox.com--2004-main \
157                 http://ambient.2y.net/wingo/arch/wingo@pobox.com--2004-main || true
158             
159             tla get wingo@pobox.com--2004-main/guile-gnome-dists--release guile-gnome
160             cd guile-gnome
161             tla build-config -r configs/gnu.org/guile-gnome-platform-$GGVERSION
162             cd src
163             EXTRA="pkg atk defs glib gstreamer gtk gtksourceview libgda libglade libgnome libgnomeui pango libgnomecanvas"
164             EXTRA=
165
166             # 5a.  get extra modules (gnome canvas)
167             for i in $EXTRA; do
168                 tla get wingo@pobox.com--2004-main/guile-gnome-$i--release $i
169             done
170
171             cd libgnomecanvas
172             cd ..
173         fi
174
175         if [ ! -f configure ]; then
176             sh autogen.sh --noconfigure
177         fi
178         cd ..
179         srcdir="../src"
180     else
181         $WGET http://download.gna.org/guile-gnome/releases/guile-gnome-platform-$GGVERSION.tar.gz
182         tar xzf $download/guile-gnome-platform-$GGVERSION.tar.gz
183         ln -s guile-gnome-platform-$GGVERSION guile-gnome
184         cd guile-gnome
185         srcdir="../"
186     fi
187     
188     rm -rf $OPT/guile-gnome
189     mkdir =build
190     cd =build
191
192 # Using libtool < 1.6.0 together with gcc-3.4 may trigger this problem:
193 #
194 #    If a tag has not been given, and we're using a compiler which is
195 #    not one of the ones with which libtool was built, attempt to
196 #    infer the compiler from the first word of the command line passed
197 #    to libtool.
198 #
199     if [ -z "$GCC34" ]; then
200     # Use libtool-1.5.6, gcc-3.{2,3} without -O2,
201         CFLAGS='-O -g' $srcdir/configure --prefix=$OPT/guile-gnome --enable-maintainer-mode
202     else
203     # or use gcc-3.4 with libtool-1.6.0
204         CC=$GCC34 $srcdir/configure --prefix=$OPT/guile-gnome --enable-maintainer-mode
205     fi
206     make all install G_WRAP_MODULE_DIR=$OPT/g-wrap/share/guile/site
207 fi
208
209 # simple test -- fails atm
210 # guile -s ../src/libgnomecanvas/examples/canvas.scm
211