Skip to content

Commit

Permalink
system/perl: Create 5.28.1 from 5.24.1
Browse files Browse the repository at this point in the history
Create build file with

    cp perl-5.24.1-1.build.sh perl-5.28.1-0.build.sh
  • Loading branch information
donald committed Jan 31, 2019
1 parent 9182693 commit 4903e5b
Showing 1 changed file with 162 additions and 0 deletions.
162 changes: 162 additions & 0 deletions system/perl-5.28.1-0.build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
#! /bin/sh
set -xe

# to build system perl:
# umask 022
# sudo mkdir -p /usr/local/system/perl-5.24.1-1
# sudo chown build:build /usr/local/system/perl-5.24.1-1
# sudo -u build ./perl-5.24.1-1.build.sh
# sudo chown -R bin:bin /usr/local/system/perl-5.24.1-1

PKG=perl
VERSION=5.24.1
BUILD=1
PREFIX=/usr/local/system/$PKG-$VERSION-$BUILD

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

export MAKEFLAGS="-j $(nproc)"

mkdir -p $HOME/build
cd $HOME/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)

# 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


# clusterd...
(
cd $HOME/build
test -e Donald-1.04.tar.gz || cp /home/buczek/cluster/Donald/Donald-1.04.tar.gz .
test -d Donald-1.04 || tar xf Donald-1.04.tar.gz
cd Donald-1.04
cpan .
)

# arplisten...
(
cd $HOME/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 .
)

# pmirror
cpan File::FnMatch

# nachtwaechter , ...
cpan DBI
cpan DBD::SQLite
cpan Mail::Internet
cpan LWP

# 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 $HOME/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
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 $(nproc)
make install
)

# nachtwaechter/mxq cgi (todo: should not be root)
cpan CGI
cpan DBD::mysql

exit

0 comments on commit 4903e5b

Please sign in to comment.