On Fri, 2021-11-19 at 11:34 +0000, Luca Bocassi wrote: > From: Luca Boccassi <luca.bocca...@microsoft.com> > > The useradd class is a no-op in the nativesdk case, so chown will fail. > Skip them. > > Signed-off-by: Luca Boccassi <luca.bocca...@microsoft.com> > --- > v2: use "${PN}" = "${BPN}" as suggested by reviewers
I think that was bad advice since this would break multilib variants of the systemd recipe and I'd much prefer this was conditional on nativesdk. > meta/recipes-core/systemd/systemd_249.5.bb | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/meta/recipes-core/systemd/systemd_249.5.bb > b/meta/recipes-core/systemd/systemd_249.5.bb > index 8bdc0ca028..2df2de0cf3 100644 > --- a/meta/recipes-core/systemd/systemd_249.5.bb > +++ b/meta/recipes-core/systemd/systemd_249.5.bb > @@ -275,7 +275,10 @@ do_install() { > # which is expected to be empty. > rm -rf ${D}${localstatedir}/log > else > - chown root:systemd-journal ${D}${localstatedir}/log/journal > + # The useradd class is a no-op in the nativesdk case, so chown > will fail > + if [ "${PN}" = "${BPN}" ]; then > + chown root:systemd-journal > ${D}${localstatedir}/log/journal > + fi > > # journal-remote creates this at start > rm -rf ${D}${localstatedir}/log/journal/remote I'm guessing this is only failing on systems that don't have a systemd-jounral group as it built ok for me? The better way to fix this is probably to replicate what we have for native, i.e. the entry in the class: native.bbclass:PATH:prepend = "${COREBASE}/scripts/native-intercept:" which puts a chown and chgrp into PATH which doesn't do anything. We could do something similar for nativesdk and it would avoid the need for these if statements and solve the problem generically. I am also a bit concerned about some of the other "creeping" dependencies so I experimented a little with master to see how much it could be cut down. I could get working builds with the lines below: """ PACKAGECONFIG:remove:class-native = "vconsole xkbcommon sysvinit" PACKAGECONFIG:append:class-native = " serial-getty-generator" RDEPENDS:${PN}:remove:class-native = "volatile-binds" RRECOMMENDS:${PN}:remove:class-native = "os-release systemd-conf" RRECOMMENDS:${PN}-vconsole-setup:class-native = "" PACKAGECONFIG:remove:class-nativesdk = "vconsole xkbcommon sysvinit" PACKAGECONFIG:append:class-nativesdk = " serial-getty-generator" RDEPENDS:${PN}:remove:class-nativesdk = "volatile-binds" RRECOMMENDS:${PN}:remove:class-nativesdk = "os-release systemd-conf" RRECOMMENDS:${PN}-vconsole-setup:class-nativesdk = "" # Nothing picks up /var in the nativesdk case do_install:append:class-nativesdk () { rm -rf ${D}/var } BBCLASSEXTEND = "native nativesdk" """ which removes the need to change os-release, kbd, systemd-conf and systemd- getty. To merge, we'd want to restructure this to alter the variable construction so we can avoid the use of the remove operator but it is an easy way to test and evaluate the extent of changes needed. The above also nearly has native builds working as well. To get that to build I had to patch meson.build: Index: git/meson.build =================================================================== --- git.orig/meson.buildIndex: git/meson.build =================================================================== --- git.orig/meson.build +++ git/meson.build @@ -745,7 +745,7 @@ conf.set('CONTAINER_UID_BASE_MAX', conta nobody_user = get_option('nobody-user') nobody_group = get_option('nobody-group') -if not meson.is_cross_build() +if false and not meson.is_cross_build() getent_result = run_command('getent', 'passwd', '65534') if getent_result.returncode() == 0 name = getent_result.stdout().split(':')[0] since we want to use the "cross" codepath there regardless. That lets everything build but I did then see errors due to absolute path symlinks which would likely be fixable. I did this mainly as I wanted to understand how much of systemd is being build and packaged since many of these packages will not make sense in a SDK or a native build. I think the final piece of patch which we'd need to be able to merge something like this is to trim down what is being packaged up to the pieces which are actually useful in the native or nativesdk cases. Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#158568): https://lists.openembedded.org/g/openembedded-core/message/158568 Mute This Topic: https://lists.openembedded.org/mt/87165491/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-