When perl is built with "build" USE flag, emerging autoconf fails. Reproducible: Always Steps to Reproduce: Using chroot for the experiment: 1. emerge perl with USE="build" 2. emerge autoconf Actual Results: autoconf fails to emerge Expected Results: successful autoconf emerge, probably rebuilding perl without "build" USE flag first
Created attachment 249283 [details] mips-stage3-build-catalyst-failure.log This issue causes problems for building mips stage3 tarball with catalyst.
I've been told on IRC what it somewhat resembles older bug 253964
Well, looks like the issue is a bit more complex. The same problem happens with automake stuff which gets used when emerging libtool at stage3. So somehow perl needs to be told to be emerged before both of these packages at stage3, while not breaking anything at stage1 and stage2 at the same time. Probably both automake and autoconf need to get "build" USE flag themselves and depend on perl with exactly the same "build" flag state? Doing experiments with all of this is going to take at least a few days due to the use of slow mips hardware.
Created attachment 249315 [details] output of "emerge --info" attached output of "emerge --info" in /var/tmp/catalyst/tmp/default/stage3-mips-20100929/ chroot
Hmm, there is one question: "autoconf" already depends on "perl" regardless of use flags. Why does "emerge --quiet --usepkg --buildpkg --newuse -e system" invoked by catalyst emerge them in the wrong order? Am I missing something?
i'm guessing this isnt specific to autoconf 2.67
Actually I regret submitting this bug without doing extra checks first and the summary is not very good as it is. It's more like "~arch version of perl does not play nice with autoconf when building stage3 in catalyst". I wonder if it is actually a bug in portage caused by not respecting package dependencies for "emerge -e system"? The issue can be solved/workarounded in many ways and I'm not sure which one would be the best. For now I just masked new versions of perl via package.mask and restarted mips stage1/atage2/stage3 generation.
emerge -e system doesn't mean that it considers everything non-existent, it just schedules all system packages to be re-emerged. If there is no dependency to rebuild perl early enough to satisfy USE flag deps, then it isn't guaranteed to come earlier. We had a similar situation in regards to libxml2 and dev-lang/python[-build,xml], though now that I look, it seems I need to reinvestigate it, as we didn't end up adding a python[-build] USE dep... anyhow, the point was that Zac explained emerge -e system behaviour during that problem investigation.
Considering all of this, now it looks to me that just catalyst should probably do something a bit more clever when building stage3. I mean in stage3-chroot.sh before emerging system, do something like: run_merge "shadow" run_merge "perl" Yes, shadow also causes problems for ~arch build. Or alternatively do: run_merge "--newuse system" run_merge "-e system"
I think the only time I hit this was when I did something funny with a stage build, like used a weird seed stage or something. What's the actual bug here? autoconf should depend on dev-lang/perl[-build]? What's stopping us from modifying this dependency?
(In reply to comment #10) > I think the only time I hit this was when I did something funny with a stage > build, like used a weird seed stage or something. > What's the actual bug here? As comment 8 explains, "emerge -e system" seems to ignore package dependencies and just builds the packages in some pseudo-random(?) order. Depending on your luck, everything may be fine because there are not so many things affected by the change of "build" USE flag between stages, so the chances of success are quite high. But if you are unlucky, a workaround from comment 9 can be used which explicitly builds the sensitive packages before the rest (everything fails if they are built too late).
Well, we can also modify what is installed by dev-lang/perl[build]... | Warning: failed to load Config_git.pl, something strange about this perl... | Can't locate Tie/Hash.pm in @INC (@INC contains: ../lib /usr/lib/perl5/site_perl/5.12.2/mips-linux /usr/lib/perl5/site_perl/5.12.2 /usr/lib/perl5/vendor_perl/5.12.2/mips-linux /usr/lib/perl. - What's this `Config_git.pl`? - Tie::Hash should be installed in /usr/lib/perl/5.12.2/Tie/Hash.pm and "/usr/lib/perl/5.12.2" should be in @INC. The @INC list in the log looks strange/cut off. Can you paste `perl -V` from your dev-lang/perl[build] and verify that /usr/lib/perl/5.12.*/Tie/Hash.pm is installed?
(In reply to comment #12) > - Tie::Hash should be installed in /usr/lib/perl/5.12.2/Tie/Hash.pm > and "/usr/lib/perl/5.12.2" should be in @INC. The @INC list in the log looks > strange/cut off. > Can you paste `perl -V` from your dev-lang/perl[build] and verify that > /usr/lib/perl/5.12.*/Tie/Hash.pm is installed? I did add Tie::Hash on 2010/10/28 (after the log was created). So what's the problem with an uptodate ebuild of perl today? http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-lang/perl/perl-5.12.2-r1.ebuild?hideattic=0&r1=1.9&r2=1.10
Is release still needed here?
Jorge: if autoconf is updated with dev-lang/perl[-build] in DEPEND, does stage building still work ? if so, i'll make the commit
(In reply to comment #15) > Jorge: if autoconf is updated with dev-lang/perl[-build] in DEPEND, does stage > building still work ? > > if so, i'll make the commit I'm doing a build run tonight to test this.
We can't go down this route. I didn't pay sufficient attention to the requested change or else it would be obvious we would get into trouble. To build the stage1, catalyst calls portage with USE="-* build" which conflicts with the perl[-build] dependency. At least for building stage1, the proposed change won't work. emerge --quiet --usepkg --buildpkg --newuse --oneshot sys-apps/grep sys-devel/binutils app-shells/bash sys-apps/net-tools sys-devel/patch sys-devel/flex sys-apps/gawk app-arch/tar sys-apps/sed sys-fs/udev sys-devel/bison sys-apps/texinfo sys-apps/file app-arch/bzip2 virtual/package-manager net-misc/rsync sys-devel/automake virtual/editor sys-apps/coreutils sys-devel/make sys-apps/shadow sys-apps/findutils virtual/os-headers sys-apps/makedev app-arch/gzip net-misc/wget sys-devel/libtool sys-apps/diffutils sys-devel/gettext sys-apps/less sys-apps/baselayout virtual/libc sys-devel/autoconf sys-devel/gnuconfig sys-devel/gcc [ebuild N ] sys-libs/ncurses-5.7-r7 to /tmp/stage1root/ [ebuild N ] sys-libs/zlib-1.2.5-r2 to /tmp/stage1root/ [ebuild N ] sys-devel/gnuconfig-20110202 to /tmp/stage1root/ [ebuild N ] virtual/libintl-0 to /tmp/stage1root/ [ebuild N ] virtual/libiconv-0 to /tmp/stage1root/ [ebuild N ] sys-apps/sed-4.2.1 to /tmp/stage1root/ [ebuild N ] app-arch/bzip2-1.0.6-r2 to /tmp/stage1root/ [ebuild N ] sys-apps/coreutils-8.7 to /tmp/stage1root/ [ebuild N ] sys-apps/findutils-4.4.2 to /tmp/stage1root/ [ebuild N ] sys-devel/gcc-config-1.4.1-r1 to /tmp/stage1root/ [ebuild N ] sys-libs/timezone-data-2011e to /tmp/stage1root/ [ebuild N ] dev-libs/popt-1.16-r1 to /tmp/stage1root/ [ebuild N ] app-misc/pax-utils-0.2.2 to /tmp/stage1root/ [ebuild N ] dev-libs/libffi-3.0.9-r2 to /tmp/stage1root/ [ebuild N ] sys-kernel/linux-headers-2.6.36.1 to /tmp/stage1root/ [ebuild N ] sys-apps/grep-2.5.4-r1 to /tmp/stage1root/ [ebuild N ] sys-apps/net-tools-1.60_p20110409135728 to /tmp/stage1root/ [ebuild N ] sys-devel/patch-2.5.9 to /tmp/stage1root/ [ebuild N ] sys-apps/gawk-3.1.8 to /tmp/stage1root/ [ebuild N ] app-arch/tar-1.23-r2 to /tmp/stage1root/ [ebuild N ] sys-devel/make-3.82-r1 to /tmp/stage1root/ [ebuild N ] sys-apps/shadow-4.1.4.3 to /tmp/stage1root/ [ebuild N ] app-arch/gzip-1.4 to /tmp/stage1root/ [ebuild N ] net-misc/wget-1.12-r3 to /tmp/stage1root/ [ebuild N ] sys-apps/diffutils-3.0 to /tmp/stage1root/ [ebuild N ] sys-devel/m4-1.4.15 [ebuild N ] sys-devel/m4-1.4.15 to /tmp/stage1root/ [ebuild N ] sys-apps/help2man-1.38.2 [ebuild N ] sys-devel/automake-wrapper-4 [ebuild N ] sys-devel/autoconf-wrapper-10-r1 to /tmp/stage1root/ [ebuild N ] dev-libs/expat-2.0.1-r3 to /tmp/stage1root/ [ebuild N ] sys-devel/autoconf-wrapper-10-r1 [ebuild N ] sys-devel/automake-wrapper-4 to /tmp/stage1root/ [ebuild N ] sys-apps/makedev-3.23.1 to /tmp/stage1root/ [ebuild N ] sys-apps/texinfo-4.13 to /tmp/stage1root/ [ebuild N ] dev-libs/gmp-5.0.2 to /tmp/stage1root/ [ebuild N ] virtual/libffi-0 to /tmp/stage1root/ [ebuild N ] app-shells/bash-4.1_p9 to /tmp/stage1root/ [ebuild N ] sys-devel/binutils-config-2-r1 to /tmp/stage1root/ [ebuild N ] sys-apps/sandbox-2.4 to /tmp/stage1root/ [ebuild N ] app-editors/nano-2.2.5 to /tmp/stage1root/ [ebuild N ] net-misc/rsync-3.0.8 to /tmp/stage1root/ [ebuild N ] virtual/os-headers-0 to /tmp/stage1root/ [ebuild N ] sys-devel/autoconf-2.68 [ebuild N ] sys-devel/bison-2.4.3 [ebuild N ] sys-devel/flex-2.5.35 [ebuild N ] sys-devel/flex-2.5.35 to /tmp/stage1root/ [ebuild N ] sys-devel/bison-2.4.3 to /tmp/stage1root/ [ebuild N ] sys-apps/less-441 to /tmp/stage1root/ [ebuild N ] sys-libs/glibc-2.12.2 to /tmp/stage1root/ [ebuild N ] dev-libs/mpfr-3.0.1_p4 to /tmp/stage1root/ [ebuild N ] sys-apps/util-linux-2.19.1 to /tmp/stage1root/ [ebuild N ] sys-apps/sysvinit-2.88-r2 to /tmp/stage1root/ [ebuild N ] virtual/editor-0 to /tmp/stage1root/ [ebuild N ] sys-devel/automake-1.11.1 [ebuild N ] virtual/yacc-0 [ebuild N ] virtual/init-0 to /tmp/stage1root/ [ebuild N ] sys-devel/binutils-2.20.1-r1 to /tmp/stage1root/ [ebuild N ] virtual/libc-0 to /tmp/stage1root/ [ebuild N ] sys-devel/gcc-4.4.5 to /tmp/stage1root/ [ebuild N ] sys-devel/libtool-2.4-r1 [ebuild N ] sys-devel/libtool-2.4-r1 to /tmp/stage1root/ [ebuild R ] sys-apps/baselayout-2.0.3 to /tmp/stage1root/ [ebuild N ] sys-apps/openrc-0.8.3-r1 to /tmp/stage1root/ [ebuild N ] sys-fs/udev-164-r2 to /tmp/stage1root/ [ebuild N ] sys-devel/libperl-5.10.1 to /tmp/stage1root/ [ebuild N ] dev-lang/perl-5.12.3-r1 to /tmp/stage1root/ [ebuild N ] app-admin/perl-cleaner-2.7 to /tmp/stage1root/ [ebuild N ] sys-devel/autoconf-2.68 to /tmp/stage1root/ [ebuild N ] sys-devel/automake-1.11.1 to /tmp/stage1root/ [ebuild N ] dev-util/gtk-doc-am-1.17 [ebuild N ] dev-libs/glib-2.28.8 [ebuild N ] dev-util/pkgconfig-0.26 [ebuild N ] app-admin/eselect-python-20100321 to /tmp/stage1root/ [ebuild N ] sys-apps/file-5.07-r3 to /tmp/stage1root/ [ebuild N ] app-admin/eselect-1.2.15 to /tmp/stage1root/ [ebuild N ] dev-libs/libxml2-2.7.8-r1 to /tmp/stage1root/ [ebuild N ] sys-devel/gettext-0.18.1.1-r1 to /tmp/stage1root/ [ebuild N ] dev-lang/python-2.7.1-r1 to /tmp/stage1root/ [ebuild N ] sys-apps/portage-2.1.10.11 to /tmp/stage1root/ [ebuild N ] virtual/package-manager-0 to /tmp/stage1root/ [ebuild N ] dev-lang/python-3.1.3-r1 to /tmp/stage1root/ [ebuild N ] app-admin/python-updater-0.9 to /tmp/stage1root/ The following USE changes are necessary to proceed: #required by sys-devel/autoconf-2.68, required by sys-devel/automake-1.11.1, required by sys-devel/automake (argument) =dev-lang/perl-5.12.3-r1 -build Use --autounmask-write to write changes to config files (honoring CONFIG_PROTECT). !!! catalyst: run script failed. Traceback (most recent call last): File "modules/generic_stage_target.py", line 1207, in run_local "run script failed.",env=self.env) File "/usr/lib64/catalyst/modules/catalyst_support.py", line 542, in cmd raise CatalystError,myexc CatalystError None !!! catalyst: Stage build aborting due to error
This all has become really confusing (at least the summary of this bug is likely wrong and misleading). The root cause of the problem seems to be described in comment 8 and comment 11. And is related to "emerge -e" ignoring dependencies. Introducing some minor and not really related changes in ebuilds may have some effect on this pseudo-random order and make the problem go away. Everything becomes especially bad when attempting to build stage3 without adding "dev-vcs/git -perl" to "package.use" because otherwise it pulls in more packages and greatly increases the chance of encountering wrong package order failure.
could always drop USE=perl make.defaults
(In reply to comment #19) > could always drop USE=perl make.defaults I agree, useless IMO; see bug 250179
(In reply to comment #20) > (In reply to comment #19) > > could always drop USE=perl make.defaults > > I agree, useless IMO; see bug 250179 I already disabled perl and python here to test for that bug.
Which problem are you trying to solve? Can somebody paste a log? For me, building autoconf with dev-lang/perl[build] works.
(In reply to comment #22) > Which problem are you trying to solve? Can somebody paste a log? > For me, building autoconf with dev-lang/perl[build] works. For what is worth, I haven't seen any stage3 failures on amd64/x86 autobuilds related to autoconf / perl. I've been following the builds for over 1 year.
Since perl/python were dropped from the default profile and there has been no comments here for the past month, I suggest closing this bug.
Yes, I agree. I'll mark as WORKSFORME and if ssvb or someone else is able to reproduce it, feel free to reopen.