%global _hardened_build 1 %ifarch %{arm} %{ix86} x86_64 ppc %{power64} %global have_libguestfs 1 %endif Name: nbdkit Version: 1.1.9 Release: 2%{?dist} Summary: NBD server License: BSD URL: https://github.com/libguestfs/nbdkit Source0: http://libguestfs.org/download/nbdkit/%{name}-%{version}.tar.gz Patch1: 0001-streaming-Update-the-buf-pointer-when-doing-partial-.patch BuildRequires: /usr/bin/pod2man %if 0%{?have_libguestfs} BuildRequires: libguestfs-devel %endif BuildRequires: libvirt-devel BuildRequires: xz-devel BuildRequires: zlib-devel BuildRequires: libcurl-devel BuildRequires: perl-devel BuildRequires: perl(ExtUtils::Embed) BuildRequires: python-devel %description NBD is a protocol for accessing block devices (hard disks and disk-like things) over the network. 'nbdkit' is a toolkit for creating NBD servers. The key features are: * Multithreaded NBD server written in C with good performance. * Well-documented, simple plugin API with a stable ABI guarantee. Allows you to export "unconventional" block devices easily. * Liberal license (BSD) allows nbdkit to be linked to proprietary libraries or included in proprietary code. You probably want to install one of more plugins (%{name}-plugin-*). To develop plugins, install the %{name}-devel package and start by reading the nbdkit(1) and nbdkit-plugin(3) manual pages. %package plugin-curl Summary: HTTP/FTP/SSH (cURL) plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-curl This package contains cURL (HTTP/FTP/SSH) support for %{name}. %package plugin-examples Summary: Example plugins for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-examples This package contains example plugins for %{name}. %package plugin-file Summary: File serving plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-file This package is a file serving plugin for %{name}. %if 0%{?have_libguestfs} %package plugin-guestfs Summary: libguestfs plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-guestfs This package is a libguestfs plugin for %{name}. %endif %package plugin-gzip Summary: GZip file serving plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-gzip This package is a gzip file serving plugin for %{name}. %package plugin-libvirt Summary: Libvirt plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-libvirt This package is a libvirt plugin for %{name}. It lets you access libvirt guest disks readonly. It is implemented using the libvirt virDomainBlockPeek API. %package plugin-perl Summary: Perl plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-perl This package lets you write Perl plugins for %{name}. %package plugin-python Summary: Python plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-python This package lets you write Python plugins for %{name}. %package plugin-streaming Summary: Streaming file serving plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-streaming This package is a streaming plugin for %{name}. %package plugin-xz Summary: XZ file serving plugin for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-xz This package is a xz file serving plugin for %{name}. %package devel Summary: Development files and documentation for %{name} License: BSD Requires: %{name}%{?_isa} = %{version}-%{release} %description devel This package contains development files and documentation for %{name}. Install this package if you want to develop plugins for %{name}. %prep %setup -q %patch1 -p1 %build # Force immediate binding for hardened build for plugins. # https://bugzilla.redhat.com/show_bug.cgi?id=977446#c13 export LDFLAGS="$LDFLAGS -Wl,-z,now" %configure --disable-static make %{?_smp_mflags} %install %make_install # Delete libtool crap. find $RPM_BUILD_ROOT -name '*.la' -delete %check # Workaround for broken libvirt (RHBZ#1138604). mkdir -p $HOME/.cache/libvirt # libguestfs 1.20 in Fedora 18 doesn't support NBD client protocol, so # the tests cannot be run. %if 0%{?fedora} >= 19 # Unlikely that libguestfs will work on ARM and PPC, so don't try running the # tests there. %ifnarch %{arm} ppc %{power64} make check %endif %endif %files %doc LICENSE README %{_sbindir}/nbdkit %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/plugins %{_mandir}/man1/nbdkit.1* %files plugin-curl %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-curl-plugin.so %{_mandir}/man1/nbdkit-curl-plugin.1* %files plugin-examples %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-example*-plugin.so %{_mandir}/man1/nbdkit-example*-plugin.1* %files plugin-file %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-file-plugin.so %{_mandir}/man1/nbdkit-file-plugin.1* %if 0%{?have_libguestfs} %files plugin-guestfs %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-guestfs-plugin.so %{_mandir}/man1/nbdkit-guestfs-plugin.1* %endif %files plugin-gzip %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-gzip-plugin.so %{_mandir}/man1/nbdkit-gzip-plugin.1* %files plugin-libvirt %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-libvirt-plugin.so %{_mandir}/man1/nbdkit-libvirt-plugin.1* %files plugin-perl %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-perl-plugin.so %{_mandir}/man3/nbdkit-perl-plugin.3* %files plugin-python %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-python-plugin.so %{_mandir}/man3/nbdkit-python-plugin.3* %files plugin-streaming %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-streaming-plugin.so %{_mandir}/man1/nbdkit-streaming-plugin.1* %files plugin-xz %doc LICENSE README %{_libdir}/%{name}/plugins/nbdkit-xz-plugin.so %{_mandir}/man1/nbdkit-xz-plugin.1* %files devel %doc LICENSE README TODO # Include the source of the example plugins in the documentation. %doc plugins/example*/*.c %doc plugins/perl/example.pl %doc plugins/python/example.py %{_includedir}/nbdkit-plugin.h %{_mandir}/man3/nbdkit-plugin.3* %changelog * Tue Oct 14 2014 Richard W.M. Jones - 1.1.9-2 - New upstream version 1.1.9. - Add the streaming plugin. - Include fix for streaming plugin in 1.1.9. * Wed Sep 10 2014 Richard W.M. Jones - 1.1.8-4 - Rebuild for updated Perl in Rawhide. - Workaround for broken libvirt (RHBZ#1138604). * Sun Aug 17 2014 Fedora Release Engineering - 1.1.8-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Sat Jun 21 2014 Richard W.M. Jones - 1.1.8-1 - New upstream version 1.1.8. - Add support for cURL, and new nbdkit-plugin-curl package. * Fri Jun 20 2014 Richard W.M. Jones - 1.1.7-1 - New upstream version 1.1.7. - Remove patches which are now all upstream. * Sat Jun 07 2014 Fedora Release Engineering - 1.1.6-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Thu Mar 06 2014 Dan HorĂ¡k - 1.1.6-4 - libguestfs is available only on selected arches * Fri Feb 21 2014 Richard W.M. Jones - 1.1.6-3 - Backport some upstream patches, fixing a minor bug and adding more tests. - Enable the tests since kernel bug is fixed. * Sun Feb 16 2014 Richard W.M. Jones - 1.1.6-1 - New upstream version 1.1.6. * Sat Feb 15 2014 Richard W.M. Jones - 1.1.5-2 - New upstream version 1.1.5. - Enable the new Python plugin. - Perl plugin man page moved to section 3. - Perl now requires ExtUtils::Embed. * Mon Feb 10 2014 Richard W.M. Jones - 1.1.4-1 - New upstream version 1.1.4. - Enable the new Perl plugin. * Sun Aug 4 2013 Richard W.M. Jones - 1.1.3-1 - New upstream version 1.1.3 which fixes some test problems. - Disable tests because Rawhide kernel is broken (RHBZ#991808). - Remove a single quote from description which confused emacs. - Remove patch, now upstream. * Sat Aug 03 2013 Fedora Release Engineering - 1.1.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Sun Jul 21 2013 Richard W.M. Jones - 1.1.2-3 - Fix segfault when IPv6 client is used (RHBZ#986601). * Tue Jul 16 2013 Richard W.M. Jones - 1.1.2-2 - New development version 1.1.2. - Disable the tests on Fedora <= 18. * Tue Jun 25 2013 Richard W.M. Jones - 1.1.1-1 - New development version 1.1.1. - Add libguestfs plugin. - Run the test suite. * Mon Jun 24 2013 Richard W.M. Jones - 1.0.0-4 - Initial release.