426 lines
12 KiB
RPMSpec
426 lines
12 KiB
RPMSpec
# Architectures that we run the test suite on.
|
||
#
|
||
# As the test suite takes a very long time to run and is somewhat
|
||
# unreliable on !x86 architectures, only run it on x86-64.
|
||
%if !0%{?rhel}
|
||
%global test_arches x86_64
|
||
%else
|
||
# RHEL 9 only:
|
||
# x86-64: "/lib64/libc.so.6: CPU ISA level is lower than required"
|
||
# (RHBZ#1919389)
|
||
%global test_arches NONE
|
||
%endif
|
||
|
||
# Verify tarball signature with GPGv2.
|
||
%global verify_tarball_signature 1
|
||
|
||
# If there are patches which touch autotools files, set this to 1.
|
||
%global patches_touch_autotools 1
|
||
|
||
# The source directory.
|
||
%global source_directory 1.45-development
|
||
|
||
# Filter perl provides.
|
||
%{?perl_default_filter}
|
||
|
||
Summary: Tools to access and modify virtual machine disk images
|
||
Name: guestfs-tools
|
||
Version: 1.45.3
|
||
Release: 3%{?dist}
|
||
License: GPLv2+
|
||
|
||
# Build only for architectures that have a kernel
|
||
ExclusiveArch: %{kernel_arches}
|
||
|
||
# Source and patches.
|
||
URL: http://libguestfs.org/
|
||
Source0: http://download.libguestfs.org/guestfs-tools/%{source_directory}/%{name}-%{version}.tar.gz
|
||
%if 0%{verify_tarball_signature}
|
||
Source1: http://download.libguestfs.org/guestfs-tools/%{source_directory}/%{name}-%{version}.tar.gz.sig
|
||
%endif
|
||
|
||
# Keyring used to verify tarball signature.
|
||
%if 0%{verify_tarball_signature}
|
||
Source2: libguestfs.keyring
|
||
%endif
|
||
|
||
# Upstream patch to change from genisoimage to xorriso.
|
||
Patch1: 0001-tests-Prefer-xorriso-over-genisoimage-to-generate-te.patch
|
||
|
||
%if 0%{patches_touch_autotools}
|
||
BuildRequires: autoconf, automake, libtool, gettext-devel
|
||
%endif
|
||
|
||
# Basic build requirements.
|
||
BuildRequires: gcc, gcc-c++
|
||
BuildRequires: make
|
||
BuildRequires: libguestfs-devel >= 1.45.3-1
|
||
BuildRequires: libguestfs-xfs
|
||
BuildRequires: perl(Pod::Simple)
|
||
BuildRequires: perl(Pod::Man)
|
||
BuildRequires: perl(Module::Build)
|
||
BuildRequires: perl(Test::More)
|
||
BuildRequires: /usr/bin/pod2text
|
||
BuildRequires: po4a
|
||
BuildRequires: pcre2-devel
|
||
BuildRequires: libxml2-devel
|
||
BuildRequires: jansson-devel
|
||
BuildRequires: libvirt-devel
|
||
BuildRequires: libxcrypt-devel
|
||
BuildRequires: ncurses-devel
|
||
BuildRequires: ocaml-libguestfs-devel
|
||
BuildRequires: ocaml-findlib-devel
|
||
BuildRequires: ocaml-gettext-devel
|
||
%if !0%{?rhel}
|
||
BuildRequires: ocaml-ounit-devel
|
||
%endif
|
||
BuildRequires: flex
|
||
BuildRequires: bison
|
||
BuildRequires: xz-devel
|
||
%if !0%{?rhel}
|
||
BuildRequires: zip
|
||
BuildRequires: unzip
|
||
%endif
|
||
%if !0%{?rhel}
|
||
BuildRequires: perl(Expect)
|
||
%endif
|
||
BuildRequires: bash-completion
|
||
BuildRequires: /usr/bin/qemu-img
|
||
BuildRequires: xorriso
|
||
BuildRequires: perl(Locale::TextDomain)
|
||
BuildRequires: perl(Sys::Guestfs)
|
||
BuildRequires: perl(Win::Hivex)
|
||
BuildRequires: perl(Win::Hivex::Regedit)
|
||
|
||
%if 0%{verify_tarball_signature}
|
||
BuildRequires: gnupg2
|
||
%endif
|
||
|
||
# For virt-builder:
|
||
Requires: curl
|
||
Requires: gnupg2
|
||
Requires: /usr/bin/qemu-img
|
||
Requires: xz
|
||
|
||
# For virt-builder-repository:
|
||
Suggests: osinfo-db
|
||
|
||
# For virt-inspector, since Fedora and RHEL >= 7 use XFS:
|
||
Recommends: libguestfs-xfs
|
||
|
||
# For virt-edit and virt-customize:
|
||
Suggests: perl
|
||
|
||
# This replaces the libguestfs-tools-c package.
|
||
Provides: libguestfs-tools-c = 1:%{version}-%{release}
|
||
Obsoletes: libguestfs-tools-c <= 1:1.45.2-1
|
||
|
||
|
||
%description
|
||
guestfs-tools is a set of tools that can be used to make batch
|
||
configuration changes to guests, get disk used/free statistics
|
||
(virt-df), perform backups and guest clones, change
|
||
registry/UUID/hostname info, build guests from scratch (virt-builder)
|
||
and much more.
|
||
|
||
Virt-alignment-scan scans virtual machines looking for partition
|
||
alignment problems.
|
||
|
||
Virt-builder is a command line tool for rapidly making disk images
|
||
of popular free operating systems.
|
||
|
||
Virt-cat is a command line tool to display the contents of a file in a
|
||
virtual machine.
|
||
|
||
Virt-customize is a command line tool for customizing virtual machine
|
||
disk images.
|
||
|
||
Virt-df is a command line tool to display free space on virtual
|
||
machine filesystems. Unlike other tools, it doesn’t just display the
|
||
amount of space allocated to a virtual machine, but can look inside
|
||
the virtual machine to see how much space is really being used. It is
|
||
like the df(1) command, but for virtual machines, except that it also
|
||
works for Windows virtual machines.
|
||
|
||
Virt-diff shows the differences between virtual machines.
|
||
|
||
Virt-edit is a command line tool to edit the contents of a file in a
|
||
virtual machine.
|
||
|
||
Virt-filesystems is a command line tool to display the filesystems,
|
||
partitions, block devices, LVs, VGs and PVs found in a disk image
|
||
or virtual machine. It replaces the deprecated programs
|
||
virt-list-filesystems and virt-list-partitions with a much more
|
||
capable tool.
|
||
|
||
Virt-format is a command line tool to erase and make blank disks.
|
||
|
||
Virt-get-kernel extracts a kernel/initrd from a disk image.
|
||
|
||
Virt-inspector examines a virtual machine and tries to determine the
|
||
version of the OS, the kernel version, what drivers are installed,
|
||
whether the virtual machine is fully virtualized (FV) or
|
||
para-virtualized (PV), what applications are installed and more.
|
||
|
||
Virt-log is a command line tool to display the log files from a
|
||
virtual machine.
|
||
|
||
Virt-ls is a command line tool to list out files in a virtual machine.
|
||
|
||
Virt-make-fs is a command line tool to build a filesystem out of
|
||
a collection of files or a tarball.
|
||
|
||
Virt-resize can resize existing virtual machine disk images.
|
||
|
||
Virt-sparsify makes virtual machine disk images sparse (thin-provisioned).
|
||
|
||
Virt-sysprep lets you reset or unconfigure virtual machines in
|
||
preparation for cloning them.
|
||
|
||
Virt-tail follows (tails) a log file within a guest, like 'tail -f'.
|
||
|
||
|
||
%package -n virt-win-reg
|
||
Summary: Access and modify the Windows Registry of a Windows VM
|
||
License: GPLv2+
|
||
BuildArch: noarch
|
||
|
||
# This replaces the libguestfs-tools package.
|
||
Provides: libguestfs-tools = 1:%{version}-%{release}
|
||
Obsoletes: libguestfs-tools <= 1:1.45.2-1
|
||
|
||
|
||
%description -n virt-win-reg
|
||
Virt-win-reg lets you look at and modify the Windows Registry of
|
||
Windows virtual machines.
|
||
|
||
|
||
%if !0%{?rhel}
|
||
%package -n virt-dib
|
||
Summary: Safe and secure diskimage-builder replacement
|
||
License: GPLv2+
|
||
|
||
Requires: libguestfs-dib >= 1:1.45.2-1
|
||
|
||
|
||
%description -n virt-dib
|
||
Virt-dib is a safe and secure alternative to the OpenStack
|
||
diskimage-builder command. It is compatible with most
|
||
diskimage-builder elements.
|
||
%endif
|
||
|
||
|
||
%package bash-completion
|
||
Summary: Bash tab-completion scripts for %{name}
|
||
BuildArch: noarch
|
||
Requires: bash-completion >= 2.0
|
||
Requires: %{name} = %{version}-%{release}
|
||
|
||
|
||
%description bash-completion
|
||
Install this package if you want intelligent bash tab-completion
|
||
for the virt-* tools.
|
||
|
||
|
||
%package man-pages-ja
|
||
Summary: Japanese (ja) man pages for %{name}
|
||
BuildArch: noarch
|
||
Requires: %{name} = %{version}-%{release}
|
||
|
||
%description man-pages-ja
|
||
%{name}-man-pages-ja contains Japanese (ja) man pages
|
||
for %{name}.
|
||
|
||
|
||
%package man-pages-uk
|
||
Summary: Ukrainian (uk) man pages for %{name}
|
||
BuildArch: noarch
|
||
Requires: %{name} = %{version}-%{release}
|
||
|
||
%description man-pages-uk
|
||
%{name}-man-pages-uk contains Ukrainian (uk) man pages
|
||
for %{name}.
|
||
|
||
|
||
%prep
|
||
%if 0%{verify_tarball_signature}
|
||
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
||
%endif
|
||
%setup -q
|
||
%autopatch -p1
|
||
|
||
%if 0%{patches_touch_autotools}
|
||
autoreconf -i
|
||
%endif
|
||
|
||
|
||
%build
|
||
%{configure}
|
||
|
||
# Building index-parse.c by hand works around a race condition in the
|
||
# autotools cruft, where two or more copies of yacc race with each
|
||
# other, resulting in a corrupted file.
|
||
make -j1 -C builder index-parse.c
|
||
|
||
make V=1 %{?_smp_mflags}
|
||
|
||
|
||
%check
|
||
%ifarch %{test_arches}
|
||
# Enable debugging.
|
||
export LIBGUESTFS_DEBUG=1
|
||
export LIBGUESTFS_TRACE=1
|
||
|
||
# This test is currently broken and needs further investigation.
|
||
export SKIP_TEST_MACHINE_READABLE_SH=1
|
||
|
||
# This test fails for me in local mock and Koji, but not when running
|
||
# in an unrestricted environment.
|
||
export SKIP_TEST_VIRT_FORMAT_SH=1
|
||
|
||
# This test takes too long to run under Koji and times out. It runs
|
||
# fine with KVM enabled.
|
||
export SKIP_TEST_VIRT_RESIZE_PL=1
|
||
|
||
if ! make check -k ; then
|
||
# Dump out the log files of any failing tests to make
|
||
# debugging test failures easier.
|
||
for f in `find -name test-suite.log | xargs grep -l ^FAIL:`; do
|
||
echo '*****' $f '*****'
|
||
cat $f
|
||
echo
|
||
done
|
||
exit 1
|
||
fi
|
||
%endif
|
||
|
||
|
||
%install
|
||
make DESTDIR=$RPM_BUILD_ROOT install
|
||
|
||
# Delete libtool files.
|
||
find $RPM_BUILD_ROOT -name '*.la' -delete
|
||
|
||
# Move installed documentation back to the source directory so
|
||
# we can install it using a %%doc rule.
|
||
mv $RPM_BUILD_ROOT%{_docdir}/%{name} installed-docs
|
||
gzip --best installed-docs/*.xml
|
||
|
||
# Find locale files.
|
||
%find_lang %{name}
|
||
|
||
|
||
# Fix upgrades from old libguestfs-tools-c package
|
||
# which had /etc/virt-builder -> xdg/virt-builder.
|
||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/
|
||
# This can be removed in Fedora > 36.
|
||
%pretrans -p <lua>
|
||
path = "/etc/virt-builder"
|
||
st = posix.stat(path)
|
||
if st and st.type == "link" then
|
||
os.remove(path)
|
||
end
|
||
|
||
|
||
%files -f %{name}.lang
|
||
%license COPYING
|
||
%doc README
|
||
%doc installed-docs/*
|
||
%dir %{_sysconfdir}/virt-builder
|
||
%dir %{_sysconfdir}/virt-builder/repos.d
|
||
%config(noreplace) %{_sysconfdir}/virt-builder/repos.d/*
|
||
%{_bindir}/virt-alignment-scan
|
||
%{_bindir}/virt-builder
|
||
%{_bindir}/virt-builder-repository
|
||
%{_bindir}/virt-cat
|
||
%{_bindir}/virt-customize
|
||
%{_bindir}/virt-df
|
||
%{_bindir}/virt-diff
|
||
%{_bindir}/virt-edit
|
||
%{_bindir}/virt-filesystems
|
||
%{_bindir}/virt-format
|
||
%{_bindir}/virt-get-kernel
|
||
%{_bindir}/virt-index-validate
|
||
%{_bindir}/virt-inspector
|
||
%{_bindir}/virt-log
|
||
%{_bindir}/virt-ls
|
||
%{_bindir}/virt-make-fs
|
||
%{_bindir}/virt-resize
|
||
%{_bindir}/virt-sparsify
|
||
%{_bindir}/virt-sysprep
|
||
%{_bindir}/virt-tail
|
||
%{_mandir}/man1/virt-alignment-scan.1*
|
||
%{_mandir}/man1/virt-builder-repository.1*
|
||
%{_mandir}/man1/virt-builder.1*
|
||
%{_mandir}/man1/virt-cat.1*
|
||
%{_mandir}/man1/virt-customize.1*
|
||
%{_mandir}/man1/virt-df.1*
|
||
%{_mandir}/man1/virt-diff.1*
|
||
%{_mandir}/man1/virt-edit.1*
|
||
%{_mandir}/man1/virt-filesystems.1*
|
||
%{_mandir}/man1/virt-format.1*
|
||
%{_mandir}/man1/virt-get-kernel.1*
|
||
%{_mandir}/man1/virt-index-validate.1*
|
||
%{_mandir}/man1/virt-inspector.1*
|
||
%{_mandir}/man1/virt-log.1*
|
||
%{_mandir}/man1/virt-ls.1*
|
||
%{_mandir}/man1/virt-make-fs.1*
|
||
%{_mandir}/man1/virt-resize.1*
|
||
%{_mandir}/man1/virt-sparsify.1*
|
||
%{_mandir}/man1/virt-sysprep.1*
|
||
%{_mandir}/man1/virt-tail.1*
|
||
|
||
|
||
%files -n virt-win-reg
|
||
%license COPYING
|
||
%doc README
|
||
%{_bindir}/virt-win-reg
|
||
%{_mandir}/man1/virt-win-reg.1*
|
||
|
||
|
||
%if !0%{?rhel}
|
||
%files -n virt-dib
|
||
%license COPYING
|
||
%doc README
|
||
%{_bindir}/virt-dib
|
||
%{_mandir}/man1/virt-dib.1*
|
||
%endif
|
||
|
||
|
||
%files bash-completion
|
||
%license COPYING
|
||
%dir %{_datadir}/bash-completion/completions
|
||
%{_datadir}/bash-completion/completions/virt-*
|
||
|
||
|
||
%files man-pages-ja
|
||
%lang(ja) %{_mandir}/ja/man1/*.1*
|
||
|
||
|
||
%files man-pages-uk
|
||
%lang(uk) %{_mandir}/uk/man1/*.1*
|
||
|
||
|
||
%changelog
|
||
* Wed Mar 31 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.3-3
|
||
- Add BR xorriso, needed to run the tests.
|
||
|
||
* Mon Mar 29 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.3-1
|
||
- New upstream version 1.45.3.
|
||
- Fix symlink replacement of virt-builder directory (RHBZ#1943838).
|
||
|
||
* Fri Mar 26 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.2-5
|
||
- Skip test-virt-resize.pl that takes too long to run.
|
||
|
||
* Thu Mar 25 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.2-4
|
||
- Add perl(Test::More) dependency for the Perl test suite.
|
||
- Add perl(Module::Build) dependency for the Perl bindings.
|
||
- Fix ounit2 dependency again.
|
||
|
||
* Wed Mar 24 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.2-2
|
||
- Add perl(Locale::TextDomain) dependency for virt-win-reg.
|
||
- Fix ounit2 dependency upstream.
|
||
|
||
* Tue Mar 23 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.2-1
|
||
- New guestfs-tools package, split off from libguestfs.
|