ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/App-Staticperl/staticperl.sh
(Generate patch)

Comparing App-Staticperl/staticperl.sh (file contents):
Revision 1.49 by root, Sun Jul 10 01:37:56 2011 UTC vs.
Revision 1.69 by root, Mon Feb 10 15:55:16 2020 UTC

8EMAIL="read the documentation <rtfm@example.org>" 8EMAIL="read the documentation <rtfm@example.org>"
9DLCACHE= 9DLCACHE=
10 10
11# perl build variables 11# perl build variables
12MAKE=make 12MAKE=make
13PERL_VERSION=5.12.4 # 5.8.9 is also a good choice 13PERL_VERSION=http://stableperl.schmorp.de/dist/latest.tar.gz # 5.12.5 and 5.8.9 are good choices for small builds
14PERL_CC=cc 14PERL_CC=cc
15PERL_CONFIGURE="" # additional Configure arguments 15PERL_CONFIGURE="" # additional Configure arguments
16PERL_CCFLAGS="-g -DPERL_DISABLE_PMC -DPERL_ARENA_SIZE=16376 -DNO_PERL_MALLOC_ENV -D_GNU_SOURCE -DNDEBUG" 16PERL_CCFLAGS="-g -DPERL_DISABLE_PMC -DPERL_ARENA_SIZE=16376 -DNO_PERL_MALLOC_ENV -D_GNU_SOURCE -DNDEBUG"
17PERL_OPTIMIZE="-Os -ffunction-sections -fdata-sections -finline-limit=8 -ffast-math" 17PERL_OPTIMIZE="-Os" # -Os -ffunction-sections -fdata-sections -finline-limit=8 -ffast-math"
18 18
19ARCH="$(uname -m)" 19ARCH="$(uname -m)"
20 20
21case "$ARCH" in 21#case "$ARCH" in
22 i*86 | x86_64 | amd64 ) 22# i*86 | x86_64 | amd64 )
23 PERL_OPTIMIZE="$PERL_OPTIMIZE -mpush-args -mno-inline-stringops-dynamically -mno-align-stringops -mno-ieee-fp" # x86/amd64 23# PERL_OPTIMIZE="$PERL_OPTIMIZE -mpush-args -mno-inline-stringops-dynamically -mno-align-stringops -mno-ieee-fp" # x86/amd64
24 case "$ARCH" in 24# case "$ARCH" in
25 i*86 ) 25# i*86 )
26 PERL_OPTIMIZE="$PERL_OPTIMIZE -fomit-frame-pointer -march=pentium3 -mtune=i386" # x86 only 26# PERL_OPTIMIZE="$PERL_OPTIMIZE -fomit-frame-pointer -march=pentium3 -mtune=i386" # x86 only
27 ;; 27# ;;
28 esac 28# esac
29 ;; 29# ;;
30esac 30#esac
31 31
32# -Wl,--gc-sections makes it impossible to check for undefined references 32# -Wl,--gc-sections makes it impossible to check for undefined references
33# for some reason so we need to patch away the "-no" after Configure and before make :/ 33# for some reason so we need to patch away the "-no" after Configure and before make :/
34# --allow-multiple-definition exists to work around uclibc's pthread static linking bug 34# --allow-multiple-definition exists to work around uclibc's pthread static linking bug
35#PERL_LDFLAGS="-Wl,--no-gc-sections -Wl,--allow-multiple-definition" 35#PERL_LDFLAGS="-Wl,--no-gc-sections -Wl,--allow-multiple-definition"
43#EV_EXTRA_DEFS='-DEV_FEATURES=4+8+16+64 -DEV_USE_SELECT=0 -DEV_USE_POLL=1 -DEV_USE_EPOLL=1 -DEV_NO_LOOPS -DEV_COMPAT3=0' 43#EV_EXTRA_DEFS='-DEV_FEATURES=4+8+16+64 -DEV_USE_SELECT=0 -DEV_USE_POLL=1 -DEV_USE_EPOLL=1 -DEV_NO_LOOPS -DEV_COMPAT3=0'
44export PERL_MM_USE_DEFAULT PERL_MM_OPT 44export PERL_MM_USE_DEFAULT PERL_MM_OPT
45 45
46# which extra modules to install by default from CPAN that are 46# which extra modules to install by default from CPAN that are
47# required by mkbundle 47# required by mkbundle
48STATICPERL_MODULES="common::sense Pod::Strip PPI::XS Pod::Usage" 48STATICPERL_MODULES="ExtUtils::MakeMaker ExtUtils::CBuilder common::sense Pod::Strip PPI PPI::XS Pod::Usage"
49 49
50# which extra modules you might want to install 50# which extra modules you might want to install
51EXTRA_MODULES="" 51EXTRA_MODULES=""
52 52
53# overridable functions 53# overridable functions
67fi 67fi
68 68
69############################################################################# 69#############################################################################
70# support 70# support
71 71
72# work around ExtUtils::CBuilder and others
73export CC="$PERL_CC"
74export CFLAGS="$PERL_CFLAGS"
75export LD="$PERL_CC"
76export LDFLAGS="$PERL_LDFLAGS"
77unset LIBS
78
72PERL_PREFIX="${PERL_PREFIX:=$STATICPERL/perl}" # where the perl gets installed 79PERL_PREFIX="${PERL_PREFIX:=$STATICPERL/perl}" # where the perl gets installed
73 80
74unset PERL5OPT PERL5LIB PERLLIB PERL_UNICODE PERLIO_DEBUG 81unset PERL5OPT PERL5LIB PERLLIB PERL_UNICODE PERLIO_DEBUG
75unset PERL_MB_OPT 82unset PERL_MB_OPT
76LC_ALL=C; export LC_ALL # just to be on the safe side 83LC_ALL=C; export LC_ALL # just to be on the safe side
79# life easier when working in e.g. "staticperl cpan / look" 86# life easier when working in e.g. "staticperl cpan / look"
80PATH="$PERL_PREFIX/perl/bin:$PATH" 87PATH="$PERL_PREFIX/perl/bin:$PATH"
81 88
82# set version in a way that Makefile.PL can extract 89# set version in a way that Makefile.PL can extract
83VERSION=VERSION; eval \ 90VERSION=VERSION; eval \
84$VERSION="1.31" 91$VERSION="1.45"
85
86BZ2=bz2
87BZIP2=bzip2
88 92
89fatal() { 93fatal() {
90 printf -- "\nFATAL: %s\n\n" "$*" >&2 94 printf -- "\nFATAL: %s\n\n" "$*" >&2
91 exit 1 95 exit 1
92} 96}
138} 142}
139 143
140realclean() { 144realclean() {
141 rm -f "$PERL_PREFIX/staticstamp.postinstall" 145 rm -f "$PERL_PREFIX/staticstamp.postinstall"
142 rm -f "$PERL_PREFIX/staticstamp.install" 146 rm -f "$PERL_PREFIX/staticstamp.install"
143 rm -f "$STATICPERL/src/perl-"*"/staticstamp.configure" 147 rm -f "$STATICPERL/src/perl/staticstamp.configure"
144} 148}
145 149
146fetch() { 150fetch() {
151(
147 rcd "$STATICPERL" 152 rcd "$STATICPERL"
148 153
149 mkdir -p src 154 mkdir -p src
150 rcd src 155 rcd src
151 156
152 if ! [ -d "perl-$PERL_VERSION" ]; then 157 if ! [ -d "perl" ]; then
158 rm -rf unpack
159 mkdir -p unpack
160
161 case "$PERL_VERSION" in
162 *:* )
163 # url
164 PERLURL="$PERL_VERSION"
165 PERLTAR="$(basename "$PERL_VERSION")"
166 ;;
167 /* )
168 # directory
169 verbose "copying $PERL_VERSION"
170 cp -Rp "$PERL_VERSION/." unpack/.
171 chmod -R u+w unpack
172 mv unpack perl
173 return
174 ;;
175 * )
176 PERLURL="$CPAN/src/5.0/perl-$PERL_VERSION.tar.bz2"
153 PERLTAR=perl-$PERL_VERSION.tar.$BZ2 177 PERLTAR=perl-$PERL_VERSION.tar.bz2
178 ;;
179 esac
154 180
155 if ! [ -e $PERLTAR ]; then 181 if ! [ -e "$PERLTAR" ]; then
156 URL="$CPAN/src/5.0/$PERLTAR"
157
158 verblock <<EOF 182 verblock <<EOF
159downloading perl 183downloading perl
184
185trying to download from $PERLURL
186
187you can configure a download cache directory via DLCACHE
188in your .staticperlrc to avoid repeated downloads.
189
160to manually download perl yourself, place 190to manually download perl yourself, place a suitable tarball in
161perl-$PERL_VERSION.tar.$BZ2 in $STATICPERL 191$DLCACHE/$PERLTAR
162trying $URL
163 192
164either curl or wget is required for automatic download. 193either curl or wget is required for automatic download.
165curl is tried first, then wget. 194curl is tried first, then wget.
166
167you can configure a download cache directory via DLCACHE
168in your .staticperlrc to avoid repeated downloads.
169EOF 195EOF
170 196
171 rm -f $PERLTAR~ # just to be on the safe side 197 rm -f $PERLTAR~ # just to be on the safe side
172 { [ "$DLCACHE" ] && cp "$DLCACHE"/$PERLTAR $PERLTAR~ >/dev/null 2>&1; } \ 198 { [ "$DLCACHE" ] && cp "$DLCACHE"/$PERLTAR $PERLTAR~ >/dev/null 2>&1; } \
173 || wget -O $PERLTAR~ "$URL" \ 199 || wget -O $PERLTAR~ "$PERLURL" \
174 || curl -f >$PERLTAR~ "$URL" \ 200 || curl -f >$PERLTAR~ "$PERLURL" \
175 || fatal "$URL: unable to download" 201 || fatal "$URL: unable to download"
176 rm -f $PERLTAR 202 rm -f $PERLTAR
177 mv $PERLTAR~ $PERLTAR 203 mv $PERLTAR~ $PERLTAR
178 if [ "$DLCACHE" ]; then 204 if [ "$DLCACHE" ]; then
179 mkdir -p "$DLCACHE" 205 mkdir -p "$DLCACHE"
180 cp $PERLTAR "$DLCACHE"/$PERLTAR~ && \ 206 cp $PERLTAR "$DLCACHE"/$PERLTAR~$$~ && \
181 mv "$DLCACHE"/$PERLTAR~ "$DLCACHE"/$PERLTAR 207 mv "$DLCACHE"/$PERLTAR~$$~ "$DLCACHE"/$PERLTAR
182 fi 208 fi
183 fi 209 fi
184 210
185 verblock <<EOF 211 verblock <<EOF
186unpacking perl 212unpacking perl
187EOF 213EOF
188 214
189 mkdir -p unpack 215 case "$PERLTAR" in
190 rm -rf unpack/perl-$PERL_VERSION 216 *.xz ) UNCOMPRESS="xz -d" ;;
217 *.lzma ) UNCOMPRESS="lzma -d" ;;
218 *.bz2 ) UNCOMPRESS="bzip2 -d" ;;
219 *.gz ) UNCOMPRESS="gzip -d" ;;
220 *.tar ) UNCOMPRESS="cat" ;;
221 * )
222 fatal "don't know hot to uncompress $PERLTAR,\nonly tar, tar.gz, tar.bz2, tar.lzma and tar.xz are supported."
223 exit 1
224 ;;
225 esac
226
191 $BZIP2 -d <$PERLTAR | ( cd unpack && tar xf - ) \ 227 <"$PERLTAR" $UNCOMPRESS -d | ( cd unpack && tar xf - ) \
192 || fatal "$PERLTAR: error during unpacking" 228 || fatal "$PERLTAR: error during unpacking"
193 chmod -R u+w unpack/perl-$PERL_VERSION 229
194 mv unpack/perl-$PERL_VERSION perl-$PERL_VERSION 230 if [ -d unpack/*/ ]; then
231 chmod -R u+w unpack/*/
232 mv unpack/*/ perl
195 rmdir -p unpack 233 rmdir -p unpack
234 else
235 fatal "unpacking $PERLTAR did not result in a single directory, don't know how to handle this"
236 fi
237
238 rm "$PERLTAR"
196 fi 239 fi
240) || exit
197} 241}
198 242
199# similar to GNU-sed -i or perl -pi 243# similar to GNU-sed -i or perl -pi
200sedreplace() { 244sedreplace() {
201 sed -e "$1" <"$2" > "$2~" || fatal "error while running sed" 245 sed -e "$1" <"$2" > "$2~" || fatal "error while running sed"
228EOF 272EOF
229 exit 1 273 exit 1
230} 274}
231 275
232configure() { 276configure() {
277(
233 fetch 278 fetch
234 279
235 rcd "$STATICPERL/src/perl-$PERL_VERSION" 280 rcd "$STATICPERL/src/perl"
236 281
237 [ -e staticstamp.configure ] && return 282 [ -e staticstamp.configure ] && return
238 283
239 verblock <<EOF 284 verblock <<EOF
240configuring $STATICPERL/src/perl-$PERL_VERSION 285configuring $STATICPERL/src/perl
241EOF 286EOF
242 287
243 rm -f "$PERL_PREFIX/staticstamp.install" 288 rm -f "$PERL_PREFIX/staticstamp.install"
244 289
245 "$MAKE" distclean >/dev/null 2>&1 290 "$MAKE" distclean >/dev/null 2>&1
287 -Demail="$EMAIL" \ 332 -Demail="$EMAIL" \
288 -Dcf_email="$EMAIL" \ 333 -Dcf_email="$EMAIL" \
289 -Dcf_by="$EMAIL" \ 334 -Dcf_by="$EMAIL" \
290 $PERL_CONFIGURE \ 335 $PERL_CONFIGURE \
291 -Duseperlio \ 336 -Duseperlio \
337 -Uversiononly \
292 -dE || configure_failure 338 -dE || configure_failure
293 339
294 sedreplace ' 340 sedreplace '
295 s/-Wl,--no-gc-sections/-Wl,--gc-sections/g 341 s/-Wl,--no-gc-sections/-Wl,--gc-sections/g
296 s/ *-fno-stack-protector */ /g 342 s/ *-fno-stack-protector */ /g
301 sh Configure -S || fatal "Configure -S failed" 347 sh Configure -S || fatal "Configure -S failed"
302 348
303 postconfigure || fatal "postconfigure hook failed" 349 postconfigure || fatal "postconfigure hook failed"
304 350
305 : > staticstamp.configure 351 : > staticstamp.configure
352) || exit
306} 353}
307 354
308write_shellscript() { 355write_shellscript() {
309 { 356 {
310 echo "#!/bin/sh" 357 echo "#!/bin/sh"
315 } >"$PERL_PREFIX/bin/$1" 362 } >"$PERL_PREFIX/bin/$1"
316 chmod 755 "$PERL_PREFIX/bin/$1" 363 chmod 755 "$PERL_PREFIX/bin/$1"
317} 364}
318 365
319build() { 366build() {
367(
320 configure 368 configure
321 369
322 rcd "$STATICPERL/src/perl-$PERL_VERSION" 370 rcd "$STATICPERL/src/perl"
323 371
324 verblock <<EOF 372 verblock <<EOF
325building $STATICPERL/src/perl-$PERL_VERSION 373building $STATICPERL/src/perl
326EOF 374EOF
327 375
328 rm -f "$PERL_PREFIX/staticstamp.install" 376 rm -f "$PERL_PREFIX/staticstamp.install"
329 377
330 "$MAKE" || fatal "make: error while building perl" 378 "$MAKE" || fatal "make: error while building perl"
331 379
332 postbuild || fatal "postbuild hook failed" 380 postbuild || fatal "postbuild hook failed"
381) || exit
333} 382}
334 383
335_postinstall() { 384_postinstall() {
336 if ! [ -e "$PERL_PREFIX/staticstamp.postinstall" ]; then 385 if ! [ -e "$PERL_PREFIX/staticstamp.postinstall" ]; then
337 NOCHECK_INSTALL=+ 386 NOCHECK_INSTALL=+
338 instcpan $STATICPERL_MODULES 387 instcpan $STATICPERL_MODULES
339 [ $EXTRA_MODULES ] && instcpan $EXTRA_MODULES 388 [ "$EXTRA_MODULES" ] && instcpan $EXTRA_MODULES
340 389
341 postinstall || fatal "postinstall hook failed" 390 postinstall || fatal "postinstall hook failed"
342 391
343 : > "$PERL_PREFIX/staticstamp.postinstall" 392 : > "$PERL_PREFIX/staticstamp.postinstall"
344 fi 393 fi
345} 394}
346 395
347install() { 396install() {
397(
348 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then 398 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then
349 build 399 build
350 400
351 verblock <<EOF 401 verblock <<EOF
352installing $STATICPERL/src/perl-$PERL_VERSION 402installing $STATICPERL/src/perl
353to $PERL_PREFIX 403to $PERL_PREFIX
354EOF 404EOF
355 405
356 ln -sf "perl/bin/" "$STATICPERL/bin" 406 ln -sf "perl/bin/" "$STATICPERL/bin"
357 ln -sf "perl/lib/" "$STATICPERL/lib" 407 ln -sf "perl/lib/" "$STATICPERL/lib"
359 mkdir "$STATICPERL/patched" 409 mkdir "$STATICPERL/patched"
360 410
361 ln -sf "$PERL_PREFIX" "$STATICPERL/perl" # might get overwritten 411 ln -sf "$PERL_PREFIX" "$STATICPERL/perl" # might get overwritten
362 rm -rf "$PERL_PREFIX" # by this rm -rf 412 rm -rf "$PERL_PREFIX" # by this rm -rf
363 413
414 rcd "$STATICPERL/src/perl"
415
364 "$MAKE" install || fatal "make install: error while installing" 416 "$MAKE" install || fatal "make install: error while installing"
365 417
366 rcd "$PERL_PREFIX" 418 rcd "$PERL_PREFIX"
367 419
368 # create a "make install" replacement for CPAN 420 # create a "make install" replacement for CPAN
369 write_shellscript SP-make-install-make <<'EOF' 421 write_shellscript SP-make-make <<'end_of_make'
422#CAT make-make.sh
423end_of_make
424
425 # create a "make install" replacement for CPAN
426 write_shellscript SP-make-install-make <<'end_of_make_install_make'
370#CAT make-install-make.sh 427#CAT make-install-make.sh
371EOF 428end_of_make_install_make
372 429
373 # create a "patch modules" helper 430 # create a "patch modules" helper
374 write_shellscript SP-patch-postinstall <<'EOF' 431 write_shellscript SP-patch-postinstall <<'end_of_patch_postinstall'
375#CAT patch-postinstall.sh 432#CAT patch-postinstall.sh
376EOF 433end_of_patch_postinstall
377 434
435 # immediately use it
378 "$PERL_PREFIX/bin/SP-patch-postinstall" 436 "$PERL_PREFIX/bin/SP-patch-postinstall"
379 437
380 # help to trick CPAN into avoiding ~/.cpan completely 438 # help to trick CPAN into avoiding ~/.cpan completely
381 echo 1 >"$PERL_PREFIX/lib/CPAN/MyConfig.pm" 439 echo 1 >"$PERL_PREFIX/lib/CPAN/MyConfig.pm"
382 440
390 CPAN::Shell->o (conf => q<cpan_home>, "'"$STATICPERL"'/cpan"); 448 CPAN::Shell->o (conf => q<cpan_home>, "'"$STATICPERL"'/cpan");
391 CPAN::Shell->o (conf => q<build_dir>, "'"$STATICPERL"'/cpan/build"); 449 CPAN::Shell->o (conf => q<build_dir>, "'"$STATICPERL"'/cpan/build");
392 CPAN::Shell->o (conf => q<prefs_dir>, "'"$STATICPERL"'/cpan/prefs"); 450 CPAN::Shell->o (conf => q<prefs_dir>, "'"$STATICPERL"'/cpan/prefs");
393 CPAN::Shell->o (conf => q<histfile> , "'"$STATICPERL"'/cpan/histfile"); 451 CPAN::Shell->o (conf => q<histfile> , "'"$STATICPERL"'/cpan/histfile");
394 CPAN::Shell->o (conf => q<keep_source_where>, "'"$STATICPERL"'/cpan/sources"); 452 CPAN::Shell->o (conf => q<keep_source_where>, "'"$STATICPERL"'/cpan/sources");
453 CPAN::Shell->o (conf => q<makepl_arg>, "MAP_TARGET=perl");
454 CPAN::Shell->o (conf => q<make>, "'"$PERL_PREFIX"'/bin/SP-make-make");
395 CPAN::Shell->o (conf => q<make_install_make_command>, "'"$PERL_PREFIX"'/bin/SP-make-install-make"); 455 CPAN::Shell->o (conf => q<make_install_make_command>, "'"$PERL_PREFIX"'/bin/SP-make-install-make");
396 CPAN::Shell->o (conf => q<prerequisites_policy>, q<follow>); 456 CPAN::Shell->o (conf => q<prerequisites_policy>, q<follow>);
397 CPAN::Shell->o (conf => q<build_requires_install_policy>, q<no>); 457 CPAN::Shell->o (conf => q<build_requires_install_policy>, q<yes>);
458 CPAN::Shell->o (conf => q<rfecommends_policy>, q<no>);
398 CPAN::Shell->o (conf => q<prefer_installer>, "EUMM"); 459 CPAN::Shell->o (conf => q<prefer_installer>, q<EUMM>);
399 CPAN::Shell->o (conf => q<commit>); 460 CPAN::Shell->o (conf => q<commit>);
400 ' || fatal "error while initialising CPAN" 461 ' || fatal "error while initialising CPAN"
401 462
402 : > "$PERL_PREFIX/staticstamp.install" 463 : > "$PERL_PREFIX/staticstamp.install"
403 fi 464 fi
404 465
405 _postinstall 466 _postinstall
467) || exit
406} 468}
407 469
408import() { 470import() {
471(
409 IMPORT="$1" 472 IMPORT="$1"
410 473
411 rcd "$STATICPERL" 474 rcd "$STATICPERL"
412 475
413 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then 476 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then
418 rm -rf bin cpan lib patched perl src 481 rm -rf bin cpan lib patched perl src
419 mkdir -m 755 perl perl/bin 482 mkdir -m 755 perl perl/bin
420 ln -s perl/bin/ bin 483 ln -s perl/bin/ bin
421 ln -s "$IMPORT" perl/bin/ 484 ln -s "$IMPORT" perl/bin/
422 485
486 echo "$IMPORT" > "$PERL_PREFIX/.import"
487
423 : > "$PERL_PREFIX/staticstamp.install" 488 : > "$PERL_PREFIX/staticstamp.install"
424 fi 489 fi
425 490
426 _postinstall 491 _postinstall
492) || exit
427} 493}
428 494
429############################################################################# 495#############################################################################
430# install a module from CPAN 496# install a module from CPAN
431 497
432instcpan() { 498instcpan() {
433 [ $NOCHECK_INSTALL ] || install 499 [ $NOCHECK_INSTALL ] || install
434 500
435 verblock <<EOF 501 verblock <<EOF
436installing modules from CPAN 502installing modules from CPAN
437$@ 503$*
438EOF 504EOF
439 505
440 #"$PERL_PREFIX"/bin/perl -MCPAN::MyConfig -MCPAN -e 'notest install $_ for @ARGV' -- "$@" | tee "$STATICPERL/instcpan.log" 506 MYCONFIG=
507 [ -e "$PERL_PREFIX/.import" ] || MYCONFIG=-MCPAN::MyConfig
508
441 "$PERL_PREFIX"/bin/perl -MCPAN -e 'notest install $_ for @ARGV' -- "$@" | tee "$STATICPERL/instcpan.log" 509 "$PERL_PREFIX"/bin/perl $MYCONFIG -MCPAN -e 'notest (install => $_) for @ARGV' -- "$@" | tee "$STATICPERL/instcpan.log"
442 510
443 if grep -q " -- NOT OK\$" "$STATICPERL/instcpan.log"; then 511 if grep -q " -- NOT OK\$" "$STATICPERL/instcpan.log"; then
444 fatal "failure while installing modules from CPAN ($@)" 512 fatal "failure while installing modules from CPAN ($*)"
445 fi 513 fi
446 rm -f "$STATICPERL/instcpan.log" 514 rm -f "$STATICPERL/instcpan.log"
447} 515}
448 516
449############################################################################# 517#############################################################################
452instsrc() { 520instsrc() {
453 [ $NOCHECK_INSTALL ] || install 521 [ $NOCHECK_INSTALL ] || install
454 522
455 verblock <<EOF 523 verblock <<EOF
456installing modules from source 524installing modules from source
457$@ 525$*
458EOF 526EOF
459 527
460 for mod in "$@"; do 528 for mod in "$@"; do
461 echo 529 echo
462 echo $mod 530 echo $mod
500catmkbundle() { 568catmkbundle() {
501 { 569 {
502 read dummy 570 read dummy
503 echo "#!$PERL_PREFIX/bin/perl" 571 echo "#!$PERL_PREFIX/bin/perl"
504 cat 572 cat
505 } <<'MKBUNDLE' 573 } <<'end_of_mkbundle'
506#CAT mkbundle 574#CAT mkbundle
507MKBUNDLE 575end_of_mkbundle
508} 576}
509 577
510bundle() { 578bundle() {
511 MKBUNDLE="${MKBUNDLE:=$PERL_PREFIX/bin/SP-mkbundle}" 579 MKBUNDLE="${MKBUNDLE:=$PERL_PREFIX/bin/SP-mkbundle}"
512 catmkbundle >"$MKBUNDLE~" || fatal "$MKBUNDLE~: cannot create" 580 catmkbundle >"$MKBUNDLE~" || fatal "$MKBUNDLE~: cannot create"

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines