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.43 by root, Tue May 10 17:40:17 2011 UTC vs.
Revision 1.75 by root, Tue Aug 1 03:48:59 2023 UTC

1#!/bin/sh 1#!/bin/sh
2 2
3############################################################################# 3#############################################################################
4# configuration to fill in 4# configuration to fill in (or to replace in your .staticperlrc)
5 5
6STATICPERL=~/.staticperl 6STATICPERL=~/.staticperl
7CPAN=http://mirror.netcologne.de/cpan # which mirror to use 7CPAN=http://mirror.netcologne.de/cpan # which mirror to use
8EMAIL="read the documentation <rtfm@example.org>" 8EMAIL="read the documentation <rtfm@example.org>"
9DLCACHE=
9 10
10# perl build variables 11# perl build variables
11MAKE=make 12MAKE=make
12PERL_VERSION=5.12.3 # 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
13PERL_CC=cc 14PERL_CC=cc
14PERL_CONFIGURE="" # additional Configure arguments 15PERL_CONFIGURE="" # additional Configure arguments
15PERL_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"
16PERL_OPTIMIZE="-Os -ffunction-sections -fdata-sections -finline-limit=8 -ffast-math" 17PERL_OPTIMIZE="-Os" # -Os -ffunction-sections -fdata-sections -finline-limit=8 -ffast-math"
17 18
18ARCH="$(uname -m)" 19ARCH="$(uname -m)"
19 20
20case "$ARCH" in 21#case "$ARCH" in
21 i*86 | x86_64 | amd64 ) 22# i*86 | x86_64 | amd64 )
22 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
23 case "$ARCH" in 24# case "$ARCH" in
24 i*86 ) 25# i*86 )
25 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
26 ;; 27# ;;
27 esac 28# esac
28 ;; 29# ;;
29esac 30#esac
30 31
31# -Wl,--gc-sections makes it impossible to check for undefined references 32# -Wl,--gc-sections makes it impossible to check for undefined references
32# 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 :/
33# --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
34#PERL_LDFLAGS="-Wl,--no-gc-sections -Wl,--allow-multiple-definition" 35#PERL_LDFLAGS="-Wl,--no-gc-sections -Wl,--allow-multiple-definition"
37 38
38# some configuration options for modules 39# some configuration options for modules
39PERL_MM_USE_DEFAULT=1 40PERL_MM_USE_DEFAULT=1
40PERL_MM_OPT="MAN1PODS= MAN3PODS=" 41PERL_MM_OPT="MAN1PODS= MAN3PODS="
41#CORO_INTERFACE=p # needed without nptl on x86, due to bugs in linuxthreads - very slow 42#CORO_INTERFACE=p # needed without nptl on x86, due to bugs in linuxthreads - very slow
42EV_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'
43export PERL_MM_USE_DEFAULT PERL_MM_OPT CORO_INTERFACE EV_EXTRA_DEFS 44export PERL_MM_USE_DEFAULT PERL_MM_OPT
44 45
45# which extra modules to install by default from CPAN that are 46# which extra modules to install by default from CPAN that are
46# required by mkbundle 47# required by mkbundle
47STATICPERL_MODULES="common::sense Pod::Strip PPI::XS Pod::Usage" 48STATICPERL_MODULES="ExtUtils::MakeMaker ExtUtils::CBuilder common::sense Pod::Strip PPI PPI::XS Pod::Usage"
48 49
49# which extra modules you might want to install 50# which extra modules you might want to install
50EXTRA_MODULES="" 51EXTRA_MODULES=""
51 52
52# overridable functions 53# overridable functions
53preconfigure() { : ; } 54preconfigure() { : ; }
54patchconfig() { : ; } 55patchconfig() { : ; }
55postconfigure() { : ; } 56postconfigure() { : ; }
56postbuild() { : ; } 57postbuild() { : ; }
58postcpanconfig() { : ; }
57postinstall() { : ; } 59postinstall() { : ; }
58 60
59# now source user config, if any 61# now source user config, if any
60if [ "$STATICPERLRC" ]; then 62if [ "$STATICPERLRC" ]; then
61 . "$STATICPERLRC" 63 . "$STATICPERLRC"
62else 64else
66fi 68fi
67 69
68############################################################################# 70#############################################################################
69# support 71# support
70 72
73# work around ExtUtils::CBuilder and others
74export CC="$PERL_CC"
75export CFLAGS="$PERL_CFLAGS"
76export LD="$PERL_CC"
77export LDFLAGS="$PERL_LDFLAGS"
78unset LIBS
79
71PERL_PREFIX="${PERL_PREFIX:=$STATICPERL/perl}" # where the perl gets installed 80PERL_PREFIX="${PERL_PREFIX:=$STATICPERL/perl}" # where the perl gets installed
72 81
73unset PERL5OPT PERL5LIB PERLLIB PERL_UNICODE PERLIO_DEBUG 82unset PERL5OPT PERL5LIB PERLLIB PERL_UNICODE PERLIO_DEBUG
74unset PERL_MB_OPT 83unset PERL_MB_OPT
75LC_ALL=C; export LC_ALL # just to be on the safe side 84LC_ALL=C; export LC_ALL # just to be on the safe side
78# life easier when working in e.g. "staticperl cpan / look" 87# life easier when working in e.g. "staticperl cpan / look"
79PATH="$PERL_PREFIX/perl/bin:$PATH" 88PATH="$PERL_PREFIX/perl/bin:$PATH"
80 89
81# set version in a way that Makefile.PL can extract 90# set version in a way that Makefile.PL can extract
82VERSION=VERSION; eval \ 91VERSION=VERSION; eval \
83$VERSION="1.3" 92$VERSION="1.46"
84
85BZ2=bz2
86BZIP2=bzip2
87 93
88fatal() { 94fatal() {
89 printf -- "\nFATAL: %s\n\n" "$*" >&2 95 printf -- "\nFATAL: %s\n\n" "$*" >&2
90 exit 1 96 exit 1
91} 97}
131 137
132############################################################################# 138#############################################################################
133# download/configure/compile/install perl 139# download/configure/compile/install perl
134 140
135clean() { 141clean() {
136 rm -rf "$STATICPERL/src/perl-$PERL_VERSION" 142 rm -rf "$STATICPERL/src"
137} 143}
138 144
139realclean() { 145realclean() {
140 rm -f "$PERL_PREFIX/staticstamp.postinstall" 146 rm -f "$PERL_PREFIX/staticstamp.postinstall"
141 rm -f "$PERL_PREFIX/staticstamp.install" 147 rm -f "$PERL_PREFIX/staticstamp.install"
142 rm -f "$STATICPERL/src/perl-"*"/staticstamp.configure" 148 rm -f "$STATICPERL/src/perl/staticstamp.configure"
143} 149}
144 150
145fetch() { 151fetch() {
152(
146 rcd "$STATICPERL" 153 rcd "$STATICPERL"
147 154
148 mkdir -p src 155 mkdir -p src
149 rcd src 156 rcd src
150 157
151 if ! [ -d "perl-$PERL_VERSION" ]; then 158 if ! [ -d "perl" ]; then
152 if ! [ -e "perl-$PERL_VERSION.tar.$BZ2" ]; then 159 rm -rf unpack
160 mkdir -p unpack
153 161
162 case "$PERL_VERSION" in
163 *:* )
164 # url
165 PERLURL="$PERL_VERSION"
166 PERLTAR="$(basename "$PERL_VERSION")"
167 ;;
168 /* )
169 # directory
170 verbose "copying $PERL_VERSION"
171 cp -Rp "$PERL_VERSION/." unpack/.
172 chmod -R u+w unpack
173 mv unpack perl
174 return
175 ;;
176 * )
154 URL="$CPAN/src/5.0/perl-$PERL_VERSION.tar.$BZ2" 177 PERLURL="$CPAN/src/5.0/perl-$PERL_VERSION.tar.bz2"
178 PERLTAR=perl-$PERL_VERSION.tar.bz2
179 ;;
180 esac
155 181
182 if ! [ -e "$PERLTAR" ]; then
156 verblock <<EOF 183 verblock <<EOF
157downloading perl 184downloading perl
185
186trying to download from $PERLURL
187
188you can configure a download cache directory via DLCACHE
189in your .staticperlrc to avoid repeated downloads.
190
158to manually download perl yourself, place 191to manually download perl yourself, place a suitable tarball in
159perl-$PERL_VERSION.tar.$BZ2 in $STATICPERL 192$DLCACHE/$PERLTAR
160trying $URL
161 193
162either curl or wget is required for automatic download. 194either curl or wget is required for automatic download.
163curl is tried first, then wget. 195curl is tried first, then wget.
164EOF 196EOF
165 197
166 rm -f perl-$PERL_VERSION.tar.$BZ2~ # just to be on the safe side 198 rm -f $PERLTAR~ # just to be on the safe side
167 curl -f >perl-$PERL_VERSION.tar.$BZ2~ "$URL" \ 199 { [ "$DLCACHE" ] && cp "$DLCACHE"/$PERLTAR $PERLTAR~ >/dev/null 2>&1; } \
168 || wget -O perl-$PERL_VERSION.tar.$BZ2~ "$URL" \ 200 || wget -O $PERLTAR~ "$PERLURL" \
201 || curl -f >$PERLTAR~ "$PERLURL" \
169 || fatal "$URL: unable to download" 202 || fatal "$URL: unable to download"
170 rm -f perl-$PERL_VERSION.tar.$BZ2 203 rm -f $PERLTAR
171 mv perl-$PERL_VERSION.tar.$BZ2~ perl-$PERL_VERSION.tar.$BZ2 204 mv $PERLTAR~ $PERLTAR
205 if [ "$DLCACHE" ]; then
206 mkdir -p "$DLCACHE"
207 cp $PERLTAR "$DLCACHE"/$PERLTAR~$$~ && \
208 mv "$DLCACHE"/$PERLTAR~$$~ "$DLCACHE"/$PERLTAR
209 fi
172 fi 210 fi
173 211
174 verblock <<EOF 212 verblock <<EOF
175unpacking perl 213unpacking perl
176EOF 214EOF
177 215
178 mkdir -p unpack 216 case "$PERLTAR" in
179 rm -rf unpack/perl-$PERL_VERSION 217 *.xz ) UNCOMPRESS="xz -d" ;;
180 $BZIP2 -d <perl-$PERL_VERSION.tar.$BZ2 | ( cd unpack && tar xf - ) \ 218 *.lzma ) UNCOMPRESS="lzma -d" ;;
219 *.bz2 ) UNCOMPRESS="bzip2 -d" ;;
220 *.gz ) UNCOMPRESS="gzip -d" ;;
221 *.tar ) UNCOMPRESS="cat" ;;
222 * )
223 fatal "don't know hot to uncompress $PERLTAR,\nonly tar, tar.gz, tar.bz2, tar.lzma and tar.xz are supported."
224 exit 1
225 ;;
226 esac
227
228 <"$PERLTAR" $UNCOMPRESS -d | ( cd unpack && tar xf - ) \
181 || fatal "perl-$PERL_VERSION.tar.$BZ2: error during unpacking" 229 || fatal "$PERLTAR: error during unpacking"
182 chmod -R u+w unpack/perl-$PERL_VERSION 230
183 mv unpack/perl-$PERL_VERSION perl-$PERL_VERSION 231 if [ -d unpack/*/ ]; then
232 chmod -R u+w unpack/*/
233 mv unpack/*/ perl
184 rmdir -p unpack 234 rmdir -p unpack
235 else
236 fatal "unpacking $PERLTAR did not result in a single directory, don't know how to handle this"
237 fi
238
239 rm "$PERLTAR"
185 fi 240 fi
241) || exit
186} 242}
187 243
188# similar to GNU-sed -i or perl -pi 244# similar to GNU-sed -i or perl -pi
189sedreplace() { 245sedreplace() {
190 sed -e "$1" <"$2" > "$2~" || fatal "error while running sed" 246 sed -e "$1" <"$2" > "$2~" || fatal "error while running sed"
217EOF 273EOF
218 exit 1 274 exit 1
219} 275}
220 276
221configure() { 277configure() {
278(
222 fetch 279 fetch
223 280
224 rcd "$STATICPERL/src/perl-$PERL_VERSION" 281 rcd "$STATICPERL/src/perl"
225 282
226 [ -e staticstamp.configure ] && return 283 [ -e staticstamp.configure ] && return
227 284
228 verblock <<EOF 285 verblock <<EOF
229configuring $STATICPERL/src/perl-$PERL_VERSION 286configuring $STATICPERL/src/perl
230EOF 287EOF
231 288
232 rm -f "$PERL_PREFIX/staticstamp.install" 289 rm -f "$PERL_PREFIX/staticstamp.install"
233 290
234 "$MAKE" distclean >/dev/null 2>&1 291 "$MAKE" distclean >/dev/null 2>&1
276 -Demail="$EMAIL" \ 333 -Demail="$EMAIL" \
277 -Dcf_email="$EMAIL" \ 334 -Dcf_email="$EMAIL" \
278 -Dcf_by="$EMAIL" \ 335 -Dcf_by="$EMAIL" \
279 $PERL_CONFIGURE \ 336 $PERL_CONFIGURE \
280 -Duseperlio \ 337 -Duseperlio \
338 -Uversiononly \
281 -dE || configure_failure 339 -dE || configure_failure
282 340
283 sedreplace ' 341 sedreplace '
284 s/-Wl,--no-gc-sections/-Wl,--gc-sections/g 342 s/-Wl,--no-gc-sections/-Wl,--gc-sections/g
285 s/ *-fno-stack-protector */ /g 343 s/ *-fno-stack-protector */ /g
289 347
290 sh Configure -S || fatal "Configure -S failed" 348 sh Configure -S || fatal "Configure -S failed"
291 349
292 postconfigure || fatal "postconfigure hook failed" 350 postconfigure || fatal "postconfigure hook failed"
293 351
294 touch staticstamp.configure 352 : > staticstamp.configure
353) || exit
295} 354}
296 355
297write_shellscript() { 356write_shellscript() {
298 { 357 {
299 echo "#!/bin/sh" 358 echo "#!/bin/sh"
304 } >"$PERL_PREFIX/bin/$1" 363 } >"$PERL_PREFIX/bin/$1"
305 chmod 755 "$PERL_PREFIX/bin/$1" 364 chmod 755 "$PERL_PREFIX/bin/$1"
306} 365}
307 366
308build() { 367build() {
368(
309 configure 369 configure
310 370
311 rcd "$STATICPERL/src/perl-$PERL_VERSION" 371 rcd "$STATICPERL/src/perl"
312 372
313 verblock <<EOF 373 verblock <<EOF
314building $STATICPERL/src/perl-$PERL_VERSION 374building $STATICPERL/src/perl
315EOF 375EOF
316 376
317 rm -f "$PERL_PREFIX/staticstamp.install" 377 rm -f "$PERL_PREFIX/staticstamp.install"
318 378
319 "$MAKE" || fatal "make: error while building perl" 379 "$MAKE" || fatal "make: error while building perl"
320 380
321 postbuild || fatal "postbuild hook failed" 381 postbuild || fatal "postbuild hook failed"
382) || exit
383}
384
385_postinstall() {
386 if ! [ -e "$PERL_PREFIX/staticstamp.postinstall" ]; then
387 NOCHECK_INSTALL=+
388 instcpan $STATICPERL_MODULES
389 [ "$EXTRA_MODULES" ] && instcpan $EXTRA_MODULES
390
391 postinstall || fatal "postinstall hook failed"
392
393 : > "$PERL_PREFIX/staticstamp.postinstall"
394 fi
322} 395}
323 396
324install() { 397install() {
398(
325 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then 399 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then
326 build 400 build
327 401
328 verblock <<EOF 402 verblock <<EOF
329installing $STATICPERL/src/perl-$PERL_VERSION 403installing $STATICPERL/src/perl
330to $PERL_PREFIX 404to $PERL_PREFIX
331EOF 405EOF
332 406
333 ln -sf "perl/bin/" "$STATICPERL/bin" 407 ln -sf "perl/bin/" "$STATICPERL/bin"
334 ln -sf "perl/lib/" "$STATICPERL/lib" 408 ln -sf "perl/lib/" "$STATICPERL/lib"
336 mkdir "$STATICPERL/patched" 410 mkdir "$STATICPERL/patched"
337 411
338 ln -sf "$PERL_PREFIX" "$STATICPERL/perl" # might get overwritten 412 ln -sf "$PERL_PREFIX" "$STATICPERL/perl" # might get overwritten
339 rm -rf "$PERL_PREFIX" # by this rm -rf 413 rm -rf "$PERL_PREFIX" # by this rm -rf
340 414
415 rcd "$STATICPERL/src/perl"
416
341 "$MAKE" install || fatal "make install: error while installing" 417 "$MAKE" install || fatal "make install: error while installing"
342 418
343 rcd "$PERL_PREFIX" 419 rcd "$PERL_PREFIX"
344 420
345 # create a "make install" replacement for CPAN 421 # create a "make install" replacement for CPAN
346 write_shellscript SP-make-install-make <<'EOF' 422 write_shellscript SP-make-make <<'end_of_make'
423#CAT make-make.sh
424end_of_make
425
426 # create a "make install" replacement for CPAN
427 write_shellscript SP-make-install-make <<'end_of_make_install_make'
347#CAT make-install-make.sh 428#CAT make-install-make.sh
348EOF 429end_of_make_install_make
349 430
350 # create a "patch modules" helper 431 # create a "patch modules" helper
351 write_shellscript SP-patch-postinstall <<'EOF' 432 write_shellscript SP-patch-postinstall <<'end_of_patch_postinstall'
352#CAT patch-postinstall.sh 433#CAT patch-postinstall.sh
353EOF 434end_of_patch_postinstall
354 435
436 # immediately use it
355 "$PERL_PREFIX/bin/SP-patch-postinstall" 437 "$PERL_PREFIX/bin/SP-patch-postinstall"
356 438
357 # help to trick CPAN into avoiding ~/.cpan completely 439 # help to trick CPAN into avoiding ~/.cpan completely
358 echo 1 >"$PERL_PREFIX/lib/CPAN/MyConfig.pm" 440 echo 1 >"$PERL_PREFIX/lib/CPAN/MyConfig.pm"
359 441
360 # we call cpan with -MCPAN::MyConfig in this script, which 442 # we call cpan with -MCPAN::MyConfig in this script, which
361 # is strictly unnecssary as we have to patch CPAN anyway, 443 # is strictly unnecessary as we have to patch CPAN anyway,
362 # so consider it "for good measure". 444 # so consider it "for good measure".
363 "$PERL_PREFIX"/bin/perl -MCPAN::MyConfig -MCPAN -e ' 445 "$PERL_PREFIX"/bin/perl -MCPAN::MyConfig -MCPAN -e '
364 CPAN::Shell->o (conf => urllist => push => "'"$CPAN"'"); 446 CPAN::Shell->o (conf => urllist => push => "'"$CPAN"'");
447 CPAN::Shell->o (conf => pushy_https => "0");
365 CPAN::Shell->o (conf => q<cpan_home>, "'"$STATICPERL"'/cpan"); 448 CPAN::Shell->o (conf => q<cpan_home>, "'"$STATICPERL"'/cpan");
366 CPAN::Shell->o (conf => q<init>); 449 CPAN::Shell->o (conf => q<init>);
367 CPAN::Shell->o (conf => q<cpan_home>, "'"$STATICPERL"'/cpan"); 450 CPAN::Shell->o (conf => q<cpan_home>, "'"$STATICPERL"'/cpan");
368 CPAN::Shell->o (conf => q<build_dir>, "'"$STATICPERL"'/cpan/build"); 451 CPAN::Shell->o (conf => q<build_dir>, "'"$STATICPERL"'/cpan/build");
369 CPAN::Shell->o (conf => q<prefs_dir>, "'"$STATICPERL"'/cpan/prefs"); 452 CPAN::Shell->o (conf => q<prefs_dir>, "'"$STATICPERL"'/cpan/prefs");
370 CPAN::Shell->o (conf => q<histfile> , "'"$STATICPERL"'/cpan/histfile"); 453 CPAN::Shell->o (conf => q<histfile> , "'"$STATICPERL"'/cpan/histfile");
371 CPAN::Shell->o (conf => q<keep_source_where>, "'"$STATICPERL"'/cpan/sources"); 454 CPAN::Shell->o (conf => q<keep_source_where>, "'"$STATICPERL"'/cpan/sources");
455 CPAN::Shell->o (conf => q<makepl_arg>, "MAP_TARGET=perl");
456 CPAN::Shell->o (conf => q<make>, "'"$PERL_PREFIX"'/bin/SP-make-make");
372 CPAN::Shell->o (conf => q<make_install_make_command>, "'"$PERL_PREFIX"'/bin/SP-make-install-make"); 457 CPAN::Shell->o (conf => q<make_install_make_command>, "'"$PERL_PREFIX"'/bin/SP-make-install-make");
373 CPAN::Shell->o (conf => q<prerequisites_policy>, q<follow>); 458 CPAN::Shell->o (conf => q<prerequisites_policy>, q<follow>);
374 CPAN::Shell->o (conf => q<build_requires_install_policy>, q<no>); 459 CPAN::Shell->o (conf => q<build_requires_install_policy>, q<yes>);
460 CPAN::Shell->o (conf => q<recommends_policy>, q<0>);
461 CPAN::Shell->o (conf => q<suggests_policy>, q<0>);
375 CPAN::Shell->o (conf => q<prefer_installer>, "EUMM"); 462 CPAN::Shell->o (conf => q<prefer_installer>, q<EUMM>);
376 CPAN::Shell->o (conf => q<commit>); 463 CPAN::Shell->o (conf => q<commit>);
377 ' || fatal "error while initialising CPAN" 464 ' || fatal "error while initialising CPAN"
378 465
466 postcpanconfig
467
379 touch "$PERL_PREFIX/staticstamp.install" 468 : > "$PERL_PREFIX/staticstamp.install"
380 fi 469 fi
381 470
471 _postinstall
472) || exit
473}
474
475import() {
476(
477 IMPORT="$1"
478
479 rcd "$STATICPERL"
480
382 if ! [ -e "$PERL_PREFIX/staticstamp.postinstall" ]; then 481 if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then
383 NOCHECK_INSTALL=+ 482 verblock <<EOF
384 instcpan $STATICPERL_MODULES 483import perl from $IMPORT to $STATICPERL
385 [ $EXTRA_MODULES ] && instcpan $EXTRA_MODULES 484EOF
386 485
387 postinstall || fatal "postinstall hook failed" 486 rm -rf bin cpan lib patched perl src
487 mkdir -m 755 perl perl/bin
488 ln -s perl/bin/ bin
489 ln -s "$IMPORT" perl/bin/
388 490
491 echo "$IMPORT" > "$PERL_PREFIX/.import"
492
389 touch "$PERL_PREFIX/staticstamp.postinstall" 493 : > "$PERL_PREFIX/staticstamp.install"
390 fi 494 fi
495
496 _postinstall
497) || exit
391} 498}
392 499
393############################################################################# 500#############################################################################
394# install a module from CPAN 501# install a module from CPAN
395 502
396instcpan() { 503instcpan() {
397 [ $NOCHECK_INSTALL ] || install 504 [ $NOCHECK_INSTALL ] || install
398 505
399 verblock <<EOF 506 verblock <<EOF
400installing modules from CPAN 507installing modules from CPAN
401$@ 508$*
402EOF 509EOF
403 510
404 for mod in "$@"; do 511 MYCONFIG=
405 "$PERL_PREFIX"/bin/perl -MCPAN::MyConfig -MCPAN -e 'notest install => "'"$mod"'"' \ 512 [ -e "$PERL_PREFIX/.import" ] || MYCONFIG=-MCPAN::MyConfig
406 || fatal "$mod: unable to install from CPAN" 513
407 done 514 "$PERL_PREFIX"/bin/perl $MYCONFIG -MCPAN -e 'notest (install => $_) for @ARGV' -- "$@" | tee "$STATICPERL/instcpan.log"
515
516 if grep -q " -- NOT OK\$" "$STATICPERL/instcpan.log"; then
517 fatal "failure while installing modules from CPAN ($*)"
518 fi
408 rm -rf "$STATICPERL/build" 519 rm -f "$STATICPERL/instcpan.log"
409} 520}
410 521
411############################################################################# 522#############################################################################
412# install a module from unpacked sources 523# install a module from unpacked sources
413 524
414instsrc() { 525instsrc() {
415 [ $NOCHECK_INSTALL ] || install 526 [ $NOCHECK_INSTALL ] || install
416 527
417 verblock <<EOF 528 verblock <<EOF
418installing modules from source 529installing modules from source
419$@ 530$*
420EOF 531EOF
421 532
422 for mod in "$@"; do 533 for mod in "$@"; do
423 echo 534 echo
424 echo $mod 535 echo $mod
462catmkbundle() { 573catmkbundle() {
463 { 574 {
464 read dummy 575 read dummy
465 echo "#!$PERL_PREFIX/bin/perl" 576 echo "#!$PERL_PREFIX/bin/perl"
466 cat 577 cat
467 } <<'MKBUNDLE' 578 } <<'end_of_mkbundle'
468#CAT mkbundle 579#CAT mkbundle
469MKBUNDLE 580end_of_mkbundle
470} 581}
471 582
472bundle() { 583bundle() {
473 MKBUNDLE="${MKBUNDLE:=$PERL_PREFIX/bin/SP-mkbundle}" 584 MKBUNDLE="${MKBUNDLE:=$PERL_PREFIX/bin/SP-mkbundle}"
474 catmkbundle >"$MKBUNDLE~" || fatal "$MKBUNDLE~: cannot create" 585 catmkbundle >"$MKBUNDLE~" || fatal "$MKBUNDLE~: cannot create"
486 command="${1#--}"; shift 597 command="${1#--}"; shift
487 case "$command" in 598 case "$command" in
488 version ) 599 version )
489 echo "staticperl version $VERSION" 600 echo "staticperl version $VERSION"
490 ;; 601 ;;
491 fetch | configure | build | install | clean | realclean | distclean) 602 fetch | configure | build | install | clean | realclean | distclean )
492 ( "$command" ) || exit 603 ( "$command" ) || exit
604 ;;
605 import )
606 ( import "$1" ) || exit
607 shift
493 ;; 608 ;;
494 instsrc ) 609 instsrc )
495 ( instsrc "$@" ) || exit 610 ( instsrc "$@" ) || exit
496 exit 611 exit
497 ;; 612 ;;
504 exec "$PERL_PREFIX/bin/perl" "$@" 619 exec "$PERL_PREFIX/bin/perl" "$@"
505 exit 620 exit
506 ;; 621 ;;
507 cpan ) 622 cpan )
508 ( install ) || exit 623 ( install ) || exit
624 PERL="$PERL_PREFIX/bin/perl"
625 export PERL
509 exec "$PERL_PREFIX/bin/cpan" "$@" 626 exec "$PERL_PREFIX/bin/cpan" "$@"
510 exit 627 exit
511 ;; 628 ;;
512 mkbundle ) 629 mkbundle )
513 ( install ) || exit 630 ( install ) || exit

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines