emerge/portage can't handle the case where the "ithreads" use flag on perl is enabled when using getbinpkg in FEATURES. The reason is that getbinpkg does not see a use flag change on the module itself and installs the binary version of the module (which goes to a different install location on non-threaded perl opposed to perl with ithreads enabled). If perl then searches for the module it cannot find it. It should have been installed not from source. To fix this we either need some global use flag on all affected perl modules (so binpkg sees a change in flags) or some way to permanently exclude all dev-perl and virtual/perl-* packages from a build which is not supported by emerge afaik Reproducible: Always Steps to Reproduce: 1. enable getbinpkg on FEATURES or EMERGE_DEFAULT_OPTS in /etc/portage/make.conf 2. enable "ithreads" use flag on perl and emerge it 3. try to install any binary perl package (for example XML::Parser) which install in wrong location Actual Results: all binary perl packages are not compatible with ithreads use-flag on perl and getbinpkg. It breaks the system Expected Results: Some way that perl-modules are excluded from getbinpkg if ithreads is enabled.
This is a frustrating one because it mostly doesn't matter for source builds (we warn the user on dev-lang/perl changing flags and then that's good enough really), but for binpkgs, you could have contaminated your cache and not realise until a while after. I agree this makes it more pressing. If we can't fix bug 680496 any time soon, I tthink a global USE or something would be better than nothing.
(In reply to Sam James from comment #1) > This is a frustrating one because it mostly doesn't matter for source builds > (we warn the user on dev-lang/perl changing flags and then that's good > enough really), but for binpkgs, you could have contaminated your cache and > not realise until a while after. > > I agree this makes it more pressing. If we can't fix bug 680496 any time > soon, I tthink a global USE or something would be better than nothing. My suggestion would be a USE_EXPAND PERL_FEATURES="debug ithreads quadmath" which is auto-added by the eclass, and adds the corresponding runtime/buildtime dependency on perl ... i.e. perl_features_quadmath => require dev-lang/perl[quadmath] and so on