[Libguestfs] [PATCH] appliance: read ID_LIKE from os-release as a fallback

Pino Toscano ptoscano at redhat.com
Thu Jul 20 15:01:43 UTC 2017


On Thursday, 20 July 2017 16:21:40 CEST Cédric Bosdonnat wrote:
> In the appliance used to build the packages for openSUSE, os-release
> is super minimal and only had ID_LIKE=suse. The code setting the
> DISTRO variable only searches for ID variable so far, resulting in
> invalid packagelist on openSUSE.
> 
> This fix reads ID_LIKE as a fallback if ID contains nothing.
> ---
>  m4/guestfs_appliance.m4 | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/m4/guestfs_appliance.m4 b/m4/guestfs_appliance.m4
> index fbba3373f..ce45256bc 100644
> --- a/m4/guestfs_appliance.m4
> +++ b/m4/guestfs_appliance.m4
> @@ -97,9 +97,15 @@ AC_MSG_CHECKING([which Linux distro for package names])
>  if test -f /etc/os-release; then
>      ( . /etc/os-release && echo $ID | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@' ) >&AS_MESSAGE_LOG_FD
>      DISTRO="`. /etc/os-release && echo $ID | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@'`"
> +    dnl when building SUSE-family packages, the OBS appliance has no ID in os-release,
> +    dnl only ID_LIKE set to suse. Read ID_LIKE as a fallback if no ID is found.
> +    if test -z "$DISTRO"; then
> +        ( . /etc/os-release && echo $ID_LIKE | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@' ) >&AS_MESSAGE_LOG_FD
> +        DISTRO="`. /etc/os-release && echo $ID_LIKE | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@'`"
> +    fi

NACK -- while this would be a fallback, theoretically ID_LIKE is a list
of distros.

>      AS_CASE([$DISTRO],
>              [FEDORA | RHEL | CENTOS],[DISTRO=REDHAT],
> -            [OPENSUSE | SLED | SLES],[DISTRO=SUSE],
> +            [OPENSUSE | SLED | SLES | SUSE],[DISTRO=SUSE],

There is no need for this, since a value of $DISTRO not matching any of
the cases in AS_CASE is left as-is, and SUSE is already the right value.

What I would do is something like the following (untested):

if test -f /etc/os-release; then
  [... get DISTRO like done now ...]
endif
if -n "$DISTRO" then
  : # value already found in os-release
elif test -f /etc/debian_version; then
  [... etc, like now ...]

This way, the lack of ID in os-release will trigger the detection using
the various release-like files.  WDYT?

-- 
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20170720/0785e05b/attachment.sig>


More information about the Libguestfs mailing list