Openembedded Core Discussions
 help / color / mirror / Atom feed
From: "Peter A. Bigot" <pab@pabigot.com>
To: openembedded-core@lists.openembedded.org
Subject: Re: opkg/rpm inconsistencies in multilib image installations
Date: Sat, 15 Nov 2014 18:05:38 -0600	[thread overview]
Message-ID: <5467EA52.6020008@pabigot.com> (raw)
In-Reply-To: <54677D77.2090104@pabigot.com>

On 11/15/2014 10:21 AM, Peter A. Bigot wrote:
> tl;dr: multilib apparently defines its own root directory underneath 
> ${IMAGE_ROOT} which includes copies of /etc files like passwd that are 
> not known to pseudo.  opkg and rpm differ in whether useradd scripts 
> are run when a multilib package is installed, resulting in failures to 
> add users/groups during multilib install when using opkg because a 
> sanity check thinks they already exist because pseudo is looking 
> somewhere else.

Actually, I'm going to retract this whole thing, since I'm now unable to 
reproduce any of the problems described here.  Possibly because of 
changes to the pseudo patches that fixed problems I thought were 
unrelated to this behavior.

Sorry for the noise.

Peter

>
> Details:
>
> Ross pointed out in 
> http://lists.openembedded.org/pipermail/openembedded-core/2014-November/099032.html 
> that the patches to prevent using host /etc files in pseudo failed 
> under multilib and asked me to look into it.
>
> Recall that with these patches PSEUDO_PASSWD (where pseudo looks up 
> users and groups for getpwnam(3) etc) is set in bitbake.conf to:
>
> PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${STAGING_DIR_NATIVE}"
>
> where STAGING_DIR_NATIVE holds the fallback files that provide only 
> enough entries to get fs-perms.txt to work before the target staging 
> /etc exists.
>
> Because images are different and with some packagers base-passwd can't 
> be installed unless user root can be resolved, in an (updated) 
> image.bbclass we use this:
>
> # Prefer image, but use the fallback files for lookups if the image ones
> # aren't yet available.
> PSEUDO_PASSWD = "${IMAGE_ROOTFS}:${STAGING_DIR_NATIVE}"
>
> Adding this line to perform_groupadd in useradd_base.bbclass
>        bbnote "rootdir $rootdir 
> PSEUDO_PASSWD=${PSEUDO_PASSWD}=$PSEUDO_PASSWD"
>
> and adding linebreaks for readability, I'm finding that when 
> lib32-dbus-1 is installed with PACKAGE_CLASSES = "package_ipk" we have:
>
> rootdir
>  /prj/oe/omap/build-ab-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato/1.0-r0/multilib/lib32 
>
> PSEUDO_PASSWD
> =/prj/oe/omap/build-ab-multilib/tmp/sysroots/lib32-qemux86-64
> :/prj/oe/omap/build-ab-multilib/tmp/sysroots/x86_64-linux
> =/prj/oe/omap/build-ab-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato/1.0-r0/rootfs 
>
> :/prj/oe/omap/build-ab-multilib/tmp/sysroots/x86_64-linux
>
> In other words, useradd.bbclass (1) thinks the etc directory is in $D, 
> the bitbake variable PSEUDO_PASSWD during build (2) thinks it's in the 
> multilib 32-bit target staging directory, and the PSEUDO_PASSWD 
> actually running (3) thinks it's in IMAGE_ROOT.
>
> Because of this, useradd.bbclass can't find netdev in $D/etc/group so 
> invokes groupadd which does a sanity check and complains that netdev 
> already exists in ${IMAGE_ROOT}/etc/group and things crumble to a stop.
>
> Interestingly the build+install works with PACKAGE_CLASSES = 
> "package_rpm" which shows this for the install of 
> dbus-1-1.8.2-r0.3.core2_64.rpm:
>
> rootdir
>  /prj/oe/omap/build-ab-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato/1.0-r0/rootfs 
>
> PSEUDO_PASSWD
> =/prj/oe/omap/build-ab-multilib/tmp/sysroots/qemux86-64
> :/prj/oe/omap/build-ab-multilib/tmp/sysroots/x86_64-linux
> =/prj/oe/omap/build-ab-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato/1.0-r0/rootfs 
>
> :/prj/oe/omap/build-ab-multilib/tmp/sysroots/x86_64-linux
>
> and either does not install dbus-1-1.8.2-r0.3.lib32_x86.rpm or somehow 
> prevents the groupadd scripts from being run.
>
> Whatever's going on here, RPM and OPKG appear to differ in the 
> environment and selected packages for multilib images, which surely 
> isn't right. I didn't check deb.
>
> Once somebody reconciles the packager behaviors, I'll return to deal 
> with any remaining changes to pseudo.  If we have to allow multilib to 
> create users/groups in a non-standard root directory it's gonna get 
> messy.
>
> Peter



  reply	other threads:[~2014-11-16  0:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-15 16:21 opkg/rpm inconsistencies in multilib image installations Peter A. Bigot
2014-11-16  0:05 ` Peter A. Bigot [this message]
2014-11-16 12:59   ` Richard Purdie
2014-11-16 22:52     ` Mark Hatle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5467EA52.6020008@pabigot.com \
    --to=pab@pabigot.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox