Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 614 lines (561 sloc) 17.3 KB
#! /bin/bash
PKG=perl
VERSION=5.12.1
BUILD=0
PREFIX=/pkg/$PKG-$VERSION-$BUILD
if [ -n "$TESTING" ]; then PREFIX=/dev/shm/$PKG-$VERSION-$BUILD ; fi
set -xe
umask 022
BUILD_TMPDIR=/dev/shm/$PKG-$VERSION-$BUILD.build.tmp
test -d $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR
mkdir -p $BUILD_TMPDIR/home
export TMPDIR=$BUILD_TMPDIR
export HOME=$BUILD_TMPDIR/home
exec </dev/null
if [ -n "$REMOVE_BUILD_RELICTS" -a -d "$PREFIX" ]; then
# force complete rebuild, but keep downloads
cd $PREFIX
# sanity check before we go berserk
test -e build/perl-$VERSION.tar.gz || exit 1
find . -maxdepth 1 -not -name . -not -name build -exec rm -rf {} \;
find build -maxdepth 1 -not -name build -not -name "*.tar*" -exec rm -rf {} \;
fi
mkdir -p $PREFIX
cat >$PREFIX/profile <<-EOF
PATH=$PREFIX/bin:\$PATH
if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi
EOF
. $PREFIX/profile
# Tk test needs display
#
if [ -z "$DISPLAY" ]; then
echo "DISPLAY not set. Required for Tk tests." >&2
exit 1
fi
# If you hit errors and want to rerun from where you failed,
# use "if false","fi" to avoid rebuilding everything before
# the error.
#
# A good point to place the "if false" is here.
#
# Just uncomment and move the "fi" line to where
# you want to restart.
#
#if false; then ######################################################### DEBUG
#fi ######################################################### DEBUG
export MAKEFLAGS="-j $(nproc)"
BUILDDIR=$PREFIX/build
mkdir -p $BUILDDIR
cd $BUILDDIR
# The problem with a git checkout is, that the perl build system does many things
# differentily when is sees .git - e.g. run additional developer checks.
#test -d perl || git clone https://perl5.git.perl.org/perl.git
#cd perl
#git checkout "v$VERSION" ; git reset --hard
test -e perl-$VERSION.tar.gz || wget http://www.cpan.org/src/5.0/perl-$VERSION.tar.gz
test -d perl-$VERSION || tar xf perl-$VERSION.tar.gz
cd perl-$VERSION
# Remove ext/Time-Local/t/Local.t test.
#
# probably some Y2K required change in glibc localtime() makes this fail:
# ok 1 - timelocal second for 1970 1 2 0 0 0
# ok 2 - timelocal minute for 1970 1 2 0 0 0
# ok 3 - timelocal hour for 1970 1 2 0 0 0
# ok 4 - timelocal day for 1970 1 2 0 0 0
# ok 5 - timelocal month for 1970 1 2 0 0 0
# not ok 6 - timelocal year for 1970 1 2 0 0 0
# Failed test 'timelocal year for 1970 1 2 0 0 0'
# at ext/Time-Local/t/Local.t line 97.
# got: '170'
# expected: '70'
#
sed -i '/Local\.t/d' MANIFEST
# Note: make test below would fail with:
# ext/Errno/t/Errno ........... FAILED--Further testing stopped: No errno's are exported
# Cure:
# https://rt.perl.org/Public/Bug/Display.html?id=123784
# ... caused by a change in GCC 5.0's preprocesor
# ... Simple work-around is to call the preprocessor with -P option
sed -i -e '/"$cppstdin $Config/ s/cppstdin/cppstdin -P/' ext/Errno/Errno_pm.PL
( . /pkg/gcc-4.5.1-0/profile
# -d : use defaults for all answers.
# -e : go on without questioning past the production of config.sh.
# -s : silent mode, only echoes questions and essential information.
# -Dusedevel : allow devel (uneven minor) versions. Prevents bin/perl->bin/perlVERSION symlink
# -Duseshrplib : build shared perl library (required when perl is to be included in a shared library)
# -DEBUGGING : add debugging code (perl -D)
#
./Configure -des -Duseshrplib -Dusethreads -Dprefix=$PREFIX
make -j$(nproc)
# Note: If you get a failure in porting/utils test here, it might be, that we are
# running cpan somewhere else which leads to an extra and unexpected "\n" being
# emitted by CPAN.pm BEGIN and a failure of the test (which does "perl -c CPAN.pm")
#
make test
make install
)
cd $PREFIX;
test -e $HOME/.cpan/CPAN/MyConfig.pm && rm $HOME/.cpan/CPAN/MyConfig.pm
cpan</dev/null
# Too many modules "recommend" stupid things like mod_perl
# do not auto install recommended modules
perl -MCPAN <<'_EOF_'
CPAN::HandleConfig->load();
CPAN::Shell->o('conf','recommends_policy',0);
CPAN::Shell->o('conf','commit');
_EOF_
cpan -u # update everything we already have
# After the update we have a new ExtUtils::MakeMaker.
# Patch this version to avoid stomping on a perl bug
# We've got this when building net-snmp (down below).
# Errors:
# "panic: attempt to copy freed scalar"
# "Bizarre copy of HASH in list assignment#
# this is from perl bug:
# https://rt.perl.org/Public/Bug/Display.html?id=77706
# triggered by ExtUtils::MakeMaker.
# This patch prevents this
#
(cd lib/site_perl/$VERSION/ExtUtils; patch -N -p1 < /src/mariux/patches/MakeMaker-0001-MakeMaker.pm-Avoid-triggering-perl-bug.patch) || true
# These two with -T (without test), because the tests are interactive and access /dev/tty
# Do these first, because they are required by Bundle::CPAN
#
cpan -T Term::ReadLine::Perl
cpan -T Term::ReadLine::Gnu
# Now the rest of Bundle::CPAN first, so that we use latest code for the following
# installations
#
cpan Bundle::CPAN
# mod_perl (Apache::*, Bundle::Apache, mod_perl, modPerl_hooks) is broken.
# Usually it wants Apache httpd source to compile and keeps asking for it forever if it
# doesn't find it.
# we could install it without Access to sources
# perl -MCPAN <<'_EOF_'
# CPAN::HandleConfig->load;
# $CPAN::Config->{'makepl_arg'}='NO_HTTPD=1';
# CPAN::Shell->install('Apache');
# _EOF_
# but its broken anyway (needs a patch to compile against
# current perl) and the version 1.* branch has not been updated
# for a long time. leave it out and everything which depends on it
#cpan Bundle::Apache
# Tests for GD fail
# The seventh image in den GD.t test looks slightly
# different. Maybe small difference in TrueType font.
#
# Do it first, otherwise we are pulled by Chart::Base
#
cpan -T GD
cpan Log::Log4perl # many module tests request this.
# Now modules (from autobundle of /usr/local/ installation and manual cleanup and some deduplication)
#
cpan AE
cpan Algorithm::Diff
cpan Algorithm::DiffOld
cpan AnyEvent
cpan AppConfig
cpan Archive::Extract
cpan Archive::Zip
cpan Attribute::Params::Validate
cpan Authen::SASL
cpan B::Keywords
(
cd $PREFIX/build
# https://ftp6.gwdg.de/pub/linux/slackware/slackware-14.0/source/l/db48/db-4.8.30.tar.xz
test -e db-4.8.30.tar.xz || cp /src/mariux/md5repo/de18e52d5ec52489621cbab083858484/db-4.8.30.tar.xz .
test -d db-4.8.30 || tar xf db-4.8.30.tar.xz
cd db-4.8.30
# for unknown reason, the "docs" directory is missing in the distribution
sed -i 's/install_docs//' dist/Makefile.in
cd build_unix
CFLAGS="-O2 -fPIC" CXXFLAGS=${CFLAGS} ../dist/configure --prefix=${PREFIX} --enable-compat185 --enable-cxx --disable-test --enable-shared
make
make install
)
BERKELEYDB_INCLUDE=$PREFIX/include BERKELEYDB_LIB=$PREFIX/lib cpan BerkeleyDB
cpan Bit::Vector
cpan CGI
cpan CGI::Fast
cpan CPAN::Admin
cpan CPANPLUS
# Cache::Memcached has some strange timing tests which fail from time to time
#
cpan -T Cache::Memcached
cpan Capture::Tiny
cpan Carp::Clan
cpan Chart::Base
cpan Class::Accessor
cpan Class::Data::Inheritable
cpan Class::ISA
cpan Class::Inspector
cpan Class::Load
cpan Class::Singleton
cpan Class::Tiny
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Class::Trigger
cpan Clone
cpan Config::General
cpan Config::Tiny
cpan Crypt::OpenSSL::RSA
cpan Crypt::OpenSSL::Random
cpan Crypt::RC4
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan -T Crypt::SSLeay
cpan DBD::SQLite
cpan DBD::mysql
cpan DBI
cpan File::Flock # required by Daemon::Generic
cpan Daemon::Generic
cpan Data::ObjectDriver
cpan Data::OptList
cpan Data::Stag
cpan Date::Calendar
cpan Date::Parse
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Test::utf8 # required by Test::File::ShareDir::Dist
cpan Test::File::ShareDir::Dist # required by DateTime::Locale
cpan DateTime::Locale # required by DateTime
cpan DateTime
cpan DateTime::Locale
cpan DateTime::TimeZone
cpan Devel::CheckLib
cpan Devel::GlobalDestruction
cpan Devel::InnerPackage
cpan Devel::SelfStubber
cpan Devel::StackTrace
cpan Devel::StackTrace::AsHTML
cpan Devel::Symdump
cpan Device::SerialPort
cpan Digest::HMAC
cpan Digest::Perl::MD5
cpan Digest::SHA1
cpan Dist::CheckConflicts
cpan Email::Abstract
cpan Email::Address
cpan Email::Date::Format
cpan Email::FolderType
cpan Email::LocalDelivery
cpan Email::MIME
cpan Email::MIME::Attachment::Stripper
cpan Email::MIME::ContentType
cpan Email::MIME::Encodings
cpan Email::MessageID
cpan Email::Outlook::Message
cpan Email::Reply
cpan Email::Send
cpan Email::Simple
cpan Encode::Detect
cpan Encode::Locale
cpan Eval::LineNumbers
cpan Event
cpan Exception::Class
cpan ExtUtils::PkgConfig
cpan FCGI
cpan File::CheckTree
cpan File::Copy::Recursive
cpan -f IO::Event # for File::Flock
cpan File::Flock
cpan File::FnMatch
cpan File::HomeDir
cpan File::Listing
cpan File::Path::Expand
cpan File::Remove
cpan File::ShareDir
cpan File::Slurp
cpan File::Which
cpan Filesys::Notify::Simple
cpan Filter::Util::Exec
cpan Font::AFM
cpan Font::TTF
cpan GD::Graph
cpan GD::Graph::histogram
cpan GD::SVG
cpan GD::Text
cpan Glib
cpan Graph
cpan Graphics::ColorNames
cpan Graphics::ColorNames::HTML
cpan Graphics::ColorNames::Windows
cpan Graphics::ColorNames::Netscape
cpan Graphics::ColorObject
cpan HTML::Tree
cpan HTML::Parser
cpan HTML::Form
cpan HTML::Formatter
cpan HTML::Scrubber
cpan HTML::TableParser
cpan HTML::Tagset
cpan HTML::TreeBuilder
cpan HTTP::Body
cpan HTTP::Cookies
cpan HTTP::DAV # note: tests fail if cpan build dir is on nfs
cpan HTTP::Daemon
cpan HTTP::Date
cpan HTTP::Negotiate
cpan HTTP::Server::Simple
cpan Hash::MultiValue
cpan Hook::LexWrap
cpan IO::All
cpan IO::CaptureOutput
cpan IO::Multiplex
cpan IO::Pty
cpan IO::Socket::SSL
cpan IO::String
cpan IO::Stringy
cpan IPC::Run
cpan IPC::Run3
cpan Inline
cpan Inline::C
# HTTP::Headers::Fast t/lazy_load_for_storable.t want to verify that
# Storable is not loaded right away, but it is pulled in from Test::More
#
cpan -T HTTP::Headers::Fast; # required by JSON::RPC
cpan JSON
cpan JSON::PP::Compat5006
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Class::Accessor::Lite # required by JSON::RPC
cpan JSON::RPC
cpan JSON::XS
cpan LWP
cpan Lingua::EN::Inflect
cpan Linux::Inotify2
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Linux::USBKeyboard
cpan List::MoreUtils
cpan Log::Message
cpan Log::Log4perl
cpan MIME::Tools
cpan MRO::Compat
cpan Mail::Box
cpan Mail::Box::IMAP4
cpan Mail::Box::POP3
cpan Mail::DKIM
cpan Mail::Util
cpan Mail::IMAPClient
cpan Mail::Identity
cpan Mail::Message
cpan Mail::Transport
cpan Math::Bezier
cpan Math::Calc::Units
cpan Math::Interpolate
cpan Math::IntervalSearch
cpan Math::Random::ISAAC
cpan Math::Random::ISAAC::PP
cpan Math::Round
cpan Math::VecStat
cpan Module::Build
cpan Module::Implementation
cpan Module::Pluggable
cpan Module::Runtime
cpan Mojo
cpan Mozilla::CA
cpan Net::DNS
cpan Net::HTTP
cpan Net::IMAP::Client
cpan Net::IMAP::Simple
cpan Net::SNMP
cpan Net::SSL
cpan Net::SSLeay
cpan Net::Server
cpan NetAddr::IP
cpan OLE::Storage_Lite
cpan Object::Accessor
cpan Object::Realize::Later
cpan PDF::API2
# PDL
#
# seems to fail (sometimes) with parallel builds during install:
# can't write to symdb /dev/shm/perl-5.28.1-0/lib/site_perl/5.28.1/x86_64-linux/PDL/pdldoc.db at blib/lib/PDL/Doc.pm line 497.
# disabled parallel build
#
# Also one test fails:
# Oops, this is not a PNM fileconverter error: sh: pngtopnm: command not found
# at /dev/shm/perl-5.12.1-0.build.tmp/home/.cpan/build/PDL-2.021-0/blib/lib/PDL/IO/Pnm.pm line 79.
# PDL::IO::Pnm::rbarf("/dev/shm/perl-5.12.1-0.build.tmp/xx7fgrpX1_", "Oops, this is not a PNM file") called at /dev/shm/perl-5.12.1-0.build.tmp/home/.cpan/build/PDL-2.021-0/blib/lib/PDL/IO/Pnm.pm line 274
# PDL::rpnm("PDL", PDL=SCALAR(0x9115a0), "pngtopnm \"/dev/shm/perl-5.12.1-0.build.tmp/o1iV1Ham33/t byte"...) called at /dev/shm/perl-5.12.1-0.build.tmp/home/.cpan/build/PDL-2 .021-0/blib/lib/PDL/IO/Pnm.pm line 248
# PDL::IO::Pnm::rpnm(PDL=SCALAR(0x9115a0), "pngtopnm \"/dev/shm/perl-5.12.1-0.build.tmp/o1iV1Ham33/t byte"...) called at /dev/shm/perl-5.12.1-0.build.tmp/home/.cpan/build/PDL -2.021-0/blib/lib/PDL/IO/Pic.pm line 322
# PDL::rpic("PDL", "/dev/shm/perl-5.12.1-0.build.tmp/o1iV1Ham33/t byte_a.png") called at /dev/shm/perl-5.12.1-0.build.tmp/home/.cpan/build/PDL-2.021-0/blib/lib/PDL/IO/Pic.pm line 277
# PDL::IO::Pic::rpic("/dev/shm/perl-5.12.1-0.build.tmp/o1iV1Ham33/t byte_a.png") called at t/pic_16bit.t line 51
# # Looks like your test exited with 255 just after 2.
# t/pic_16bit.t ...................
#
# disable tests
#
MAKEFLAGS= cpan -f PDL
cpan PPITerm::UI
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan PPI::Document # required by PPIx::Regexp
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Task::Weaken # required by PPIx::Regexp
cpan PPIx::Regexp
cpan Package::Constants
cpan Package::DeprecationManager
cpan Package::Stash
cpan Package::Stash::XS
cpan Params::Util
cpan Params::Validate
cpan Parse::RecDescent
cpan PatchReader
cpan Path::FindDev
cpan Path::FindDev::Object
cpan Path::IsDev
cpan Path::Tiny
cpan Pegex
cpan Perl::Critic
cpan Perl::Tidy
cpan Plack
cpan Pod::Coverage
cpan Pod::LaTeX
cpan Pod::Plainer
cpan Pod::Spell
cpan Probe::Perl
cpan Readonly
cpan Regexp::Common
cpan Return::Value
cpan Role::Tiny
cpan Router::Simple
cpan SVG
cpan Set::IntSpan
cpan Shell
cpan Spreadsheet::ParseExcel
cpan Starlink::AST
cpan Statistics::Descriptive
cpan Statistics::Distributions
cpan Stream::Buffered
cpan String::CRC32
cpan String::Format
cpan Sub::Exporter
cpan Sub::Exporter::Progressive
cpan Sub::Install
cpan Sub::Uplevel
cpan Switch
cpan Task::Weaken
cpan Template
cpan Template::Plugin::GD
cpan Term::UI
cpan Test::Deep
cpan Test::Differences
cpan Test::Exception
cpan Test::Fatal
cpan Test::Inter
cpan Test::Most
cpan Test::NoWarnings
cpan Test::Number::Delta
cpan Test::Object
cpan Test::Output
cpan Test::Pod
cpan Test::Pod::Coverage
cpan Test::Requires
cpan Test::Script
cpan Test::SharedFork
cpan Test::SubCalls
cpan Test::TCP
cpan -f Test::Taint # test sometimes fail, because Test::More sets untainted environment variable TEST_ACTIVE
cpan Test::Warn
cpan Test::YAML
cpan Text::CSV
cpan Text::Diff
cpan Text::Format
cpan Text::Soundex
cpan TheSchwartz
cpan Tie::DBI
cpan Tie::RDBM
cpan Time::Date
cpan Time::Period
cpan Tk
cpan Tie::Watch
cpan Tree::DAG_Node
cpan Try::Tiny
cpan URI
cpan Unix::Syslog
cpan User::Identity
cpan Version::Requirements
cpan WWW::Dict::Leo::Org
cpan WWW::Mechanize
cpan WWW::RobotRules
cpan XML::DOM
cpan XML::LibXML
cpan XML::LibXSLT
cpan XML::NamespaceSupport
cpan XML::Parser
cpan XML::Parser::Lite
cpan XML::Quote
cpan XML::RegExp
cpan XML::SAX
cpan XML::SAX::Base
cpan XML::SAX::Expat
cpan XML::Simple
cpan XML::Twig
cpan XML::XPath
cpan YAML
cpan YAML::LibYAML
cpan common::sense
cpan inc::latest
cpan install
cpan local::lib
cpan Date::Manip
(
cd $PREFIX/build
test -e Donald-1.05.tar.gz || wget https://github.molgen.mpg.de/donald/Donald/archive/1.05.tar.gz -O Donald-1.05.tar.gz
test -d Donald-1.05 || tar xf Donald-1.05.tar.gz
cd Donald-1.05
cpan .
)
cpan PDL::Stats
(
cd $PREFIX/build
test -e Pcap-0.02.tar.gz || cp /home/buczek/build/Pcap/Pcap-0.02.tar.gz .
test -d Pcap-0.02 || tar xf Pcap-0.02.tar.gz
cd Pcap-0.02
cpan .
)
(
cd $PREFIX/build
test -e rrdtool-1.6.0.tar.gz || wget https://oss.oetiker.ch/rrdtool/pub/rrdtool-1.6.0.tar.gz
test -d rrdtool-1.6.0 || tar xf rrdtool-1.6.0.tar.gz
cd rrdtool-1.6.0
./configure --prefix $PREFIX
make -j $(nproc)
cd bindings/perl-shared/
cpan .
cd ../perl-piped
cpan .
)
(
cd $PREFIX/build
test -e net-snmp-5.8.tar.gz || wget https://downloads.sourceforge.net/project/net-snmp/net-snmp/5.8/net-snmp-5.8.tar.gz
test -d net-snmp-5.8 || tar xvf net-snmp-5.8.tar.gz
cd net-snmp-5.8
patch -N -p1 < /src/mariux/patches/net-snmp-0001-Fix-incompatible-definitions-of-U64-type.patch || true
./configure --prefix $PREFIX
# make -j sometimes fails "ranlib: .libs/libnetsnmpmibs.a: Malformed archive"
make
make install
)
DB_FILE_INCLUDE=$PREFIX/include DB_FILE_LIB=$PREFIX/lib cpan DB_File # for Bio::Perl
# Do bioperl last, because it doesn't declare all dependencies correctly
#
cpan Bio::Perl
# cpan -T Bio::Biblio # "ERROR 11 Unable to connect to database [medline" instead of xml file from net
cpan Bio::Coordinate
#cpan Bio::Graphics::Browser2 # GBrowse - requires Bio::DB::Sam
#cpan Bio::DB::Sam # Bio-SamTools 'Please enter the location of the bam.h and compiled libbam.a files'
cpan -f XML::DOM::XPath # test fails , install anyway for Bio::FeatureIO
cpan Bio::FeatureIO
cpan Bio::Tools::EUtilities
cpan Text::NSP # galonska 29.01.2018 -> helpdesk
cpan Excel::Writer::XLSX # klages 20.03.2018, helpdesk
# defeat "Can't locate Makefile.PL in @INC", when Build.PL is used
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Convert::Morse # serious fun, kreitler
cpan Math::Amoeba # Multidimensional Function Minimisation (oldie but goldie:), kreitler
cpan Crypt::OpenSSL::PBKDF2 # some more crypto stuff, kreitler
cpan Crypt::OpenSSL::AES
cpan Crypt::Blowfish
cpan Crypt::Blowfish_PP
cpan Crypt::CAST5
cpan Crypt::DES
cpan Crypt::TripleDES
cpan Crypt::TripleDES::CBC
cpan Crypt::IDEA
cpan Crypt::Rijndael
cpan Crypt::CBC
cpan Crypt::MCrypt
cpan OpenOffice::OODoc # The Open OpenDocument Connector
cpan Digest::MD4
cpan Data::Grove # from xml-perl. Has some dependency issues, put at end
cpan Net::SMTP::SSL # recently installed into /usr/local perl after
# exit 1 # the final stop before closing
exit