summaryrefslogtreecommitdiff
path: root/guestfs-tools.spec
diff options
context:
space:
mode:
Diffstat (limited to 'guestfs-tools.spec')
-rw-r--r--guestfs-tools.spec507
1 files changed, 507 insertions, 0 deletions
diff --git a/guestfs-tools.spec b/guestfs-tools.spec
new file mode 100644
index 0000000..6a5f7a2
--- /dev/null
+++ b/guestfs-tools.spec
@@ -0,0 +1,507 @@
+# 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.
+%global test_arches x86_64
+
+# 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.51-development
+
+# Filter perl provides.
+%{?perl_default_filter}
+
+Summary: Tools to access and modify virtual machine disk images
+Name: guestfs-tools
+Version: 1.51.6
+Release: 2%{?dist}
+License: GPL-2.0-or-later AND LGPL-2.0-or-later
+
+# Build only for architectures that have a kernel
+ExclusiveArch: %{kernel_arches}
+%if 0%{?rhel}
+# No qemu-kvm on POWER (RHBZ#1946532).
+ExcludeArch: %{power64}
+%endif
+
+# 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
+
+# Maintainer script which helps with handling patches.
+Source3: copy-patches.sh
+
+# Patches are maintained in the following repository:
+# https://github.com/rwmjones/guestfs-tools/commits/rhel-9.4
+
+# Patches.
+Patch0001: 0001-Update-common-submodule.patch
+Patch0002: 0002-builder-Add-a-test-of-the-chown-parameter.patch
+Patch0003: 0003-RHEL-Reject-use-of-libguestfs-winsupport-features-ex.patch
+Patch0004: 0004-RHEL-builder-Disable-opensuse-repository.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:1.49.8-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: libosinfo-devel
+BuildRequires: libxcrypt-devel
+BuildRequires: ncurses-devel
+%ifarch x86_64
+BuildRequires: glibc-static
+%endif
+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: hwdata-devel
+BuildRequires: perl(Locale::TextDomain)
+BuildRequires: perl(Sys::Guestfs)
+BuildRequires: perl(Win::Hivex)
+BuildRequires: perl(Win::Hivex::Regedit)
+BuildRequires: perl-generators
+
+%if 0%{verify_tarball_signature}
+BuildRequires: gnupg2
+%endif
+
+# Ensure a minimum version of libguestfs is installed. This contains
+# a workaround for openssl bug RHBZ#2133884 and the hang where we
+# called setenv between fork and exec.
+Requires: libguestfs >= 1.49.6-1
+
+# For virt-builder:
+Requires: curl
+Requires: gnupg2
+Requires: /usr/bin/qemu-img
+Requires: xz
+
+# For virt-builder-repository:
+Suggests: osinfo-db
+
+# For virt-drivers:
+Recommends: hwdata
+
+# 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-drivers detects the bootloader, kernel and drivers inside a guest.
+
+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: GPL-2.0-or-later
+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.
+
+
+%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}
+# Only run the tests with non-debug (ie. non-Rawhide) kernels.
+# XXX This tests for any debug kernel installed.
+if grep CONFIG_DEBUG_MUTEXES=y /lib/modules/*/config ; then
+ echo "Skipping tests because debug kernel is installed"
+ exit 0
+fi
+
+# 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-drivers
+%{_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/guestfs-tools-release-notes-1*.1*
+%{_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-drivers.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*
+
+
+%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
+* Fri Jan 19 2024 Richard W.M. Jones <rjones@redhat.com> - 1.51.6-2
+- Rebase to guestfs-tools 1.51.6
+- Implement --key all:...
+ resolves: RHEL-19030
+- Fix crash because of off-by-one error
+ resolves: RHEL-19062
+- Fix virt-customize --chown invalid format
+ resolves: RHEL-21899
+
+* Thu Jun 08 2023 Laszlo Ersek <lersek@redhat.com> - 1.50.1-3
+- let virt-inspector recognize "--key /dev/mapper/VG-LV:key:password"
+- reenable "make check"; we now use "-cpu max" (libguestfs 30f74f38bd6e)
+ resolves: rhbz#2209280
+
+* Thu Apr 06 2023 Richard W.M. Jones <rjones@redhat.com> - 1.50.1-1
+- Rebase to guestfs-tools 1.50.1
+ resolves: rhbz#2168626
+- Fix virt-drivers inspection of RHEL 9.2 guests
+ resolves: rhbz#2184963
+
+* Thu Nov 24 2022 Richard W.M. Jones <rjones@redhat.com> - 1.48.2-8
+- Support Rocky Linux in virt-customize
+ resolves: rhbz#2133443
+- Disable OpenSUSE repo in virt-builder
+ resolves: rhbz#2145160
+
+* Fri Jul 15 2022 Richard W.M. Jones <rjones@redhat.com> - 1.48.2-5
+- Rebase to guestfs-tools 1.48.2
+ resolves: rhbz#2059286
+- Default to --selinux-relabel in various tools
+ resolves: rhbz#2075718, rhbz#2089748
+- Add lvm system.devices cleanup operation to virt-sysprep
+ resolves: rhbz#2072493
+- Refactor virt-customize --install, --update options in common submodule
+- Add support for Clevis & Tang
+ resolves: rhbz#1809453
+- Fix CVE-2022-2211 Denial of Service in --key parameter
+ resolves: rhbz#2102721
+- Fix virt-sysprep and LUKS-on-LVM guests
+ resolves: rhbz#2106286
+
+* Sat Dec 04 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.1-6
+- Clean up NetworkManager connection files
+- Add the copy-patches.sh script from virt-v2v
+ resolves: rhbz#1980922
+
+* Tue Nov 23 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.1-5
+- Fix detection of Kylin Desktop
+ resolves: rhbz#2025950
+
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.46.1-4.1
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+ Related: rhbz#1991688
+
+* Wed Jun 2 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.1-3.el9.1
+- Add gating tests (for RHEL 9)
+
+* Mon May 17 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.1-3
+- Fix virt-win-reg --version
+ resolves: rhbz#1961160
+
+* Thu May 13 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.1-2
+- BR perl-generators so deps of virt-win-reg subpackage are correct.
+ resolves: rhbz#1960191
+
+* Sat May 08 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.1-1
+- New stable branch version 1.46.1.
+
+* Tue Apr 27 2021 Richard W.M. Jones <rjones@redhat.com> - 1.46.0-1
+- New stable branch version 1.46.0.
+
+* Wed Apr 07 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.3-4
+- Use Epoch 1 for virt-dib subpackage (only).
+
+* 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.