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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to