Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 90973

Summary: perl-module.eclass misses files when build with MAKEFLAGS="-j2" or higher
Product: Gentoo Linux Reporter: Nico Erfurth <masta-gentoo>
Component: EclassesAssignee: Gentoo Perl team <perl>
Status: RESOLVED CANTFIX    
Severity: major    
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: emerge HTML-Parser (builds, but Parser.so is missing)
MAKEFLAGS="-j1" emerge HTML-Parser
emerge HTML-Parser (SRC_TEST set to "do" in perl-module.eclass)
perl -V output
emerge info output
emerge HTML-Parser (with SRC_TEST="skip")
emerge HTML-Parser (with SRC_TEST="do")

Description Nico Erfurth 2005-04-30 07:32:07 UTC
The perl-module eclass has undergone some changes, it seems like the disabled make test broke something. I think that make install isn't finished, when the actual merging starts.

Reproducible: Always
Steps to Reproduce:
1. MAKEFLAGS="-j6" emerge HTML-Parser
2. qpkg -l HTML-Parser | grep Parser.so

Actual Results:  
daemlich HTML-Parser # qpkg -l HTML-Parser | grep Parser.so
daemlich HTML-Parser #

Expected Results:  
daemlich HTML-Parser # qpkg -l HTML-Parser | grep Parser.so
/usr/lib/perl5/vendor_perl/5.8.5/i686-linux/auto/HTML/Parser/Parser.so
daemlich HTML-Parser # 


I'm not really sure HOW this is triggered, but when I set SRC_TEST="do",
everything is fine. Without it, some packages miss files. HTML::Parser misses
Parser.so, libwww-perl misses LWP/Simple.pm.
Comment 1 Elfyn McBratney (beu) (RETIRED) gentoo-dev 2005-04-30 07:50:21 UTC
Can't reproduce here with FEATURES=test.  Please can you paste the output from an emerge session where it works and where it doesn't (command line, emerge output, the works) ?  Thanks.
Comment 2 Nico Erfurth 2005-04-30 08:01:25 UTC
Created attachment 57677 [details]
emerge HTML-Parser (builds, but Parser.so is missing)

This is a log of a plain emerge HTML-Parser, with everything set to default.
Comment 3 Nico Erfurth 2005-04-30 08:02:34 UTC
Created attachment 57678 [details]
MAKEFLAGS="-j1" emerge HTML-Parser

With MAKEFLAGS="-j1" the build works.
Comment 4 Nico Erfurth 2005-04-30 08:05:34 UTC
Created attachment 57679 [details]
emerge HTML-Parser (SRC_TEST set to "do" in perl-module.eclass)

perl-module.eclass does not seem to honor FEATURES="test", so I've modified
line 65 to read SRC_TEST="do". This one works perfect, Parser.so is build and
installed correctly.

Btw, everything is fine with revision 1.67 from CVS.
Comment 5 Michael Cummings (RETIRED) gentoo-dev 2005-04-30 10:44:48 UTC
the perl module eclass does honor features for maketest - if the source ebuild sets src_test=do - this is done on purpose. Testing is good, but some modules use tests that are either A)Badly written B) make unsafe network calls or C) require an X display. Hence the reason that tests only happen if the ebuild has src_test set to do - otherwise it doesn't matter if you have the feature set or not. this isn't a bug. its on purpose.
Comment 6 Michael Cummings (RETIRED) gentoo-dev 2005-04-30 10:58:35 UTC
we need more information to work with. for starters, emerge info - your 2 outputs don't make sense. in one the man pages are generated, in the other they're not. your changing more than one flag between these emerges. at the very least, we need emerge info and perl -V output.
Comment 7 Nico Erfurth 2005-04-30 11:04:01 UTC
Created attachment 57685 [details]
perl -V output
Comment 8 Nico Erfurth 2005-04-30 11:04:30 UTC
Created attachment 57686 [details]
emerge info output
Comment 9 Nico Erfurth 2005-04-30 11:08:13 UTC
I haven't changed multiple flags between those builds. Just checked it again.
Also, as mentioned before, it works with rev 1.67 of perl-module.eclass.

I could provide (non-root) shell access for this machine, if it helps.
Comment 10 Michael Cummings (RETIRED) gentoo-dev 2005-04-30 11:12:00 UTC
Is distcc active during this compile? I'm wondering if that could explain the utter inconcistancy between your three emerge logs (they don't line up at all as far as the order of things). Also, has any of this changed since you started? I don't see any doc flags, but you definitely didn't generate the man pages on at least one of those passes.

If distcc is active, please disable it, unchange the eclass, and try again. (no distcc over here to confirm that that would be interfering). Either way, the makeopts are never invoked for the building of this one .so file, and your -O3 is being honored in each of your attached logs.
Comment 11 Michael Cummings (RETIRED) gentoo-dev 2005-04-30 11:14:10 UTC
The only change between those two eclass versions is whether the tests are forced - and tests have no bearing on the .so file being generated (like beu, i can confirm that and can't dup your problem at all). I'm still leaning towards distcc...and yes, that's a somewhat desperate grasp, but your logs don't make sense even in themselves (one looks like it restarts the emerge half way through)
Comment 12 Nico Erfurth 2005-04-30 11:26:07 UTC
Created attachment 57687 [details]
emerge HTML-Parser (with SRC_TEST="skip")

There may have been some remainings in /var/tmp/portage from an earlier ebuild
compile. So here is it again. This log is created with everything set to
default.
Comment 13 Nico Erfurth 2005-04-30 11:27:23 UTC
Created attachment 57688 [details]
emerge HTML-Parser (with SRC_TEST="do")

Again, this is emerge HTML-Parser with SRC_TEST beeing set to "do".
Comment 14 Nico Erfurth 2005-04-30 11:28:45 UTC
I don't use distcc on this machine, also I've disabled ccache for the last two logfiles.
Comment 15 Nico Erfurth 2005-04-30 12:09:24 UTC
FYI: This is NOT related to HTML-Parser the same thing happens with libwww-perl, when is set higher than MAKEFLAGS="-j1". For libwww-perl it misses some manpages in this case. MAKEFLAGS="-j1" also solves the problem with HTML-Parser. Maybe the problem is related to MAKEFLAGS only. It's possible that the extra make test when SRC_TEST is "do", "fixes" the broken first build. I've also tried it on another system, and there it works (With MAKEFLAGS != "-j1"). Both use the same profile and have the same versions of perl/make/makemaker installed. I see no significant difference between the systems. So this is a mystery for me too *SIGH*.
Comment 16 Elfyn McBratney (beu) (RETIRED) gentoo-dev 2005-04-30 13:01:46 UTC
How many physical processors does the box that you can reproduce this on have?
Comment 17 Nico Erfurth 2005-04-30 13:04:17 UTC
Single CPU, no SMP, no HT.
Comment 18 Elfyn McBratney (beu) (RETIRED) gentoo-dev 2005-04-30 14:08:15 UTC
I've been able to reproduce the original issue (.so not being installed with MAKEOPTS=-j6 - which is what I assumed you meant when you typed MAKEFLAGS ?) a few times out of ~10 re-emerges, however -j0-5 worked flawlessly (with and without SRC_TEST=do) - all on single processor boxes.

Anything more than -j[1 + number of processors] is not recommended, and if things break, you get to keep the pieces. :)  If you can come up for a reasonable fix for this that doesn't have any adverse effects for those where the above scenarios are working (plus what Mike said above), then I doubt there will be any problems getting that in.

Also, the logs of your emerge sessions do not add up to your FEATURES - missing man pages for example.  This could be because your system is totally horked, or because you've recently been cursed - we don't know. ;)  If you can provide anymore information as to why this is happening, that might help.

Resolving CANTFIX.  Please re-open with as-verbose-as-possible information and clear instructions on how to reproduce if you get any further and are able to reproduce this on more than one system.