From afaab47b2a8dd3f2c05e29a3bab23318b29a81ba Mon Sep 17 00:00:00 2001 From: thomas Date: Tue, 12 Feb 2019 14:06:56 +0100 Subject: [PATCH] perl-5.18.2: Vintage build, but with threads Might be useful if our other versions are too modern. Also this one was build with thread support enabled. --- perl-5.18.2-0.build.sh | 592 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 592 insertions(+) create mode 100755 perl-5.18.2-0.build.sh diff --git a/perl-5.18.2-0.build.sh b/perl-5.18.2-0.build.sh new file mode 100755 index 0000000..d6207c9 --- /dev/null +++ b/perl-5.18.2-0.build.sh @@ -0,0 +1,592 @@ +#! /bin/sh +set -xe + +# COOKIE=$(mcookie); grep -v V_GREP_ME $0 > /dev/shm/runme-$COOKIE.sh ; sleep 1; exec bash /dev/shm/runme-$COOKIE.sh + +PKG=perl +VERSION=5.18.2 +BUILD=0 + +PREFIX=/pkg/$PKG-$VERSION-$BUILD +if [ -n "$TESTING" ]; then PREFIX=/dev/shm/$PKG-$VERSION-$BUILD ; fi + +if false; 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 + +PATH=/bin:/usr/bin:/usr/sbin:/usr/local/package/bin:/usr/local/bin + +mkdir -p $PREFIX +cat >$PREFIX/profile <<-EOF + PATH=$PREFIX/bin:\$PATH + LD_LIBRARY_PATH=$PREFIX/lib\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} + if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi +EOF +. $PREFIX/profile + +# Some cpan mopdule tests fail when build directory is on +# nfs, because they try to remove directories with unlinked +# but opened files in it. +# Additionally we want a clean envirnoment and a local cpan scratch +# +HOME=/dev/shm/$PKG-$VERSION-$BUILD.build.home.tmp +mkdir -p $HOME + +exec &2 + exit 1 +fi + +function plaininstall() { + local dir=$1 + local tar=$2 + local url=$3 + local flags=$4 + ( + cd $PREFIX/build + test -e $tar || wget $url + test -d $dir || tar xvf $tar + cd $dir + ./configure --prefix=$PREFIX $flags || ./config --prefix=$PREFIX $flags + make -j $(nproc) + make install + ) +} + +# 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 + +mkdir -p $PREFIX/build +cd $PREFIX/build + +# Net::SSLeay-1.85 stumbles with openssl-1.1.* +# so install the previous openssl release in the package. +# an onther option would have been the current devel version +# https://cpan.metacpan.org/authors/id/R/RA/RADIATOR/Net-SSLeay-1.86_07.tar.gz +# but I have no clue how close this one is to a stable module. +plaininstall \ + openssl-1.0.2q \ + openssl-1.0.2q.tar.gz \ + https://www.openssl.org/source/openssl-1.0.2q.tar.gz \ + "--openssldir=$PREFIX/share shared" +rm $PREFIX/share/man/man3/* # ~ 4000 pages that no one will read + +# 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 + +# 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 + +# and from the same thread, fix a h2ph error +patch --read-only=ignore --verbose -p1 < /src/mariux/patches/0001-h2ph-correct-handling-of-hex-constants-for-the-pream.patch + +# -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 \ + -Duseithreads \ + -Duselongdouble \ + -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 +cpanload(); + CPAN::Shell->o('conf','recommends_policy',0); + CPAN::Shell->o('conf','commit'); +_EOF_ + +cpan YAML # avoid "'YAML' not installed, will not store persistent state" messages +OPENSSL_PREFIX=$PREFIX cpan Net::SSLeay + +cpan -u # now update everything we already have, do this after the initial install of Net::SSLeay (otherwise cpan will go for it...) + +# 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 + +# Bug in HTTP-Message-6.17.tar.gz: +# +# https://github.com/libwww-perl/HTTP-Message/issues/107 +# https://github.com/libwww-perl/HTTP-Message/pull/108 +# Until fixed use 6.16 +# +cpan O/OA/OALDERS/HTTP-Message-6.16.tar.gz + +# 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 + +# 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 +cpan BerkeleyDB +cpan Bit::Vector +cpan CGI +cpan CGI::Fast +cpan CPAN::Admin +cpan CPANPLUS +cpan -T Cache::Memcached # test fails with ver. 1.30 +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 +cpan DBD::SQLite +cpan DBD::mysql +cpan DBI +cpan File::Flock # required by Daemon::Generic +cpan Daemon::Generic +cpan Data::Grove +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::ColorNames::Mozilla +cpan Graphics::ColorNames::IE +cpan Graphics::ColorNames::SVG +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 +cpan JSON +cpan JSON::PP::Compat5006 +# Wants Plack, the other moose-alike monster! (s.a.) +# PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Class::Accessor::Lite # required by JSON::RPC +# cpan JSON::RPC +cpan JSON::XS +cpan LWP +cpan LWP::Protocol::https # replaces Crypt::SSL +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 # doesn't build and is obsolete +# cpan Net::SSLeay # the SSLeay-stuff is done at the very beginning (s.a.) +cpan Net::Server +cpan NetAddr::IP +cpan OLE::Storage_Lite +cpan Object::Accessor +cpan Object::Realize::Later +cpan PDF::API2 +# cpan PDL # fails in install: "can't write to symdb", weird. +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 +# Plack - Perl Superglue for Web frameworks and Web Servers (PSGI toolkit) (Holy Moses, does anybody use this) +# cpan Plack # Fails, since this is a vintage build, skip this showstopper too. +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 Tie::Watch +cpan Time::Date +cpan Time::Period +cpan -T Tk +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 Apache::SOAP +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 # don't let PDL creep in again (s.a.) +( + 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 . +) + +# the recent Net-SNMP from sourceforge is dropped from this package + +# 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 +# Devel::IPerl - Perl language kernel for Jupyter, pulls also moose, takes ages to build -- nope, *NOT* in this package +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 + +# helpdesk Evgeny Muzychenko 01/10/19 +# see https://bionanogenomics.com/support-page/bionano-solve/ +# remaining dependencies + +cpan Config::Simple +cpan DateTime::Format::Human::Duration + +exit