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 573 lines (529 sloc) 15.2 KB
#! /bin/sh
set -xe
PKG=perl
VERSION=5.26.1
BUILD=5
PREFIX=/pkg/$PKG-$VERSION-$BUILD
# PREFIX=/dev/shm/$PKG-$VERSION-$BUILD
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
if echo $PATH | grep -q '/home/'; then
echo 'Found home in PATH, trouble ahead, thus bailing out.'
exit 1
fi
mkdir -p $PREFIX
cat >$PREFIX/profile <<-EOF
PATH=$PREFIX/bin:\$PATH
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 </dev/null # to many cpan modules might ask something
# 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
mkdir -p $PREFIX/build
cd $PREFIX/build
# 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
# -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 -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
# 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 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 Crypt::SSLeay
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::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::Message
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
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
cpan 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 Tie::Watch
cpan Time::Date
cpan Time::Period
cpan 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
(
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 .
)
# http://net-snmp.sourceforge.net/ (Net-SNMP : SNMP.pm, NetSNMP::*)
# should match exact version of net-snmp packages
# install everything here to avoid dependency.
#
# cpan has 5.0404 of Net-SNMP so use latest version from its home.
#
# If you get 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. The patch
# /src/mariux/patches/0001-Carp.pm-continue-with-screwed-up-perl-stack.patch
# at the top of this file is there to prevent this.
#
(
cd $PREFIX/build
test -e net-snmp-5.7.3.tar.gz || wget https://downloads.sourceforge.net/project/net-snmp/net-snmp/5.7.3/net-snmp-5.7.3.tar.gz || cp /package/pkg/perl-5.26.1-3/build/net-snmp-5.7.3.tar.gz .
test -d net-snmp-5.7.3 || tar xvf net-snmp-5.7.3.tar.gz
cd net-snmp-5.7.3
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
)
# 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 Bio::Tools::Run::StandAloneBlast # several tests fail - tools not available in required version
#cpan Bio::Network::IO # tests fail (whatever)
#still missing (found by: /home/buczek/libcheck/perlcompare.pl)
#
#Alien::SVN # Alien-SVN: wants SVN install, assumed obsolete
#Apache::XMLRPC::Lite # SOAP-Lite-1.01 : obsolete
#B::Lint* # B-Lint-1.20-0 : I dont think we need this
#CGI::Apache # mod_perl - requires Apache source and asks for it endlessly
#UDDI::Lite # 17 years old junk
#XMLRPC* # XMLRPC-Lite: dont think we still need that
# Devel::IPerl -> Markdown::Pod -> Markdent
# Markdown::Pod (0.006) does not work with Markdent 0.27 or 0.28 because of this change:
# https://github.com/houseabsolute/Markdent/commit/b570af7820aa2358263b5eaf403ec96674edfe58
#
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan ZMQ::Constants # for Devel::IPerl
PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan ZMQ::LibZMQ3 # for Devel::IPerl
cpan DROLSKY/Markdent-0.26.tar.gz # required by Devel::IPerl - Markdown::Pod -> Markdent.
cpan ZMUGHAL/Devel-IPerl-0.008.tar.gz # Devel::IPerl 0.009 requires ZMUGHAL/Net-Async-ZMQ which blocks during test
#cpan Devel::IPerl
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
# exit 1 # the final stop before closing
exit