diff options
Diffstat (limited to 'meta/recipes-devtools/perl/perl-5.12.3/parallel_build_fix_5.patch')
| -rw-r--r-- | meta/recipes-devtools/perl/perl-5.12.3/parallel_build_fix_5.patch | 430 |
1 files changed, 0 insertions, 430 deletions
diff --git a/meta/recipes-devtools/perl/perl-5.12.3/parallel_build_fix_5.patch b/meta/recipes-devtools/perl/perl-5.12.3/parallel_build_fix_5.patch deleted file mode 100644 index 5891ee6a93..0000000000 --- a/meta/recipes-devtools/perl/perl-5.12.3/parallel_build_fix_5.patch +++ /dev/null | |||
| @@ -1,430 +0,0 @@ | |||
| 1 | Upstream-Status:Inappropriate [Backport] | ||
| 2 | |||
| 3 | Rebased by Nitin A Kamble <nitin.a.kamble@intel.com> on 3/11/2011 | ||
| 4 | |||
| 5 | commit 5e4c4c91bd52a48de59520d5e9b4e3478e49c613 | ||
| 6 | Author: Nicholas Clark <nick@ccl4.org> | ||
| 7 | Date: Mon Feb 14 10:14:18 2011 +0000 | ||
| 8 | |||
| 9 | Use a buildcustomize.pl to set @INC in miniperl when building extensions. | ||
| 10 | |||
| 11 | With the build tools now shipped in various subdirectories of cpan/ and dist/ | ||
| 12 | we need to add several paths to @INC when invoking MakeMaker (etc) to build | ||
| 13 | extensions. | ||
| 14 | |||
| 15 | The previous approach of using $ENV{PERL5LIB} was fragile, because: | ||
| 16 | a: It was hitting the length limit for %ENV variables on VMS | ||
| 17 | b: It was running the risk of race conditions in a parallel build - | ||
| 18 | ExtUtils::Makemaker "knows" to add -I../..lib, which puts lib at the *front* | ||
| 19 | of @INC, but if one parallel process happens to copy a module into lib/ | ||
| 20 | whilst another is searching for it, the second may get a partial read | ||
| 21 | c: Overwriting $ENV{PERL5LIB} breaks any system where any of the installed | ||
| 22 | build tools are actually implemented in Perl, if they are relying on | ||
| 23 | $ENV{PERL5LIB} for setup | ||
| 24 | |||
| 25 | This approach | ||
| 26 | |||
| 27 | a: Doesn't have %ENV length limits | ||
| 28 | b: Ensures that lib/ is last, so copy targets are always shadowing copy | ||
| 29 | sources | ||
| 30 | c: Only affects miniperl, and doesn't touch $ENV{PERL5LIB} | ||
| 31 | |||
| 32 | Approaches that turned out to have fatal flaws: | ||
| 33 | |||
| 34 | 1: Using $ENV{PERL5OPT} with a module fails because ExtUtils::MakeMaker | ||
| 35 | searches for the build perl without setting lib, and treats the error | ||
| 36 | caused by a failed -M as "not a valid perl 5 binary" | ||
| 37 | 2: Refactoring ExtUtils::MakeMaker to *not* use -I for lib, and instead rely | ||
| 38 | on $ENV{PERL5LIB} [which includes "../../lib"] fails because: | ||
| 39 | some extensions have subdirectories, and on these EU::MM correctly uses | ||
| 40 | -I../../../lib, where as $ENV{PERL5LIB} only has space for relative paths, | ||
| 41 | and only with two levels. | ||
| 42 | |||
| 43 | This approach actually takes advantage of ExtUtils::MakeMaker setting an -I | ||
| 44 | option correct for the depth of directory being built. | ||
| 45 | |||
| 46 | Index: perl-5.12.3/Cross/Makefile-cross-SH | ||
| 47 | =================================================================== | ||
| 48 | --- perl-5.12.3.orig/Cross/Makefile-cross-SH | ||
| 49 | +++ perl-5.12.3/Cross/Makefile-cross-SH | ||
| 50 | @@ -324,7 +324,7 @@ $spitshell >>$Makefile <<'!NO!SUBS!' | ||
| 51 | |||
| 52 | CONFIGPM = xlib/$(CROSS_NAME)/Config.pm | ||
| 53 | |||
| 54 | -private = preplibrary $(CONFIGPM) $(CROSS_LIB)/Config.pod | ||
| 55 | +private = preplibrary $(CONFIGPM) $(CROSS_LIB)/Config.pod lib/buildcustomize.pl | ||
| 56 | |||
| 57 | shextract = Makefile cflags config.h makeaperl makedepend \ | ||
| 58 | makedir myconfig writemain pod/Makefile | ||
| 59 | @@ -752,6 +752,9 @@ lib/lib.pm: miniperl $(CONFIGPM) | ||
| 60 | @-rm -f $@ | ||
| 61 | $(LDLIBPTH) ./miniperl -Ilib -MCross lib/lib_pm.PL | ||
| 62 | |||
| 63 | +lib/buildcustomize.pl: $(MINIPERL_EXE) write_buildcustomize.pl | ||
| 64 | + $(MINIPERL) write_buildcustomize.pl >lib/buildcustomize.pl | ||
| 65 | + | ||
| 66 | unidatafiles $(unidatafiles): uni.data | ||
| 67 | |||
| 68 | uni.data: miniperl$(EXE_EXT) $(CONFIGPM) lib/unicore/mktables | ||
| 69 | @@ -922,16 +925,16 @@ manicheck: FORCE | ||
| 70 | |||
| 71 | |||
| 72 | |||
| 73 | -$(DYNALOADER): preplibrary FORCE | ||
| 74 | +$(DYNALOADER): lib/buildcustomize.pl preplibrary FORCE | ||
| 75 | @$(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib make_ext.pl --cross $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS) | ||
| 76 | |||
| 77 | -d_dummy $(dynamic_ext): miniperl$(EXE_EXT) preplibrary makeppport $(DYNALOADER) FORCE | ||
| 78 | +d_dummy $(dynamic_ext): miniperl$(EXE_EXT) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE | ||
| 79 | @$(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib make_ext.pl --cross $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic | ||
| 80 | |||
| 81 | -s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary makeppport $(DYNALOADER) FORCE | ||
| 82 | +s_dummy $(static_ext): miniperl$(EXE_EXT) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE | ||
| 83 | @$(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib make_ext.pl --cross $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS) | ||
| 84 | |||
| 85 | -n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE | ||
| 86 | +n_dummy $(nonxs_ext): miniperl$(EXE_EXT) lib/buildcustomize.pl preplibrary $(DYNALOADER) FORCE | ||
| 87 | @$(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib make_ext.pl --cross $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) | ||
| 88 | !NO!SUBS! | ||
| 89 | |||
| 90 | Index: perl-5.12.3/MANIFEST | ||
| 91 | =================================================================== | ||
| 92 | --- perl-5.12.3.orig/MANIFEST | ||
| 93 | +++ perl-5.12.3/MANIFEST | ||
| 94 | @@ -4747,6 +4747,7 @@ win32/wince.c WinCE port | ||
| 95 | win32/wince.h WinCE port | ||
| 96 | win32/wincesck.c WinCE port | ||
| 97 | writemain.SH Generate perlmain.c from miniperlmain.c+extensions | ||
| 98 | +write_buildcustomize.pl Generate lib/buildcustomize.pl | ||
| 99 | x2p/a2p.c Output of a2p.y run through byacc | ||
| 100 | x2p/a2p.h Global declarations | ||
| 101 | x2p/a2p.pod Pod for awk to perl translator | ||
| 102 | Index: perl-5.12.3/Makefile.SH | ||
| 103 | =================================================================== | ||
| 104 | --- perl-5.12.3.orig/Makefile.SH | ||
| 105 | +++ perl-5.12.3/Makefile.SH | ||
| 106 | @@ -428,7 +428,7 @@ esac | ||
| 107 | ## In the following dollars and backticks do not need the extra backslash. | ||
| 108 | $spitshell >>$Makefile <<'!NO!SUBS!' | ||
| 109 | |||
| 110 | -private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h | ||
| 111 | +private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl | ||
| 112 | |||
| 113 | # Files to be built with variable substitution before miniperl | ||
| 114 | # is available. | ||
| 115 | @@ -991,6 +991,9 @@ $(plextract): $(MINIPERL_EXE) $(CONFIGPM | ||
| 116 | x2p/s2p: $(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) x2p/s2p.PL | ||
| 117 | cd x2p; $(LDLIBPTH) $(MAKE) s2p | ||
| 118 | |||
| 119 | +lib/buildcustomize.pl: $(MINIPERL_EXE) write_buildcustomize.pl | ||
| 120 | + $(MINIPERL) write_buildcustomize.pl >lib/buildcustomize.pl | ||
| 121 | + | ||
| 122 | unidatafiles $(unidatafiles) pod/perluniprops.pod: uni.data | ||
| 123 | |||
| 124 | uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext) | ||
| 125 | @@ -1160,16 +1163,16 @@ manicheck: FORCE | ||
| 126 | # | ||
| 127 | # DynaLoader may be needed for extensions that use Makefile.PL. | ||
| 128 | |||
| 129 | -$(DYNALOADER): $(MINIPERL_EXE) preplibrary FORCE $(nonxs_ext) | ||
| 130 | +$(DYNALOADER): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary FORCE $(nonxs_ext) | ||
| 131 | $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS) | ||
| 132 | |||
| 133 | -d_dummy $(dynamic_ext): $(MINIPERL_EXE) preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT) | ||
| 134 | +d_dummy $(dynamic_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT) | ||
| 135 | $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic | ||
| 136 | |||
| 137 | -s_dummy $(static_ext): $(MINIPERL_EXE) preplibrary makeppport $(DYNALOADER) FORCE | ||
| 138 | +s_dummy $(static_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE | ||
| 139 | $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS) | ||
| 140 | |||
| 141 | -n_dummy $(nonxs_ext): $(MINIPERL_EXE) preplibrary FORCE | ||
| 142 | +n_dummy $(nonxs_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary FORCE | ||
| 143 | $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) | ||
| 144 | !NO!SUBS! | ||
| 145 | |||
| 146 | Index: perl-5.12.3/installperl | ||
| 147 | =================================================================== | ||
| 148 | --- perl-5.12.3.orig/installperl | ||
| 149 | +++ perl-5.12.3/installperl | ||
| 150 | @@ -714,6 +714,8 @@ sub installlib { | ||
| 151 | # ignore the test extensions | ||
| 152 | return if $dir =~ m{\bXS/(?:APItest|Typemap)\b}; | ||
| 153 | return if $name =~ m{\b(?:APItest|Typemap)\.pm$}; | ||
| 154 | + # ignore the build support code | ||
| 155 | + return if $name =~ /\bbuildcustomize\.pl$/; | ||
| 156 | # ignore the demo files | ||
| 157 | return if $dir =~ /\b(?:demos?|eg)\b/; | ||
| 158 | |||
| 159 | Index: perl-5.12.3/make_ext.pl | ||
| 160 | =================================================================== | ||
| 161 | --- perl-5.12.3.orig/make_ext.pl | ||
| 162 | +++ perl-5.12.3/make_ext.pl | ||
| 163 | @@ -4,11 +4,9 @@ use warnings; | ||
| 164 | use Config; | ||
| 165 | BEGIN { | ||
| 166 | if ($^O eq 'MSWin32') { | ||
| 167 | - unshift @INC, ('../cpan/Cwd', '../cpan/Cwd/lib'); | ||
| 168 | - require File::Spec::Functions; | ||
| 169 | + unshift @INC, '../cpan/Cwd'; | ||
| 170 | require FindExt; | ||
| 171 | - } | ||
| 172 | - else { | ||
| 173 | + } else { | ||
| 174 | unshift @INC, 'cpan/Cwd'; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | @@ -18,27 +16,6 @@ my $is_Win32 = $^O eq 'MSWin32'; | ||
| 178 | my $is_VMS = $^O eq 'VMS'; | ||
| 179 | my $is_Unix = !$is_Win32 && !$is_VMS; | ||
| 180 | |||
| 181 | -# To clarify, this isn't the entire suite of modules considered "toolchain" | ||
| 182 | -# It's not even all modules needed to build ext/ | ||
| 183 | -# It's just the source paths of the (minimum complete set of) modules in ext/ | ||
| 184 | -# needed to build the nonxs modules | ||
| 185 | -# After which, all nonxs modules are in lib, which was always sufficient to | ||
| 186 | -# allow miniperl to build everything else. | ||
| 187 | - | ||
| 188 | -# This list cannot get any longer without overflowing the length limit for | ||
| 189 | -# environment variables on VMS | ||
| 190 | -my @toolchain = qw(cpan/AutoLoader/lib | ||
| 191 | - cpan/Cwd cpan/Cwd/lib | ||
| 192 | - cpan/ExtUtils-Command/lib | ||
| 193 | - dist/ExtUtils-Install/lib | ||
| 194 | - cpan/ExtUtils-MakeMaker/lib | ||
| 195 | - cpan/ExtUtils-Manifest/lib | ||
| 196 | - cpan/File-Path/lib | ||
| 197 | - ); | ||
| 198 | - | ||
| 199 | -# Used only in ExtUtils::Liblist::Kid::_win32_ext() | ||
| 200 | -push @toolchain, 'cpan/Text-ParseWords/lib' if $is_Win32; | ||
| 201 | - | ||
| 202 | my @ext_dirs = qw(cpan dist ext); | ||
| 203 | my $ext_dirs_re = '(?:' . join('|', @ext_dirs) . ')'; | ||
| 204 | |||
| 205 | @@ -295,16 +272,7 @@ sub build_extension { | ||
| 206 | $perl ||= "$up/miniperl"; | ||
| 207 | my $return_dir = $up; | ||
| 208 | my $lib_dir = "$up/lib"; | ||
| 209 | - # $lib_dir must be last, as we're copying files into it, and in a parallel | ||
| 210 | - # make there's a race condition if one process tries to open a module that | ||
| 211 | - # another process has half-written. | ||
| 212 | - my @new_inc = ((map {"$up/$_"} @toolchain), $lib_dir); | ||
| 213 | - if ($is_Win32) { | ||
| 214 | - @new_inc = map {File::Spec::Functions::rel2abs($_)} @new_inc; | ||
| 215 | - } | ||
| 216 | - $ENV{PERL5LIB} = join $Config{path_sep}, @new_inc; | ||
| 217 | $ENV{PERL_CORE} = 1; | ||
| 218 | - # warn $ENV{PERL5LIB}; | ||
| 219 | |||
| 220 | my $makefile; | ||
| 221 | if ($is_VMS) { | ||
| 222 | @@ -375,7 +343,7 @@ EOM | ||
| 223 | @cross = '-MCross'; | ||
| 224 | } | ||
| 225 | |||
| 226 | - my @args = (@cross, 'Makefile.PL'); | ||
| 227 | + my @args = ("-I$lib_dir", @cross, 'Makefile.PL'); | ||
| 228 | if ($is_VMS) { | ||
| 229 | my $libd = VMS::Filespec::vmspath($lib_dir); | ||
| 230 | push @args, "INST_LIB=$libd", "INST_ARCHLIB=$libd"; | ||
| 231 | Index: perl-5.12.3/vms/descrip_mms.template | ||
| 232 | =================================================================== | ||
| 233 | --- perl-5.12.3.orig/vms/descrip_mms.template | ||
| 234 | +++ perl-5.12.3/vms/descrip_mms.template | ||
| 235 | @@ -360,7 +360,7 @@ CRTLOPTS =,$(CRTL)/Options | ||
| 236 | unidatadirs = lib/unicore/To lib/unicore/lib | ||
| 237 | |||
| 238 | # Modules which must be installed before we can build extensions | ||
| 239 | -LIBPREREQ = $(ARCHDIR)Config.pm $(ARCHDIR)Config_heavy.pl [.lib.VMS]Filespec.pm $(ARCHDIR)vmspipe.com [.lib]re.pm | ||
| 240 | +LIBPREREQ = $(ARCHDIR)Config.pm $(ARCHDIR)Config_heavy.pl [.lib.VMS]Filespec.pm $(ARCHDIR)vmspipe.com [.lib]re.pm [.lib]buildcustomize.pl | ||
| 241 | |||
| 242 | utils1 = [.lib.pods]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com [.utils]h2ph.com | ||
| 243 | utils2 = [.utils]h2xs.com [.utils]libnetcfg.com [.lib]perlbug.com [.utils]dprofpp.com | ||
| 244 | @@ -458,6 +458,9 @@ archcorefiles : $(ac) $(ARCHAUTO)time.st | ||
| 245 | [.lib]re.pm : [.ext.re]re.pm | ||
| 246 | Copy/NoConfirm/Log $(MMS$SOURCE) [.lib] | ||
| 247 | |||
| 248 | +[.lib]buildcustomize.pl : write_buildcustomize.pl $(MINIPERL_EXE) | ||
| 249 | + $(MINIPERL) write_buildcustomize.pl > [.lib]buildcustomize.pl | ||
| 250 | + | ||
| 251 | vmspipe.com : [.vms]vmspipe.com | ||
| 252 | Copy/NoConfirm/Log $(MMS$SOURCE) [] | ||
| 253 | |||
| 254 | @@ -561,7 +564,7 @@ unidatafiles.ts : $(MINIPERL_EXE) [.lib] | ||
| 255 | @ If F$Search("$(MMS$TARGET)").nes."" Then Delete/NoLog/NoConfirm $(MMS$TARGET);* | ||
| 256 | @ Copy/NoConfirm _NLA0: $(MMS$TARGET) | ||
| 257 | |||
| 258 | -DynaLoader$(O) : $(ARCHDIR)Config.pm $(MINIPERL_EXE) [.lib.VMS]Filespec.pm | ||
| 259 | +DynaLoader$(O) : [.lib]buildcustomize.pl $(ARCHDIR)Config.pm $(MINIPERL_EXE) [.lib.VMS]Filespec.pm | ||
| 260 | $(MINIPERL) make_ext.pl "MAKE=$(MMS)" "DynaLoader" | ||
| 261 | |||
| 262 | dynext : $(LIBPREREQ) $(DBG)perlshr$(E) unidatafiles.ts DynaLoader$(O) preplibrary makeppport $(MINIPERL_EXE) | ||
| 263 | @@ -1856,6 +1859,7 @@ tidy : cleanlis | ||
| 264 | - If F$Search("[.utils]*.com;-1").nes."" Then Purge/NoConfirm/Log [.utils]*.com | ||
| 265 | - If F$Search("[.x2p]*.com;-1").nes."" Then Purge/NoConfirm/Log [.x2p]*.com | ||
| 266 | - If F$Search("[.lib.pods]*.com;-1").nes."" Then Purge/NoConfirm/Log [.lib.pods]*.com | ||
| 267 | + - If F$Search("[.lib]buildcustomize.pl;-1").nes."" Then Purge/NoConfirm/Log [.lib]buildcustomize.pl | ||
| 268 | |||
| 269 | clean : tidy cleantest | ||
| 270 | - $(MINIPERL) make_ext.pl "MAKE=$(MMS)" "--all" "--target=clean" | ||
| 271 | Index: perl-5.12.3/win32/Makefile | ||
| 272 | =================================================================== | ||
| 273 | --- perl-5.12.3.orig/win32/Makefile | ||
| 274 | +++ perl-5.12.3/win32/Makefile | ||
| 275 | @@ -923,6 +923,9 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh c | ||
| 276 | -$(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)" | ||
| 277 | if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM) | ||
| 278 | |||
| 279 | +..\lib\buildcustomize.pl: $(MINIPERL) ..\write_buildcustomize.pl | ||
| 280 | + $(MINIPERL) -I..\lib ..\write_buildcustomize.pl .. >..\lib\buildcustomize.pl | ||
| 281 | + | ||
| 282 | $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) | ||
| 283 | $(LINK32) -subsystem:console -out:$@ @<< | ||
| 284 | $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ) | ||
| 285 | @@ -1045,24 +1048,24 @@ MakePPPort: $(MINIPERL) $(CONFIGPM) Exte | ||
| 286 | #------------------------------------------------------------------------------- | ||
| 287 | # There's no direct way to mark a dependency on | ||
| 288 | # DynaLoader.pm, so this will have to do | ||
| 289 | -Extensions: ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 290 | +Extensions: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 291 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 292 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic | ||
| 293 | |||
| 294 | -Extensions_reonly: ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 295 | +Extensions_reonly: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 296 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 297 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re | ||
| 298 | |||
| 299 | -Extensions_static : ..\make_ext.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM) | ||
| 300 | +Extensions_static : ..\make_ext.pl ..\lib\buildcustomize.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM) | ||
| 301 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 302 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static | ||
| 303 | $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static | ||
| 304 | |||
| 305 | -Extensions_nonxs: ..\make_ext.pl $(PERLDEP) $(CONFIGPM) | ||
| 306 | +Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) | ||
| 307 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 308 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs | ||
| 309 | |||
| 310 | -$(DYNALOADER) : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs | ||
| 311 | +$(DYNALOADER) : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs | ||
| 312 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 313 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader | ||
| 314 | |||
| 315 | @@ -1159,6 +1162,7 @@ distclean: realclean | ||
| 316 | -del /f $(LIBDIR)\Win32CORE.pm | ||
| 317 | -del /f $(LIBDIR)\Win32API\File.pm | ||
| 318 | -del /f $(LIBDIR)\Win32API\File\cFile.pc | ||
| 319 | + -del /f $(LIBDIR)\buildcustomize.pl | ||
| 320 | -del /f $(DISTDIR)\XSLoader\XSLoader.pm | ||
| 321 | -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App | ||
| 322 | -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive | ||
| 323 | Index: perl-5.12.3/win32/makefile.mk | ||
| 324 | =================================================================== | ||
| 325 | --- perl-5.12.3.orig/win32/makefile.mk | ||
| 326 | +++ perl-5.12.3/win32/makefile.mk | ||
| 327 | @@ -1215,6 +1215,10 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh c | ||
| 328 | $(MINIPERL) -I..\lib $(ICWD) config_h.PL "INST_VER=$(INST_VER)" \ | ||
| 329 | || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE) | ||
| 330 | |||
| 331 | +..\lib\buildcustomize.pl: $(MINIPERL) ..\write_buildcustomize.pl | ||
| 332 | + $(MINIPERL) -I..\lib ..\write_buildcustomize.pl .. >..\lib\buildcustomize.pl | ||
| 333 | + | ||
| 334 | + | ||
| 335 | $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS) | ||
| 336 | .IF "$(CCTYPE)" == "BORLAND" | ||
| 337 | if not exist $(CCLIBDIR)\PSDK\odbccp32.lib \ | ||
| 338 | @@ -1423,24 +1427,24 @@ MakePPPort: $(MINIPERL) $(CONFIGPM) Exte | ||
| 339 | #------------------------------------------------------------------------------- | ||
| 340 | # There's no direct way to mark a dependency on | ||
| 341 | # DynaLoader.pm, so this will have to do | ||
| 342 | -Extensions : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 343 | +Extensions : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 344 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 345 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic | ||
| 346 | |||
| 347 | -Extensions_reonly : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 348 | +Extensions_reonly : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) $(DYNALOADER) | ||
| 349 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 350 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re | ||
| 351 | |||
| 352 | -Extensions_static : ..\make_ext.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM) | ||
| 353 | +Extensions_static : ..\make_ext.pl ..\lib\buildcustomize.pl list_static_libs.pl $(PERLDEP) $(CONFIGPM) | ||
| 354 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 355 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static | ||
| 356 | $(MINIPERL) -I..\lib list_static_libs.pl > Extensions_static | ||
| 357 | |||
| 358 | -Extensions_nonxs : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) | ||
| 359 | +Extensions_nonxs : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) | ||
| 360 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 361 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs | ||
| 362 | |||
| 363 | -$(DYNALOADER) : ..\make_ext.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs | ||
| 364 | +$(DYNALOADER) : ..\make_ext.pl ..\lib\buildcustomize.pl $(PERLDEP) $(CONFIGPM) Extensions_nonxs | ||
| 365 | $(XCOPY) ..\*.h $(COREDIR)\*.* | ||
| 366 | $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader | ||
| 367 | |||
| 368 | @@ -1534,6 +1538,7 @@ distclean: realclean | ||
| 369 | -del /f $(LIBDIR)\Win32CORE.pm | ||
| 370 | -del /f $(LIBDIR)\Win32API\File.pm | ||
| 371 | -del /f $(LIBDIR)\Win32API\File\cFile.pc | ||
| 372 | + -del /f $(LIBDIR)\buildcustomize.pl | ||
| 373 | -del /f $(DISTDIR)\XSLoader\XSLoader.pm | ||
| 374 | -if exist $(LIBDIR)\App rmdir /s /q $(LIBDIR)\App | ||
| 375 | -if exist $(LIBDIR)\Archive rmdir /s /q $(LIBDIR)\Archive | ||
| 376 | Index: perl-5.12.3/write_buildcustomize.pl | ||
| 377 | =================================================================== | ||
| 378 | --- /dev/null | ||
| 379 | +++ perl-5.12.3/write_buildcustomize.pl | ||
| 380 | @@ -0,0 +1,50 @@ | ||
| 381 | +#!./miniperl -w | ||
| 382 | + | ||
| 383 | +use strict; | ||
| 384 | +if (@ARGV) { | ||
| 385 | + my $dir = shift; | ||
| 386 | + chdir $dir or die "Can't chdir '$dir': $!"; | ||
| 387 | + unshift @INC, 'lib'; | ||
| 388 | +} | ||
| 389 | + | ||
| 390 | +unshift @INC, ('cpan/Cwd', 'cpan/Cwd/lib'); | ||
| 391 | +require File::Spec::Functions; | ||
| 392 | + | ||
| 393 | +# To clarify, this isn't the entire suite of modules considered "toolchain" | ||
| 394 | +# It's not even all modules needed to build ext/ | ||
| 395 | +# It's just the source paths of the (minimum complete set of) modules in ext/ | ||
| 396 | +# needed to build the nonxs modules | ||
| 397 | +# After which, all nonxs modules are in lib, which was always sufficient to | ||
| 398 | +# allow miniperl to build everything else. | ||
| 399 | + | ||
| 400 | +my @toolchain = qw(cpan/AutoLoader/lib | ||
| 401 | + cpan/Cwd cpan/Cwd/lib | ||
| 402 | + cpan/ExtUtils-Command/lib | ||
| 403 | + dist/ExtUtils-Install/lib | ||
| 404 | + cpan/ExtUtils-MakeMaker/lib | ||
| 405 | + cpan/ExtUtils-Manifest/lib | ||
| 406 | + cpan/File-Path/lib | ||
| 407 | + ); | ||
| 408 | + | ||
| 409 | +# Used only in ExtUtils::Liblist::Kid::_win32_ext() | ||
| 410 | +push @toolchain, 'cpan/Text-ParseWords/lib' if $^O eq 'MSWin32'; | ||
| 411 | + | ||
| 412 | +# lib must be last, as the the toolchain modules write themselves into it | ||
| 413 | +# as they build, and it's important that @INC order ensures that the partially | ||
| 414 | +# written files are always masked by the complete versions. | ||
| 415 | + | ||
| 416 | +my $inc = join ",\n ", | ||
| 417 | + map { "q\0$_\0" } | ||
| 418 | + (map {File::Spec::Functions::rel2abs($_)} @toolchain, 'lib'), '.'; | ||
| 419 | + | ||
| 420 | +# If any of the system's build tools are written in Perl, then this module | ||
| 421 | +# may well be loaded by a much older version than we are building. So keep it | ||
| 422 | +# as backwards compatible as is easy. | ||
| 423 | +print <<"EOT"; | ||
| 424 | +#!perl | ||
| 425 | + | ||
| 426 | +# We are miniperl, building extensions | ||
| 427 | +# Reset \@INC completely, adding the directories we need, and removing the | ||
| 428 | +# installed directories (which we don't need to read, and may confuse us) | ||
| 429 | +\@INC = ($inc); | ||
| 430 | +EOT | ||
