From dbd9dbecf264b6f2c1a97bec57d4f1c4b491db38 Mon Sep 17 00:00:00 2001 From: Kai Liu Date: Thu, 7 Nov 2024 10:29:55 +0800 Subject: [PATCH] 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 (cherry picked from commit cb29515bb6d3e5b6dffcfc5343b93bcd84d22360) (cherry picked from commit af52de928f969095370995c6c25c318840bccac9) --- backport-support-openEuler.patch | 129 ++++++++++++++++++ libguestfs.spec | 12 +- ...ide-openEuler-appliance-package-list.patch | 60 ++++++++ support_OPENEULER_to_configure.patch | 100 -------------- 4 files changed, 199 insertions(+), 102 deletions(-) create mode 100644 backport-support-openEuler.patch create mode 100644 provide-openEuler-appliance-package-list.patch delete mode 100644 support_OPENEULER_to_configure.patch diff --git a/backport-support-openEuler.patch b/backport-support-openEuler.patch new file mode 100644 index 0000000..32ee626 --- /dev/null +++ b/backport-support-openEuler.patch @@ -0,0 +1,129 @@ +From 1d8924c343b2f0022767c1d5d5c059ea9d8f4d7e Mon Sep 17 00:00:00 2001 +From: Wang Guoquan +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 +--- + 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], diff --git a/libguestfs.spec b/libguestfs.spec index 58c2507..9b6e466 100644 --- a/libguestfs.spec +++ b/libguestfs.spec @@ -4,7 +4,7 @@ Name: libguestfs Version: 1.49.5 -Release: 4 +Release: 5 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 @@ -357,6 +359,12 @@ rm -rf ocaml/html/.gitignore %lang(uk) %{_mandir}/uk/man*/* %changelog +* Mon Nov 11 2024 Kai Liu - 1:1.49.5-5 +- 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. + * Tue Jul 2 2024 xiaoyuliang - 1:1.49.5-4 - Add BuildRequire rpm-devel to support inspect rpm guests. diff --git a/provide-openEuler-appliance-package-list.patch b/provide-openEuler-appliance-package-list.patch new file mode 100644 index 0000000..31964ec --- /dev/null +++ b/provide-openEuler-appliance-package-list.patch @@ -0,0 +1,60 @@ +From: Kai Liu +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 diff --git a/support_OPENEULER_to_configure.patch b/support_OPENEULER_to_configure.patch deleted file mode 100644 index b8a87eb..0000000 --- a/support_OPENEULER_to_configure.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 77c67d0e597f5408c3d005ef624ef3d417271e0e Mon Sep 17 00:00:00 2001 -From: sunguoshuai -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 -- Gitee