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

Bug 256616

Summary: upgrade to >=bash-3.2_p39 causes parallel builds to fail due to temporarily missing /bin/sh
Product: Portage Development Reporter: Gustavo F. Padovan <gustavo>
Component: CoreAssignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: normal CC: bo.andresen, ciaran.mccreesh, pacho
Priority: High Keywords: InVCS
Version: unspecified   
Hardware: x86   
OS: Linux   
See Also: https://bugs.gentoo.org/show_bug.cgi?id=698400
https://bugs.gentoo.org/show_bug.cgi?id=663324
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 210077, 261959, 262145    
Attachments: perl-5.8.8-r5 build.log
gpm-1.20.5 build.log
emerge --info

Description Gustavo F. Padovan 2009-01-28 11:54:46 UTC
while emerging app-shells/bash-3.2_p39 (in a emerge -NDuva world from stage3-x86-2008.0 tarball) other emerge compilation fail with this message:
make[1]: /bin/sh: Command not found

Reproducible: Always

Steps to Reproduce:
1. `emerge -NDuva -j3 world` from stage3-x86-2008.0 tarball with parallel portage

Actual Results:  
>>> Emerging (35 of 75) app-shells/bash-3.2_p39
>>> Installing sys-apps/texinfo-4.11-r1
>>> Emerging (36 of 75) sys-apps/less-418
>>> Installing sys-apps/less-418
>>> Emerging (37 of 75) sys-libs/gpm-1.20.5
>>> Installing app-shells/bash-3.2_p39
>>> Failed to emerge dev-lang/perl-5.8.8-r5, Log file:
>>>  '/var/tmp/portage/dev-lang/perl-5.8.8-r5/temp/build.log'
>>> Failed to emerge sys-libs/gpm-1.20.5, Log file:
>>>  '/var/tmp/portage/sys-libs/gpm-1.20.5/temp/build.log'
Comment 1 Gustavo F. Padovan 2009-01-28 11:56:16 UTC
Created attachment 179949 [details]
perl-5.8.8-r5 build.log
Comment 2 Gustavo F. Padovan 2009-01-28 11:57:14 UTC
Created attachment 179951 [details]
gpm-1.20.5 build.log
Comment 3 Gustavo F. Padovan 2009-01-28 11:57:58 UTC
Created attachment 179952 [details]
emerge --info
Comment 4 Zac Medico gentoo-dev 2009-01-28 18:17:12 UTC
You'd better do this to fix it (your system might not boot otherwise):

  ln -s bash /bin/sh
Comment 5 Zac Medico gentoo-dev 2009-01-28 19:09:56 UTC
Actually, I suspect that your /bin/sh symlink already exists. It's just that it didn't exist in the time between bash being upgraded and the pkg_postinst phase executing (which creates the symlink).
Comment 6 Zac Medico gentoo-dev 2009-01-28 19:19:10 UTC
One possible way to solve this would be to add /bin/sh to CONFIG_PROTECT. There's already some code in pkg_preinst which bumps the timestamp on the symlink, and that will prevent it from being unmerged if it's CONFIG_PROTECTed.
Comment 7 Zac Medico gentoo-dev 2009-01-29 00:17:10 UTC
Considering that this issue boils down to an unspecified dependency on /bin/sh, maybe we should have a new RESTRICT value for packages like this, which prevents them from being merged while other packages are being built. I suppose we could also just use the system set to identify such packages, but that wouldn't provide as much granularity.
Comment 8 Zac Medico gentoo-dev 2009-01-29 00:40:46 UTC
I don't think a new RESTRICT value is really necessary. Since the system set should work pretty well as an indicator, so I'll go ahead and use that.
Comment 9 Zac Medico gentoo-dev 2009-02-02 06:12:35 UTC
This is fixed in svn r12569.
Comment 10 Ciaran McCreesh 2009-02-03 20:06:23 UTC
Or you could do --jobs properly, by installing via binary packages, as you've been told is necessary for correctness several times before. Adding in more workarounds doesn't fix the underlying issue.
Comment 11 Zac Medico gentoo-dev 2009-02-03 21:26:56 UTC
The "underlying issue" doesn't apply to all packages. It would be better to introduce a new RESTRICT value than to treat all packages identically.
Comment 12 Ciaran McCreesh 2009-02-03 21:28:38 UTC
You have no idea which packages are and aren't affected. This bug is a perfect example of one of the many things you didn't think of. Why not just do it properly in a way that's guaranteed not to introduce new breakages?
Comment 13 Zac Medico gentoo-dev 2009-03-10 09:28:05 UTC
This is fixed in 2.2_rc24 which is in package.mask. I'll close this bug when it's also released in 2.1.6.8.
Comment 14 Zac Medico gentoo-dev 2009-03-13 20:42:18 UTC
This is released in 2.1.6.8.
Comment 15 Larry the Git Cow gentoo-dev 2024-02-27 03:12:56 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/portage.git/commit/?id=0896ede9663d1ffb10434ee163205e7d9a909667

commit 0896ede9663d1ffb10434ee163205e7d9a909667
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2024-02-26 00:12:13 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2024-02-27 02:52:19 +0000

    Scheduler: Support parallel-install with merge-wait
    
    For system packages, always serialize install regardless of
    parallel-install, in order to mitigate failures triggered
    by fragile states as in bug 256616. For other packages,
    continue to populate self._task_queues.merge, which will
    serialize install unless parallel-install is enabled.
    
    Fixes: 825db01b91a3 ("Add merge-wait FEATURES setting enabled by default")
    Bug: https://bugs.gentoo.org/256616
    Bug: https://bugs.gentoo.org/925213
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 lib/_emerge/PackageMerge.py |  4 ++--
 lib/_emerge/Scheduler.py    | 44 +++++++++++++++++++++++++++++++++-----------
 man/make.conf.5             |  9 ++++++---
 3 files changed, 41 insertions(+), 16 deletions(-)