nbdkit/nbdkit.spec

628 lines
17 KiB
RPMSpec
Raw Normal View History

2013-06-24 17:39:35 +00:00
%global _hardened_build 1
2015-06-20 10:50:36 +00:00
%ifarch aarch64 %{arm} %{ix86} x86_64 ppc %{power64}
%global have_libguestfs 1
%endif
2013-06-24 17:39:35 +00:00
Name: nbdkit
Version: 1.1.12
2017-06-27 13:47:15 +00:00
Release: 10%{?dist}
2013-06-24 17:39:35 +00:00
Summary: NBD server
License: BSD
URL: https://github.com/libguestfs/nbdkit
2013-06-24 17:39:35 +00:00
Source0: http://libguestfs.org/download/nbdkit/%{name}-%{version}.tar.gz
# All upstream patches since 1.1.12, up to the point that
# Python 3 support was added.
Patch1: 0001-docs-Small-clarification-to-nbdkit-plugin-man-page.patch
Patch2: 0002-Mention-Ruby-in-the-README.patch
Patch3: 0003-Implement-dump-plugin-option.patch
Patch4: 0004-Update-copyright-date-on-a-few-files.patch
Patch5: 0005-tests-Multiple-small-additions-and-cleanups-to-the-t.patch
Patch6: 0006-Add-support-for-testing-under-valgrind.patch
Patch7: 0007-tests-Fix-memory-leak-in-OCaml-test-harness-found-by.patch
Patch8: 0008-Improve-memory-management-of-nbdkit-python-plugin-ex.patch
Patch9: 0009-nbdkit-Talk-about-Python-in-the-Python-plugin.patch
Patch10: 0010-Fix-build-for-Python-3.patch
Patch11: 0011-tests-python-Use-bytearray-in-the-test.patch
# Because the patches touch Makefile.am etc.
BuildRequires: autoconf, automake, libtool
2013-06-24 17:39:35 +00:00
BuildRequires: /usr/bin/pod2man
%if 0%{?have_libguestfs}
BuildRequires: libguestfs-devel
%endif
2013-06-24 17:39:35 +00:00
BuildRequires: libvirt-devel
BuildRequires: xz-devel
BuildRequires: zlib-devel
BuildRequires: libcurl-devel
BuildRequires: perl-devel
2014-02-15 08:26:19 +00:00
BuildRequires: perl(ExtUtils::Embed)
BuildRequires: python2-devel
BuildRequires: python3-devel
%ifarch %{ocaml_native_compiler}
# Requires OCaml 4.02.2 which contains fix for
# http://caml.inria.fr/mantis/view.php?id=6693
BuildRequires: ocaml >= 4.02.2
%endif
BuildRequires: ruby-devel
2013-06-24 17:39:35 +00:00
2015-06-10 11:57:41 +00:00
# For complicated reasons, this is required so that
# /bin/kernel-install puts the kernel directly into /boot, instead of
# into a /boot/<machine-id> subdirectory (in Fedora >= 23). Read the
# kernel-install script to understand why.
BuildRequires: grubby
2013-06-24 17:39:35 +00:00
%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.
2013-06-24 17:39:35 +00:00
* 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}.
2013-06-24 17:39:35 +00:00
%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
2013-06-24 17:39:35 +00:00
%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.
%ifarch %{ocaml_native_compiler}
%package plugin-ocaml
Summary: OCaml plugin for %{name}
License: BSD
Requires: %{name}%{?_isa} = %{version}-%{release}
%description plugin-ocaml
This package lets you run OCaml plugins for %{name}.
To compile OCaml plugins you will also need to install
%{name}-plugin-ocaml-devel.
%package plugin-ocaml-devel
Summary: OCaml development environment for %{name}
License: BSD
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-plugin-ocaml%{?_isa} = %{version}-%{release}
%description plugin-ocaml-devel
This package lets you write OCaml plugins for %{name}.
%endif
%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-common
Summary: Python 2 and 3 plugin common files for %{name}
License: BSD
Requires: %{name}%{?_isa} = %{version}-%{release}
%description plugin-python-common
This package contains common files shared between Python 2
and Python 3 %{name} plugins.
You should not install this package directly. Instead install
either %{name}-plugin-python2 or %{name}-plugin-python3.
%package plugin-python2
Summary: Python 2 plugin for %{name}
License: BSD
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-plugin-python-common = %{version}-%{release}
Provides: %{name}-plugin-python = %{version}-%{release}
Obsoletes: %{name}-plugin-python <= %{version}-%{release}
%description plugin-python2
This package lets you write Python 2 plugins for %{name}.
%package plugin-python3
Summary: Python 3 plugin for %{name}
License: BSD
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-plugin-python-common = %{version}-%{release}
%description plugin-python3
This package lets you write Python 3 plugins for %{name}.
%package plugin-ruby
Summary: Ruby plugin for %{name}
License: BSD
Requires: %{name}%{?_isa} = %{version}-%{release}
%description plugin-ruby
This package lets you write Ruby 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}.
2013-06-24 17:39:35 +00:00
%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
%autopatch -p1
2013-06-24 17:39:35 +00:00
# Because the patches touch Makefile.am etc.
autoreconf -i
2013-06-24 17:39:35 +00:00
%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"
# Build for Python 3 in a separate subdirectory. Upstream does not
# support srcdir!=builddir so copy the whole source.
copy="$(mktemp -d)"
cp -a . "$copy"
mv "$copy" python3
2013-06-24 17:39:35 +00:00
%configure --disable-static
make %{?_smp_mflags}
pushd python3
export PYTHON=%{_bindir}/python3
%configure --disable-static --disable-perl --disable-ocaml --disable-ruby
# Verify that it picked the correct version of Python
# to avoid RHBZ#1404631 happening again silently.
grep '^PYTHON_VERSION = 3' Makefile
make %{?_smp_mflags}
unset PYTHON
popd
2013-06-24 17:39:35 +00:00
%install
# Install for Python 2 and Python 3 separately.
# We do the Python 3 install first since that build is
# incomplete.
pushd python3
%make_install
popd
pushd $RPM_BUILD_ROOT%{_libdir}/nbdkit/plugins/
mv nbdkit-python-plugin.so nbdkit-python3-plugin.so
popd
2013-06-24 17:39:35 +00:00
%make_install
pushd $RPM_BUILD_ROOT%{_libdir}/nbdkit/plugins/
mv nbdkit-python-plugin.so nbdkit-python2-plugin.so
# For backwards compatibility, "the" python plugin is Python 2.
# Probably we will change this in future if Fedora switches
# exclusively to Python 3.
ln -s nbdkit-python2-plugin.so nbdkit-python-plugin.so
popd
2013-06-24 17:39:35 +00:00
# Delete libtool crap.
find $RPM_BUILD_ROOT -name '*.la' -delete
%check
# Workaround for broken libvirt (RHBZ#1138604).
mkdir -p $HOME/.cache/libvirt
# Make sure we can see the debug messages (RHBZ#1230160).
export LIBGUESTFS_DEBUG=1
export LIBGUESTFS_TRACE=1
# Unlikely that libguestfs will work on ARM and PPC, so don't try running the
2014-02-21 13:09:18 +00:00
# tests there.
# Broken on i686 because of https://bugzilla.redhat.com/show_bug.cgi?id=1302071
%ifnarch %{arm} %{ix86} ppc %{power64}
# Broken on F25 because of https://bugzilla.redhat.com/show_bug.cgi?id=1344016
2016-06-08 14:27:44 +00:00
%if 0%{?fedora} < 25
make check || {
cat tests/test-suite.log
exit 1
}
pushd python3
make check || {
cat tests/test-suite.log
exit 1
}
popd
2013-07-16 11:45:37 +00:00
%endif
2014-02-21 13:09:18 +00:00
%endif
%ifarch %{ocaml_native_compiler}
%post plugin-ocaml -p /sbin/ldconfig
%postun plugin-ocaml -p /sbin/ldconfig
%endif
2013-06-24 17:39:35 +00:00
%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*
2013-06-24 17:39:35 +00:00
%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
2013-06-24 17:39:35 +00:00
%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*
%ifarch %{ocaml_native_compiler}
%files plugin-ocaml
%doc LICENSE README
%{_libdir}/libnbdkitocaml.so.*
%files plugin-ocaml-devel
%{_libdir}/libnbdkitocaml.so
%{_libdir}/ocaml/NBDKit.*
%{_mandir}/man3/nbdkit-ocaml-plugin.3*
%endif
%files plugin-perl
%doc LICENSE README
%{_libdir}/%{name}/plugins/nbdkit-perl-plugin.so
%{_mandir}/man3/nbdkit-perl-plugin.3*
%files plugin-python-common
%doc LICENSE README
%{_mandir}/man3/nbdkit-python-plugin.3*
%files plugin-python2
%{_libdir}/%{name}/plugins/nbdkit-python-plugin.so
%{_libdir}/%{name}/plugins/nbdkit-python2-plugin.so
%files plugin-python3
%{_libdir}/%{name}/plugins/nbdkit-python3-plugin.so
%files plugin-ruby
%doc LICENSE README
%{_libdir}/%{name}/plugins/nbdkit-ruby-plugin.so
%{_mandir}/man3/nbdkit-ruby-plugin.3*
%files plugin-streaming
%doc LICENSE README
%{_libdir}/%{name}/plugins/nbdkit-streaming-plugin.so
%{_mandir}/man1/nbdkit-streaming-plugin.1*
2013-06-24 17:39:35 +00:00
%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
%doc plugins/ruby/example.rb
2013-06-24 17:39:35 +00:00
%{_includedir}/nbdkit-plugin.h
%{_mandir}/man3/nbdkit-plugin.3*
%changelog
2017-06-27 13:47:15 +00:00
* Tue Jun 27 2017 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-10
- Rebuild for OCaml 4.04.2.
2017-06-04 14:14:47 +00:00
* Sun Jun 04 2017 Jitka Plesnikova <jplesnik@redhat.com> - 1.1.12-9
- Perl 5.26 rebuild
2017-05-15 11:30:22 +00:00
* Mon May 15 2017 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-8
- Rebuild for OCaml 4.04.1.
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.12-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Jan 12 2017 Vít Ondruch <vondruch@redhat.com> - 1.1.12-6
- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.4
2016-12-23 17:09:29 +00:00
* Fri Dec 23 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-5
- Rebuild for Python 3.6 update.
* Wed Dec 14 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-4
- Fix python3 subpackage so it really uses python3 (RHBZ#1404631).
2016-11-05 09:47:20 +00:00
* Sat Nov 05 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-3
- Rebuild for OCaml 4.04.0.
* Mon Oct 03 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-2
- Compile Python 2 and Python 3 versions of the plugin.
* Wed Jun 08 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.12-1
- New upstream version 1.1.12
- Enable Ruby plugin.
- Disable tests on Rawhide because libvirt is broken again (RHBZ#1344016).
* Wed May 25 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.11-10
- Add another upstream patch since 1.1.11.
2016-05-23 10:28:55 +00:00
* Mon May 23 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.11-9
- Add all patches upstream since 1.1.11 (fixes RHBZ#1336758).
2016-05-17 01:29:45 +00:00
* Tue May 17 2016 Jitka Plesnikova <jplesnik@redhat.com> - 1.1.11-7
- Perl 5.24 rebuild
* Wed Mar 09 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.11-6
- When tests fail, dump out test-suite.log so we can debug it.
* Fri Feb 05 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.11-5
- Don't run tests on x86, because kernel is broken there
(https://bugzilla.redhat.com/show_bug.cgi?id=1302071)
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.11-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
2016-01-11 19:56:42 +00:00
* Mon Jan 11 2016 Richard W.M. Jones <rjones@redhat.com> - 1.1.11-3
- Add support for newstyle NBD protocol (RHBZ#1297100).
2015-10-31 12:40:07 +00:00
* Sat Oct 31 2015 Richard W.M. Jones <rjones@redhat.com> - 1.1.11-1
- New upstream version 1.1.11.
2015-07-30 12:29:31 +00:00
* Thu Jul 30 2015 Richard W.M. Jones <rjones@redhat.com> - 1.1.10-3
- OCaml 4.02.3 rebuild.
2015-06-20 10:50:36 +00:00
* Sat Jun 20 2015 Richard W.M. Jones <rjones@redhat.com> - 1.1.10-2
- Enable libguestfs plugin on aarch64.
* Fri Jun 19 2015 Richard W.M. Jones <rjones@redhat.com> - 1.1.10-1
- New upstream version.
- Enable now working OCaml plugin (requires OCaml >= 4.02.2).
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.9-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
2015-06-11 08:54:53 +00:00
* Thu Jun 11 2015 Jitka Plesnikova <jplesnik@redhat.com> - 1.1.9-5
- Perl 5.22 rebuild
* Wed Jun 10 2015 Richard W.M. Jones <rjones@redhat.com> - 1.1.9-4
- Enable debugging messages when running make check.
2015-06-06 15:52:34 +00:00
* Sat Jun 06 2015 Jitka Plesnikova <jplesnik@redhat.com> - 1.1.9-3
- Perl 5.22 rebuild
* Tue Oct 14 2014 Richard W.M. Jones <rjones@redhat.com> - 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 <rjones@redhat.com> - 1.1.8-4
2014-09-10 11:37:46 +00:00
- Rebuild for updated Perl in Rawhide.
- Workaround for broken libvirt (RHBZ#1138604).
2014-09-10 11:37:46 +00:00
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 21 2014 Richard W.M. Jones <rjones@redhat.com> - 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 <rjones@redhat.com> - 1.1.7-1
- New upstream version 1.1.7.
- Remove patches which are now all upstream.
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu Mar 06 2014 Dan Horák <dan[at]danny.cz> - 1.1.6-4
- libguestfs is available only on selected arches
2014-02-21 13:07:52 +00:00
* Fri Feb 21 2014 Richard W.M. Jones <rjones@redhat.com> - 1.1.6-3
- Backport some upstream patches, fixing a minor bug and adding more tests.
- Enable the tests since kernel bug is fixed.
2014-02-16 10:51:31 +00:00
* Sun Feb 16 2014 Richard W.M. Jones <rjones@redhat.com> - 1.1.6-1
- New upstream version 1.1.6.
2014-02-15 08:26:19 +00:00
* Sat Feb 15 2014 Richard W.M. Jones <rjones@redhat.com> - 1.1.5-2
- New upstream version 1.1.5.
- Enable the new Python plugin.
- Perl plugin man page moved to section 3.
2014-02-15 08:26:19 +00:00
- Perl now requires ExtUtils::Embed.
* Mon Feb 10 2014 Richard W.M. Jones <rjones@redhat.com> - 1.1.4-1
- New upstream version 1.1.4.
- Enable the new Perl plugin.
* Sun Aug 4 2013 Richard W.M. Jones <rjones@redhat.com> - 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.
2013-08-04 21:46:27 +00:00
- Remove patch, now upstream.
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Sun Jul 21 2013 Richard W.M. Jones <rjones@redhat.com> - 1.1.2-3
- Fix segfault when IPv6 client is used (RHBZ#986601).
2013-07-16 11:45:37 +00:00
* Tue Jul 16 2013 Richard W.M. Jones <rjones@redhat.com> - 1.1.2-2
2013-07-16 11:10:44 +00:00
- New development version 1.1.2.
2013-07-16 11:45:37 +00:00
- Disable the tests on Fedora <= 18.
2013-07-16 11:10:44 +00:00
* Tue Jun 25 2013 Richard W.M. Jones <rjones@redhat.com> - 1.1.1-1
- New development version 1.1.1.
- Add libguestfs plugin.
- Run the test suite.
2013-06-24 17:39:35 +00:00
* Mon Jun 24 2013 Richard W.M. Jones <rjones@redhat.com> - 1.0.0-4
- Initial release.