#
# Conditional build:
%bcond_without dist_kernel # allow non-distribution kernel
%bcond_without kernel # don't build kernel modules
%bcond_without userspace # don't build userspace programs
%bcond_with verbose # verbose build (V=1)
# set kernel_builtin to true for kernels with openvswitch module (>= 3.3)
%define kernel_builtin %(echo %{_kernel_ver} | awk '{ split($0, v, "."); vv=v[1]*1000+v[2]; if (vv >= 3003) print 1; else print 0 }')
#'
%if %{kernel_builtin} == 1
%undefine with_kernel
%endif
%if %{without kernel}
%undefine with_dist_kernel
%endif
%if "%{_alt_kernel}" != "%{nil}"
%undefine with_userspace
%endif
%if %{without userspace}
# nothing to be placed to debuginfo package
%define _enable_debug_packages 0
%endif
%define rel 2
%define pname openvswitch
Summary: Production Quality, Multilayer Open Virtual Switch
#Summary(pl.UTF-8): -
Name: %{pname}%{_alt_kernel}
Version: 1.4.1
Release: %{rel}
License: Apache v2.0
Group: Networking/Daemons
Source0: http://openvswitch.org/releases/%{pname}-%{version}.tar.gz
# Source0-md5: 6f0e1a3ac032bfacff290016583f2b0f
Source1: ifdown-ovs
Source2: ifup-ovs
Source3: README.PLD
Source4: %{pname}.logrotate
Source5: %{pname}.tmpfiles
Source6: %{pname}.sysconfig
Source7: %{pname}.init
#Source8: openvswitch-controller.init
#Source9: openvswitch-ipsec.init
Source10: %{pname}.service
Source11: ovsdbmonitor.desktop
Patch0: linux-3.3.patch
Patch1: ovsdbmonitor-move-to-its-own-data-directory.patch
URL: http://openvswitch.org/
BuildRequires: Zope-Interface
BuildRequires: automake
BuildRequires: autoconf
BuildRequires: graphviz
BuildRequires: groff
BuildRequires: openssl-devel
BuildRequires: openssl-tools
BuildRequires: pkgconfig
BuildRequires: python-PyQt4-devel
BuildRequires: python-PyQt4-devel-tools
BuildRequires: python-TwistedConch
BuildRequires: python-TwistedCore
BuildRequires: python-distribute
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.647
%if %{with kernel}
%{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20.2}
%endif
Requires(post,preun): /sbin/chkconfig
Requires(post,preun,postun): systemd-units >= 38
Requires: python-modules
Requires: rc-scripts
Requires: systemd-units >= 38
BuildRoot: %{tmpdir}/%{pname}-%{version}-root-%(id -u -n)
%description
Open vSwitch is a production quality, multilayer virtual switch
licensed under the open source Apache 2.0 license. It is designed to
enable massive network automation through programmatic extension,
while still supporting standard management interfaces and protocols
(e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition,
it is designed to support distribution across multiple physical
servers similar to VMware's vNetwork distributed vswitch or Cisco's
Nexus 1000V.
#%description -l pl.UTF-8
%package -n python-openvswitch
Summary: Open vSwitch python bindings
Group: Development/Languages/Python
Requires: python-modules
%description -n python-openvswitch
Python bindings for the Open vSwitch database
%package -n ovsdbmonitor
Summary: Open vSwitch graphical monitoring tool
Group: Networking/Admin
Requires: Zope-Interface
Requires: python-PyQt4-devel-tools
Requires: python-TwistedConch
Requires: python-TwistedCore
Requires: python-modules
Requires: python-openvswitch = %{version}-%{release}
%description -n ovsdbmonitor
A GUI tool for monitoring and troubleshooting local or remote Open
vSwitch installations. It presents GUI tables that graphically
represent an Open vSwitch kernel flow table (similar to "ovs-dpctl
dump-flows") and Open vSwitch database contents (similar to "ovs-vsctl
list
").
%package test
Summary: Open vSwitch test package
Group: Networking/Admin
Requires: python-modules
Requires: python-openvswitch = %{version}-%{release}
%description test
This package contains utilities that are useful to diagnose
performance and connectivity issues in Open vSwitch setup.
%package -n kernel%{_alt_kernel}-net-openvswitch
Summary: Linux driver for openvswitch
Summary(pl.UTF-8): Sterownik dla Linuksa do openvswitch
Release: %{rel}@%{_kernel_ver_str}
Group: Base/Kernel
Requires(post,postun): /sbin/depmod
%if %{with dist_kernel}
%requires_releq_kernel
Requires(postun): %releq_kernel
%endif
%description -n kernel%{_alt_kernel}-net-openvswitch
This is driver for openvswitch for Linux.
This package contains Linux module.
%description -n kernel%{_alt_kernel}-net-openvswitch -l pl.UTF-8
Sterownik dla Linuksa do openvswitch.
Ten pakiet zawiera moduł jądra Linuksa.
%prep
%setup -q -n %{pname}-%{version}
%patch0 -p1
%patch1 -p1
cp %{SOURCE3} .
%build
%{__aclocal} -I m4
%{__automake}
%{__autoconf}
%configure \
%if %{with kernel}
--with-linux=%{_kernelsrcdir} \
--with-linux-source=%{_kernelsrcdir}
%endif
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
%if %{with userspace}
install -d $RPM_BUILD_ROOT{%{py_sitescriptdir},%{systemdunitdir},%{systemdtmpfilesdir}} \
$RPM_BUILD_ROOT{/etc/{sysconfig,rc.d/init.d,logrotate.d},/lib/rc-scripts} \
$RPM_BUILD_ROOT{%{_desktopdir},%{_datadir}/%{pname}/pki}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
install -p %{SOURCE1} $RPM_BUILD_ROOT/lib/rc-scripts/ifdown-ovs
install -p %{SOURCE2} $RPM_BUILD_ROOT/lib/rc-scripts/ifup-ovs
install -p %{SOURCE4} $RPM_BUILD_ROOT/etc/logrotate.d/openvswitch
install -p %{SOURCE5} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/openvswitch.conf
install -p %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/openvswitch
install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/openvswitch
install -p %{SOURCE10} $RPM_BUILD_ROOT%{systemdunitdir}/openvswitch.service
install -p %{SOURCE11} $RPM_BUILD_ROOT%{_desktopdir}
%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{pname}/python/{ovs,ovstest} $RPM_BUILD_ROOT%{py_sitescriptdir}
%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/%{pname}/python
%py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
%py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
%py_ocomp $RPM_BUILD_ROOT%{_datadir}/ovsdbmonitor
%py_comp $RPM_BUILD_ROOT%{_datadir}/ovsdbmonitor
%endif
%if %{with kernel}
cd datapath/linux
%install_kernel_modules -m brcompat_mod -d kernel/net/openvswitch
%install_kernel_modules -m openvswitch_mod -d kernel/net/openvswitch
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post
/sbin/chkconfig --add openvswitch
%service openvswitch restart
%systemd_post openvswitch.service
%preun
if [ "$1" = "0" ]; then
%service -q openvswitch stop
/sbin/chkconfig --del openvswitch
fi
%systemd_preun openvswitch.service
%postun
%systemd_reload
%post -n kernel%{_alt_kernel}-net-openvswitch
%depmod %{_kernel_ver}
%postun -n kernel%{_alt_kernel}-net-openvswitch
%depmod %{_kernel_ver}
%if %{with userspace}
%files
%defattr(644,root,root,755)
%doc AUTHORS DESIGN INSTALL.KVM INSTALL.SSL INSTALL.bridge INSTALL.userspace NEWS README
%doc REPORTING-BUGS WHY-OVS README.PLD
%attr(755,root,root) /lib/rc-scripts/ifdown-ovs
%attr(755,root,root) /lib/rc-scripts/ifup-ovs
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/openvswitch
%{systemdtmpfilesdir}/openvswitch.conf
%{systemdunitdir}/openvswitch.service
%dir %{_datadir}/%{pname}
%{_datadir}/%{pname}/pki
%dir %{_datadir}/%{pname}/scripts
%attr(755,root,root) %{_datadir}/%{pname}/scripts/*
%{_datadir}/%{pname}/bugtool-plugins
%{_datadir}/%{pname}/vswitch.ovsschema
%attr(754,root,root) /etc/rc.d/init.d/openvswitch
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/openvswitch
%attr(755,root,root) %{_bindir}/ovs-appctl
%attr(755,root,root) %{_bindir}/ovs-benchmark
%attr(755,root,root) %{_bindir}/ovs-controller
%attr(755,root,root) %{_bindir}/ovs-dpctl
%attr(755,root,root) %{_bindir}/ovs-ofctl
%attr(755,root,root) %{_bindir}/ovs-parse-leaks
%attr(755,root,root) %{_bindir}/ovs-pcap
%attr(755,root,root) %{_bindir}/ovs-pki
%attr(755,root,root) %{_bindir}/ovs-tcpundump
%attr(755,root,root) %{_bindir}/ovs-vsctl
%attr(755,root,root) %{_bindir}/ovsdb-client
%attr(755,root,root) %{_bindir}/ovsdb-tool
%attr(755,root,root) %{_sbindir}/ovs-brcompatd
%attr(755,root,root) %{_sbindir}/ovs-bugtool
%attr(755,root,root) %{_sbindir}/ovs-vlan-bug-workaround
%attr(755,root,root) %{_sbindir}/ovs-vswitchd
%attr(755,root,root) %{_sbindir}/ovsdb-server
%{_mandir}/man1/ovs-benchmark.1*
%{_mandir}/man1/ovs-pcap.1*
%{_mandir}/man1/ovs-tcpundump.1*
%{_mandir}/man1/ovsdb-client.1*
%{_mandir}/man1/ovsdb-server.1*
%{_mandir}/man1/ovsdb-tool.1*
%{_mandir}/man5/ovs-vswitchd.conf.db.5*
%{_mandir}/man8/ovs-appctl.8*
%{_mandir}/man8/ovs-brcompatd.8*
%{_mandir}/man8/ovs-bugtool.8*
%{_mandir}/man8/ovs-controller.8*
%{_mandir}/man8/ovs-ctl.8*
%{_mandir}/man8/ovs-dpctl.8*
%{_mandir}/man8/ovs-ofctl.8*
%{_mandir}/man8/ovs-parse-leaks.8*
%{_mandir}/man8/ovs-pki.8*
%{_mandir}/man8/ovs-vlan-bug-workaround.8*
%{_mandir}/man8/ovs-vlan-test.8*
%{_mandir}/man8/ovs-vsctl.8*
%{_mandir}/man8/ovs-vswitchd.8*
%files -n python-openvswitch
%defattr(644,root,root,755)
%dir %{py_sitescriptdir}/ovs
%{py_sitescriptdir}/ovs/*.py*
%dir %{py_sitescriptdir}/ovs/db
%{py_sitescriptdir}/ovs/db/*.py*
%files -n ovsdbmonitor
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/ovsdbmonitor
%{_datadir}/ovsdbmonitor
%{_desktopdir}/ovsdbmonitor.desktop
%{_mandir}/man1/ovsdbmonitor.1*
%files test
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/ovs-test
%attr(755,root,root) %{_bindir}/ovs-vlan-test
%{py_sitescriptdir}/ovstest
%{_mandir}/man8/ovs-test.8*
%endif
%if %{with kernel}
%files -n kernel%{_alt_kernel}-net-openvswitch
%defattr(644,root,root,755)
%dir /lib/modules/%{_kernel_ver}/kernel/net/openvswitch
/lib/modules/%{_kernel_ver}/kernel/net/openvswitch/*.ko*
%endif