I wonder if we can just drop /etc/shells altogether from base-files? Alex
On Fri 24. Jan 2025 at 16.26, Marek Vasut via lists.openembedded.org <marex= [email protected]> wrote: > On 1/23/25 10:18 PM, Khem Raj wrote: > > On Thu, Jan 23, 2025 at 12:12 PM Marek Vasut via > > lists.openembedded.org <[email protected]> wrote: > >> > >> Remove /bin/sh from bash RPROVIDES as this has a side-effect which > >> confuses rpm package manager when also busybox provides /bin/sh and > >> base-files depend on /bin/sh . The problem is broken down below. > >> > >> First, bash depends on base-files and bash pkg_postinst must run > >> after base-files was installed, because it requires /etc/shells > >> provided by base-files to be in place. > >> > >> Second, base-files depends on /bin/sh, which is provided by either > >> bash or busybox in this case. This is the actual problem here, if > >> bash is selected as /bin/sh provider, then there is cyclic dependency > >> between bash and base-files, and that confuses dnf which may install > >> the packages in the wrong order, bash first and base-files second . > >> > >> To make this worse, if busybox is also /bin/sh provider, it can and > >> does happen that some systems pick busybox as the /bin/sh provider, > >> while others pick bash as the /bin/sh provider, and that cyclic > >> dependency does not always appear. > >> > >> Attempt to break this dependency, drop RPROVIDES /bin/sh from bash > >> recipe to always force base-files to pick /bin/sh from busybox . > >> (I am really unsure about this approach) > >> > >> Signed-off-by: Marek Vasut <[email protected]> > >> --- > >> Cc: Alexander Kanavin <[email protected]> > >> Cc: Alexandre Belloni <[email protected]> > >> Cc: Richard Purdie <[email protected]> > >> --- > >> meta/recipes-extended/bash/bash.inc | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/meta/recipes-extended/bash/bash.inc > b/meta/recipes-extended/bash/bash.inc > >> index 634209c9115..6a061b8a612 100644 > >> --- a/meta/recipes-extended/bash/bash.inc > >> +++ b/meta/recipes-extended/bash/bash.inc > >> @@ -134,4 +134,4 @@ FILES:${PN}-loadable += "${libdir}/bash/*" > >> > >> # Limit the RPROVIDES here to class target so that if usrmerge is > enabled for nativesdk, it does not > >> # include host system paths in /bin/ > >> -RPROVIDES:${PN}:append:class-target = " > ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/bash', > '', d)}" > >> +RPROVIDES:${PN}:append:class-target = " > ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/bash', '', d)}" > > > > Does this now mean that system will always need busybox ? > > The system will require some other /bin/sh provider than bash . > > I suspect there will always be one , but maybe I am wrong and there are > systems without busybox and with bash only (probably yes) ? > > > some distros > > may not want that and simply use > > other variants to fill in the shoes. I wonder if shell choice could be > > a distro option or image feature which can then > > help sort this out ? > I don't think this specific fix is the correct solution, I think what I > need to figure out is how to make sure base-files is installed before > bash, even if there is this cyclic dependency which confuses rpm/dnf > into installing the two packages in arbitrary order: > > base-files -depends_on-> /bin/sh -depends_on-> bash (the /bin/sh provider) > > bash -depends_on-> base-files > > I still have to check the input from Martin Jansa , there was some hint > which might be the better fix for this. > > Any ideas ? > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#210242): https://lists.openembedded.org/g/openembedded-core/message/210242 Mute This Topic: https://lists.openembedded.org/mt/110778651/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
