forked from pool/openvswitch
Dirk Mueller
67f6e49df3
- Add %check directive to run the openvswitch testsuite on demand. The openvswitch contains hundreds of tests covering simple and complex openvswitch configuration so it's beneficial to run them during package builds. However, running the testsuite is not enabled by default. Also add the following upstream patch: * 0001-Remove-broken-pipe-warning-logs-from-ovsdb-server.lo.patch - Build a DPDK-enabled Open vSwitch (fate#319170) * Apply the following changes to the openvswitch.spec file - Add support for building with DPDK capabilities - Add conflicts between the two packages. - Add new 'open_virtual_switch-*' capabilities for openvswitch, openvswitch-switch, openvswitch-test packages which can be used by reverse dependencies to select between the two openvswitch implementations. * Add pre_checkin.sh to generate the openvswitch_dpdk.spec file based on the openvswitch.spec one. * Add upstream openvswitch-2.5.0-detect-dpdk-installation.patch patch to detect and link against a DPDK installation. OBS-URL: https://build.opensuse.org/request/show/402853 OBS-URL: https://build.opensuse.org/package/show/network/openvswitch?expand=0&rev=91
515 lines
15 KiB
RPMSpec
515 lines
15 KiB
RPMSpec
#
|
||
# spec file for package openvswitch
|
||
#
|
||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||
#
|
||
# All modifications and additions to the file contributed by third parties
|
||
# remain the property of their copyright owners, unless otherwise agreed
|
||
# upon. The license for this file, and modifications and additions to the
|
||
# file, is the same license as for the pristine package itself (unless the
|
||
# license for the pristine package is not an Open Source License, in which
|
||
# case the license is the MIT License). An "Open Source License" is a
|
||
# license that conforms to the Open Source Definition (Version 1.9)
|
||
# published by the Open Source Initiative.
|
||
|
||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||
#
|
||
|
||
|
||
# needssslcertforbuild
|
||
|
||
# Disable building the external kernel datapath by default
|
||
%bcond_with kmp
|
||
# DPDK build disabled by default. It's enabled in the
|
||
# openvswitch_dpdk.spec file (generated by pre_checkin.sh)
|
||
%bcond_with dpdk
|
||
# The testsuite is somewhat fragile for continuous testing in OBS
|
||
# but keep it here as an option
|
||
%bcond_with check
|
||
|
||
Name: openvswitch
|
||
Version: 2.5.0
|
||
Release: 0
|
||
Summary: An open source, production quality, multilayer virtual switch
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Url: http://openvswitch.org/
|
||
Source0: http://openvswitch.org/releases/openvswitch-%{version}.tar.gz
|
||
Source1: preamble
|
||
Source2: openvswitch-switch.logrotate
|
||
Source3: openvswitch.service
|
||
Source89: Module.supported.updates
|
||
# PATCH-FIX-UPSTREAM openvswitch-2.5.0-detect-dpdk-installation.patch
|
||
Patch0: openvswitch-%{version}-detect-dpdk-installation.patch
|
||
Patch1: 0001-Remove-broken-pipe-warning-logs-from-ovsdb-server.lo.patch
|
||
BuildRequires: autoconf
|
||
BuildRequires: automake
|
||
%if %{with dpdk}
|
||
# We need to be a bit strict with the dpdk version since
|
||
# it's very possible for DPDK to change it's API between
|
||
# releases. OVS currently requires 2.2.0. We may have to
|
||
# provide multiple versions of dpdk if OVS and DPDK get
|
||
# out of sync too often.
|
||
BuildRequires: dpdk-devel = 2.2.0
|
||
ExclusiveArch: x86_64 %ix86
|
||
%endif
|
||
BuildRequires: fdupes
|
||
BuildRequires: gcc
|
||
BuildRequires: glibc-devel
|
||
BuildRequires: graphviz
|
||
BuildRequires: libopenssl-devel
|
||
BuildRequires: libtool
|
||
BuildRequires: make
|
||
BuildRequires: openssl
|
||
BuildRequires: perl
|
||
BuildRequires: pkg-config
|
||
# Needed by the testsuite
|
||
BuildRequires: procps
|
||
BuildRequires: python-devel
|
||
BuildRequires: python-xml
|
||
Requires: logrotate
|
||
Requires: openssl
|
||
Requires: python
|
||
Provides: openvswitch-common = %{version}
|
||
# Add new capability since openvswitch and openvswitch_dpdk
|
||
# provide virtual switch capabilities
|
||
Provides: open_virtual_switch
|
||
%if %{with dpdk}
|
||
# We can't have openvswitch and openvswitch_dpdk in parallel
|
||
Conflicts: openvswitch
|
||
%endif
|
||
Obsoletes: openvswitch-common < %{version}
|
||
Provides: openvswitch-controller = %{version}
|
||
Obsoletes: openvswitch-controller < %{version}
|
||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||
%py_requires
|
||
BuildRequires: valgrind-devel
|
||
|
||
%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, RSPAN, ERSPAN, 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.
|
||
|
||
%if %{with kmp}
|
||
%package kmp
|
||
Summary: Open vSwitch kernel modules
|
||
License: GPL-2.0+
|
||
Group: System/Kernel
|
||
BuildRequires: %{kernel_module_package_buildreqs}
|
||
%suse_kernel_module_package -p %{_sourcedir}/preamble ec2 xenpae vmi um
|
||
|
||
%description kmp
|
||
Kernel modules supporting the openvswitch datapath.
|
||
%endif
|
||
|
||
%package devel
|
||
Summary: Open vSwitch Devel Libraries
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
|
||
%description devel
|
||
Devel libraries and headers for Open vSwitch.
|
||
|
||
%package switch
|
||
Summary: Open vSwitch switch implementations
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
Requires: modutils
|
||
Requires: procps
|
||
Requires: python
|
||
# ovs-ctl / ovs-pki use /usr/bin/uuidgen:
|
||
Requires: util-linux
|
||
Requires(post): %fillup_prereq
|
||
Suggests: logrotate
|
||
Suggests: %{name}-kmp
|
||
%{?systemd_requires}
|
||
|
||
%description switch
|
||
openvswitch-switch provides the userspace components and utilities for
|
||
the Open vSwitch kernel-based switch.
|
||
|
||
Open vSwitch is a full-featured software-based Ethernet switch.
|
||
|
||
%package ovn
|
||
Summary: Open vSwitch - Open Virtual Network support
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
Requires: %{name}-switch = %{version}
|
||
Requires: %{name}-vtep = %{version}
|
||
|
||
%description ovn
|
||
OVN, the Open Virtual Network, is a system to support virtual network
|
||
abstraction. OVN complements the existing capabilities of OVS to add
|
||
native support for virtual network abstractions, such as virtual L2 and L3
|
||
overlays and security groups.
|
||
|
||
%package pki
|
||
Summary: Open vSwitch public key infrastructure dependency package
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
|
||
%description pki
|
||
openvswitch-pki provides PKI (public key infrastructure) support for
|
||
Open vSwitch switches and controllers, reducing the risk of
|
||
man-in-the-middle attacks on the Open vSwitch network infrastructure.
|
||
|
||
Open vSwitch is a full-featured software-based Ethernet switch.
|
||
|
||
%package vtep
|
||
Summary: Open vSwitch VTEP emulator
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
Requires: %{name}-switch = %{version}
|
||
# Since openvswitch/scripts/ovs-vtep requires various ovs python modules.
|
||
Requires: python-%{name} = %{version}
|
||
|
||
%description vtep
|
||
A VTEP emulator that uses Open vSwitch for forwarding.
|
||
|
||
Open vSwitch is a full-featured software-based Ethernet switch.
|
||
|
||
%package -n python-%{name}
|
||
Summary: Python bindings for Open vSwitch
|
||
License: Python-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
Requires: python
|
||
|
||
%description -n python-%{name}
|
||
This package contains the full Python bindings for Open vSwitch database.
|
||
|
||
%package -n python-%{name}-test
|
||
Summary: Python bindings for Open vSwitch
|
||
License: Python-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
Requires: python
|
||
Requires: python-%{name} = %{version}
|
||
Requires: python-twisted
|
||
|
||
%description -n python-%{name}-test
|
||
This package contains the full Python bindings for Open vSwitch database.
|
||
|
||
%package test
|
||
Summary: Open vSwitch test package
|
||
License: Apache-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: %{name} = %{version}
|
||
Requires: python
|
||
Requires: python-%{name}-test = %{version}
|
||
Requires: python-argparse
|
||
Requires: python-twisted
|
||
|
||
%description test
|
||
This package contains utilities that are useful to diagnose
|
||
performance and connectivity issues in Open vSwitch setup.
|
||
|
||
Open vSwitch is a full-featured software-based Ethernet switch.
|
||
|
||
%prep
|
||
%setup -n openvswitch-%{version} -q
|
||
%patch0 -p1
|
||
%patch1 -p1
|
||
|
||
%build
|
||
set -- * .travis*
|
||
mkdir source
|
||
mv "$@" source/
|
||
mkdir obj
|
||
|
||
pushd source
|
||
perl -i -pe 's{__(DATE|TIME)__}{""}g' include/openvswitch/util.h
|
||
# only call boot.sh for distros with autoconf >= 2.64
|
||
bash -x boot.sh
|
||
popd
|
||
%if %{with kmp}
|
||
export EXTRA_CFLAGS='-DVERSION=\"%{version}\"'
|
||
for flavor in %{flavors_to_build}; do
|
||
rm -rf obj/$flavor
|
||
cp -r source obj/$flavor
|
||
cp -a %{SOURCE89} obj/$flavor/datapath/linux/Module.supported
|
||
pushd obj/$flavor
|
||
%configure \
|
||
--with-logdir=%{_localstatedir}/log/openvswitch \
|
||
--with-linux=%{_prefix}/src/linux-obj/%{_target_cpu}/$flavor \
|
||
--with-linux-source=%{_prefix}/src/linux
|
||
cd datapath/linux
|
||
make %{?_smp_mflags}
|
||
popd
|
||
done
|
||
%endif
|
||
|
||
pushd source
|
||
%if %{with dpdk}
|
||
dpdk_opt="--with-dpdk"
|
||
%endif
|
||
|
||
%configure \
|
||
--disable-static \
|
||
--enable-shared \
|
||
${dpdk_opt} \
|
||
--with-logdir=%{_localstatedir}/log/openvswitch
|
||
make %{?_smp_mflags}
|
||
popd
|
||
|
||
%check
|
||
%if %{with check}
|
||
pushd source
|
||
# Recheck tests before we declare them broken. If that fails, dump
|
||
# the log and exit. >2.5.0 uses the RECHECK env variable so this
|
||
# needs to be taken into consideration for future releases.
|
||
if make check TESTSUITEFLAGS="%{_smp_mflags}" ||
|
||
make check TESTSUITEFLAGS='--recheck'; then :;
|
||
else
|
||
cat tests/testsuite.log
|
||
exit 1
|
||
fi
|
||
popd
|
||
%endif
|
||
|
||
%install
|
||
%if %{with kmp}
|
||
export NO_BRP_STALE_LINK_ERROR=yes
|
||
export INSTALL_MOD_PATH=%{buildroot}
|
||
export INSTALL_MOD_DIR=updates
|
||
export BRP_PESIGN_FILES="*.ko /lib/firmware"
|
||
for flavor in %{flavors_to_build}; do
|
||
pushd obj/$flavor/datapath/linux
|
||
make -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD
|
||
popd
|
||
done
|
||
%endif
|
||
|
||
pushd source
|
||
|
||
make %{?_smp_mflags} DESTDIR=%{buildroot} install
|
||
for service in ovn-controller ovn-controller-vtep ovn-northd; do
|
||
install -D -m 644 rhel/usr_lib_systemd_system_${service}.service \
|
||
%{buildroot}%{_unitdir}/${service}.service
|
||
done
|
||
# We use our own openvswitch.service
|
||
install -D -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/openvswitch.service
|
||
|
||
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcopenvswitch
|
||
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcovn-controller
|
||
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcovn-controller-vtep
|
||
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcovn-northd
|
||
|
||
install -D -m 644 rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
|
||
%{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.openvswitch
|
||
|
||
install -d -m 755 %{buildroot}/%{_sysconfdir}/logrotate.d
|
||
install -d -m 755 %{buildroot}/%{_localstatedir}/log/openvswitch
|
||
|
||
install -m 644 %{SOURCE2} \
|
||
%{buildroot}/%{_sysconfdir}/logrotate.d/openvswitch-switch
|
||
install -d -m 755 %{buildroot}/%{_sysconfdir}/profile.d
|
||
|
||
install -m 644 vswitchd/vswitch.ovsschema \
|
||
%{buildroot}/%{_datadir}/openvswitch/vswitch.ovsschema
|
||
popd
|
||
|
||
mkdir -p %{buildroot}%{py_sitedir}
|
||
mv %{buildroot}%{_datadir}/openvswitch/python/* %{buildroot}%{py_sitedir}
|
||
rmdir %{buildroot}%{_datadir}/openvswitch/python
|
||
|
||
rm -f %buildroot/%_libdir/*.la
|
||
|
||
%fdupes %{buildroot}%{py_sitedir}
|
||
|
||
%post -p /sbin/ldconfig
|
||
%postun -p /sbin/ldconfig
|
||
%pre switch
|
||
%service_add_pre openvswitch.service
|
||
|
||
%post switch
|
||
%service_add_post openvswitch.service
|
||
%{fillup_only -n openvswitch}
|
||
|
||
%preun switch
|
||
%service_del_preun openvswitch.service
|
||
|
||
%postun switch
|
||
%service_del_postun openvswitch.service
|
||
|
||
%pre ovn
|
||
%service_add_pre ovn-controller.service ovn-controller-vtep.service ovn-northd.service
|
||
|
||
%post ovn
|
||
/sbin/ldconfig
|
||
%service_add_post ovn-controller.service ovn-controller-vtep.service ovn-northd.service
|
||
|
||
%preun ovn
|
||
%service_del_preun ovn-controller.service ovn-controller-vtep.service ovn-northd.service
|
||
|
||
%postun ovn
|
||
%service_del_postun ovn-controller.service ovn-controller-vtep.service ovn-northd.service
|
||
/sbin/ldconfig
|
||
|
||
%preun test
|
||
%stop_on_removal openvswitch-testcontroller
|
||
|
||
%postun test
|
||
%restart_on_update openvswitch-testcontroller
|
||
|
||
%post vtep -p /sbin/ldconfig
|
||
%postun vtep -p /sbin/ldconfig
|
||
|
||
%files
|
||
%defattr(-,root,root)
|
||
%dir %{_datadir}/openvswitch
|
||
%doc source/AUTHORS
|
||
%doc source/CONTRIBUTING.md
|
||
%doc source/COPYING
|
||
%doc source/CodingStyle.md
|
||
%doc source/DESIGN.md
|
||
%doc source/FAQ.md
|
||
%doc source/IntegrationGuide.md
|
||
%doc source/NEWS
|
||
%doc source/NOTICE
|
||
%doc source/OPENFLOW-1.1+.md
|
||
%doc source/PORTING.md
|
||
%doc source/README*
|
||
%doc source/SECURITY.md
|
||
%doc source/TODO.md
|
||
%doc source/WHY-OVS.md
|
||
%{_bindir}/ovs-appctl
|
||
%{_bindir}/ovs-benchmark
|
||
%{_bindir}/ovs-ofctl
|
||
%{_bindir}/ovsdb-client
|
||
%{_bindir}/ovs-parse-backtrace
|
||
%{_bindir}/ovs-dpctl-top
|
||
%{_sbindir}/ovs-bugtool
|
||
%{_sbindir}/ovs-vlan-bug-workaround
|
||
%dir %{_datadir}/openvswitch/scripts
|
||
%{_datadir}/openvswitch/bugtool-plugins
|
||
%{_datadir}/openvswitch/scripts/ovs-bugtool-*
|
||
%{_libdir}/libofproto.so.*
|
||
%{_libdir}/libopenvswitch.so.*
|
||
%{_libdir}/libovsdb.so.*
|
||
%{_libdir}/libsflow.so.*
|
||
%{_mandir}/man1/ovs-benchmark.1.gz
|
||
%{_mandir}/man1/ovsdb-client.1.gz
|
||
%{_mandir}/man8/ovs-appctl.8.gz
|
||
%{_mandir}/man8/ovs-bugtool.8.gz
|
||
%{_mandir}/man8/ovs-ofctl.8.gz
|
||
%{_mandir}/man8/ovs-vlan-bug-workaround.8.gz
|
||
%{_mandir}/man8/ovs-parse-backtrace.8.gz
|
||
%{_mandir}/man8/ovs-dpctl-top.8.gz
|
||
%{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash
|
||
|
||
%files pki
|
||
%defattr(-,root,root)
|
||
%{_mandir}/man8/ovs-pki.8.gz
|
||
%{_bindir}/ovs-pki
|
||
|
||
%files vtep
|
||
%defattr(-,root,root)
|
||
%{_bindir}/vtep-ctl
|
||
%{_mandir}/man5/vtep.5.gz
|
||
%{_mandir}/man8/vtep-ctl.8.gz
|
||
%{_datadir}/openvswitch/scripts/ovs-vtep
|
||
%{_datadir}/openvswitch/vtep.ovsschema
|
||
%{_libdir}/libvtep.so.*
|
||
|
||
%files -n python-%{name}
|
||
%defattr(-,root,root)
|
||
%{py_sitedir}/ovs/
|
||
|
||
%files -n python-%{name}-test
|
||
%defattr(-,root,root)
|
||
%{py_sitedir}/ovstest/
|
||
|
||
%files switch
|
||
%defattr(-,root,root)
|
||
%{_bindir}/ovs-docker
|
||
%{_bindir}/ovs-dpctl
|
||
%{_bindir}/ovs-tcpundump
|
||
%{_bindir}/ovs-pcap
|
||
%{_bindir}/ovs-vsctl
|
||
%{_bindir}/ovsdb-tool
|
||
%{_sbindir}/ovs-vswitchd
|
||
%{_sbindir}/ovsdb-server
|
||
%{_datadir}/openvswitch/scripts/ovs-check-dead-ifs
|
||
%{_datadir}/openvswitch/scripts/ovs-ctl
|
||
%{_datadir}/openvswitch/scripts/ovs-lib
|
||
%{_datadir}/openvswitch/scripts/ovs-save
|
||
%{_datadir}/openvswitch/vswitch.ovsschema
|
||
%{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash
|
||
%config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch-switch
|
||
%{_mandir}/man8/ovs-dpctl.8.gz
|
||
%{_mandir}/man1/ovs-tcpundump.1.gz
|
||
%{_mandir}/man1/ovs-pcap.1.gz
|
||
%{_mandir}/man8/ovs-vsctl.8.gz
|
||
%{_mandir}/man1/ovsdb-tool.1.gz
|
||
%{_mandir}/man8/ovs-vswitchd.8.gz
|
||
%{_mandir}/man1/ovsdb-server.1.gz
|
||
%{_mandir}/man5/ovs-vswitchd.conf.db.5.gz
|
||
%{_mandir}/man8/ovs-ctl.8.gz
|
||
%{_sbindir}/rcopenvswitch
|
||
%{_unitdir}/openvswitch.service
|
||
%{_localstatedir}/adm/fillup-templates/sysconfig.openvswitch
|
||
%dir %{_localstatedir}/log/openvswitch
|
||
|
||
%files ovn
|
||
%defattr(-,root,root)
|
||
%{_bindir}/ovn-controller
|
||
%{_bindir}/ovn-controller-vtep
|
||
%{_bindir}/ovn-docker-overlay-driver
|
||
%{_bindir}/ovn-docker-underlay-driver
|
||
%{_bindir}/ovn-nbctl
|
||
%{_bindir}/ovn-northd
|
||
%{_bindir}/ovn-sbctl
|
||
%{_datadir}/openvswitch/scripts/ovn-ctl
|
||
%{_libdir}/libovn.so.*
|
||
%{_mandir}/man5/ovn-nb.5*
|
||
%{_mandir}/man5/ovn-sb.5*
|
||
%{_mandir}/man7/ovn-architecture.7*
|
||
%{_mandir}/man8/ovn-controller.8*
|
||
%{_mandir}/man8/ovn-controller-vtep.8*
|
||
%{_mandir}/man8/ovn-ctl.8*
|
||
%{_mandir}/man8/ovn-nbctl.8*
|
||
%{_mandir}/man8/ovn-northd.8*
|
||
%{_mandir}/man8/ovn-sbctl.8*
|
||
%config %{_datadir}/openvswitch/ovn-nb.ovsschema
|
||
%config %{_datadir}/openvswitch/ovn-sb.ovsschema
|
||
%{_sbindir}/rcovn-controller
|
||
%{_sbindir}/rcovn-controller-vtep
|
||
%{_sbindir}/rcovn-northd
|
||
%{_unitdir}/ovn-controller.service
|
||
%{_unitdir}/ovn-controller-vtep.service
|
||
%{_unitdir}/ovn-northd.service
|
||
|
||
%files test
|
||
%defattr(-,root,root)
|
||
%{_bindir}/ovs-test
|
||
%{_bindir}/ovs-l3ping
|
||
%{_bindir}/ovs-vlan-test
|
||
%{_bindir}/ovs-testcontroller
|
||
%{_mandir}/man8/ovs-test.8.gz
|
||
%{_mandir}/man8/ovs-l3ping.8.gz
|
||
%{_mandir}/man8/ovs-vlan-test.8.gz
|
||
%{_mandir}/man8/ovs-testcontroller.8.gz
|
||
|
||
%files devel
|
||
%defattr(-,root,root)
|
||
%{_libdir}/libofproto.so
|
||
%{_libdir}/libopenvswitch.so
|
||
%{_libdir}/libovn.so
|
||
%{_libdir}/libovsdb.so
|
||
%{_libdir}/libsflow.so
|
||
%{_libdir}/libvtep.so
|
||
%{_includedir}/openflow/
|
||
%{_includedir}/openvswitch/
|
||
%{_libdir}/pkgconfig/*.pc
|
||
|
||
%changelog
|