On Wed, 2023-12-06 at 20:21 +0000, Peter Kjellerstedt wrote: > Since I've seen Richard's reply and his reluctance to merge this, > this is mostly technical.
I know but I don't understand what "batter ways" to do this is, I have tested symlinks/--prefix/--root and bind mounting the passwd/shadow files and none of then work. Using overlaysfs is an inferior solution to me that makes the whole /etc writeable, may break when RFS underneath is upgraded and I am unsure how resilient overlayfs is in case of power failure. What else is there ? > > I would use either PW_DIR = "${sysconfdir}/pwdb" or PW_DIR:append = "/pwdb". > Using "/etc" (and other hardcoded paths) should be avoided wherever > possible. Thanks, will tru there out. Jocke > > //Peter > > > -----Original Message----- > > From: Joakim Tjernlund <joakim.tjernl...@infinera.com> > > Sent: den 29 november 2023 12:11 > > To: openembedded-core@lists.openembedded.org; Peter Kjellerstedt > > <peter.kjellerst...@axis.com> > > Subject: Re: [OE-core] [kirkstone][PATCH 2/4] base-passwd: Add PW_SUBDIR > > > > Hi Peter :) > > > > All good comments, will fix accordingly. Not sure how PW_DIR ?= > > "${sysconfdir}" will work though. > > > > How do you envision one should set PW_DIR in distro .conf or layer.conf? > > Just PW_DIR = "/etc/pwdb" or PW_DIR = "${sysconfdir}/pwdb" ? > > > > Jocke > > > > On Sun, 2023-11-26 at 21:21 +0000, Peter Kjellerstedt wrote: > > > > -----Original Message----- > > > > From: openembedded-core@lists.openembedded.org <openembedded- > > c...@lists.openembedded.org> On Behalf Of Joakim Tjernlund via > > lists.openembedded.org > > > > Sent: den 24 november 2023 15:11 > > > > To: openembedded-core@lists.openembedded.org > > > > Cc: Joakim Tjernlund <joakim.tjernl...@infinera.com> > > > > Subject: [OE-core] [kirkstone][PATCH 2/4] base-passwd: Add PW_SUBDIR > > > > > > > > Add support for creating passwd files in a /etc subdir > > > > Set PW_SUBIR to pwdb to get passwd files in /etc/pwdb > > > > > > > > Signed-off-by: Joakim Tjernlund <joakim.tjernl...@infinera.com> > > > > --- > > > > .../base-passwd/base-passwd_3.5.29.bb | 24 ++++++++++++------ > > - > > > > 1 file changed, 16 insertions(+), 8 deletions(-) > > > > > > > > diff --git a/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb > > b/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb > > > > index ef7792ae49..e453be0763 100644 > > > > --- a/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb > > > > +++ b/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb > > > > @@ -20,6 +20,9 @@ SRC_URI = > > "https://launchpad.net/debian/+archive/primary/+files/${BPN}_${PV}.tar > > > > SRC_URI[md5sum] = "6beccac48083fe8ae5048acd062e5421" > > > > SRC_URI[sha256sum] = > > "f0b66388b2c8e49c15692439d2bee63bcdd4bbbf7a782c7f64accc55986b6a36" > > > > > > > > +#Set PW_SUBDIR to pwdb to get passwd files in /etc/pwdb > > > > +PW_SUBDIR ?= "" > > > > + > > > > > > Rather than defining a subdirectory, I would recommend defining the full > > > path, e.g.: > > > > > > PW_DIR ?= "${sysconfdir}" > > > > > > This avoids generating a lot of "//" in the middle of paths for the > > majority > > > of us who do not use a subdirectory for the password files. > > > > > > > # the package is taken from launchpad; that source is static and goes > > stale > > > > # so we check the latest upstream from a directory that does get > > updated > > > > UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/b/base-passwd/" > > > > @@ -50,10 +53,11 @@ basepasswd_sysroot_postinst() { > > > > #!/bin/sh > > > > > > > > # Install passwd.master and group.master to sysconfdir > > > > -install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir} > > > > +install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir}/${PW_SUBDIR} > > > > for i in passwd group; do > > > > install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base- > > passwd/\$i.master \ > > > > - ${STAGING_DIR_TARGET}${sysconfdir}/\$i > > > > + ${STAGING_DIR_TARGET}${sysconfdir}/${PW_SUBDIR}/\$i > > > > + [ -n "${PW_SUBDIR}" ] && ln -fs ${PW_SUBDIR}/\$i > > ${STAGING_DIR_TARGET}${sysconfdir}/\$i > > > > > > I generally recommended to use `[ ! ... ] || ...` instead of `[ ... ] && > > ...`: > > > > > > [ -z "${PW_SUBDIR}" ] || ln -fs ${PW_SUBDIR}/\$i > > ${STAGING_DIR_TARGET}${sysconfdir}/\$i > > > > > > Or, assuming my recommendation above is followed: > > > > > > [ "${PW_DIR}" = "${sysconfdir}" ] || > > > ln -fsr ${STAGING_DIR_TARGET}${PW_DIR}/\$i > > ${STAGING_DIR_TARGET}${sysconfdir}/\$i > > > > > > The reason is that the return status ($?) of `[ ... ] && ...` is 1 if > > the > > > test fails, while it is 0 for `[ ! ... ] || ...` when the test succeeds. > > > > > > > done > > > > > > > > # Run any useradd postinsts > > > > @@ -89,15 +93,19 @@ python populate_packages:prepend() { > > > > f.close() > > > > > > > > preinst = """#!/bin/sh > > > > -mkdir -p $D${sysconfdir} > > > > -if [ ! -e $D${sysconfdir}/passwd ]; then > > > > -\tcat << 'EOF' > $D${sysconfdir}/passwd > > > > +mkdir -p $D${sysconfdir}/${PW_SUBDIR} > > > > +if [ ! -e $D${sysconfdir}/${PW_SUBDIR}/passwd ]; then > > > > +\tcat << 'EOF' > $D${sysconfdir}/${PW_SUBDIR}/passwd > > > > """ + passwd + """EOF > > > > fi > > > > -if [ ! -e $D${sysconfdir}/group ]; then > > > > -\tcat << 'EOF' > $D${sysconfdir}/group > > > > +if [ ! -e $D${sysconfdir}/${PW_SUBDIR}/group ]; then > > > > +\tcat << 'EOF' > $D${sysconfdir}/${PW_SUBDIR}/group > > > > """ + group + """EOF > > > > fi > > > > +if [ -n "${PW_SUBDIR}" ]; then > > > > +ln -fs ${PW_SUBDIR}/passwd $D${sysconfdir}/passwd > > > > +ln -fs ${PW_SUBDIR}/group $D${sysconfdir}/group > > > > > > Use \t to indent the above two lines like the code before. > > > > > > > +fi > > > > """ > > > > d.setVar(d.expand('pkg_preinst:${PN}'), preinst) > > > > } > > > > @@ -114,5 +122,5 @@ pkg_postinst:${PN}-update () { > > > > if [ -n "$D" ]; then > > > > exit 0 > > > > fi > > > > -${sbindir}/update-passwd > > > > +${sbindir}/update-passwd -P /etc/${PW_SUBDIR}/passwd -S > > /etc/${PW_SUBDIR}/shadow -G /etc/${PW_SUBDIR}/group > > > > > > Replace /etc with ${sysconfdir}. > > > > > > > } > > > > -- > > > > 2.41.0 > > > > > > //Peter > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#191942): https://lists.openembedded.org/g/openembedded-core/message/191942 Mute This Topic: https://lists.openembedded.org/mt/102780967/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-