]> git.donarmstrong.com Git - lilypond.git/blob - cygwin/mknetrel
* cygwin/mknetrel: Exit if doc build fails.
[lilypond.git] / cygwin / mknetrel
1 # -*- shell-script -*-
2
3 # stable LilyPond releases: lilypond-1.6
4 # archive=ftp://lilypond.org/pub/LilyPond/v1.6
5
6 # LilyPond development: lilypond-1.7
7 # archive=ftp://lilypond.org/pub/LilyPond/v1.7
8
9 # Guile specific mknetrel overrides
10 # To use this, do something like:
11 cat >/dev/null <<EOC
12
13    wget -P/var/tmp ftp://lilypond.org/pub/LilyPond/v1.7/lilypond-1.7.13.tar.gz
14    rm -rf /home/netrel/src/lilypond-*
15    mkdir -p /home/netrel/src && cd /home/netrel/src
16    ## TODO: look at pimport
17    tar xzf /var/tmp/lilypond-*
18    mv lilypond-* $(echo lilypond-*)-1
19    cd -
20    ./bin/mknetrel -xXC lilypond
21
22 EOC
23
24
25 BUILD=1
26 # sover=14
27
28 patch=$mknetrel_root/patch
29 if iscygwin; then
30     true
31 else    
32     ##uploads=$here/uploads/$base && mkdir -p $uploads
33     uploads=$here/uploads-development/$base && mkdir -p $uploads
34     tarstem=$uploads/$package
35 fi
36
37 sub_packages="doc"
38 old_path=$PATH
39
40
41
42 ##. $extra/jcn
43
44
45 # -*- shell-script -*-
46
47 # jcn -- unsorted stuff
48
49
50 #
51 # Patching and configuring
52 #
53
54 presplit () { true; }
55
56 # Maybe add to mknetrel or pimport.
57 dopatchsrc () {
58     cd $src
59     patch -p1 < $patch/$package.patch
60     [ -d cygwin -a ! -e CYGWIN-PATCHES ] && ln -s cygwin CYGWIN-PATCHES
61     [ -d CYGWIN-PATCHES -a ! -e cygwin ] && ln -s CYGWIN-PATCHES cygwin
62     [ -d CYGWIN-PATCHES ] || mkdir CYGWIN-PATCHES
63 }
64
65 # Maybe add to mknetrel or pimport.
66 patchsrc () {
67     [ -r $patch/$package.patch -a ! -r $src/CYGWIN-PATCHES -a ! -r $src/cygwin ] && dopatchsrc
68 }
69
70 autoupdate () {
71     for i in bootstrap autogen.sh; do
72         if [ -x ./$i ]; then
73             ./$i || exit 1
74             return 0
75         fi
76     done
77     
78     aclocal
79     rm -rf libltdl
80     libtoolize --force --copy --automake --ltdl
81     autoheader
82     autoconf
83     automake --add-missing
84 }
85
86 crosscache () {
87         cat <<EOF > config.cache
88
89 ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
90 ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
91 ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4}
92 ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
93 ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
94 ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
95 ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
96 ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=12}
97 ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
98 ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
99 ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
100 ac_cv_c_long_size_t=${ac_cv_c_long_size_t=no}
101 ac_cv_c_long_time_t=${ac_cv_c_long_time_t=yes}
102 ac_16bit_type=${ac_16bit_type=short}
103 ac_32bit_type=${ac_32bit_type=int}
104 ac_64bit_type=${ac_64bit_type=none}
105 ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=no}
106 ac_cv_sprintf_count=${ac_cv_sprintf_count=yes}
107 ac_cv_spinlocks=${ac_cv_spinlocks=no}
108 ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void=yes}
109 ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
110 ac_cv_func_mkfifo=yes
111
112 # Try at preventing to break make rules while crosscompiling.  This
113 # used work, but nowadays ./configure thinks it knows better than me.
114
115 # But what ./configure doesn't know, is that automake and libtool are
116 # broken wrt cross-building, and wrt cc_for_build.  See new
117 # workarounds above.
118
119 ac_exeext=${ac_exeext=}
120 ac_cv_exeext=${ac_cv_exeext=}
121 EOF
122 }
123
124
125
126 #
127 # Subpackage stuff -- Maybe move to mknetrel
128 #
129
130 # Possibly, using file-lists globs is smarter than separate install
131 # prefixes.  We'll see what happens when packaging tetex-*.
132
133
134 lib_name () {
135     echo lib$base$sover
136 }
137
138 devel_name () {
139     echo $base-devel
140 }
141
142 doc_name () {
143     echo $base-doc
144 }
145
146 lib_split () {
147     mkdir -p ./$prefix/bin || exit 1
148     mv $inst/$prefix/bin/*.dll ./$prefix/bin
149     mkdir -p ./$prefix/share || exit 1
150     mv $inst/$prefix/share/$base ./$prefix/share
151     true
152 }
153    
154 devel_split () {
155     mkdir -p ./$prefix/bin || exit 1
156     mv $inst/$prefix/include ./$prefix/include
157     mkdir -p ./$prefix/lib || exit 1
158     mv $inst/$prefix/lib/*.a ./$prefix/lib
159     mv $inst/$prefix/lib/*.la ./$prefix/lib
160     mkdir -p ./$prefix/share || exit 1
161     mv $inst/$prefix/share/aclocal ./$prefix/share
162     true
163 }
164
165 doc_split () {
166     mkdir -p ./$prefix || exit 1
167     mv $inst/$prefix/info ./$prefix
168     true
169 }
170
171 prebuild () {
172     for i in $sub_packages; do
173         rm -rf $inst-$i
174         mkdir -p $inst-$i || exit 1
175     done
176 }
177     
178 domkdist() {
179     #
180     # Fix up installation slightly
181     #
182     cd $inst || exit 1
183     chmod -R a+w .
184     cd usr 2>/dev/null && dousrstuff
185
186
187     # Split off any sub-packages.  The actual splitting is handled by
188     # a package's specific code in extra/.
189
190     # To package `foo' in foo, foo-doc and foo-devel, set
191     # sub_packages='doc devel'.
192
193     # Then provide functions doc_name and devel_name, that return the
194     # full name of the sub-package.  Also provide functions doc_split
195     # and devel_split, that mv part of foo's installation in $inst to
196     # the sub-packages' installation roots $inst-doc and $inst-devel.
197
198     cd $inst || exit 1
199     presplit
200
201     for i in $sub_packages; do
202         subname=$(${i}_name)
203         cd $inst-$i || exit 1
204         ${i}_split || exit 1
205     done
206     
207     #
208     # Make tar balls
209     #
210
211     cd $inst || exit 1
212     prepackage
213
214     # The base package
215     echo creating $tarstem.tar.bz2
216     cd $inst || exit 1
217
218     f=$src/cygwin/setup.hint && test -r $f && cp $f $uploads
219     f=$src/cygwin/$base.hint && test -r $f && cp $f $uploads/setup.hint
220     find * -print | sort | tar -T - --no-recursion -cjf $tarstem.tar.bz2
221
222     # Any sub-packages
223     for i in $sub_packages; do
224         subname=$(${i}_name)
225         subload=$uploads/$subname
226         subtarstem=$subload/$subname-$ver
227         mkdir -p $subload || exit 1
228         echo creating $subtarstem.tar.bz2
229         f=$src/cygwin/$subname.hint && test -r $f && cp $f $subload/setup.hint
230         cd $inst-$i
231         find * -print | sort | tar -T - --no-recursion -cjf $subtarstem.tar.bz2
232     done
233
234     # The source package
235     cd $src/.. || exit 1
236     echo creating "$tarstem"-src.tar.bz2
237     find $package_src/* -print -follow | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|~$|^.#|CVS|%redact|/tags$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion -cjf "$tarstem"-src.tar.bz2
238     postpackage
239 }
240
241
242 # end jcn
243
244
245
246
247 needdevoflags () {
248     return 1
249 }
250
251
252 preconfig () { # aka libtool_woes ()
253
254     # Add to mknetrel?
255     patchsrc 
256
257     ## autoupdate
258
259     cd $build || exit 1
260
261     GUILE=1.6.0
262     cat > guile-config <<EOF
263 #!/bin/sh
264 [ "\$1" == "--version" ] && echo "guile-config - Guile version $GUILE"
265 [ "\$1" == "compile" ] && echo "-I$cygwin_prefix/include"
266 [ "\$1" == "link" ] && echo "-L$cygwin_prefix/lib -lguile"
267 exit 0
268 EOF
269
270     chmod 755 guile-config
271     PATH=$(pwd):$PATH
272
273     ##opt='-O2 -g' LDFLAGS='"$cygwin_prefix/bin/libpython2.2.dll"
274     rm -f config.cache  
275 }
276
277 postconfig () {
278     # Configure for build, for generating doc
279     rm -f config.cache
280     (PATH="$old_path" \
281         PATH="$HOME/usr/pkg/guile-1.6.0/bin:$PATH" \
282         CFLAGS="-O2 -g" \
283         $src/configure --prefix=/usr --enable-config=for-build)
284 }
285
286 prebuild () {
287     for i in $sub_packages; do
288         rm -rf $inst-$i
289         mkdir -p $inst-$i || exit 1
290     done
291     
292     # Build for build, generating doc
293     cd $build || exit 1
294     
295     # ugh, footify fix
296     cd $src && ln -s GNUmakefile.in GNUmakefile
297
298     cd $build || exit 1
299     # Ugh.  Fixed in 1.6.8CVS and 1.7.13CVS.
300     # PATH=/bin:/usr/bin:$PATH make DO_O_DEP="echo NO DEPS;" conf=for-build all doc html-doc || exit 1
301     PATH=/bin:/usr/bin:$PATH make conf=for-build all doc html-doc || exit 1
302     for i in $(find . -path "out-for-build/*.1"); do
303         cp -pv $i $(dirname $(dirname $i))/$(basename $i)
304     done
305
306     mkdir -p mf/out
307     cp -pv mf/out-for-build/* mf/out
308     
309     addmakeflags MAKE_PFA_FILES=1 ' ' LDFLAGS="$cygwin_prefix/bin/libpython2.2.dll" ' ' 'target=i686-pc-cygwin'
310 }
311
312 preinstall () {
313     cd $build || exit 1
314     cp -v scripts/out-for-build/midi2ly.1 scripts/out
315     cp -v lily/out-for-build/lilypond.1 lily/out
316     
317     addmakeflags MAKE_PFA_FILES=1 ' ' LDFLAGS="$cygwin_prefix/bin/libpython2.2.dll" ' ' 'target=i686-pc-cygwin'
318 }
319
320 postinstall () {
321     mkdir -p $inst-doc/$prefix
322     cd $build || exit 1
323     docdir=$prefix/share/doc/$base-$ver
324     
325     make conf=for-build docdir=$inst-doc/$docdir install-html-doc
326
327
328     ## copy READMEs etc
329
330     cd $src || exit 1
331     install -d -m755 $inst/$docdir
332
333     ## Generic READMEs
334     find . -maxdepth 1 -type f -exec cp -pv \{\} $inst/$docdir \;
335
336     ## Cygwin readmes
337     cygwin=cygwin
338     cd $src || exit 1
339     #install -m644 $cygwin/README $inst/$docdir/README.Cygwin
340     install -m644 $cygwin/changelog $inst/$docdir/changelog.Cygwin
341     install -d -m755 $inst/$prefix/doc/Cygwin
342     #install -m644 $cygwin/README $inst/$prefix/doc/Cygwin/$package.README
343
344     cd $build || exit 1
345     install -m644 $cygwin/out/README $inst/$docdir/README.Cygwin
346     install -m644 $cygwin/out/README $inst/$prefix/doc/Cygwin/$package.README
347
348     ## copy examples
349     cd $src || exit 1
350     cp -prv input $inst/$docdir
351
352     cd $inst-doc/$prefix/share/doc/$base-$ver &&
353     ln -s $(find html/Documentation -name '*.ps.gz') .
354
355     ## Cygwin doesn't adhere to FHS (and why should they?)
356     cd $inst/$prefix/share && tar cf - doc | (cd ..; tar xf -) && rm -rf doc
357     cd $inst-doc/$prefix/share && tar cf - doc | (cd ..; tar xf -) && rm -rf doc
358 }
359
360 #presplit () {
361 #    docdir=$prefix/share/doc/$base-$ver
362 #    mkdir -p $inst-doc/$docdir || exit 1
363 #}
364
365 doc_split () {
366     mkdir -p ./$prefix || exit 1
367     mv $inst/$prefix/info ./$prefix
368     true
369 }
370
371
372 #prepackage () {
373 #  mv $inst/$prefix/bin/guile-* $inst-devel/$prefix/bin
374 #}