Dirk Mueller
e7268eaf86
- Update rpm groups, acronym forms. OBS-URL: https://build.opensuse.org/request/show/404072 OBS-URL: https://build.opensuse.org/package/show/network/openvswitch?expand=0&rev=93
533 lines
16 KiB
RPMSpec
533 lines
16 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}
|
||
# We can't have openvswitch and openvswitch-dpdk in parallel
|
||
%if %{with dpdk}
|
||
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 dpdk}
|
||
%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
|
||
%endif
|
||
|
||
%package devel
|
||
Summary: Open vSwitch Devel Libraries
|
||
License: Apache-2.0
|
||
Group: Development/Libraries/C and C++
|
||
Requires: %{name} = %{version}
|
||
Provides: openvswitch-any-devel = %{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
|
||
Provides: openvswitch-any-switch = %{version}
|
||
Suggests: logrotate
|
||
%if %{with kmp}
|
||
Suggests: openvswitch-kmp
|
||
%endif
|
||
%{?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}
|
||
Provides: openvswitch-any-ovn = %{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}
|
||
Provides: openvswitch-any-pki = %{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}
|
||
Provides: openvswitch-any-vtep = %{version}
|
||
|
||
%description vtep
|
||
A VTEP (VXLAN Tunnel EndPoint) emulator that uses Open vSwitch for
|
||
forwarding.
|
||
|
||
Open vSwitch is a full-featured software-based Ethernet switch.
|
||
|
||
%if ! %{with dpdk}
|
||
%package -n python-%{name}
|
||
Summary: Python bindings for Open vSwitch
|
||
License: Python-2.0
|
||
Group: Productivity/Networking/System
|
||
Requires: openvswitch-common = %{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: openvswitch-common = %{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.
|
||
%endif
|
||
|
||
%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
|
||
Provides: openvswitch-any-test = %{version}
|
||
|
||
%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 dpdk}
|
||
%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
|
||
%endif
|
||
|
||
pushd source
|
||
|
||
%configure \
|
||
--disable-static \
|
||
--enable-shared \
|
||
%{?_with_dpdk} \
|
||
--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 dpdk}
|
||
%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
|
||
%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
|
||
|
||
# Remove unpackaged files for the dpdk case
|
||
%if %{with dpdk}
|
||
rm -rf %{buildroot}%{py_sitedir}
|
||
%else
|
||
%fdupes %{buildroot}%{py_sitedir}
|
||
%endif
|
||
|
||
%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.*
|
||
|
||
%if ! %{with dpdk}
|
||
%files -n python-%{name}
|
||
%defattr(-,root,root)
|
||
%{py_sitedir}/ovs/
|
||
|
||
%files -n python-%{name}-test
|
||
%defattr(-,root,root)
|
||
%{py_sitedir}/ovstest/
|
||
%endif
|
||
|
||
%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
|