Commit f0ea7d23 authored by Mike Hibler's avatar Mike Hibler

Found a patch that will make the SelfLoader work with perl 5.10.1.

Repeating myself since not everything got committed last time...

In the lastest version of SelfLoader they fixed the taint problem.  It is
literally one line of code (plus updating version string) so I just made
a patch.  Also, fixup boss/ops-install to apply the patch and change the
 default to use the SelfLoader again.
parent b6d592fd
......@@ -1592,7 +1592,7 @@ EXP_VIS_SUPPORT=0
NOSTACKMIB=0
NOSHAREDFS=0
NFSRACY=1
SELFLOADER_DATA=""
SELFLOADER_DATA="__DATA__"
#
# XXX You really don't want to change these!
......@@ -2222,17 +2222,17 @@ for ac_hdr in ulxmlrpcpp/ulxr_config.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2225: checking for $ac_hdr" >&5
echo "configure:2226: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2230 "configure"
#line 2231 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
......@@ -2271,17 +2271,17 @@ for ac_hdr in linux/videodev.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2274: checking for $ac_hdr" >&5
echo "configure:2275: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2279 "configure"
#line 2280 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
......@@ -2314,7 +2314,7 @@ done
# Extract the first word of "gtk-config", so it can be a program name with args.
set dummy gtk-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2317: checking for $ac_word" >&5
echo "configure:2318: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GTK_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -2371,7 +2371,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
echo "configure:2374: checking how to run the C++ preprocessor" >&5
echo "configure:2375: checking how to run the C++ preprocessor" >&5
if test -z "$CXXCPP"; then
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
......@@ -2384,12 +2384,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
#line 2387 "configure"
#line 2388 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
......@@ -2415,17 +2415,17 @@ echo "$ac_t""$CXXCPP" 1>&6
ac_safe=`echo "xercesc/dom/DOM.hpp" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for xercesc/dom/DOM.hpp""... $ac_c" 1>&6
echo "configure:2418: checking for xercesc/dom/DOM.hpp" >&5
echo "configure:2419: checking for xercesc/dom/DOM.hpp" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2423 "configure"
#line 2424 "configure"
#include "confdefs.h"
#include <xercesc/dom/DOM.hpp>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
......@@ -2489,7 +2489,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:2492: checking for a BSD compatible install" >&5
echo "configure:2493: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
......@@ -2550,7 +2550,7 @@ esac
# Extract the first word of "rsync", so it can be a program name with args.
set dummy rsync; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2553: checking for $ac_word" >&5
echo "configure:2554: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RSYNC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -2621,14 +2621,16 @@ outfiles="$outfiles Makeconf GNUmakefile \
ssl/GNUmakefile ssl/mksig ssl/usercert.cnf \
capture/GNUmakefile \
db/GNUmakefile \
db/Experiment.pm db/Group.pm db/Interface.pm db/Node.pm \
db/NodeType.pm db/Project.pm db/User.pm db/Image.pm db/OSinfo.pm \
db/EmulabConstants.pm db/EmulabFeatures.pm db/Experiment.pm \
db/Firewall.pm db/Group.pm db/Image.pm db/Interface.pm \
db/Lan.pm db/Logfile.pm db/Node.pm db/NodeType.pm db/OSinfo.pm \
db/Project.pm db/User.pm db/VirtExperiment.pm \
db/nalloc db/nfree db/if2port db/backup \
db/webcontrol db/node_status db/genelists db/genelists.proxy \
db/dumperrorlog.proxy \
db/setsitevar db/newwanode db/audit db/changeuid db/changepid \
db/libdb.pm db/libtbdb.pm db/inuse db/avail db/nodeip db/showgraph \
db/emdb.pm db/emdbi.pm \
db/emdb.pm db/emdbi.pm db/emutil.pm \
db/dhcpd_makeconf db/nodelog db/unixgroups \
db/dbcheck db/interswitch db/dbboot db/schemacheck \
db/sitevarscheck db/dbfillcheck db/libadminctrl.pm \
......
#
# EMULAB-COPYRIGHT
# Copyright (c) 2000-2010 University of Utah and the Flux Group.
# Copyright (c) 2000-2011 University of Utah and the Flux Group.
# All rights reserved.
#
AC_PREREQ(2.13)
......@@ -311,7 +311,7 @@ EXP_VIS_SUPPORT=0
NOSTACKMIB=0
NOSHAREDFS=0
NFSRACY=1
SELFLOADER_DATA=""
SELFLOADER_DATA="__DATA__"
#
# XXX You really don't want to change these!
......@@ -857,14 +857,16 @@ outfiles="$outfiles Makeconf GNUmakefile \
ssl/GNUmakefile ssl/mksig ssl/usercert.cnf \
capture/GNUmakefile \
db/GNUmakefile \
db/Experiment.pm db/Group.pm db/Interface.pm db/Node.pm \
db/NodeType.pm db/Project.pm db/User.pm db/Image.pm db/OSinfo.pm \
db/EmulabConstants.pm db/EmulabFeatures.pm db/Experiment.pm \
db/Firewall.pm db/Group.pm db/Image.pm db/Interface.pm \
db/Lan.pm db/Logfile.pm db/Node.pm db/NodeType.pm db/OSinfo.pm \
db/Project.pm db/User.pm db/VirtExperiment.pm \
db/nalloc db/nfree db/if2port db/backup \
db/webcontrol db/node_status db/genelists db/genelists.proxy \
db/dumperrorlog.proxy \
db/setsitevar db/newwanode db/audit db/changeuid db/changepid \
db/libdb.pm db/libtbdb.pm db/inuse db/avail db/nodeip db/showgraph \
db/emdb.pm db/emdbi.pm \
db/emdb.pm db/emdbi.pm db/emutil.pm \
db/dhcpd_makeconf db/nodelog db/unixgroups \
db/dbcheck db/interswitch db/dbboot db/schemacheck \
db/sitevarscheck db/dbfillcheck db/libadminctrl.pm \
......
......@@ -234,14 +234,15 @@ NOSHAREDFS=0
NFSRACY=1
#
# Set this if you are running Perl 5.8.
# Set this if you are running:
# - Perl 5.8
# - Perl 5.10 with SelfLoader version 1.18 or greater
# - Pefl 5.12 or beyond
# As of Jan 2011, this should include all Emulab installs (we apply a patch
# to Perl 5.10.1 to update the SelfLoader, see patches/SelfLoader.patch).
# This enables serious runtime performance improvements.
#
# XXX Unfortunately, it triggers a taint-check problem in perl 5.10 so
# we have to leave it off by default (since newer installs of Emulab use
# Perl 5.10). Supposedly this is fixed in 5.12; we will see when we get there.
#
#SELFLOADER_DATA="__DATA__"
SELFLOADER_DATA="__DATA__"
#
# Virtual node network configuration (if you don't want virtual nodes,
......
......@@ -241,14 +241,15 @@ NOSHAREDFS=0
NFSRACY=1
#
# Set this if you are running Perl 5.8.
# Set this if you are running:
# - Perl 5.8
# - Perl 5.10 with SelfLoader version 1.18 or greater
# - Pefl 5.12 or beyond
# As of Jan 2011, this should include all Emulab installs (we apply a patch
# to Perl 5.10.1 to update the SelfLoader, see patches/SelfLoader.patch).
# This enables serious runtime performance improvements.
#
# XXX Unfortunately, it triggers a taint-check problem in perl 5.10 so
# we have to leave it off by default (since newer installs of Emulab use
# Perl 5.10). Supposedly this is fixed in 5.12; we will see when we get there.
#
#SELFLOADER_DATA="__DATA__"
SELFLOADER_DATA="__DATA__"
#
# Virtual node network configuration (if you don't want virtual nodes,
......
......@@ -2,7 +2,7 @@
#
# EMULAB-COPYRIGHT
# Copyright (c) 2003-2010 University of Utah and the Flux Group.
# Copyright (c) 2003-2010 , 2011University of Utah and the Flux Group.
# All rights reserved.
#
......@@ -121,6 +121,7 @@ my $STL_PATCH = "$TOP_SRCDIR/patches/g++.patch";
my $M2CRYPTO_PATCH = "$TOP_SRCDIR/patches/m2crypto.patch";
my $MYSQL_PM_PATCH = "$TOP_SRCDIR/patches/Mysql.pm.patch";
my $PHP4_PATCH = "$TOP_SRCDIR/patches/php4-Makefile.patch";
my $SELFLOAD_PATCH = "$TOP_SRCDIR/patches/SelfLoader.patch";
my $INIT_PRIVKEY = "$TOP_SRCDIR/install/identity";
my $SSH_CONFIG = "/etc/ssh/ssh_config";
......@@ -719,6 +720,11 @@ Phase "patches", "Applying patches", sub {
}
ExecQuietFatal("$PATCH -d $dir -f -l -i $patchfile");
};
Phase "perlselfloaderpatch", "Fixing perl self-loader", sub {
my $perldir = "/usr/local/lib/perl5/5.10.1";
DoneIfDoesntExist("$perldir/SelfLoader.pm");
ExecQuietFatal("$PATCH -d $perldir -i $SELFLOAD_PATCH");
};
};
Phase "cracklib", "Installing cracklib", sub {
......
......@@ -2,7 +2,7 @@
#
# EMULAB-COPYRIGHT
# Copyright (c) 2003-2010 University of Utah and the Flux Group.
# Copyright (c) 2003-2011 University of Utah and the Flux Group.
# All rights reserved.
#
......@@ -282,6 +282,7 @@ if ($SCRATCHDIR) {
#
my $M2CRYPTO_PATCH = "$TOP_SRCDIR/patches/m2crypto.patch";
my $MAILMAN_PATCH = "$TOP_SRCDIR/patches/mailman.patch";
my $SELFLOAD_PATCH = "$TOP_SRCDIR/patches/SelfLoader.patch";
my $IDENTPUB = "$TOP_SRCDIR/install/identity.pub";
#
......@@ -638,6 +639,11 @@ Phase "patches", "Applying patches", sub {
ExecQuietFatal("$PATCH -f -l -p0 -i $patchfile");
};
}
Phase "perlselfloaderpatch", "Fixing perl self-loader", sub {
my $perldir = "/usr/local/lib/perl5/5.10.1";
DoneIfDoesntExist("$perldir/SelfLoader.pm");
ExecQuietFatal("$PATCH -d $perldir -i $SELFLOAD_PATCH");
};
if ($MAILMANSUPPORT) {
Phase "mailmanpatch", "Patching mailman", sub {
my $patchfile = $MAILMAN_PATCH;
......
#!/usr/bin/perl -w
#
# EMULAB-COPYRIGHT
# Copyright (c) 2004-2010 University of Utah and the Flux Group.
# Copyright (c) 2004-2011 University of Utah and the Flux Group.
# All rights reserved.
#
# XXX I hardwire IPs into generated /etc/rc.conf and /etc/rc.resolv.
......@@ -2121,13 +2121,10 @@ sub CreateDefsFile($)
};
/^SELFLOADER_DATA$/ && do {
#
# XXX we know that the emulab-*-3.x package sets include
# perl 5.10 which has a bug with taint checking which in
# turn is triggered by the SelfLoader we use. So turn
# it off when perl 5.10 is used. Otherwise don't set
# the variable at all so it will default correctly.
# Use the SelfLoader in perl 5.8 or beyond (though note
# that 5.10 requires a patch that we make).
#
if ($emulabconfig{BOSS_PKG} =~ /^emulab-boss-3/) {
if ($FBSD_VERSION < 6) {
print OUTDEFS "SELFLOADER_DATA=\"\"\n";
}
last SWITCH;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment