diff --git a/libguestfs.spec b/libguestfs.spec index d2fa057..2e01737 100644 --- a/libguestfs.spec +++ b/libguestfs.spec @@ -49,7 +49,7 @@ Summary: Access and modify virtual machine disk images Name: libguestfs Epoch: 1 Version: 1.43.3 -Release: 2%{?dist} +Release: 3%{?dist} License: LGPLv2+ # Build only for architectures that have a kernel @@ -62,7 +62,7 @@ Source0: http://libguestfs.org/download/%{source_directory}/%{name}-%{vers Source1: http://libguestfs.org/download/%{source_directory}/%{name}-%{version}.tar.gz.sig %endif -# Replacement README file for Fedora users. +# Replacement README file. Source4: README-replacement.in # Guestfish colour prompts. @@ -76,16 +76,20 @@ Source6: yum.conf.in Source7: libguestfs.keyring %endif +# Maintainer script which helps with handling patches. +Source8: copy-patches.sh + %if 0%{patches_touch_autotools} BuildRequires: autoconf, automake, libtool, gettext-devel %endif # Basic build requirements for the library and virt tools. BuildRequires: gcc, gcc-c++ +BuildRequires: make BuildRequires: rpcgen BuildRequires: libtirpc-devel BuildRequires: supermin-devel >= 5.1.18 -BuildRequires: hivex-devel >= 1.2.7-7 +BuildRequires: hivex-devel >= 1.3.10 BuildRequires: ocaml-hivex-devel BuildRequires: perl(Pod::Simple) BuildRequires: perl(Pod::Man) @@ -95,7 +99,7 @@ BuildRequires: augeas-devel >= 1.7.0 BuildRequires: readline-devel BuildRequires: genisoimage BuildRequires: libxml2-devel -BuildRequires: createrepo +BuildRequires: createrepo_c BuildRequires: glibc-static BuildRequires: libselinux-utils BuildRequires: libselinux-devel @@ -110,16 +114,22 @@ BuildRequires: libdb-utils BuildRequires: cpio BuildRequires: libconfig-devel BuildRequires: xz-devel +%if !0%{?rhel} BuildRequires: zip BuildRequires: unzip +%endif BuildRequires: systemd-units BuildRequires: netpbm-progs BuildRequires: icoutils -BuildRequires: libvirt-daemon-kvm +BuildRequires: libvirt-daemon-kvm >= 5.3.0 +%if !0%{?rhel} BuildRequires: perl(Expect) +%endif BuildRequires: libacl-devel BuildRequires: libcap-devel +%if !0%{?rhel} BuildRequires: libldm-devel +%endif BuildRequires: jansson-devel BuildRequires: systemd-devel BuildRequires: bash-completion @@ -130,6 +140,7 @@ BuildRequires: xz BuildRequires: /usr/bin/qemu-img BuildRequires: perl(Win::Hivex) BuildRequires: perl(Win::Hivex::Regedit) + %if 0%{verify_tarball_signature} BuildRequires: gnupg2 %endif @@ -140,7 +151,6 @@ BuildRequires: ocaml-ocamldoc BuildRequires: ocaml-findlib-devel BuildRequires: ocaml-gettext-devel BuildRequires: ocaml-ounit-devel -BuildRequires: ocaml-libvirt-devel >= 0.6.1.4-5 BuildRequires: lua BuildRequires: lua-devel BuildRequires: perl-devel @@ -154,7 +164,7 @@ BuildRequires: perl(Module::Build) BuildRequires: perl(ExtUtils::CBuilder) BuildRequires: perl(Locale::TextDomain) BuildRequires: python3-devel -BuildRequires: libvirt-python3 +BuildRequires: python3-libvirt BuildRequires: ruby-devel BuildRequires: rubygem-rake # json is not pulled in automatically, see RHBZ#1325022 @@ -162,16 +172,16 @@ BuildRequires: rubygem(json) BuildRequires: rubygem(rdoc) BuildRequires: rubygem(test-unit) BuildRequires: ruby-irb +%if !0%{?rhel} BuildRequires: php-devel +%endif BuildRequires: gobject-introspection-devel BuildRequires: gjs +%if !0%{?rhel} BuildRequires: vala +%endif %ifarch %{golang_arches} BuildRequires: golang -# This version is required for aarch64 to be supported by gcc-go. -%ifarch aarch64 -BuildRequires: gcc >= 5.0.0-0.19.fc23 -%endif %endif # Build requirements for the appliance. @@ -180,18 +190,107 @@ BuildRequires: gcc >= 5.0.0-0.19.fc23 # for f in `cat appliance/packagelist`; do echo $f; done | sort -u # However you have to edit the list down to packages which exist in # current Fedora, since supermin ignores non-existent packages. -BuildRequires: acl attr augeas-libs bash binutils btrfs-progs bzip2 coreutils cpio cryptsetup curl debootstrap dhclient diffutils dosfstools e2fsprogs file findutils gawk gdisk genisoimage gfs2-utils grep gzip hivex iproute iputils jfsutils kernel kmod kpartx less libcap libldm libselinux libxml2 lsof lsscsi lvm2 lzop mdadm nilfs-utils openssh-clients parted pciutils pcre policycoreutils procps psmisc qemu-img reiserfs-utils rsync scrub sed sleuthkit squashfs-tools strace systemd tar udev util-linux vim-minimal which xfsprogs xz yajl zerofree + +BuildRequires: acl +BuildRequires: attr +BuildRequires: augeas-libs +BuildRequires: bash +BuildRequires: binutils +%if !0%{?rhel} +BuildRequires: btrfs-progs +%endif +BuildRequires: bzip2 +BuildRequires: coreutils +BuildRequires: cpio +BuildRequires: cryptsetup +BuildRequires: curl +%if !0%{?rhel} +BuildRequires: debootstrap +%endif +BuildRequires: dhclient +BuildRequires: diffutils +BuildRequires: dosfstools +BuildRequires: e2fsprogs +BuildRequires: file +BuildRequires: findutils +BuildRequires: gawk +BuildRequires: gdisk +BuildRequires: genisoimage +BuildRequires: gfs2-utils +BuildRequires: grep +BuildRequires: gzip +%if !0%{?rhel} %ifnarch ppc BuildRequires: hfsplus-tools %endif -%ifnarch %{arm} aarch64 s390 s390x riscv64 -# http://zfs-fuse.net/issues/94 -BuildRequires: zfs-fuse %endif +BuildRequires: hivex +BuildRequires: iproute +BuildRequires: iputils +%if !0%{?rhel} +BuildRequires: jfsutils +%endif +BuildRequires: kernel +BuildRequires: kmod +BuildRequires: kpartx +BuildRequires: less +BuildRequires: libcap +%if !0%{?rhel} +BuildRequires: libldm +%endif +BuildRequires: libselinux +BuildRequires: libxml2 +BuildRequires: lsof +BuildRequires: lsscsi +BuildRequires: lvm2 +BuildRequires: lzop +BuildRequires: mdadm +%if !0%{?rhel} +BuildRequires: nilfs-utils +%endif +%if !0%{?rhel} BuildRequires: ntfs-3g ntfsprogs ntfs-3g-system-compression +%endif +BuildRequires: openssh-clients +BuildRequires: parted +BuildRequires: pciutils +BuildRequires: pcre +BuildRequires: policycoreutils +BuildRequires: procps +BuildRequires: psmisc +BuildRequires: qemu-img +%if !0%{?rhel} +BuildRequires: reiserfs-utils +%endif +BuildRequires: rsync +BuildRequires: scrub +BuildRequires: sed +%if !0%{?rhel} +BuildRequires: sleuthkit +%endif +BuildRequires: squashfs-tools +BuildRequires: strace %ifarch %{ix86} x86_64 BuildRequires: syslinux syslinux-extlinux %endif +BuildRequires: systemd +BuildRequires: tar +BuildRequires: udev +BuildRequires: util-linux +BuildRequires: vim-minimal +BuildRequires: which +BuildRequires: xfsprogs +BuildRequires: xz +BuildRequires: yajl +%if !0%{?rhel} +BuildRequires: zerofree +%endif +%if !0%{?rhel} +%ifnarch %{arm} aarch64 s390 s390x riscv64 +# http://zfs-fuse.net/issues/94 +BuildRequires: zfs-fuse +%endif +%endif # For building the appliance. Requires: supermin >= 5.1.18 @@ -201,7 +300,7 @@ Requires: supermin >= 5.1.18 Requires: augeas-libs%{?_isa} >= 1.7.0 Requires: libacl%{?_isa} Requires: libcap%{?_isa} -Requires: hivex%{?_isa} +Requires: hivex%{?_isa} >= 1.3.10 Requires: pcre%{?_isa} Requires: libselinux%{?_isa} Requires: systemd-libs%{?_isa} @@ -223,12 +322,17 @@ Suggests: qemu-block-gluster Suggests: qemu-block-iscsi Suggests: qemu-block-rbd Suggests: qemu-block-ssh +Recommends: libvirt-daemon-config-network Requires: libvirt-daemon-driver-qemu Requires: libvirt-daemon-driver-secret Recommends: libvirt-daemon-driver-storage-core -Recommends: libvirt-daemon-config-network +Requires: libvirt-daemon-kvm >= 5.3.0 Requires: selinux-policy >= 3.11.1-63 +%ifarch aarch64 +Requires: edk2-aarch64 +%endif + # For UML backend (this backend only works on x86). # UML has been broken upstream (in the kernel) for a while, so don't # include this. Note that uml_utilities also depends on Perl. @@ -239,9 +343,14 @@ Requires: selinux-policy >= 3.11.1-63 # https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Packages_granted_exceptions Provides: bundled(gnulib) -# Someone managed to install libguestfs-winsupport (from RHEL!) on +%if !0%{?rhel} +# Someone managed to install libguestfs-winsupport (from RHEL!) on # Fedora, which breaks everything. Thus: Conflicts: libguestfs-winsupport +%else +Conflicts: libguestfs-winsupport < 7.2 +%endif + %description @@ -258,8 +367,7 @@ guest filesystem that Linux and qemu can, including but not limited to: ext2/3/4, btrfs, FAT and NTFS, LVM, many different disk partition schemes, qcow, qcow2, vmdk. -Libguestfs for Fedora is split into several subpackages. The basic -subpackages are: +Libguestfs is split into several subpackages. The basic subpackages are: libguestfs C library libguestfs-tools virt-* tools, guestfish and guestmount (FUSE) @@ -269,18 +377,28 @@ subpackages are: For enhanced features, install: +%if !0%{?rhel} libguestfs-forensics adds filesystem forensics support +%endif libguestfs-gfs2 adds Global Filesystem (GFS2) support +%if !0%{?rhel} libguestfs-hfsplus adds HFS+ (Mac filesystem) support +%endif libguestfs-inspect-icons adds support for inspecting guest icons +%if !0%{?rhel} libguestfs-jfs adds JFS support libguestfs-nilfs adds NILFS v2 support libguestfs-reiserfs adds ReiserFS support +%endif libguestfs-rescue enhances virt-rescue shell with more tools libguestfs-rsync rsync to/from guest filesystems +%if !0%{?rhel} libguestfs-ufs adds UFS (BSD) support +%endif libguestfs-xfs adds XFS support +%if !0%{?rhel} libguestfs-zfs adds ZFS support +%endif For developers: @@ -295,10 +413,14 @@ Language bindings: lua-guestfs Lua bindings ocaml-libguestfs-devel OCaml bindings perl-Sys-Guestfs Perl bindings +%if !0%{?rhel} php-libguestfs PHP bindings +%endif python3-libguestfs Python 3 bindings ruby-libguestfs Ruby bindings +%if !0%{?rhel} libguestfs-vala Vala language bindings +%endif %package devel @@ -316,6 +438,7 @@ Requires: %{name}-tools-c = %{epoch}:%{version}-%{release} for %{name}. +%if !0%{?rhel} %package forensics Summary: Filesystem forensics support for %{name} License: LGPLv2+ @@ -324,6 +447,7 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %description forensics This adds filesystem forensics support to %{name}. Install it if you want to forensically analyze disk images using The Sleuth Kit. +%endif %package gfs2 @@ -336,6 +460,7 @@ This adds GFS2 support to %{name}. Install it if you want to process disk images containing GFS2. +%if !0%{?rhel} %ifnarch ppc %package hfsplus Summary: HFS+ support for %{name} @@ -346,8 +471,10 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} This adds HFS+ support to %{name}. Install it if you want to process disk images containing HFS+ / Mac OS Extended filesystems. %endif +%endif +%if !0%{?rhel} %package jfs Summary: JFS support for %{name} License: LGPLv2+ @@ -356,8 +483,10 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %description jfs This adds JFS support to %{name}. Install it if you want to process disk images containing JFS. +%endif +%if !0%{?rhel} %package nilfs Summary: NILFS support for %{name} License: LGPLv2+ @@ -366,8 +495,10 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %description nilfs This adds NILFS v2 support to %{name}. Install it if you want to process disk images containing NILFS v2. +%endif +%if !0%{?rhel} %package reiserfs Summary: ReiserFS support for %{name} License: LGPLv2+ @@ -376,6 +507,7 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %description reiserfs This adds ReiserFS support to %{name}. Install it if you want to process disk images containing ReiserFS. +%endif %package rescue @@ -398,6 +530,7 @@ This adds rsync support to %{name}. Install it if you want to use rsync to upload or download files into disk images. +%if !0%{?rhel} %package ufs Summary: UFS (BSD) support for %{name} License: LGPLv2+ @@ -406,6 +539,7 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %description ufs This adds UFS support to %{name}. Install it if you want to process disk images containing UFS (BSD filesystems). +%endif %package xfs @@ -418,6 +552,7 @@ This adds XFS support to %{name}. Install it if you want to process disk images containing XFS. +%if !0%{?rhel} %ifnarch %{arm} aarch64 s390 s390x riscv64 %package zfs Summary: ZFS support for %{name} @@ -428,6 +563,7 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} This adds ZFS support to %{name}. Install it if you want to process disk images containing ZFS. %endif +%endif %package inspect-icons @@ -464,7 +600,6 @@ Requires: /usr/bin/vi # For virt-builder: Requires: gnupg2 -#Requires: (gnupg or gnupg2) # Fedora packaging rules forbid this Requires: xz #Requires: nbdkit, nbdkit-plugin-xz Requires: curl @@ -658,6 +793,7 @@ Provides: ruby(guestfs) = %{version} ruby-%{name} contains Ruby bindings for %{name}. +%if !0%{?rhel} %package -n php-%{name} Summary: PHP bindings for %{name} Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} @@ -666,6 +802,7 @@ Requires: php(api) = %{php_core_api} %description -n php-%{name} php-%{name} contains PHP bindings for %{name}. +%endif %package -n lua-guestfs @@ -699,6 +836,7 @@ This package is needed if you want to write software using the GObject bindings. It also contains GObject Introspection information. +%if !0%{?rhel} %package vala Summary: Vala for %{name} Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release} @@ -707,6 +845,7 @@ Requires: vala %description vala %{name}-vala contains GObject bindings for %{name}. +%endif @@ -780,15 +919,26 @@ else # -n 1 because of RHBZ#980502. find /var/cache/{dnf,yum} -type f -name '*.rpm' -print0 | \ xargs -0 -n 1 cp -t repo - createrepo repo + createrepo_c repo sed -e "s|@PWD@|$(pwd)|" %{SOURCE6} > yum.conf extra=--with-supermin-packager-config=$(pwd)/yum.conf fi %{configure} \ +%if 0%{?rhel} + QEMU=%{_libexecdir}/qemu-kvm \ +%endif PYTHON=%{__python3} \ --with-default-backend=libvirt \ +%if !0%{?rhel} --with-extra="fedora=%{fedora},release=%{release},libvirt" \ +%else + --with-extra="rhel=%{rhel},release=%{release},libvirt" \ +%endif +%if 0%{?rhel} + --with-qemu="qemu-kvm qemu-system-%{_build_arch} qemu" \ + --disable-php \ +%endif %ifnarch %{golang_arches} --disable-golang \ %endif @@ -866,6 +1016,7 @@ gzip --best installed-docs/*.xml # Split up the monolithic packages file in the supermin appliance so # we can install dependencies in subpackages. pushd $RPM_BUILD_ROOT%{_libdir}/guestfs/supermin.d + function move_to { if ! grep -Esq "^$1$" packages; then @@ -876,17 +1027,24 @@ function move_to mv packages-t packages echo "$1" >> "$2" } + move_to curl zz-packages-dib +%if !0%{?rhel} move_to debootstrap zz-packages-dib +%endif move_to kpartx zz-packages-dib move_to qemu-img zz-packages-dib move_to which zz-packages-dib +%if !0%{?rhel} move_to sleuthkit zz-packages-forensics +%endif move_to gfs2-utils zz-packages-gfs2 +%if !0%{?rhel} move_to hfsplus-tools zz-packages-hfsplus move_to jfsutils zz-packages-jfs move_to nilfs-utils zz-packages-nilfs move_to reiserfs-utils zz-packages-reiserfs +%endif move_to iputils zz-packages-rescue move_to lsof zz-packages-rescue move_to openssh-clients zz-packages-rescue @@ -895,13 +1053,18 @@ move_to strace zz-packages-rescue move_to vim-minimal zz-packages-rescue move_to rsync zz-packages-rsync move_to xfsprogs zz-packages-xfs +%if !0%{?rhel} %ifnarch %{arm} aarch64 s390 s390x riscv64 move_to zfs-fuse zz-packages-zfs %endif +%endif +%if !0%{?rhel} # On Fedora you need kernel-modules-extra to be able to mount # UFS (BSD) filesystems. echo "kernel-modules-extra" > zz-packages-ufs +%endif + popd # If there is a bogus dependency on kernel-*, rename it to 'kernel' @@ -959,25 +1122,35 @@ rm ocaml/html/.gitignore %{_libdir}/pkgconfig/libguestfs.pc +%if !0%{?rhel} %files forensics %{_libdir}/guestfs/supermin.d/zz-packages-forensics +%endif %files gfs2 %{_libdir}/guestfs/supermin.d/zz-packages-gfs2 +%if !0%{?rhel} %ifnarch ppc %files hfsplus %{_libdir}/guestfs/supermin.d/zz-packages-hfsplus %endif +%endif +%if !0%{?rhel} %files jfs %{_libdir}/guestfs/supermin.d/zz-packages-jfs +%endif +%if !0%{?rhel} %files nilfs %{_libdir}/guestfs/supermin.d/zz-packages-nilfs +%endif +%if !0%{?rhel} %files reiserfs %{_libdir}/guestfs/supermin.d/zz-packages-reiserfs +%endif %files rsync %{_libdir}/guestfs/supermin.d/zz-packages-rsync @@ -985,16 +1158,20 @@ rm ocaml/html/.gitignore %files rescue %{_libdir}/guestfs/supermin.d/zz-packages-rescue +%if !0%{?rhel} %files ufs %{_libdir}/guestfs/supermin.d/zz-packages-ufs +%endif %files xfs %{_libdir}/guestfs/supermin.d/zz-packages-xfs +%if !0%{?rhel} %ifnarch %{arm} aarch64 s390 s390x riscv64 %files zfs %{_libdir}/guestfs/supermin.d/zz-packages-zfs %endif +%endif %files inspect-icons @@ -1132,11 +1309,13 @@ rm ocaml/html/.gitignore %{_mandir}/man3/guestfs-ruby.3* +%if !0%{?rhel} %files -n php-%{name} %doc php/README-PHP %dir %{_sysconfdir}/php.d %{_sysconfdir}/php.d/guestfs_php.ini %{_libdir}/php/modules/guestfs_php.so +%endif %files -n lua-guestfs @@ -1161,9 +1340,11 @@ rm ocaml/html/.gitignore %{_mandir}/man3/guestfs-gobject.3* +%if !0%{?rhel} %files vala %{_datadir}/vala/vapi/libguestfs-gobject-1.0.deps %{_datadir}/vala/vapi/libguestfs-gobject-1.0.vapi +%endif %ifarch %{golang_arches} @@ -1188,6 +1369,9 @@ rm ocaml/html/.gitignore %changelog +* Wed Dec 02 2020 Richard W.M. Jones - 1:1.43.3-3 +- Unify Fedora and RHEL spec files. + * Tue Dec 01 2020 Richard W.M. Jones - 1:1.43.3-2 - New upstream version 1.43.3. - Disable LTO because of memory running out on ARMv7.