Note: This web site is only kept up to date for OSG Software 1.2 (VDT 2.0.0). If you are looking for information for the most recent release, the RPM-based OSG Software 3.0, please see the OSG documentation web site

How the VDT builds and installs perl modules

The problem: we want to install pre-built perl modules without installing perl as well.

Solution: NMI. First we identified all non-binary-compatable perl versions/flavors that will be installed on our supported architectures. Our build compiles all of those and then builds each module against each perl intsall. On the install we have a setup script that sets PERL5LIB to use the appropriate libraries.

Adding/Upgrading perl modules

While perl modules are split into multiple packages (Perl-Modules, Perl-Modules-SSL) they are all built in Perl-Modules. Take a look at the cmdfile for the build:
description = VDT perl modules
run_type = build
project = VDT
project_release = !!VDT_VERSION!!
component = Perl modules
component_version = 6

inputs = glue.ftp, globus.nmi, perl-5.6.0.ftp, perl-5.8.0.ftp, perl-5.8.1.ftp, 
date-manip.ftp, mime-base64.ftp, uri.ftp, digest-md5.ftp, libnet.ftp, xml-regexp.ftp, 
xml-namespacesupport.ftp, file-temp.ftp, xml-sax.ftp, xml-dom.ftp, libwww-perl.ftp, 
convert-asn1.ftp, perl-ldap.ftp, soap-lite.ftp, crypt-ssleay.ftp, io-socket-ssl.ftp, 
net-ssleay.ftp, dbi.ftp, test-simple.ftp, term-readkey.ftp, compress-zlib.ftp,

vdt_declare_tasks = unpack, perl-5.6.0, perl-5.8.0, perl-5.8.0-threads, perl-5.8.1, 
perl-5.8.1-threads, Test-Simple-0.54, DBI-1.47, DBD-SQLite2-0.33, Compress-Zlib-1.34, 
TermReadKey-2.30, Convert-ASN1-0.18, Crypt-SSLeay-0.51, IO-Socket-SSL-0.96,, perl-ldap-0.3202, DateManip-5.42a, MIME-Base64-3.05, 
URI-1.35, Digest-MD5-2.33, libnet-1.19, XML-RegExp-0.03, XML-NamespaceSupport-1.08, 
File-Temp-0.14, XML-SAX-0.12, XML-DOM-1.43, libwww-perl-5.803, SOAP-Lite-0.60, bundle

remote_task =
vdt_result = perl-modules*6-!!VDT_VERSION!!.*.tar.gz
vdt_dest = /p/vdt/public/html/software/perl-modules/6
This is a big build, but not a very complex one. To add or upgrade a module you first need to add/update an NMI input file. Since there are a whole bunch of inputs just pull it off of CPAN -- don't worry about mirroring it locally.

The second step is to add a task. The glue script understands a couple of static tasks (unpack, bundle) and recognizes perl builds (perl-<version>[-threads]). All other tasks are treated as modules. The task should be the top level directory name from the module's tarball. The glue script will cd in, make sure it uses the right SSL libraries and build it.

Why do we build 5.8.0 and 5.8.1?

There is some knowledge from Nate in RT ticket 1903

The Version of Perl installed on each platform

Platform Version of Perl
ia64_rhas_3 5.8.0
ia64_sl_4 5.8.5
ia64_sles_9 5.8.3
x86_64_cent_5 5.8.8
x86_64_deb_4.0 5.8.8
x86_64_rhap_5 5.8.8
x86_64_rhas_3 5.8.0
x86_64_rhas_4 5.8.0
x86_64_sles_9 5.8.3
x86_64_slf_4 5.8.5
x86_cent_5 5.8.8
x86_deb_3.1 5.8.4
x86_deb_4.0 5.8.8
x86_macos_10.4 5.8.6
x86_rhap_5 5.8.8
x86_rhas_3 5.8.0
x86_rhas_4 5.8.5
x86_rocks_3.3.0 5.8.0
x86_slf_3 5.8.0
x86_slf_4 5.8.5
ppc_aix_5.3 5.8.2
x86_64_deb_5.0 5.10.0
x86_deb_5.0 5.10.0