Summary: | cross-emerge into alternative root does not install build time dependencies in alternative root | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Vladimir Smirnov (RETIRED) <civil> |
Component: | Enhancement/Feature Requests | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | chewi, daiderek, dschridde+gentoobugs, sam |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | 317337 | ||
Bug Blocks: | 137867 | ||
Attachments: |
emerge --info for "emerge-armv6z-hardfloat-linux-gnueabi"
build log emerge --debug -p pam |
pam-1.1.3.ebuild : EAPI=3 pam-1.1.3.ebuild : INHERIT libtool multilib toolchain-funcs eutils user pam flag-o-matic db-use versionator pam-1.1.3.ebuild : DEPEND=" [...] pam-1.1.3.ebuild : sys-devel/flex [...] pam-1.1.3.ebuild : " pam-1.1.5.ebuild : EAPI=4 pam-1.1.5.ebuild : INHERIT libtool multilib toolchain-funcs eutils user pam flag-o-matic db-use versionator pam-1.1.5.ebuild : DEPEND=" [...] pam-1.1.5.ebuild : sys-devel/flex [...] pam-1.1.5.ebuild : " No, it's there all right. Maybe it's virtual/yacc that's needed? - Please attach the entire failing build log to this bug report. Created attachment 311267 [details]
build log
Again, it's important that it's cross-building for another arch.
(In reply to comment #2) > Created attachment 311267 [details] > build log > > Again, it's important that it's cross-building for another arch. Fix is simple - flex should be RDEPEND, not DEPEND. (In reply to comment #3) > (In reply to comment #2) > > Created attachment 311267 [details] > > build log > > > > Again, it's important that it's cross-building for another arch. > > Fix is simple - flex should be RDEPEND, not DEPEND. It is bug in portage 2.2.0 (bug was at least in alpha90, can reproduce in alpha1-02 and 9999 too). Portage 2.1 works as expected. Portage 2.2 and 2.1 have the same code. The only difference is that Portage 2.2 has some experimental features enabled, such as package sets and preserve-libs. There's no difference in handling of DEPEND and RDEPEND. (In reply to comment #5) > Portage 2.2 and 2.1 have the same code. The only difference is that Portage > 2.2 has some experimental features enabled, such as package sets and > preserve-libs. There's no difference in handling of DEPEND and RDEPEND. Downgrade to portage 2.1.10.57 solved this issue. Upgrade to portage-9999 or 2.2alpha* introduced again. (In reply to comment #6) > Downgrade to portage 2.1.10.57 solved this issue. Upgrade to portage-9999 or > 2.2alpha* introduced again. What's the difference? Are the packages merged in a different order, or what? (In reply to comment #7) > (In reply to comment #6) > > Downgrade to portage 2.1.10.57 solved this issue. Upgrade to portage-9999 or > > 2.2alpha* introduced again. > > What's the difference? Are the packages merged in a different order, or what? With 2.2 pam doesn't merged at all. (In reply to comment #8) > (In reply to comment #7) > > (In reply to comment #6) > > > Downgrade to portage 2.1.10.57 solved this issue. Upgrade to portage-9999 or > > > 2.2alpha* introduced again. > > > > What's the difference? Are the packages merged in a different order, or what? > > With 2.2 pam doesn't merged at all. Minimal test-case: mkdir -p /tmp/portage-test USE="-*" ROOT="/tmp/portage-test" emerge -pv pam flex should be there, but it isn't If you move flex to RDEPEND and do that again, flex will be in deps. (In reply to comment #9) > Minimal test-case: > mkdir -p /tmp/portage-test > USE="-*" ROOT="/tmp/portage-test" emerge -pv pam > > flex should be there, but it isn't > > If you move flex to RDEPEND and do that again, flex will be in deps. This is the expected behavior, regardless of the portage version. (In reply to comment #10) > (In reply to comment #9) > > Minimal test-case: > > mkdir -p /tmp/portage-test > > USE="-*" ROOT="/tmp/portage-test" emerge -pv pam > > > > flex should be there, but it isn't > > > > If you move flex to RDEPEND and do that again, flex will be in deps. > > This is the expected behavior, regardless of the portage version. DEPEND - dependencies that are needed for software to compile, RDEPEND - to run, or I'm not right? (In reply to comment #11) > DEPEND - dependencies that are needed for software to compile, RDEPEND - to > run, or I'm not right? Yes, but the --root-deps or --root-deps=rdeps options change dependency resolution behavior. Are you using either of those? Created attachment 311281 [details]
emerge --debug -p pam
I've attached debug.log for last case.
It's still a bug in ebuild: flex is needed on runtime too, so it should be both in RDEPENDs and DEPENDs. (In reply to comment #14) > It's still a bug in ebuild: flex is needed on runtime too, so it should be > both in RDEPENDs and DEPENDs. The flex library is static though, right? That might mean that it's only needed at build time. Anyway, this issue seems similar in some ways to bug 412909. *** Bug 412909 has been marked as a duplicate of this bug. *** This is what HDEPEND was for but it was rejected. Proposing a better alternative is on my rather long todo list. I think this is fixed with BDEPEND? |
Created attachment 311217 [details] emerge --info for "emerge-armv6z-hardfloat-linux-gnueabi" I'm trying to crosscompile armv6z basic rootfs. USE="-*" emerge-armv6z-hardfloat-linux-gnueabi pam failes with: "pam_conv_l.c:(.text+0xb20): undefined reference to `yywrap'". It's fixed if flex is builded before pam. pam's version: 1.1.5 and 1.1.3.