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

Cedric Bosdonnat cbosdonnat at suse.com
Thu Jul 20 16:09:53 UTC 2017


On Thu, 2017-07-20 at 17:01 +0200, Pino Toscano wrote:
> 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.

Then may be we should handle the values in the list to try to find one that fits
the values we know

> >      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.

OK.

> 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 ...]

That doesn't change much from the current state, unless we add a case for
ID_LIKE=suse

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

My problem is that openSUSE Tumbleweed (the one with the problem) doesn't have
the SuSE-release file anymore and has a too minimalistic os-release file.

--
Cedric




More information about the Libguestfs mailing list