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.
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, dbd-sqlite2.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, Net_SSLeay.pm-1.25, 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 = build-perl-modules.pl vdt_result = perl-modules*6-!!VDT_VERSION!!.*.tar.gz vdt_dest = /p/vdt/public/html/software/perl-modules/6This 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.