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