By default, the "vendor" area is not used, so Perl's installation procedure forgot to create its top-level paths, too. In OpenPKG we use the "vendor" area, so make sure it is created the same way the "site" area is. Index: installperl --- installperl.orig 2003-09-02 15:40:21.000000000 +0200 +++ installperl 2003-09-26 09:23:15.000000000 +0200 @@ -189,6 +189,8 @@ my $installarchlib = "$destdir$Config{installarchlib}"; my $installsitelib = "$destdir$Config{installsitelib}"; my $installsitearch = "$destdir$Config{installsitearch}"; +my $installvendorlib = "$destdir$Config{installvendorlib}"; +my $installvendorarch = "$destdir$Config{installvendorarch}"; my $installman1dir = "$destdir$Config{installman1dir}"; my $man1ext = $Config{man1ext}; my $libperl = $Config{libperl}; @@ -379,6 +381,8 @@ mkpath($installarchlib, $verbose, 0777); mkpath($installsitelib, $verbose, 0777) if ($installsitelib); mkpath($installsitearch, $verbose, 0777) if ($installsitearch); +mkpath($installvendorlib, $verbose, 0777) if ($installvendorlib); +mkpath($installvendorarch, $verbose, 0777) if ($installvendorarch); if (chdir "lib") { $do_installarchlib = ! samepath($installarchlib, '.'); ----------------------------------------------------------------------------- By default, the Perl module search order is "use lib, -I, PERL[5]LIB, perl, site, vendor, other". This means that in OpenPKG both the modules installed via CPAN shell (in "site" area) and the "perl-xxx" packages (in "vendor" area) cannot override the (sometimes obsoleted) module versions distributed with Perl (in "perl" area). Hence, we change the search order to a more reasonable one for OpenPKG: "use lib, -I, PERL[5]LIB, site, vendor, perl, other". Index: perl.c --- perl.c.orig 2003-09-11 23:42:33.000000000 +0200 +++ perl.c 2003-09-26 09:25:11.000000000 +0200 @@ -3978,39 +3978,6 @@ incpush(APPLLIB_EXP, TRUE, TRUE, TRUE); #endif -#ifdef ARCHLIB_EXP - incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE); -#endif -#ifdef MACOS_TRADITIONAL - { - Stat_t tmpstatbuf; - SV * privdir = NEWSV(55, 0); - char * macperl = PerlEnv_getenv("MACPERL"); - - if (!macperl) - macperl = ""; - - Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); - if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) - incpush(SvPVX(privdir), TRUE, FALSE, TRUE); - Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); - if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) - incpush(SvPVX(privdir), TRUE, FALSE, TRUE); - - SvREFCNT_dec(privdir); - } - if (!PL_tainting) - incpush(":", FALSE, FALSE, TRUE); -#else -#ifndef PRIVLIB_EXP -# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" -#endif -#if defined(WIN32) - incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE); -#else - incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE); -#endif - #ifdef SITEARCH_EXP /* sitearch is always relative to sitelib on Windows for * DLL-based path intuition to work correctly */ @@ -4052,6 +4019,39 @@ incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE); #endif +#ifdef ARCHLIB_EXP + incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE); +#endif +#ifdef MACOS_TRADITIONAL + { + Stat_t tmpstatbuf; + SV * privdir = NEWSV(55, 0); + char * macperl = PerlEnv_getenv("MACPERL"); + + if (!macperl) + macperl = ""; + + Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); + if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) + incpush(SvPVX(privdir), TRUE, FALSE, TRUE); + Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); + if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) + incpush(SvPVX(privdir), TRUE, FALSE, TRUE); + + SvREFCNT_dec(privdir); + } + if (!PL_tainting) + incpush(":", FALSE, FALSE, TRUE); +#else +#ifndef PRIVLIB_EXP +# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" +#endif +#if defined(WIN32) + incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE); +#else + incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE); +#endif + #ifdef PERL_OTHERLIBDIRS incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE); #endif ----------------------------------------------------------------------------- Port to [Open]Darwin 6.6.2: 1. In OpenPKG, Perl does not use the vendor GCC and our GCC does not understand "-no-cpp-precomp", so remove this build option. 2. The indirectly includes system specific headers which in turn have fields named "environ" while Perl uses a define of "environ" internally. So wrap the inclusion. 3. Darwin 6 no longer accepts the non-standard "#import" statements, so replace with "#include" and circumvent some header problem related to the non-standard "__private_extern__" attribute. Index: hints/darwin.sh --- hints/darwin.sh.orig 2003-09-02 15:40:19.000000000 +0200 +++ hints/darwin.sh 2003-10-28 16:40:57.000000000 +0100 @@ -121,9 +121,6 @@ *-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;; esac -# Avoid Apple's cpp precompiler, better for extensions -cppflags="${cppflags} -no-cpp-precomp" - # This is necessary because perl's build system doesn't # apply cppflags to cc compile lines as it should. ccflags="${ccflags} ${cppflags}" Index: perlio.c --- perlio.c.orig 2003-09-24 22:50:22.000000000 +0200 +++ perlio.c 2003-10-28 17:03:59.000000000 +0100 @@ -432,7 +432,14 @@ #include #endif #ifdef HAS_MMAP +#ifdef PERL_DARWIN +#define environ_safe environ +#undef environ #include +#define environ environ_safe +#else +#include +#endif #endif /* Index: ext/DynaLoader/dl_dyld.xs --- ext/DynaLoader/dl_dyld.xs.orig 2003-09-02 15:39:27.000000000 +0200 +++ ext/DynaLoader/dl_dyld.xs 2003-10-28 17:07:31.000000000 +0100 @@ -45,7 +45,13 @@ #undef environ #undef bool +#ifdef PERL_DARWIN +#define __private_extern__ extern +#include +#undef __private_extern__ +#else #import +#endif static char *dlerror() { ----------------------------------------------------------------------------- Port to Tru64 5.1: Under Tru64 our gcc has to be built without binutils and the system ld(1) does not accept a "-O" option, so remove the whole passing of optimization flags to ld(1). Under a brain-dead platform like Tru64 we really don't need any more optimization because we are already happy if it works at all. Index: hints/dec_osf.sh --- hints/dec_osf.sh.orig 2004-03-24 23:59:53.000000000 +0100 +++ hints/dec_osf.sh 2004-04-22 09:58:40.000000000 +0200 @@ -237,15 +237,6 @@ *) if $test "X$optimize" = "X$undef"; then lddlflags="$lddlflags -msym" else - case "$myosvers" in - *4.0D*) - # QAR 56761: -O4 + .so may produce broken code, - # fixed in 4.0E or better. - ;; - *) - lddlflags="$lddlflags $optimize" - ;; - esac # -msym: If using a sufficiently recent /sbin/loader, # keep the module symbols with the modules. lddlflags="$lddlflags -msym -std"