Fix distro detecting on openEuler

Previous patch support_OPENEULER_to_configure.patch detects openEuler by
checking content of file /etc/openEuler-release for the ID value.
However the right file to check is /etc/os-release. This mistake leads
to incorrectly detecting the distro as REDHAT.

As upstream already supported openEuler since commit 1d8924c34, backport
it with minor changes to properly support openEuler.

And after openEuler is correctly detected, appliance package list need
to be updated to include the correct package names for openEuler. It was
using the list for REDHAT before, which is not fully correct.

This fixes issue #IB2MW0.

Signed-off-by: Kai Liu <kai.liu@windriver.com>
This commit is contained in:
Kai Liu 2024-11-07 10:29:55 +08:00
parent 775b0890e3
commit cb29515bb6
4 changed files with 199 additions and 102 deletions

View File

@ -0,0 +1,129 @@
From 1d8924c343b2f0022767c1d5d5c059ea9d8f4d7e Mon Sep 17 00:00:00 2001
From: Wang Guoquan <wangguoquan03@foxmail.com>
Date: Tue, 10 Sep 2024 16:11:03 +0800
Subject: [PATCH] libguestfs: Support openEuler
openEuler is simliar to CentOS, but the ID is not lower-case string,
as below:
NAME="openEuler"
VERSION="24.03 (LTS)"
ID="openEuler"
VERSION_ID="24.03"
PRETTY_NAME="openEuler 24.03 (LTS)"
ANSI_COLOR="0;31"
Signed-off-by: Wang Guoquan <wangguoquan03@foxmail.com>
---
daemon/inspect_fs.ml | 5 +++++
daemon/inspect_fs_unix.ml | 1 +
daemon/inspect_types.ml | 2 ++
daemon/inspect_types.mli | 1 +
generator/actions_inspection.ml | 4 ++++
m4/guestfs-appliance.m4 | 5 +++--
6 files changed, 16 insertions(+), 2 deletions(-)
Index: libguestfs-1.49.5/daemon/inspect_fs.ml
===================================================================
--- libguestfs-1.49.5.orig/daemon/inspect_fs.ml
+++ libguestfs-1.49.5/daemon/inspect_fs.ml
@@ -265,6 +265,7 @@ and check_package_format { distro } =
| Some DISTRO_MANDRIVA
| Some DISTRO_MEEGO
| Some DISTRO_NEOKYLIN
+ | Some DISTRO_OPENEULER
| Some DISTRO_OPENMANDRIVA
| Some DISTRO_OPENSUSE
| Some DISTRO_ORACLE_LINUX
@@ -362,6 +363,9 @@ and check_package_management { distro; v
| Some DISTRO_PARDUS ->
Some PACKAGE_MANAGEMENT_PISI
+ | Some DISTRO_OPENEULER->
+ Some PACKAGE_MANAGEMENT_DNF
+
| Some DISTRO_MAGEIA
| Some DISTRO_MANDRIVA ->
Some PACKAGE_MANAGEMENT_URPMI
Index: libguestfs-1.49.5/daemon/inspect_fs_unix.ml
===================================================================
--- libguestfs-1.49.5.orig/daemon/inspect_fs_unix.ml
+++ libguestfs-1.49.5/daemon/inspect_fs_unix.ml
@@ -151,6 +151,7 @@ and distro_of_os_release_id = function
| "kylin" -> Some DISTRO_KYLIN
| "mageia" -> Some DISTRO_MAGEIA
| "neokylin" -> Some DISTRO_NEOKYLIN
+ | "openEuler" -> Some DISTRO_OPENEULER
| "openmandriva" -> Some DISTRO_OPENMANDRIVA
| "opensuse" -> Some DISTRO_OPENSUSE
| s when String.is_prefix s "opensuse-" -> Some DISTRO_OPENSUSE
Index: libguestfs-1.49.5/daemon/inspect_types.ml
===================================================================
--- libguestfs-1.49.5.orig/daemon/inspect_types.ml
+++ libguestfs-1.49.5/daemon/inspect_types.ml
@@ -88,6 +88,7 @@ and distro =
| DISTRO_NEOKYLIN
| DISTRO_NETBSD
| DISTRO_OPENBSD
+ | DISTRO_OPENEULER
| DISTRO_OPENMANDRIVA
| DISTRO_OPENSUSE
| DISTRO_ORACLE_LINUX
@@ -222,6 +223,7 @@ and string_of_distro = function
| DISTRO_NEOKYLIN -> "neokylin"
| DISTRO_NETBSD -> "netbsd"
| DISTRO_OPENBSD -> "openbsd"
+ | DISTRO_OPENEULER -> "openeuler"
| DISTRO_OPENMANDRIVA -> "openmandriva"
| DISTRO_OPENSUSE -> "opensuse"
| DISTRO_ORACLE_LINUX -> "oraclelinux"
Index: libguestfs-1.49.5/daemon/inspect_types.mli
===================================================================
--- libguestfs-1.49.5.orig/daemon/inspect_types.mli
+++ libguestfs-1.49.5/daemon/inspect_types.mli
@@ -95,6 +95,7 @@ and distro =
| DISTRO_NEOKYLIN
| DISTRO_NETBSD
| DISTRO_OPENBSD
+ | DISTRO_OPENEULER
| DISTRO_OPENMANDRIVA
| DISTRO_OPENSUSE
| DISTRO_ORACLE_LINUX
Index: libguestfs-1.49.5/generator/actions_inspection.ml
===================================================================
--- libguestfs-1.49.5.orig/generator/actions_inspection.ml
+++ libguestfs-1.49.5/generator/actions_inspection.ml
@@ -250,6 +250,10 @@ NetBSD.
OpenBSD.
+=item \"openeuler\"
+
+openEuler.
+
=item \"openmandriva\"
OpenMandriva Lx.
Index: libguestfs-1.49.5/m4/guestfs-appliance.m4
===================================================================
--- libguestfs-1.49.5.orig/m4/guestfs-appliance.m4
+++ libguestfs-1.49.5/m4/guestfs-appliance.m4
@@ -119,7 +119,8 @@ if test "x$ENABLE_APPLIANCE" = "xyes"; t
[DISTRO=REDHAT],
[OPENSUSE* | SLED | SLES],[DISTRO=SUSE],
[ARCH | MANJARO | ARTIX],[DISTRO=ARCHLINUX],
- [OPENMANDRIVA],[DISTRO=OPENMANDRIVA])
+ [OPENMANDRIVA],[DISTRO=OPENMANDRIVA],
+ [OPENEULER],[DISTRO=OPENEULER])
AC_MSG_RESULT([$DISTRO (from /etc/os-release)])
else
AC_MSG_ERROR([/etc/os-release not available, please specify the distro using --with-distro=DISTRO])
@@ -129,7 +130,7 @@ if test "x$ENABLE_APPLIANCE" = "xyes"; t
AC_SUBST([DISTRO])
fi
AM_CONDITIONAL([HAVE_RPM],
- [AS_CASE([$DISTRO], [REDHAT | SUSE | OPENMANDRIVA | MAGEIA ], [true],
+ [AS_CASE([$DISTRO], [REDHAT | SUSE | OPENMANDRIVA | MAGEIA | OPENEULER ], [true],
[*], [false])])
AM_CONDITIONAL([HAVE_DPKG],
[AS_CASE([$DISTRO], [DEBIAN | UBUNTU ], [true],

View File

@ -4,7 +4,7 @@
Name: libguestfs
Version: 1.49.5
Release: 2
Release: 3
Epoch: 1
Summary: A set of tools for accessing and modifying virtual machine (VM) disk images
License: LGPLv2+
@ -14,7 +14,9 @@ Source1: guestfish.sh
Source2: yum.conf.in
Patch0001: 001-port-to-php-8.0.0.patch
Patch0002: fix-not-striped.patch
Patch0003: support_OPENEULER_to_configure.patch
# Backport of https://github.com/libguestfs/libguestfs/commit/1d8924c343b2f0022767c1d5d5c059ea9d8f4d7e
Patch0003: backport-support-openEuler.patch
Patch0004: provide-openEuler-appliance-package-list.patch
BuildRequires: gcc-c++, rpcgen, libtirpc-devel, supermin-devel >= 5.1.18, hivex-devel >= 1.2.7-7, ocaml-hivex-devel, perl(Pod::Simple), perl(Pod::Man)
BuildRequires: /usr/bin/pod2text, po4a, augeas-devel >= 1.7.0, readline-devel, genisoimage, libxml2-devel, createrepo, glibc-static, libselinux-utils
@ -359,6 +361,12 @@ rm -rf ocaml/html/.gitignore
%lang(uk) %{_mandir}/uk/man*/*
%changelog
* Thu Nov 7 2024 Kai Liu <kai.liu@windriver.com> - 1:1.49.5-3
- Replace patch support_OPENEULER_to_configure.patch by backport-support-openEuler.patch
which is backported from upstream, fix issue of detecting openEuler.
- Add provide-openEuler-appliance-package-list.patch after correctly detected openEuler.
It was using REDHAT list before.
* Wed Feb 22 2023 wulei <wulei80@h-partners.com> - 1:1.49.5-2
- Enable Vala bindings

View File

@ -0,0 +1,60 @@
From: Kai Liu <kai.liu@windriver.com>
Date: Fri, 8 Nov 2024 12:44:03 +0800
Subject: Provide openEuler appliance package list
Although upstream already supported distro detecting for openEuler,
package list for openEuler appliance is still missing.
Index: libguestfs-1.49.5/appliance/packagelist.in
===================================================================
--- libguestfs-1.49.5.orig/appliance/packagelist.in
+++ libguestfs-1.49.5/appliance/packagelist.in
@@ -11,6 +11,7 @@ dnl ARCHLINUX=1 For Archlinux.
dnl SUSE=1 For OpenSUSE.
dnl FRUGALWARE=1 For Frugalware.
dnl MAGEIA=1 For Mageia.
+dnl OPENEULER=1 For openEuler.
dnl
dnl There is also a list of packages which are excluded if they appear
dnl as dependencies of the packages below. See: excludelist.in
@@ -211,6 +212,29 @@ ifelse(OPENMANDRIVA,1,
zstd
)
+ifelse(OPENEULER,1,
+ clevis
+ cryptsetup
+ dhcp
+ gfs2-utils
+ grub2
+ hfsplus-tools
+ iproute
+ iputils
+ kernel
+ nilfs-utils
+ ntfs-3g
+ openssh-clients
+ policycoreutils
+ reiserfs-utils
+ rpm-libs
+ syslinux-extlinux
+ systemd dnl for /sbin/reboot and udevd
+ vim-minimal
+ xz
+ zstd
+)
+
include(guestfsd.deps)
acl
@@ -286,6 +310,10 @@ ifelse(MAGEIA,1,
qemu-img
which
)
+ifelse(OPENEULER,1,
+ qemu-img
+ which
+)
curl
kpartx
dnl (virt-dib) tools optionally used for elements

View File

@ -1,100 +0,0 @@
From 77c67d0e597f5408c3d005ef624ef3d417271e0e Mon Sep 17 00:00:00 2001
From: sunguoshuai <sunguoshuai@huawei.com>
Date: Thu, 9 Sep 2021 21:34:40 +0800
Subject: [PATCH] fix not striped
---
libguestfs/configure | 28 + 1 -
libguestfs/m4/guestfs-appliance.m4 | 22 + 1 -
2 files changed, 50 insertions(+), 2 deletions(-)
diff -ruN libguestfs/configure libguestfs-1.49.5/configure
--- libguestfs/configure 2022-11-16 23:45:04.603664947 +0800
+++ libguestfs-1.49.5/configure 2022-11-17 01:11:33.528806347 +0800
@@ -26381,7 +26381,7 @@
fi ) | tr '[:lower:]' '[:upper:]'
)"
case $DISTRO in #(
- FEDORA | RHEL | CENTOS | ALMALINUX | CLOUDLINUX \
+ FEDORA | RHEL | CENTOS | OPENEULER | ALMALINUX | CLOUDLINUX \
| ROCKY) :
DISTRO=REDHAT ;; #(
OPENSUSE* | SLED | SLES) :
@@ -26395,11 +26395,37 @@
esac
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DISTRO (from /etc/os-release)" >&5
printf "%s\n" "$DISTRO (from /etc/os-release)" >&6; }
+
+elif test -f /etc/openEuler-release; then
+ echo "/etc/openEuler-release:" >&5
+ cat /etc/openEuler-release >&5
+ DISTRO="$(
+ . /etc/openEuler-release
+ ( if test -n "$ID_LIKE"; then
+ echo $ID_LIKE | $AWK '{print $1}'
+ else
+ echo $ID
+ fi ) | tr '[:lower:]' '[:upper:]'
+ )"
+ case $DISTRO in #(
+ FEDORA | RHEL | CENTOS | OPENEULER | ALMALINUX | CLOUDLINUX \
+ | ROCKY) :
+ DISTRO=REDHAT ;; #(
+ OPENSUSE* | SLED | SLES) :
+ DISTRO=SUSE ;; #(
+ ARCH | MANJARO | ARTIX) :
+ DISTRO=ARCHLINUX ;; #(
+ OPENMANDRIVA) :
+ DISTRO=OPENMANDRIVA ;; #(
+ *) :
+ ;;
+esac
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DISTRO (from /etc/openEuler-release)" >&5
+printf "%s\n" "$DISTRO (from /etc/openEuler-release)" >&6; }
else
as_fn_error $? "/etc/os-release not available, please specify the distro using --with-distro=DISTRO" "$LINENO" 5
fi
-
fi
diff -ruN libguestfs/m4/guestfs-appliance.m4 libguestfs-1.49.5/m4/guestfs-appliance.m4
--- libguestfs/m4/guestfs-appliance.m4 2022-11-16 23:45:04.608664963 +0800
+++ libguestfs-1.49.5/m4/guestfs-appliance.m4 2022-11-17 00:54:05.276385306 +0800
@@ -114,13 +114,34 @@
fi ) | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@'
)"
AS_CASE([$DISTRO],
- [FEDORA | RHEL | CENTOS | ALMALINUX | CLOUDLINUX \
+ [FEDORA | RHEL | CENTOS | OPENEULER | ALMALINUX | CLOUDLINUX \
| ROCKY],
[DISTRO=REDHAT],
[OPENSUSE* | SLED | SLES],[DISTRO=SUSE],
[ARCH | MANJARO | ARTIX],[DISTRO=ARCHLINUX],
[OPENMANDRIVA],[DISTRO=OPENMANDRIVA])
AC_MSG_RESULT([$DISTRO (from /etc/os-release)])
+
+ elif test -f /etc/openEuler-release; then
+ echo "/etc/openEuler-release:" >&AS_MESSAGE_LOG_FD
+ cat /etc/openEuler-release >&AS_MESSAGE_LOG_FD
+ DISTRO="$(
+ . /etc/openEuler-release
+ ( if test -n "$ID_LIKE"; then
+ echo $ID_LIKE | $AWK '{print $1}'
+ else
+ echo $ID
+ fi ) | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@'
+ )"
+ AS_CASE([$DISTRO],
+ [FEDORA | RHEL | CENTOS | OPENEULER | ALMALINUX | CLOUDLINUX \
+ | ROCKY],
+ [DISTRO=REDHAT],
+ [OPENSUSE* | SLED | SLES],[DISTRO=SUSE],
+ [ARCH | MANJARO | ARTIX],[DISTRO=ARCHLINUX],
+ [OPENMANDRIVA],[DISTRO=OPENMANDRIVA])
+ AC_MSG_RESULT([$DISTRO (from /etc/openEuler-release)])
+
else
AC_MSG_ERROR([/etc/os-release not available, please specify the distro using --with-distro=DISTRO])
fi