On Sun, Feb 19, 2023 at 5:40 PM Bertrand Jacquin 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
> ---
> 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.