diff --git a/nbdkit.spec b/nbdkit.spec index 53b0053..648ef19 100644 --- a/nbdkit.spec +++ b/nbdkit.spec @@ -7,7 +7,7 @@ %endif %endif -# We can only compiler the OCaml plugin on platforms which have native +# We can only compile the OCaml plugin on platforms which have native # OCaml support (not bytecode). %ifarch %{ocaml_native_compiler} %global have_ocaml 1 @@ -52,15 +52,20 @@ Summary: NBD server License: BSD URL: https://github.com/libguestfs/nbdkit +%if 0%{?rhel} >= 8 +# On RHEL 8+, we cannot build the package on i686 (no virt stack). +ExcludeArch: i686 +%endif + Source0: http://libguestfs.org/download/nbdkit/%{source_directory}/%{name}-%{version}.tar.gz %if 0%{verify_tarball_signature} Source1: http://libguestfs.org/download/nbdkit/%{source_directory}/%{name}-%{version}.tar.gz.sig # Keyring used to verify tarball signature. -Source2: libguestfs.keyring +Source2: libguestfs.keyring %endif %if 0%{patches_touch_autotools} -BuildRequires: autoconf, automake, libtool +BuildRequires: autoconf, automake, libtool %endif %ifnarch %{complete_test_arches} @@ -70,7 +75,7 @@ BuildRequires: gcc, gcc-c++ BuildRequires: /usr/bin/pod2man BuildRequires: gnutls-devel BuildRequires: libselinux-devel -%if 0%{?have_libguestfs} +%if !0%{?rhel} && 0%{?have_libguestfs} BuildRequires: libguestfs-devel %endif BuildRequires: libvirt-devel @@ -81,12 +86,15 @@ BuildRequires: libcurl-devel BuildRequires: libnbd-devel >= 1.3.11 BuildRequires: libssh-devel BuildRequires: e2fsprogs, e2fsprogs-devel +%if !0%{?rhel} BuildRequires: genisoimage BuildRequires: rb_libtorrent-devel +%endif BuildRequires: bash-completion BuildRequires: perl-devel BuildRequires: perl(ExtUtils::Embed) BuildRequires: python3-devel +%if !0%{?rhel} %if 0%{?have_ocaml} # Requires OCaml 4.02.2 which contains fix for # http://caml.inria.fr/mantis/view.php?id=6693 @@ -95,18 +103,28 @@ BuildRequires: ocaml >= 4.02.2 BuildRequires: ruby-devel BuildRequires: tcl-devel BuildRequires: lua-devel +%endif %if 0%{verify_tarball_signature} BuildRequires: gnupg2 %endif # Only for running the test suite: -BuildRequires: /usr/bin/certtool +BuildRequires: %{_bindir}/certtool +BuildRequires: expect +BuildRequires: %{_bindir}/hexdump +BuildRequires: %{_sbindir}/ip BuildRequires: jq -BuildRequires: /usr/bin/nbdsh -BuildRequires: /usr/bin/qemu-img -BuildRequires: /usr/bin/socat -BuildRequires: /usr/sbin/ss -BuildRequires: /usr/bin/ssh-keygen +BuildRequires: %{_bindir}/nbdcopy +BuildRequires: %{_bindir}/nbdinfo +BuildRequires: %{_bindir}/nbdsh +BuildRequires: %{_bindir}/qemu-img +BuildRequires: %{_bindir}/qemu-io +BuildRequires: %{_bindir}/qemu-nbd +BuildRequires: %{_sbindir}/sfdisk +BuildRequires: %{_bindir}/socat +BuildRequires: %{_sbindir}/ss +BuildRequires: %{_bindir}/stat +BuildRequires: %{_bindir}/ssh-keygen # nbdkit is a metapackage pulling the server and a useful subset # of the plugins and filters. @@ -137,8 +155,8 @@ The key features are: * Filters can be stacked in front of plugins to transform the output. -In Fedora, '%{name}' is a meta-package which pulls in the core server -and a useful subset of plugins and filters with minimal dependencies. +'%{name}' is a meta-package which pulls in the core server and a +useful subset of plugins and filters with minimal dependencies. If you want just the server, install '%{name}-server'. @@ -232,6 +250,7 @@ This package contains example plugins for %{name}. # The plugins below have non-trivial dependencies are so are # packaged separately. +%if !0%{?rhel} %package cc-plugin Summary: Write small inline C plugins and scripts for %{name} License: BSD @@ -245,8 +264,10 @@ Requires: %{_bindir}/cat This package contains support for writing inline C plugins and scripts for %{name}. NOTE this is NOT the right package for writing plugins in C, install %{name}-devel for that. +%endif +%if !0%{?rhel} %package cdi-plugin Summary: Containerized Data Import plugin for %{name} License: BSD @@ -258,6 +279,7 @@ Requires: podman %description cdi-plugin This package contains Containerized Data Import support for %{name}. +%endif %package curl-plugin @@ -271,7 +293,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} This package contains cURL (HTTP/FTP) support for %{name}. -%if 0%{?have_libguestfs} +%if !0%{?rhel} && 0%{?have_libguestfs} %package guestfs-plugin Summary: libguestfs plugin for %{name} License: BSD @@ -295,6 +317,20 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} This package is a gzip filter for %{name}. +%if 0%{?rhel} == 8 +%package gzip-plugin +Summary: GZip plugin for %{name} +License: BSD + +Requires: %{name}-server%{?_isa} = %{version}-%{release} + + +%description gzip-plugin +This package is a gzip plugin for %{name}. +%endif + + +%if !0%{?rhel} %package iso-plugin Summary: Virtual ISO 9660 plugin for %{name} License: BSD @@ -305,8 +341,10 @@ Requires: genisoimage %description iso-plugin This package is a virtual ISO 9660 (CD-ROM) plugin for %{name}. +%endif +%if !0%{?rhel} %package libvirt-plugin Summary: Libvirt plugin for %{name} License: BSD @@ -318,6 +356,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} This package is a libvirt plugin for %{name}. It lets you access libvirt guest disks readonly. It is implemented using the libvirt virDomainBlockPeek API. +%endif %package linuxdisk-plugin @@ -333,6 +372,7 @@ Requires: e2fsprogs This package is a virtual Linux disk plugin for %{name}. +%if !0%{?rhel} %package lua-plugin Summary: Lua plugin for %{name} License: BSD @@ -342,6 +382,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} %description lua-plugin This package lets you write Lua plugins for %{name}. +%endif %package nbd-plugin @@ -356,7 +397,7 @@ This package lets you forward NBD connections from %{name} to another NBD server. -%if 0%{?have_ocaml} +%if !0%{?rhel} && 0%{?have_ocaml} %package ocaml-plugin Summary: OCaml plugin for %{name} License: BSD @@ -384,6 +425,7 @@ This package lets you write OCaml plugins for %{name}. %endif +%if !0%{?rhel} %package perl-plugin Summary: Perl plugin for %{name} License: BSD @@ -393,6 +435,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} %description perl-plugin This package lets you write Perl plugins for %{name}. +%endif %package python-plugin @@ -406,6 +449,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} This package lets you write Python 3 plugins for %{name}. +%if !0%{?rhel} %package ruby-plugin Summary: Ruby plugin for %{name} License: BSD @@ -415,6 +459,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} %description ruby-plugin This package lets you write Ruby plugins for %{name}. +%endif %package ssh-plugin @@ -452,6 +497,7 @@ Requires: tar This package is a tar archive plugin for %{name}. +%if !0%{?rhel} %package tcl-plugin Summary: Tcl plugin for %{name} License: BSD @@ -461,6 +507,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} %description tcl-plugin This package lets you write Tcl plugins for %{name}. +%endif %package tmpdisk-plugin @@ -471,13 +518,17 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} # For mkfs and mke2fs (defaults). Requires: util-linux, e2fsprogs # For other filesystems. -Suggests: xfsprogs, ntfsprogs, dosfstools +Suggests: xfsprogs +%if !0%{?rhel} +Suggests: ntfsprogs, dosfstools +%endif %description tmpdisk-plugin This package is a remote temporary filesystem disk plugin for %{name}. +%if !0%{?rhel} %package torrent-plugin Summary: BitTorrent plugin for %{name} License: BSD @@ -487,6 +538,7 @@ Requires: %{name}-server%{?_isa} = %{version}-%{release} %description torrent-plugin This package is a BitTorrent plugin for %{name}. +%endif %ifarch x86_64 @@ -600,6 +652,7 @@ nbdkit-tls-fallback-filter TLS protection filter. nbdkit-truncate-filter Truncate, expand, round up or round down size. +%if !0%{?rhel} %package ext2-filter Summary: ext2, ext3 and ext4 filesystem support for %{name} License: BSD @@ -614,6 +667,7 @@ Obsoletes: %{name}-ext2-plugin <= %{version}-%{release} %description ext2-filter This package contains ext2, ext3 and ext4 filesystem support for %{name}. +%endif %package xz-filter @@ -671,20 +725,29 @@ autoreconf -i %build -# Golang bindings are not enabled in the Fedora build since they don't +# Golang bindings are not enabled in the build since they don't # need to be. Most people would use them by copying the upstream # package into their vendor/ directory. +export PYTHON=%{__python3} %configure \ - PYTHON=%{_bindir}/python3 \ --disable-static \ --disable-golang \ --disable-rust \ -%if 0%{?have_ocaml} +%if !0%{?rhel} && 0%{?have_ocaml} --enable-ocaml \ %else --disable-ocaml \ %endif -%if 0%{?have_libguestfs} +%if 0%{?rhel} + --disable-lua \ + --disable-perl \ + --disable-ruby \ + --disable-tcl \ + --without-ext2 \ + --without-iso \ + --without-libvirt \ +%endif +%if !0%{?rhel} && 0%{?have_libguestfs} --with-libguestfs \ %else --without-libguestfs \ @@ -704,9 +767,23 @@ grep '^PYTHON_VERSION = 3' Makefile # Delete libtool crap. find $RPM_BUILD_ROOT -name '*.la' -delete +# If cargo happens to be installed on the machine then the +# rust plugin is built. Delete it if this happens. +rm -f $RPM_BUILD_ROOT%{_mandir}/man3/nbdkit-rust-plugin.3* + +%if 0%{?rhel} != 8 # Remove the deprecated gzip plugin (use gzip filter instead). rm $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/nbdkit-gzip-plugin.so rm $RPM_BUILD_ROOT%{_mandir}/man1/nbdkit-gzip-plugin.1* +%endif + +%if 0%{?rhel} +# In RHEL, remove some plugins we cannot --disable. +for f in cc cdi torrent; do + rm $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/nbdkit-$f-plugin.so + rm $RPM_BUILD_ROOT%{_mandir}/man?/nbdkit-$f-plugin.* +done +%endif %check @@ -811,22 +888,28 @@ export LIBGUESTFS_TRACE=1 %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-example*-plugin.so +%if !0%{?rhel} %{_libdir}/%{name}/plugins/nbdkit-example4-plugin +%endif %{_mandir}/man1/nbdkit-example*-plugin.1* +%if !0%{?rhel} %files cc-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-cc-plugin.so %{_mandir}/man3/nbdkit-cc-plugin.3* +%endif +%if !0%{?rhel} %files cdi-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-cdi-plugin.so %{_mandir}/man1/nbdkit-cdi-plugin.1* +%endif %files curl-plugin @@ -836,7 +919,7 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-curl-plugin.1* -%if 0%{?have_libguestfs} +%if !0%{?rhel} && 0%{?have_libguestfs} %files guestfs-plugin %doc README %license LICENSE @@ -852,18 +935,31 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-gzip-filter.1* +%if 0%{?rhel} == 8 +%files gzip-plugin +%doc README +%license LICENSE +%{_libdir}/%{name}/plugins/nbdkit-gzip-plugin.so +%{_mandir}/man1/nbdkit-gzip-plugin.1* +%endif + + +%if !0%{?rhel} %files iso-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-iso-plugin.so %{_mandir}/man1/nbdkit-iso-plugin.1* +%endif +%if !0%{?rhel} %files libvirt-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-libvirt-plugin.so %{_mandir}/man1/nbdkit-libvirt-plugin.1* +%endif %files linuxdisk-plugin @@ -873,11 +969,13 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-linuxdisk-plugin.1* +%if !0%{?rhel} %files lua-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-lua-plugin.so %{_mandir}/man3/nbdkit-lua-plugin.3* +%endif %files nbd-plugin @@ -887,7 +985,7 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-nbd-plugin.1* -%if 0%{?have_ocaml} +%if !0%{?rhel} && 0%{?have_ocaml} %files ocaml-plugin %doc README %license LICENSE @@ -900,11 +998,13 @@ export LIBGUESTFS_TRACE=1 %endif +%if !0%{?rhel} %files perl-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-perl-plugin.so %{_mandir}/man3/nbdkit-perl-plugin.3* +%endif %files python-plugin @@ -914,11 +1014,13 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man3/nbdkit-python-plugin.3* +%if !0%{?rhel} %files ruby-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-ruby-plugin.so %{_mandir}/man3/nbdkit-ruby-plugin.3* +%endif %files ssh-plugin @@ -942,11 +1044,13 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-tar-plugin.1* +%if !0%{?rhel} %files tcl-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-tcl-plugin.so %{_mandir}/man3/nbdkit-tcl-plugin.3* +%endif %files tmpdisk-plugin @@ -956,11 +1060,13 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-tmpdisk-plugin.1* +%if !0%{?rhel} %files torrent-plugin %doc README %license LICENSE %{_libdir}/%{name}/plugins/nbdkit-torrent-plugin.so %{_mandir}/man1/nbdkit-torrent-plugin.1* +%endif %ifarch x86_64 @@ -1033,11 +1139,13 @@ export LIBGUESTFS_TRACE=1 %{_mandir}/man1/nbdkit-truncate-filter.1* +%if !0%{?rhel} %files ext2-filter %doc README %license LICENSE %{_libdir}/%{name}/filters/nbdkit-ext2-filter.so %{_mandir}/man1/nbdkit-ext2-filter.1* +%endif %files xz-filter @@ -1052,16 +1160,24 @@ export LIBGUESTFS_TRACE=1 %license LICENSE # Include the source of the example plugins in the documentation. %doc plugins/example*/*.c +%if !0%{?rhel} %doc plugins/example4/nbdkit-example4-plugin %doc plugins/lua/example.lua -%if 0%{?have_ocaml} +%endif +%if !0%{?rhel} && 0%{?have_ocaml} %doc plugins/ocaml/example.ml %endif +%if !0%{?rhel} %doc plugins/perl/example.pl +%endif %doc plugins/python/examples/*.py +%if !0%{?rhel} %doc plugins/ruby/example.rb +%endif %doc plugins/sh/example.sh +%if !0%{?rhel} %doc plugins/tcl/example.tcl +%endif %{_includedir}/nbdkit-common.h %{_includedir}/nbdkit-filter.h %{_includedir}/nbdkit-plugin.h