From e8252be89d90f48549c48c30ecc3dcada4cf4fc3 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Sat, 30 Mar 2019 20:54:35 +0100
Subject: [PATCH 01/15] Add perl-5.28.1

Created with

    cp perl-5.26.2-1.build.sh perl-5.28.1-0.build.sh

and fixing version and build number.
---
 perl-5.28.1-0.build.sh | 576 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 576 insertions(+)
 create mode 100755 perl-5.28.1-0.build.sh

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
new file mode 100755
index 0000000..30f1372
--- /dev/null
+++ b/perl-5.28.1-0.build.sh
@@ -0,0 +1,576 @@
+#! /bin/sh
+set -xe
+
+PKG=perl
+VERSION=5.28.1
+BUILD=0
+
+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
+
+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
+
+# 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 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::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
+
+cpan OpenOffice::OODoc    # The Open OpenDocument Connector
+
+# exit 1 # the final stop before closing
+exit

From 0a7c811680c95e741194abd4ce277f00374de67c Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Sat, 30 Mar 2019 20:56:06 +0100
Subject: [PATCH 02/15] perl-5.28: Add Digest::MD4

Add Digest::MD4 which is required to compute NTLM hash.
---
 perl-5.28.1-0.build.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 30f1372..bb895db 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -572,5 +572,7 @@ cpan Crypt::MCrypt
 
 cpan OpenOffice::OODoc    # The Open OpenDocument Connector
 
+cpan Digest::MD4
+
 # exit 1 # the final stop before closing
 exit

From 0ad66d45e6802668f545cb29730be5a5169dd7f0 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Sun, 31 Mar 2019 10:00:54 +0200
Subject: [PATCH 03/15] perl: Convert to current template

---
 perl-5.28.1-0.build.sh | 35 ++++++++++++++++++++---------------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index bb895db..b009ada 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -1,12 +1,22 @@
-#! /bin/sh
-set -xe
+#! /bin/bash
 
 PKG=perl
 VERSION=5.28.1
 BUILD=0
 
 PREFIX=/pkg/$PKG-$VERSION-$BUILD
-# PREFIX=/dev/shm/$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 false; then
 	# force complete rebuild, but keep downloads
@@ -20,19 +30,10 @@ 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
 
-# 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
@@ -52,8 +53,12 @@ fi
 #if false; then ######################################################### DEBUG
 #fi             ######################################################### DEBUG
 
-mkdir -p $PREFIX/build
-cd $PREFIX/build
+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.

From 34dd24e6268a7c86772442455c3e058df3e03dd8 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Sun, 31 Mar 2019 11:27:38 +0200
Subject: [PATCH 04/15] Use environment to request relict cleanup

---
 perl-5.28.1-0.build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index b009ada..0fb6c63 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -18,7 +18,7 @@ export HOME=$BUILD_TMPDIR/home
 
 exec </dev/null
 
-if false; then
+if [ -n "$REMOVE_BUILD_RELICTS" -a -d "$PREFIX" ]; then
 	# force complete rebuild, but keep downloads
 	cd $PREFIX
 	# sanity check before we go berserk

From 803f6f638cc09930bab650470867ee8e483d6081 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Sun, 31 Mar 2019 22:18:09 +0200
Subject: [PATCH 05/15] perl: Disable tests on Crypt::SSLeay

Tests of Crypt:SSleay hangs at

    t/local/03_use.t ....................... ok
    # OpenSSL engines dir: 'ENGINESDIR: "/usr/lib/engines-1.1"'
    t/local/04_basic.t ..................... ok
    t/local/05_passwd_cb.t ................. ok
    t/local/06_tcpecho.t ................... ok

The installer says:

    *** THIS IS NOT AN ERROR, JUST A MESSAGE FOR YOUR INFORMATION ***

    Do you really need Crypt::SSLeay?

    Starting with version 6.02 of LWP, https support was unbundled into
    LWP::Protocol::https. This module specifies as one of its prerequisites
    IO::Socket::SSL which is automatically used by LWP::UserAgent unless
    this preference is overridden separately. IO::Socket::SSL is a more
    complete implementation, and, crucially, it allows hostname
    verification. Crypt::SSLeay does not support this. At this point,
    Crypt::SSLeay is maintained to support existing software that already
    depends on it.

    However, it is possible that your software does not really depend on
    Crypt::SSLeay, only on the ability of LWP::UserAgent class to
    communicate with sites over SSL/TLS.

    If are using version LWP 6.02 or later, and therefore have installed
    LWP::Protocol::https and its dependencies, and do not explicitly use
    Net::SSL before loading LWP::UserAgent, or override the default socket
    class, you are probably using IO::Socket::SSL and do not really need
    Crypt::SSLeay.

    Before installing Crypt::SSLeay, you may want to try specifying a
    dependency on LWP::Protocol::https.

We still need this module (I think for Net::IMAP::Client) , but I don't
want to debug this unmaintained code. Disable tests for now.
---
 perl-5.28.1-0.build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 0fb6c63..ac905c1 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -194,7 +194,7 @@ cpan Config::Tiny
 cpan Crypt::OpenSSL::RSA
 cpan Crypt::OpenSSL::Random
 cpan Crypt::RC4
-PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan Crypt::SSLeay
+PERL5LIB=".${PERL5LIB:+:$PERL5LIB}" cpan -T Crypt::SSLeay
 cpan DBD::SQLite
 cpan DBD::mysql
 cpan DBI

From c8242576fc25b280c1755ad1887bd445be7136ce Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Sun, 31 Mar 2019 13:54:37 +0200
Subject: [PATCH 06/15] perl: Add modules for Graphichs::ColorObject

Graphichs::ColorObject seems to have undeclared dependencies on three
other modules. Add these.
---
 perl-5.28.1-0.build.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index ac905c1..3a05a18 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -268,6 +268,9 @@ 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

From 23ff0422ffb945883fe545671bf67f5665f4a826 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Mon, 1 Apr 2019 07:25:55 +0200
Subject: [PATCH 07/15] perl: Add Log::Log4perl

Many modules suggest to install Log::Log3perl for their tests, so do it.
---
 perl-5.28.1-0.build.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 3a05a18..9dda482 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -158,6 +158,8 @@ cpan O/OA/OALDERS/HTTP-Message-6.16.tar.gz
 #
 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

From 5c14194ccabe84882e7810c9a60123f5ca120da4 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Mon, 1 Apr 2019 08:29:37 +0200
Subject: [PATCH 08/15] perl: Disable test for HTTP::Headers::Fast

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

Disable tests.
---
 perl-5.28.1-0.build.sh | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 9dda482..0523300 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -302,6 +302,11 @@ 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

From 4c72d95856c4161961f6e1877d15bea9d803a2db Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Mon, 1 Apr 2019 12:34:14 +0200
Subject: [PATCH 09/15] perl: Remove Apache:SOAP

Apache::SOAP now seems to depend on broken mod_perl. I doubt, anybody
uses it, so remove.
---
 perl-5.28.1-0.build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 0523300..8fdbdd0 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -469,7 +469,6 @@ cpan inc::latest
 cpan install
 cpan local::lib
 
-cpan Apache::SOAP
 cpan Date::Manip
 (
 	cd $PREFIX/build
@@ -550,6 +549,7 @@ cpan Bio::Tools::EUtilities
 #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
+#Apache::SOAP   # depends on Apache
 
 
 # Devel::IPerl -> Markdown::Pod -> Markdent

From 0435157f0e77d05c1783119dd7bade6d235bbc4d Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Mon, 1 Apr 2019 12:40:02 +0200
Subject: [PATCH 10/15] perl: Remove HTTP-Message workaround

Bug is fixed now. Use latest CPAN version.
---
 perl-5.28.1-0.build.sh | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 8fdbdd0..2be0d0e 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -128,14 +128,6 @@ cpan -T Term::ReadLine::Gnu
 #
 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.

From 341c22ef987a7e8ea44efeab91041c3215f43273 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Mon, 1 Apr 2019 16:23:33 +0200
Subject: [PATCH 11/15] perl: Do not use parallel make for PDL

---
 perl-5.28.1-0.build.sh | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 2be0d0e..884e689 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -349,7 +349,12 @@ cpan OLE::Storage_Lite
 cpan Object::Accessor
 cpan Object::Realize::Later
 cpan PDF::API2
-cpan 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.
+#
+MAKEFLAGS= 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

From 4dcac0639fef0da270cdee696159ea9f805ef42b Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Mon, 1 Apr 2019 21:16:57 +0200
Subject: [PATCH 12/15] perl: Update net-snmp to version net-snmp-5.8

---
 perl-5.28.1-0.build.sh | 21 +++------------------
 1 file changed, 3 insertions(+), 18 deletions(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 884e689..1fbd324 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -496,26 +496,11 @@ cpan PDL::Stats
 	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
+	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"

From f73269c428789dbb15dcbc4ac0388b5aaa9a2e9e Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Tue, 2 Apr 2019 08:28:52 +0200
Subject: [PATCH 13/15] perl: Disable tests for memcached

---
 perl-5.28.1-0.build.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 1fbd324..2e2de32 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -170,7 +170,10 @@ cpan CGI
 cpan CGI::Fast
 cpan CPAN::Admin
 cpan CPANPLUS
-cpan Cache::Memcached
+
+# 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

From 8fe6a1a5e2cd01248c743956fb3196b6af05611f Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Tue, 2 Apr 2019 15:37:01 +0200
Subject: [PATCH 14/15] perl: Put Data::Grove to end

The module has some undeclared dependencies. Put it at the bottom of the
script.
---
 perl-5.28.1-0.build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 2e2de32..956136c 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -197,7 +197,6 @@ 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
@@ -573,6 +572,7 @@ 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
 
 # exit 1 # the final stop before closing
 exit

From 7cff30de25fdc612f62ef8df7a2dc739a50eed7f Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Wed, 3 Apr 2019 10:38:29 +0200
Subject: [PATCH 15/15] perl: Move Tie::Watch behind Tk.

Tie::Watch depends on Tk. Move it behind Tk, so that Tk is not pulled
implicitly. This makes debugging a little bit easier.
---
 perl-5.28.1-0.build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/perl-5.28.1-0.build.sh b/perl-5.28.1-0.build.sh
index 956136c..d9e966e 100755
--- a/perl-5.28.1-0.build.sh
+++ b/perl-5.28.1-0.build.sh
@@ -433,10 +433,10 @@ cpan Text::Soundex
 cpan TheSchwartz
 cpan Tie::DBI
 cpan Tie::RDBM
-cpan Tie::Watch
 cpan Time::Date
 cpan Time::Period
 cpan Tk
+cpan Tie::Watch
 cpan Tree::DAG_Node
 cpan Try::Tiny
 cpan URI