From 6c6cf14e204f3c031372bfd9604ad524d5691186 Mon Sep 17 00:00:00 2001
From: Brendan O'Dea <bod@debian.org>
Date: Fri, 18 Mar 2005 22:22:25 +1100
Subject: Tweak @INC ordering for Debian

Our order 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.

Patch-Name: debian/mod_paths.diff
Upstream-Status: Pending
---
 perl.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/perl.c b/perl.c
index 086645b..e64f1f4 100644
--- a/perl.c
+++ b/perl.c
@@ -4373,6 +4373,11 @@ S_init_perllib(pTHX)
 		      INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE);
 #endif
 
+#ifdef DEBIAN
+    /* for configuration where /usr is mounted ro (CPAN::Config, Net::Config) */
+    S_incpush_use_sep(aTHX_ STR_WITH_LEN("/etc/perl"), 0x0);
+#endif
+
 #ifdef SITEARCH_EXP
     /* sitearch is always relative to sitelib on Windows for
      * DLL-based path intuition to work correctly */
@@ -4490,6 +4495,59 @@ S_init_perllib(pTHX)
 		      INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE);
 #endif
 
+#ifdef DEBIAN
+    /* Non-versioned site directory for local modules and for
+       compatability with the previous packages' site dirs */
+    S_incpush_use_sep(aTHX_ STR_WITH_LEN("/usr/local/lib/site_perl"),
+		      INCPUSH_ADD_SUB_DIRS);
+
+#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))
+		    S_incpush_use_sep(aTHX_ sitearch, strlen(sitearch), 0x0);
+	    }
+
+	    if (lib_vers)
+	    {
+		strcpy(lib_vers, *p);
+		if (PerlLIO_stat(sitelib, &s) >= 0 && S_ISDIR(s.st_mode))
+		    S_incpush_use_sep(aTHX_ sitelib, strlen(sitelib), 0x0);
+	    }
+	}
+    }
+#endif
+#endif
+
 #ifdef PERL_OTHERLIBDIRS
     S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS),
 		      INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS
