This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
44382ecf8d26446372c29971fa03305107dd1ce9
[metaconfig.git] / U / installdirs / inc_version_list.U
1 ?RCS: $Id: inc_version_list.U,v $
2 ?RCS:
3 ?RCS: Copyright (c) 2000 Andy Dougherty
4 ?RCS: 
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 3.0.
10 ?RCS:
11 ?RCS: $Log: inc_version_list.U,v $
12 ?RCS:
13 ?MAKE:inc_version_list inc_version_list_init: cat sed Getfile perl5 \
14         version api_versionstring rm Myread archname prefix sitelib_stem \
15         exe_ext
16 ?MAKE:  -pick add $@ %<
17 ?Y:TOP
18 ?S:inc_version_list:
19 ?S:     This variable specifies the list of subdirectories in over
20 ?S:     which perl.c:incpush() and lib/lib.pm will automatically
21 ?S:     search when adding directories to @INC.  The elements in
22 ?S:     the list are separated by spaces.  This is only useful
23 ?S:     if you have a perl library directory tree structured like the
24 ?S:     default one.  See INSTALL for how this works.  The versioned
25 ?S:     site_perl directory was introduced in 5.005, so that is the
26 ?S:     lowest possible value.
27 ?S:     
28 ?S:     This list includes architecture-dependent directories back to
29 ?S:     version $api_versionstring (e.g. 5.5.640) and
30 ?S:     architecture-independent directories all the way back to
31 ?S:     5.005.
32 ?S:.
33 ?S:inc_version_list_init:
34 ?S:     This variable holds the same list as inc_version_list, but
35 ?S:     each item is enclosed in double quotes and separated by commas, 
36 ?S:     suitable for use in the PERL_INC_VERSION_LIST initialization.
37 ?S:.
38 ?C:PERL_INC_VERSION_LIST:
39 ?C:     This variable specifies the list of subdirectories in over
40 ?C:     which perl.c:incpush() and lib/lib.pm will automatically
41 ?C:     search when adding directories to @INC, in a format suitable
42 ?C:     for a C initialization string.  See the inc_version_list entry
43 ?C:     in Porting/Glossary for more details.
44 ?C:.
45 ?H:#define PERL_INC_VERSION_LIST $inc_version_list_init         /**/
46 ?H:.
47 ?T: stem d
48 : Determine list of previous versions to include in @INC
49 $cat > getverlist <<EOPL
50 #!$perl5 -w
51 use File::Basename;
52 \$api_versionstring = "$api_versionstring";
53 \$version = "$version";
54 \$stem = "$sitelib_stem";
55 \$archname = "$archname";
56 EOPL
57         $cat >> getverlist <<'EOPL'
58 # Can't have leading @ because metaconfig interprets it as a command!
59 ;@inc_version_list=();
60 # XXX Redo to do opendir/readdir? 
61 if (-d $stem) {
62     chdir($stem);
63     ;@candidates = glob("5.*");
64 }
65 else {
66     ;@candidates = ();
67 }
68
69 # XXX ToDo:  These comparisons must be reworked when two-digit
70 # subversions come along, so that 5.7.10 compares as greater than
71 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
72 # widespread that we can use the built-in version vectors rather
73 # than reinventing them here.  For 5.6.0, however, we must
74 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
75 foreach $d (@candidates) {
76     if ($d lt $version) {
77         if ($d ge $api_versionstring) {
78             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
79         }
80         elsif ($d ge "5.005") {
81             unshift(@inc_version_list, grep { -d } $d);
82         }
83     }
84     else {
85         # Skip newer version.  I.e. don't look in
86         # 5.7.0 if we're installing 5.6.1.
87     }
88 }
89
90 if (@inc_version_list) {
91     print join(' ', @inc_version_list);
92 }
93 else {
94     # Blank space to preserve value for next Configure run.
95     print " ";
96 }
97 EOPL
98 chmod +x getverlist
99 case "$inc_version_list" in
100 '')     if test -x "$perl5$exe_ext"; then
101                 dflt=`$perl5 getverlist`
102         else
103                 dflt='none'
104         fi
105         ;;
106 $undef) dflt='none' ;;
107 ?X:     Configure -Dinc_version_list='5.6.0/$archname 5.6.0' ...
108 *)  eval dflt=\"$inc_version_list\" ;;
109 esac
110 case "$dflt" in
111 ''|' ') dflt=none ;;
112 esac
113 case "$dflt" in
114 5.005) dflt=none ;;
115 esac
116 $cat <<EOM
117
118 In order to ease the process of upgrading, this version of perl 
119 can be configured to use modules built and installed with earlier 
120 versions of perl that were installed under $prefix.  Specify here
121 the list of earlier versions that this version of perl should check.
122 If Configure detected no earlier versions of perl installed under
123 $prefix, then the list will be empty.  Answer 'none' to tell perl
124 to not search earlier versions.
125
126 The default should almost always be sensible, so if you're not sure,
127 just accept the default.
128 EOM
129
130 rp='List of earlier versions to include in @INC?'
131 . ./myread
132 case "$ans" in
133 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
134 *) inc_version_list="$ans" ;;
135 esac
136 case "$inc_version_list" in
137 ''|' ') 
138         inc_version_list_init='0';;
139 *)      inc_version_list_init=`echo $inc_version_list |
140                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
141         ;;
142 esac
143 $rm -f getverlist
144