--- App-Staticperl/staticperl.sh 2011/05/01 07:56:26 1.40 +++ App-Staticperl/staticperl.sh 2011/07/09 18:26:27 1.48 @@ -1,11 +1,12 @@ #!/bin/sh ############################################################################# -# configuration to fill in +# configuration to fill in (or to replace in your .staticperlrc) STATICPERL=~/.staticperl CPAN=http://mirror.netcologne.de/cpan # which mirror to use EMAIL="read the documentation " +DLCACHE= # perl build variables MAKE=make @@ -39,8 +40,8 @@ PERL_MM_USE_DEFAULT=1 PERL_MM_OPT="MAN1PODS= MAN3PODS=" #CORO_INTERFACE=p # needed without nptl on x86, due to bugs in linuxthreads - very slow -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' -export PERL_MM_USE_DEFAULT PERL_MM_OPT CORO_INTERFACE EV_EXTRA_DEFS +#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' +export PERL_MM_USE_DEFAULT PERL_MM_OPT # which extra modules to install by default from CPAN that are # required by mkbundle @@ -80,7 +81,7 @@ # set version in a way that Makefile.PL can extract VERSION=VERSION; eval \ -$VERSION="1.21" +$VERSION="1.31" BZ2=bz2 BZIP2=bzip2 @@ -133,7 +134,7 @@ # download/configure/compile/install perl clean() { - rm -rf "$STATICPERL/src/perl-$PERL_VERSION" + rm -rf "$STATICPERL/src" } realclean() { @@ -149,23 +150,36 @@ rcd src if ! [ -d "perl-$PERL_VERSION" ]; then - if ! [ -e "perl-$PERL_VERSION.tar.$BZ2" ]; then + PERLTAR=perl-$PERL_VERSION.tar.$BZ2 - URL="$CPAN/src/5.0/perl-$PERL_VERSION.tar.$BZ2" + if ! [ -e $PERLTAR ]; then + URL="$CPAN/src/5.0/$PERLTAR" verblock <perl-$PERL_VERSION.tar.$BZ2~ "$URL" \ - || wget -O perl-$PERL_VERSION.tar.$BZ2~ "$URL" \ + rm -f $PERLTAR~ # just to be on the safe side + { [ "$DLCACHE" ] && cp "$DLCACHE"/$PERLTAR $PERLTAR~ >/dev/null 2>&1; } \ + || wget -O $PERLTAR~ "$URL" \ + || curl -f >$PERLTAR~ "$URL" \ || fatal "$URL: unable to download" - rm -f perl-$PERL_VERSION.tar.$BZ2 - mv perl-$PERL_VERSION.tar.$BZ2~ perl-$PERL_VERSION.tar.$BZ2 + rm -f $PERLTAR + mv $PERLTAR~ $PERLTAR + if [ "$DLCACHE" ]; then + mkdir -p "$DLCACHE" + cp $PERLTAR "$DLCACHE"/$PERLTAR~ && \ + mv "$DLCACHE"/$PERLTAR~ "$DLCACHE"/$PERLTAR + fi fi verblock < staticstamp.configure } write_shellscript() { @@ -318,6 +332,18 @@ postbuild || fatal "postbuild hook failed" } +_postinstall() { + if ! [ -e "$PERL_PREFIX/staticstamp.postinstall" ]; then + NOCHECK_INSTALL=+ + instcpan $STATICPERL_MODULES + [ $EXTRA_MODULES ] && instcpan $EXTRA_MODULES + + postinstall || fatal "postinstall hook failed" + + : > "$PERL_PREFIX/staticstamp.postinstall" + fi +} + install() { if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then build @@ -373,18 +399,31 @@ CPAN::Shell->o (conf => q); ' || fatal "error while initialising CPAN" - touch "$PERL_PREFIX/staticstamp.install" + : > "$PERL_PREFIX/staticstamp.install" fi - if ! [ -e "$PERL_PREFIX/staticstamp.postinstall" ]; then - NOCHECK_INSTALL=+ - instcpan $STATICPERL_MODULES - [ $EXTRA_MODULES ] && instcpan $EXTRA_MODULES + _postinstall +} - postinstall || fatal "postinstall hook failed" +import() { + IMPORT="$1" + + rcd "$STATICPERL" + + if ! [ -e "$PERL_PREFIX/staticstamp.install" ]; then + verblock < "$PERL_PREFIX/staticstamp.install" fi + + _postinstall } ############################################################################# @@ -398,11 +437,13 @@ $@ EOF - for mod in "$@"; do - "$PERL_PREFIX"/bin/perl -MCPAN::MyConfig -MCPAN -e 'notest install => "'"$mod"'"' \ - || fatal "$mod: unable to install from CPAN" - done - rm -rf "$STATICPERL/build" + #"$PERL_PREFIX"/bin/perl -MCPAN::MyConfig -MCPAN -e 'notest install $_ for @ARGV' -- "$@" | tee "$STATICPERL/instcpan.log" + "$PERL_PREFIX"/bin/perl -MCPAN -e 'notest install $_ for @ARGV' -- "$@" | tee "$STATICPERL/instcpan.log" + + if grep -q " -- NOT OK\$" "$STATICPERL/instcpan.log"; then + fatal "failure while installing modules from CPAN ($@)" + fi + rm -f "$STATICPERL/instcpan.log" } ############################################################################# @@ -485,9 +526,13 @@ version ) echo "staticperl version $VERSION" ;; - fetch | configure | build | install | clean | realclean | distclean) + fetch | configure | build | install | clean | realclean | distclean ) ( "$command" ) || exit ;; + import ) + ( import "$1" ) || exit + shift + ;; instsrc ) ( instsrc "$@" ) || exit exit @@ -503,6 +548,8 @@ ;; cpan ) ( install ) || exit + PERL="$PERL_PREFIX/bin/perl" + export PERL exec "$PERL_PREFIX/bin/cpan" "$@" exit ;;