On Sun, Feb 19, 2023 at 5:40 PM Bertrand Jacquin <bertr...@jacquin.bzh> wrote:
>
> Using portage to bootstrap gentoo install can lead to the following
> warning when ROOT is empty:
>
>   >> Running pre-merge checks for acct-group/root-0
>   grep: /tmp/0xff.z2MjAjJXuo/root/etc/group: No such file or directory
>   grep: /tmp/0xff.z2MjAjJXuo/root/etc/group: No such file or directory
>
> This change prevent egetent() from attempting to lookup key if database
> does not exit, removing error from output.
>
> Signed-off-by: Bertrand Jacquin <bertr...@jacquin.bzh>
> ---
>  eclass/user-info.eclass | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/eclass/user-info.eclass b/eclass/user-info.eclass
> index b18f280c1022..79d33d6881ae 100644
> --- a/eclass/user-info.eclass
> +++ b/eclass/user-info.eclass
> @@ -1,4 +1,4 @@
> -# Copyright 1999-2022 Gentoo Authors
> +# Copyright 1999-2023 Gentoo Authors
>  # Distributed under the terms of the GNU General Public License v2
>
>  # @ECLASS: user-info.eclass
> @@ -34,6 +34,9 @@ egetent() {
>         *) die "sorry, database '${db}' not yet supported; file a bug" ;;
>         esac
>
> +       # return immediately if db does not exist
> +       [[ ! -e "${EROOT}/etc/${db}" ]] && return 1
> +
>         case ${CHOST} in
>         *-freebsd*|*-dragonfly*)
>                 case ${db} in
>

This change makes sense to me.

The "return 1" made me think about the return value a bit more. If we
want to replicate the behavior of getent from glibc, we should return
2 if the user/group does not exist or if the passwd/group files are
missing. I don't think any ebuild/eclass code really cares about the
specific status though, so we can leave that alone for now.

Reply via email to