1 # Architectures that we run the test suite on.
3 # As the test suite takes a very long time to run and is somewhat
4 # unreliable on !x86 architectures, only run it on x86-64.
6 %global test_arches x86_64
9 # x86-64: "/lib64/libc.so.6: CPU ISA level is lower than required"
11 %global test_arches NONE
14 # Verify tarball signature with GPGv2.
15 %global verify_tarball_signature 1
17 # If there are patches which touch autotools files, set this to 1.
18 %global patches_touch_autotools 1
20 # The source directory.
21 %global source_directory 1.45-development
23 # Filter perl provides.
24 %{?perl_default_filter}
26 Summary: Tools to access and modify virtual machine disk images
32 # Build only for architectures that have a kernel
33 ExclusiveArch: %{kernel_arches}
36 URL: http://libguestfs.org/
37 Source0: http://download.libguestfs.org/guestfs-tools/%{source_directory}/%{name}-%{version}.tar.gz
38 %if 0%{verify_tarball_signature}
39 Source1: http://download.libguestfs.org/guestfs-tools/%{source_directory}/%{name}-%{version}.tar.gz.sig
42 # Keyring used to verify tarball signature.
43 %if 0%{verify_tarball_signature}
44 Source2: libguestfs.keyring
47 # Upstream patches to fix various build issues discovered while
48 # packaging this for Fedora.
49 Patch1: 0001-po-docs-podfiles-Fix-bogus-directories-in-this-file.patch
50 Patch2: 0002-po-docs-Don-t-try-to-install-.3-and-.5-files-which-d.patch
51 Patch3: 0003-build-Remove-dependency-on-gobject-introspection.patch
52 Patch4: 0004-build-Remove-dependency-on-perl-Sys-Virt.patch
53 Patch5: 0005-builder-Get-rid-of-etc-xdg-and-XDG_CONFIG_DIRS-nonse.patch
55 %if 0%{patches_touch_autotools}
56 BuildRequires: autoconf, automake, libtool, gettext-devel
59 # Basic build requirements.
60 BuildRequires: gcc, gcc-c++
62 BuildRequires: libguestfs-devel >= 1.44.0
63 BuildRequires: libguestfs-xfs
64 BuildRequires: perl(Pod::Simple)
65 BuildRequires: perl(Pod::Man)
66 BuildRequires: /usr/bin/pod2text
68 BuildRequires: pcre2-devel
69 BuildRequires: libxml2-devel
70 BuildRequires: jansson-devel
71 BuildRequires: libvirt-devel
72 BuildRequires: libxcrypt-devel
73 BuildRequires: ncurses-devel
74 BuildRequires: ocaml-libguestfs-devel
75 BuildRequires: ocaml-findlib-devel
76 BuildRequires: ocaml-gettext-devel
78 BuildRequires: ocaml-ounit-devel
82 BuildRequires: xz-devel
88 BuildRequires: perl(Expect)
90 BuildRequires: bash-completion
91 BuildRequires: /usr/bin/qemu-img
92 BuildRequires: perl(Sys::Guestfs)
93 BuildRequires: perl(Win::Hivex)
94 BuildRequires: perl(Win::Hivex::Regedit)
96 %if 0%{verify_tarball_signature}
103 Requires: /usr/bin/qemu-img
106 # For virt-builder-repository:
109 # For virt-inspector, since Fedora and RHEL >= 7 use XFS:
110 Recommends: libguestfs-xfs
112 # For virt-edit and virt-customize:
115 # This replaces the libguestfs-tools-c package.
116 Provides: libguestfs-tools-c = 1:%{version}-%{release}
117 Obsoletes: libguestfs-tools-c <= 1:1.45.2-1
121 guestfs-tools is a set of tools that can be used to make batch
122 configuration changes to guests, get disk used/free statistics
123 (virt-df), perform backups and guest clones, change
124 registry/UUID/hostname info, build guests from scratch (virt-builder)
127 Virt-alignment-scan scans virtual machines looking for partition
130 Virt-builder is a command line tool for rapidly making disk images
131 of popular free operating systems.
133 Virt-cat is a command line tool to display the contents of a file in a
136 Virt-customize is a command line tool for customizing virtual machine
139 Virt-df is a command line tool to display free space on virtual
140 machine filesystems. Unlike other tools, it doesn’t just display the
141 amount of space allocated to a virtual machine, but can look inside
142 the virtual machine to see how much space is really being used. It is
143 like the df(1) command, but for virtual machines, except that it also
144 works for Windows virtual machines.
146 Virt-diff shows the differences between virtual machines.
148 Virt-edit is a command line tool to edit the contents of a file in a
151 Virt-filesystems is a command line tool to display the filesystems,
152 partitions, block devices, LVs, VGs and PVs found in a disk image
153 or virtual machine. It replaces the deprecated programs
154 virt-list-filesystems and virt-list-partitions with a much more
157 Virt-format is a command line tool to erase and make blank disks.
159 Virt-get-kernel extracts a kernel/initrd from a disk image.
161 Virt-inspector examines a virtual machine and tries to determine the
162 version of the OS, the kernel version, what drivers are installed,
163 whether the virtual machine is fully virtualized (FV) or
164 para-virtualized (PV), what applications are installed and more.
166 Virt-log is a command line tool to display the log files from a
169 Virt-ls is a command line tool to list out files in a virtual machine.
171 Virt-make-fs is a command line tool to build a filesystem out of
172 a collection of files or a tarball.
174 Virt-resize can resize existing virtual machine disk images.
176 Virt-sparsify makes virtual machine disk images sparse (thin-provisioned).
178 Virt-sysprep lets you reset or unconfigure virtual machines in
179 preparation for cloning them.
181 Virt-tail follows (tails) a log file within a guest, like 'tail -f'.
184 %package -n virt-win-reg
185 Summary: Access and modify the Windows Registry of a Windows VM
189 # This replaces the libguestfs-tools package.
190 Provides: libguestfs-tools = 1:%{version}-%{release}
191 Obsoletes: libguestfs-tools <= 1:1.45.2-1
194 %description -n virt-win-reg
195 Virt-win-reg lets you look at and modify the Windows Registry of
196 Windows virtual machines.
201 Summary: Safe and secure diskimage-builder replacement
204 Requires: libguestfs-dib >= 1:1.45.2-1
207 %description -n virt-dib
208 Virt-dib is a safe and secure alternative to the OpenStack
209 diskimage-builder command. It is compatible with most
210 diskimage-builder elements.
214 %package bash-completion
215 Summary: Bash tab-completion scripts for %{name}
217 Requires: bash-completion >= 2.0
218 Requires: %{name} = %{version}-%{release}
221 %description bash-completion
222 Install this package if you want intelligent bash tab-completion
223 for the virt-* tools.
226 %package man-pages-ja
227 Summary: Japanese (ja) man pages for %{name}
229 Requires: %{name} = %{version}-%{release}
231 %description man-pages-ja
232 %{name}-man-pages-ja contains Japanese (ja) man pages
236 %package man-pages-uk
237 Summary: Ukrainian (uk) man pages for %{name}
239 Requires: %{name} = %{version}-%{release}
241 %description man-pages-uk
242 %{name}-man-pages-uk contains Ukrainian (uk) man pages
247 %if 0%{verify_tarball_signature}
248 %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
253 %if 0%{patches_touch_autotools}
261 # Building index-parse.c by hand works around a race condition in the
262 # autotools cruft, where two or more copies of yacc race with each
263 # other, resulting in a corrupted file.
264 make -j1 -C builder index-parse.c
266 make V=1 %{?_smp_mflags}
270 %ifarch %{test_arches}
272 export LIBGUESTFS_DEBUG=1
273 export LIBGUESTFS_TRACE=1
275 # This test is currently broken and needs further investigation.
276 export SKIP_TEST_MACHINE_READABLE_SH=1
278 # This test fails for me in local mock and Koji, but not when running
279 # in an unrestricted environment.
280 export SKIP_TEST_VIRT_FORMAT_SH=1
282 if ! make check -k ; then
283 # Dump out the log files of any failing tests to make
284 # debugging test failures easier.
285 for f in `find -name test-suite.log | xargs grep -l ^FAIL:`; do
286 echo '*****' $f '*****'
296 make DESTDIR=$RPM_BUILD_ROOT install
298 # Delete libtool files.
299 find $RPM_BUILD_ROOT -name '*.la' -delete
301 # Move installed documentation back to the source directory so
302 # we can install it using a %%doc rule.
303 mv $RPM_BUILD_ROOT%{_docdir}/%{name} installed-docs
304 gzip --best installed-docs/*.xml
311 %files -f %{name}.lang
314 %doc installed-docs/*
315 %dir %{_sysconfdir}/virt-builder
316 %dir %{_sysconfdir}/virt-builder/repos.d
317 %config(noreplace) %{_sysconfdir}/virt-builder/repos.d/*
318 %{_bindir}/virt-alignment-scan
319 %{_bindir}/virt-builder
320 %{_bindir}/virt-builder-repository
322 %{_bindir}/virt-customize
326 %{_bindir}/virt-filesystems
327 %{_bindir}/virt-format
328 %{_bindir}/virt-get-kernel
329 %{_bindir}/virt-index-validate
330 %{_bindir}/virt-inspector
333 %{_bindir}/virt-make-fs
334 %{_bindir}/virt-resize
335 %{_bindir}/virt-sparsify
336 %{_bindir}/virt-sysprep
338 %{_mandir}/man1/virt-alignment-scan.1*
339 %{_mandir}/man1/virt-builder-repository.1*
340 %{_mandir}/man1/virt-builder.1*
341 %{_mandir}/man1/virt-cat.1*
342 %{_mandir}/man1/virt-customize.1*
343 %{_mandir}/man1/virt-df.1*
344 %{_mandir}/man1/virt-diff.1*
345 %{_mandir}/man1/virt-edit.1*
346 %{_mandir}/man1/virt-filesystems.1*
347 %{_mandir}/man1/virt-format.1*
348 %{_mandir}/man1/virt-get-kernel.1*
349 %{_mandir}/man1/virt-index-validate.1*
350 %{_mandir}/man1/virt-inspector.1*
351 %{_mandir}/man1/virt-log.1*
352 %{_mandir}/man1/virt-ls.1*
353 %{_mandir}/man1/virt-make-fs.1*
354 %{_mandir}/man1/virt-resize.1*
355 %{_mandir}/man1/virt-sparsify.1*
356 %{_mandir}/man1/virt-sysprep.1*
357 %{_mandir}/man1/virt-tail.1*
360 %files -n virt-win-reg
363 %{_bindir}/virt-win-reg
364 %{_mandir}/man1/virt-win-reg.1*
372 %{_mandir}/man1/virt-dib.1*
376 %files bash-completion
378 %dir %{_datadir}/bash-completion/completions
379 %{_datadir}/bash-completion/completions/virt-*
383 %lang(ja) %{_mandir}/ja/man1/*.1*
387 %lang(uk) %{_mandir}/uk/man1/*.1*
391 * Tue Mar 23 2021 Richard W.M. Jones <rjones@redhat.com> - 1.45.2-1
392 - New guestfs-tools package, split off from libguestfs.