> [gschafer - Tue Jun 07 00:34:04 2005]: > > This is a bug report for perl from [EMAIL PROTECTED], > generated with the help of perlbug 1.34 running under perl v5.8.0. > > > ----------------------------------------------------------------- > [Please enter your report here] > > Hi > > I'm running i686-pc-linux-gnu > > The build of 5.8.7 fails to build with parallel make (-j3). It craps > out with the following error and is 100% repeatable: > > cc -s -o miniperl \ > miniperlmain.o opmini.o libperl.a -lnsl -ldl -lm -lcrypt -lutil > -lc > ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest > ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl configpm.tmp > ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl configpm.tmp > make: [extra.pods] Error 1 (ignored) > sh mv-if-diff configpm.tmp lib/Config.pm > sh mv-if-diff configpm.tmp lib/Config.pm > mv: cannot stat `configpm.tmp': No such file or directory > make: *** [lib/Config_heavy.pl] Error 1 > > > It seems the Makefile.SH changes pertaining to `CONFIGPM' are not > parallel safe. Not sure how best to fix.. >
The problem is that the CONFIGPM target contains two files. While running single threaded, one target ends up handling both. A threaded make, however, causes a race condition in the processing. Both targets want to move configpm.tmp to lib/Config.pm, but in a threaded make only one should be able to do it. I was also only able to reproduce this with "make -j3", but "make -j2" should eventually the same problem to occur. I best solution would likely be to split up the targets, and I'm now looking into how best to accomplish this.