Sfoglia il codice sorgente

1. 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". 2. Already activate "vendor" area, althouh it is still unused in OpenPKG. It will be soon used by the "perl-xxx" packages to make "site" area available for manual (think CPAN shell) module installations.

Ralf S. Engelschall 22 anni fa
parent
commit
9ec74dc288
2 ha cambiato i file con 122 aggiunte e 1 eliminazioni
  1. 120 0
      perl/perl.patch
  2. 2 1
      perl/perl.spec

+ 120 - 0
perl/perl.patch

@@ -24,3 +24,123 @@ only once aren't affected by this bug.)"
      return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
  }
  
+-----------------------------------------------------------------------------
+
+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".
+
+--- perl.c.orig	2002-07-09 21:41:43.000000000 +0200
++++ perl.c	2003-09-03 14:08:25.000000000 +0200
+@@ -3679,39 +3679,6 @@
+     incpush(APPLLIB_EXP, TRUE, TRUE);
+ #endif
+ 
+-#ifdef ARCHLIB_EXP
+-    incpush(ARCHLIB_EXP, FALSE, FALSE);
+-#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);
+-	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);
+-	
+-   	SvREFCNT_dec(privdir);
+-    }
+-    if (!PL_tainting)
+-	incpush(":", FALSE, FALSE);
+-#else
+-#ifndef PRIVLIB_EXP
+-#  define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl"
+-#endif
+-#if defined(WIN32)
+-    incpush(PRIVLIB_EXP, TRUE, FALSE);
+-#else
+-    incpush(PRIVLIB_EXP, FALSE, FALSE);
+-#endif
+-
+ #ifdef SITEARCH_EXP
+     /* sitearch is always relative to sitelib on Windows for
+      * DLL-based path intuition to work correctly */
+@@ -3752,6 +3719,39 @@
+     incpush(PERL_VENDORLIB_STEM, FALSE, TRUE);
+ #endif
+ 
++#ifdef ARCHLIB_EXP
++    incpush(ARCHLIB_EXP, FALSE, FALSE);
++#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);
++	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);
++	
++   	SvREFCNT_dec(privdir);
++    }
++    if (!PL_tainting)
++	incpush(":", FALSE, FALSE);
++#else
++#ifndef PRIVLIB_EXP
++#  define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl"
++#endif
++#if defined(WIN32)
++    incpush(PRIVLIB_EXP, TRUE, FALSE);
++#else
++    incpush(PRIVLIB_EXP, FALSE, FALSE);
++#endif
++
+ #ifdef PERL_OTHERLIBDIRS
+     incpush(PERL_OTHERLIBDIRS, TRUE, TRUE);
+ #endif
+
+-----------------------------------------------------------------------------
+
+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.
+
+--- installperl.orig	2002-07-16 20:57:32.000000000 +0200
++++ installperl	2003-09-03 14:27:11.000000000 +0200
+@@ -174,6 +174,8 @@
+ my $installarchlib = $Config{installarchlib};
+ my $installsitelib = $Config{installsitelib};
+ my $installsitearch = $Config{installsitearch};
++my $installvendorlib = $Config{installvendorlib};
++my $installvendorarch = $Config{installvendorarch};
+ my $installman1dir = $Config{installman1dir};
+ my $man1ext = $Config{man1ext};
+ my $libperl = $Config{libperl};
+@@ -336,6 +338,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, '.');

+ 2 - 1
perl/perl.spec

@@ -33,7 +33,7 @@ Distribution: OpenPKG [CORE]
 Group:        Language
 License:      GPL/Artistic
 Version:      5.8.0
-Release:      20030723
+Release:      20030903
 
 #   list of sources
 Source0:      ftp://ftp.cpan.org/pub/CPAN/src/perl-%{version}.tar.gz
@@ -70,6 +70,7 @@ AutoReqProv:  no
     ./Configure \
         -d -e -s \
         -Dprefix=%{l_prefix} \
+        -Dvendorprefix=%{l_prefix} \
         -Dinstallprefix=$RPM_BUILD_ROOT%{l_prefix} \
         -Dcc="%{l_cc}" -Doptimize="%{l_cflags -O}" \
         -Dlocincpth="%{l_prefix}/include" \