1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
Tweak @INC so that the ordering is:
etc (for config files)
site (5.8.1)
vendor (all)
core (5.8.1)
site (version-indep)
site (pre-5.8.1)
The rationale being that an admin (via site), or module packager
(vendor) can chose to shadow core modules when there is a newer
version than is included in core.
diff -Naur --exclude=debian perl-5.8.8.orig/perl.c perl-5.8.8/perl.c
--- perl-5.8.8.orig/perl.c 2006-01-31 23:34:47.000000000 +1100
+++ perl-5.8.8/perl.c 2006-02-02 23:36:38.000000000 +1100
@@ -4776,9 +4776,14 @@
incpush(APPLLIB_EXP, TRUE, TRUE, TRUE);
#endif
+#if 1
+ /* for configuration where /usr is mounted ro (CPAN::Config, Net::Config) */
+ incpush("/etc/perl", FALSE, FALSE, FALSE);
+#else
#ifdef ARCHLIB_EXP
incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE);
#endif
+#endif
#ifdef MACOS_TRADITIONAL
{
Stat_t tmpstatbuf;
@@ -4803,11 +4808,13 @@
#ifndef PRIVLIB_EXP
# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl"
#endif
+#if 0
#if defined(WIN32)
incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE);
#else
incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE);
#endif
+#endif
#ifdef SITEARCH_EXP
/* sitearch is always relative to sitelib on Windows for
@@ -4850,6 +4857,61 @@
incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE);
#endif
+#if 1
+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE);
+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE);
+
+ /* Non-versioned site directory for local modules and for
+ compatability with the previous packages' site dirs */
+ incpush("/usr/local/lib/site_perl", TRUE, FALSE, FALSE);
+
+#ifdef PERL_INC_VERSION_LIST
+ {
+ struct stat s;
+
+ /* add small buffer in case old versions are longer than the
+ current version */
+ char sitearch[sizeof(SITEARCH_EXP)+16] = SITEARCH_EXP;
+ char sitelib[sizeof(SITELIB_EXP)+16] = SITELIB_EXP;
+ char const *vers[] = { PERL_INC_VERSION_LIST };
+ char const **p;
+
+ char *arch_vers = strrchr(sitearch, '/');
+ char *lib_vers = strrchr(sitelib, '/');
+
+ if (arch_vers && isdigit(*++arch_vers))
+ *arch_vers = 0;
+ else
+ arch_vers = 0;
+
+ if (lib_vers && isdigit(*++lib_vers))
+ *lib_vers = 0;
+ else
+ lib_vers = 0;
+
+ /* there is some duplication here as incpush does something
+ similar internally, but required as sitearch is not a
+ subdirectory of sitelib */
+ for (p = vers; *p; p++)
+ {
+ if (arch_vers)
+ {
+ strcpy(arch_vers, *p);
+ if (PerlLIO_stat(sitearch, &s) >= 0 && S_ISDIR(s.st_mode))
+ incpush(sitearch, FALSE, FALSE, FALSE);
+ }
+
+ if (lib_vers)
+ {
+ strcpy(lib_vers, *p);
+ if (PerlLIO_stat(sitelib, &s) >= 0 && S_ISDIR(s.st_mode))
+ incpush(sitelib, FALSE, FALSE, FALSE);
+ }
+ }
+ }
+#endif
+#endif
+
#ifdef PERL_OTHERLIBDIRS
incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE);
#endif
|