From a4ef6716b4119e476949c55f1bc12d81e735f0c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernhard=20Rosenkr=C3=A4nzer?= Date: Tue, 2 Apr 2019 08:31:46 +0100 Subject: [PATCH] Add OpenMandriva support as guest and host (RHBZ#1694268). --- appliance/hostfiles.in | 15 +++++++------- appliance/packagelist.in | 30 +++++++++++++++++++++++++++ daemon/inspect_fs.ml | 6 +++++- daemon/inspect_fs_unix.ml | 9 ++++++++ daemon/inspect_types.ml | 2 ++ daemon/inspect_types.mli | 1 + m4/guestfs-appliance.m4 | 3 ++- p2v/dependencies.m4 | 43 +++++++++++++++++++++++++++++++++++---- 8 files changed, 96 insertions(+), 13 deletions(-) diff --git a/appliance/hostfiles.in b/appliance/hostfiles.in index 268d71286..e78c79bd3 100644 --- a/appliance/hostfiles.in +++ b/appliance/hostfiles.in @@ -5,13 +5,14 @@ dnl dnl This file is processed by m4 with one of the dnl following symbols defined (depending on the distro): dnl -dnl REDHAT=1 For Fedora, RHEL, EPEL and workalikes. -dnl DEBIAN=1 For Debian. -dnl UBUNTU=1 For Ubuntu. -dnl ARCHLINUX=1 For Archlinux. -dnl SUSE=1 For OpenSUSE. -dnl FRUGALWARE=1 For Frugalware. -dnl MAGEIA=1 For Mageia. +dnl REDHAT=1 For Fedora, RHEL, EPEL and workalikes. +dnl DEBIAN=1 For Debian. +dnl UBUNTU=1 For Ubuntu. +dnl ARCHLINUX=1 For Archlinux. +dnl SUSE=1 For OpenSUSE. +dnl FRUGALWARE=1 For Frugalware. +dnl MAGEIA=1 For Mageia. +dnl OPENMANDRIVA=1 For OpenMandriva. /etc/ld.so.cache /lib/lsb/* diff --git a/appliance/packagelist.in b/appliance/packagelist.in index 8d2e9d408..e1cd173f0 100644 --- a/appliance/packagelist.in +++ b/appliance/packagelist.in @@ -227,6 +227,36 @@ ifelse(MAGEIA,1, xz ) +ifelse(OPENMANDRIVA,1, + augeas + cryptsetup + chkconfig /* for /etc/init.d */ + cdrkit-genisoimage + cdrkit-isotools + dhcp-client + extlinux + grub2 + lib64hivex0 + hivex + iproute2 + iputils + libcap + libjansson4 + lib64jansson4 /* lib64jansson4 does not provide libjansson4 */ + libldm + libtirpc + dnl syslinux uses mtools without depending on it + mtools + nilfs-utils + ntfs-3g + openssh-clients + pcre + libselinux + systemd /* for /sbin/reboot and udevd */ + vim-minimal + xz +) + acl attr bash diff --git a/daemon/inspect_fs.ml b/daemon/inspect_fs.ml index a0cc18fd8..8ddb8f912 100644 --- a/daemon/inspect_fs.ml +++ b/daemon/inspect_fs.ml @@ -264,6 +264,7 @@ and check_package_format { distro } = | Some DISTRO_MANDRIVA | Some DISTRO_MEEGO | Some DISTRO_NEOKYLIN + | Some DISTRO_OPENMANDRIVA | Some DISTRO_OPENSUSE | Some DISTRO_ORACLE_LINUX | Some DISTRO_REDHAT_BASED @@ -370,7 +371,10 @@ and check_package_management { distro; version } = Some PACKAGE_MANAGEMENT_APK | Some DISTRO_VOID_LINUX -> - Some PACKAGE_MANAGEMENT_XBPS; + Some PACKAGE_MANAGEMENT_XBPS + + | Some DISTRO_OPENMANDRIVA -> + Some PACKAGE_MANAGEMENT_DNF | Some DISTRO_BUILDROOT | Some DISTRO_CIRROS diff --git a/daemon/inspect_fs_unix.ml b/daemon/inspect_fs_unix.ml index 57a24ef01..3e184c3d5 100644 --- a/daemon/inspect_fs_unix.ml +++ b/daemon/inspect_fs_unix.ml @@ -54,6 +54,8 @@ let re_openbsd = PCRE.compile "^OpenBSD (\\d+|\\?)\\.(\\d+|\\?)" let re_frugalware = PCRE.compile "Frugalware (\\d+)\\.(\\d+)" let re_pldlinux = PCRE.compile "(\\d+)\\.(\\d+) PLD Linux" let re_neokylin_version = PCRE.compile "^V(\\d+)Update(\\d+)$" +let re_openmandriva = + PCRE.compile "OpenMandriva.*release (\\d+)\\.(\\d+)\\.?(\\d+)? .*" let arch_binaries = [ "/bin/bash"; "/bin/ls"; "/bin/echo"; "/bin/rm"; "/bin/sh" ] @@ -143,6 +145,7 @@ and distro_of_os_release_id = function | "kali" -> Some DISTRO_KALI_LINUX | "mageia" -> Some DISTRO_MAGEIA | "neokylin" -> Some DISTRO_NEOKYLIN + | "openmandriva" -> Some DISTRO_OPENMANDRIVA | "opensuse" -> Some DISTRO_OPENSUSE | s when String.is_prefix s "opensuse-" -> Some DISTRO_OPENSUSE | "pld" -> Some DISTRO_PLD_LINUX @@ -376,6 +379,12 @@ let linux_root_tests : tests = [ (* Now we enter the Wild West ... *) + (* OpenMandriva includes a [/etc/redhat-release] symlink, hence their + * checks need to be performed before the Red-Hat one. + *) + "/etc/openmandriva-release", parse_generic ~rex:re_openmandriva + DISTRO_OPENMANDRIVA; + (* RHEL-based distros include a [/etc/redhat-release] file, hence their * checks need to be performed before the Red-Hat one. *) diff --git a/daemon/inspect_types.ml b/daemon/inspect_types.ml index ac1d7501f..9c77e7f81 100644 --- a/daemon/inspect_types.ml +++ b/daemon/inspect_types.ml @@ -87,6 +87,7 @@ and distro = | DISTRO_NEOKYLIN | DISTRO_NETBSD | DISTRO_OPENBSD + | DISTRO_OPENMANDRIVA | DISTRO_OPENSUSE | DISTRO_ORACLE_LINUX | DISTRO_PARDUS @@ -218,6 +219,7 @@ and string_of_distro = function | DISTRO_NEOKYLIN -> "neokylin" | DISTRO_NETBSD -> "netbsd" | DISTRO_OPENBSD -> "openbsd" + | DISTRO_OPENMANDRIVA -> "openmandriva" | DISTRO_OPENSUSE -> "opensuse" | DISTRO_ORACLE_LINUX -> "oraclelinux" | DISTRO_PARDUS -> "pardus" diff --git a/daemon/inspect_types.mli b/daemon/inspect_types.mli index fecc481da..2b6c8e913 100644 --- a/daemon/inspect_types.mli +++ b/daemon/inspect_types.mli @@ -94,6 +94,7 @@ and distro = | DISTRO_NEOKYLIN | DISTRO_NETBSD | DISTRO_OPENBSD + | DISTRO_OPENMANDRIVA | DISTRO_OPENSUSE | DISTRO_ORACLE_LINUX | DISTRO_PARDUS diff --git a/m4/guestfs-appliance.m4 b/m4/guestfs-appliance.m4 index 5a7af51c9..827a83357 100644 --- a/m4/guestfs-appliance.m4 +++ b/m4/guestfs-appliance.m4 @@ -106,7 +106,8 @@ AC_ARG_WITH([distro], AS_CASE([$DISTRO], [FEDORA | RHEL | CENTOS],[DISTRO=REDHAT], [OPENSUSE* | SLED | SLES],[DISTRO=SUSE], - [ARCH],[DISTRO=ARCHLINUX]) + [ARCH],[DISTRO=ARCHLINUX], + [OPENMANDRIVA],[DISTRO=OPENMANDRIVA]) 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]) diff --git a/p2v/dependencies.m4 b/p2v/dependencies.m4 index 02ca87c19..40b3786cb 100644 --- a/p2v/dependencies.m4 +++ b/p2v/dependencies.m4 @@ -4,10 +4,11 @@ dnl dnl This file is processed by m4 with only one of the following dnl symbols defined (depending on the target distro): dnl -dnl REDHAT=1 Fedora, RHEL, CentOS, SL and workalikes -dnl DEBIAN=1 Debian and Ubuntu -dnl ARCHLINUX=1 Arch Linux -dnl SUSE=1 SUSE, OpenSUSE +dnl REDHAT=1 Fedora, RHEL, CentOS, SL and workalikes +dnl DEBIAN=1 Debian and Ubuntu +dnl ARCHLINUX=1 Arch Linux +dnl SUSE=1 SUSE, OpenSUSE +dnl OPENMANDRIVA=1 OpenMandriva dnl dnl NB 1: Must be one package name per line. Blank lines are ignored. dnl @@ -124,6 +125,40 @@ ifelse(SUSE,1, SuSEfirewall2 ) +ifelse(OPENMANDRIVA,1, + dnl Used by the virt-p2v binary. + pcre + libxml2 + gtk`'GTK_VERSION + dbus-libs + + dnl Run as external programs by the p2v binary. + /usr/bin/ssh + /usr/bin/qemu-nbd + which + + dnl Generally useful tools to use within xterm + vim-enhanced + + dnl X11 environment + /usr/bin/xinit + /usr/bin/Xorg + xorg-x11-drivers + xorg-x11-fonts-Type1 + dejavu-sans-fonts + dejavu-sans-mono-fonts + mesa-dri-drivers + kwin_x11 + + NetworkManager + nm-connection-editor + network-manager-applet + dnl dbus is required by nm-applet, but not a dependency in Fedora + dbus-x11 + dnl sysadmins prefer ifconfig + net-tools +) + dnl Run as external programs by the p2v binary. curl ethtool