Unify Fedora and RHEL spec files.

This commit is contained in:
Richard W.M. Jones 2020-12-02 15:24:17 +00:00
parent 99c563d97c
commit cfa88f9c57

View File

@ -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,17 +190,106 @@ 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
%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
BuildRequires: ntfs-3g ntfsprogs ntfs-3g-system-compression
%ifarch %{ix86} x86_64
BuildRequires: syslinux syslinux-extlinux
%endif
# For building the appliance.
@ -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 <rjones@redhat.com> - 1:1.43.3-3
- Unify Fedora and RHEL spec files.
* Tue Dec 01 2020 Richard W.M. Jones <rjones@redhat.com> - 1:1.43.3-2
- New upstream version 1.43.3.
- Disable LTO because of memory running out on ARMv7.