# Copyright (c) 2013 SUSE LINUX Products 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/ # # norootforbuild %define build_kmp 1 # never build in kernel module, as openvswitch shipped one is more feature # rich %define build_in_kernel_kmp 0 ## ipsec build tempoaaryr disabled (need to upgrade ipsec-tools) %define build_ipsec 0 Name: openvswitch Version: 1.9.0 Release: 2 License: Apache-2.0 Summary: An open source, production quality, multilayer virtual switch Url: http://openswitch.org/ Group: Productivity/Networking/System Source0: http://openvswitch.org/releases/%{name}-%{version}.tar.gz Source1: preamble Source2: openvswitch-switch.init Source3: openvswitch-switch.template Source4: openvswitch-switch.logrotate Source5: openvswitch-controller.init Source6: openvswitch-controller.sysconfig # brcompat is going to be deprecated soon # PATCH-FEATURE-UPSTREAM openvswitch-1.7.0-stp-fwd-delay.patch -- Set STP bridge forward delay Patch1: %name-1.7.0-stp-fwd-delay.patch BuildRequires: autoconf automake libtool BuildRequires: gcc BuildRequires: make BuildRequires: pkg-config BuildRequires: perl BuildRequires: glibc-devel BuildRequires: openssl libopenssl-devel BuildRequires: valgrind-devel BuildRequires: graphviz BuildRequires: python-devel Requires: python Requires: openssl Requires: logrotate Provides: openvswitch-common = %version Obsoletes: openvswitch-common <= 1.9.0 %py_requires BuildRoot: %{_tmppath}/%{name}-%{version}-build %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 0%{?build_kmp} %package -n %{name}-kmp Group: System/Kernel License: GPLv2 Summary: Open vSwitch kernel modules BuildRequires: %kernel_module_package_buildreqs %if 0%{?build_in_kernel_kmp} BuildRequires: kernel-source %endif %suse_kernel_module_package -p %_sourcedir/preamble ec2 xen xenpae vmi um %description -n %{name}-kmp Kernel modules supporting the openvswitch datapath %endif %if 0%{?build_ipsec} %package ipsec Summary: Open vSwitch GRE-over-IPsec support Group: Productivity/Networking/System Requires: python Requires: python-argparse Requires: ipsec-tools >= 0.8 Requires: racoon >= 0.8 Requires: openvswitch = %{version} Requires: openvswitch-switch = %{version} Requires: python-openvswitch = %{version} %description ipsec The ovs-monitor-ipsec script provides support for encrypting GRE tunnels with IPsec. Open vSwitch is a full-featured software-based Ethernet switch. %endif %package switch Suggests: openvswitch-kmp PreReq: %insserv_prereq %fillup_prereq Requires: openvswitch = %{version} Requires: module-init-tools Requires: procps Requires: uuid-runtime Requires: python Summary: Open vSwitch switch implementations Group: Productivity/Networking/System %description switch openvswitch-switch provides the userspace components and utilities for he Open vSwitch kernel-based switch. Open vSwitch is a full-featured software-based Ethernet switch. %package pki Requires: openvswitch = %{version} Summary: Open vSwitch public key infrastructure dependency package Group: Productivity/Networking/System %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 controller Requires: openvswitch = %{version} Summary: Open vSwitch controller implementation Group: Productivity/Networking/System %description controller The Open vSwitch controller enables OpenFlow switches that connect to it to act as MAC-learning Ethernet switches. Open vSwitch is a full-featured software-based Ethernet switch. %package brcompat Requires: openvswitch-switch = %{version} Recommends: bridge-utils Summary: Open vSwitch bridge compatibility support (deprecated) Group: Productivity/Networking/System %description brcompat openvswitch-brcompat provides a way for applications that use the Linux bridge to gradually migrate to Open vSwitch. Programs that ordinarily control the Linux bridge module, such as "brctl", instead control the Open vSwitch kernel-based switch. Please note that this feature is deprecated and will ve removed soon. Once this package is installed, adding BRCOMPAT=yes in /etc/default/openvswitch-switch enables bridge compatibility. Open vSwitch is a full-featured software-based Ethernet switch. %package -n python-openvswitch Requires: python Summary: Python bindings for Open vSwitch Group: Productivity/Networking/System %description -n python-openvswitch This package contains the full Python bindings for Open vSwitch database. %package -n python-openvswitch-test Requires: python Summary: Python bindings for Open vSwitch Group: Productivity/Networking/System %description -n python-openvswitch-test This package contains the full Python bindings for Open vSwitch database. %if ! 0%{?sles_version} %package ovsdbmonitor BuildRequires: python-qt4-devel BuildRequires: python-twisted BuildRequires: python-zopeinterface BuildRequires: python-pyside Requires: python-pyside Requires: python-qt4 Requires: python-twisted Requires: python-zopeinterface Requires: python-openvswitch Requires: python-pyasn1 Summary: Open vSwitch graphical monitoring tool Group: Productivity/Networking/System %description ovsdbmonitor This package is 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 "). Open vSwitch is a full-featured software-based Ethernet switch. %endif %package test Requires: python-twisted Requires: python Requires: python-argparse Requires: python-openvswitch-test = %{version} Summary: Open vSwitch test package Group: Productivity/Networking/System %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 -q %patch1 -p1 set -- * mkdir source mv "$@" source/ mkdir obj %build pushd source # don't call boot.sh, we don't have appropriate autoconf there %if ! 0%{?sles_version} bash -x boot.sh %endif popd %if 0%{?build_kmp} %if 0%{?build_in_kernel_kmp} for flavor in %flavors_to_build; do mkdir -p $flavor cp -a $RPM_SOURCE_DIR/Module.supported $flavor/ krel=$(make -s -C /usr/src/linux-obj/%_target_cpu/$flavor kernelrelease) kernel_source_dir=$(readlink /lib/modules/$krel/source) cp -a $kernel_source_dir/net/openvswitch/* $flavor/ make -C %{kernel_source $flavor} modules M=$PWD/$flavor done %else export EXTRA_CFLAGS='-DVERSION=\"%version\"' for flavor in %flavors_to_build; do rm -rf obj/$flavor cp -r source obj/$flavor pushd obj/$flavor %configure \ --with-logdir=/var/log \ --with-linux=/usr/src/linux-obj/%_target_cpu/$flavor \ --with-linux-source=/usr/src/linux cd datapath/linux make popd done %endif %endif ls source pushd source %configure \ --with-logdir=/var/log make %{?_smp_mflags} popd %install %if 0%{?build_kmp} export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_DIR=updates for flavor in %flavors_to_build; do %if 0%{?build_in_kernel_kmp} make -C %{kernel_source $flavor} modules_install M=$PWD/$flavor %else pushd obj/$flavor/datapath/linux make -C /usr/src/linux-obj/%_target_cpu/$flavor modules_install M=$PWD popd %endif done %endif pushd source %makeinstall install -d -m 755 %{buildroot}/%_sysconfdir/init.d install -d -m 755 %{buildroot}/var/adm/fillup-templates install -m 644 %SOURCE3 \ %{buildroot}/var/adm/fillup-templates/sysconfig.%{name}-switch install -m 644 %SOURCE6 \ %{buildroot}/var/adm/fillup-templates/sysconfig.%{name}-controller install -m 755 %SOURCE2 \ %{buildroot}/%_sysconfdir/init.d/%{name}-switch ln -s %_sysconfdir/init.d/%{name}-switch %{buildroot}%{_sbindir}/rc%{name}-switch install -m 755 %SOURCE5 \ %{buildroot}/%_sysconfdir/init.d/%{name}-controller ln -s %_sysconfdir/init.d/%{name}-controller %{buildroot}%{_sbindir}/rc%{name}-controller install -d -m 755 %{buildroot}/%_sysconfdir/sysconfig install -d -m 755 %{buildroot}/%_sysconfdir/logrotate.d install -m 644 %SOURCE4 \ %{buildroot}/%_sysconfdir/logrotate.d/%{name}-switch install -d -m 755 %{buildroot}/%_sysconfdir/profile.d install -d -m 755 %{buildroot}/%{_datadir}/%{name}/scripts install -m 644 vswitchd/vswitch.ovsschema \ %{buildroot}/%{_datadir}/%{name}/vswitch.ovsschema %if 0%{?build_ipsec} install -m 755 debian/ovs-monitor-ipsec \ %{buildroot}/%{_datadir}/%{name}/ovs-monitor-ipsec %endif popd %{__mkdir_p} %{buildroot}%{py_sitedir} mv %{buildroot}%{_datadir}/%{name}/python/* %{buildroot}%{py_sitedir} rmdir %{buildroot}%{_datadir}/%{name}/python %clean %{?buildroot:%__rm -rf "%{buildroot}"} %post switch %{fillup_and_insserv openvswitch-switch} %preun switch %stop_on_removal openvswitch-switch %files brcompat %defattr(-,root,root) %{_sbindir}/ovs-brcompatd %{_mandir}/man8/ovs-brcompatd.8.gz %files %defattr(-,root,root) %dir %{_datadir}/openvswitch %doc source/AUTHORS source/DESIGN source/INSTALL.* source/NOTICE %doc source/REPORTING-BUGS source/PORTING %doc source/SubmittingPatches source/CodingStyle source/README %doc source/WHY-OVS source/COPYING source/README-gcov %{_bindir}/ovs-appctl %{_bindir}/ovs-benchmark %{_bindir}/ovs-ofctl %{_bindir}/ovs-parse-leaks %{_bindir}/ovsdb-client %{_bindir}/ovs-parse-backtrace %{_sbindir}/ovs-bugtool %{_sbindir}/ovs-vlan-bug-workaround %dir %{_datadir}/openvswitch/scripts %{_datadir}/openvswitch/bugtool-plugins %{_datadir}/openvswitch/scripts/ovs-bugtool-cfm-show %{_datadir}/openvswitch/scripts/ovs-bugtool-lacp-show %{_datadir}/openvswitch/scripts/ovs-bugtool-tc-class-show %{_datadir}/openvswitch/scripts/ovs-bugtool-ovsdb-dump %{_datadir}/openvswitch/scripts/ovs-bugtool-bond-show %{_datadir}/openvswitch/scripts/ovs-bugtool-coverage-show %{_datadir}/openvswitch/scripts/ovs-bugtool-daemons-ver %{_datadir}/openvswitch/scripts/ovs-bugtool-vsctl-show %{_datadir}/openvswitch/scripts/ovs-bugtool-memory-show %{_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-parse-leaks.8.gz %{_mandir}/man8/ovs-vlan-bug-workaround.8.gz %{_mandir}/man8/ovs-parse-backtrace.8.gz %files pki %defattr(-,root,root) %{_mandir}/man8/ovs-pki.8.gz %{_bindir}/ovs-pki %files controller %defattr(-,root,root) %{_bindir}/ovs-controller %{_sysconfdir}/init.d/openvswitch-controller %{_sbindir}/rc%{name}-controller %{_mandir}/man8/ovs-controller.8.gz /var/adm/fillup-templates/sysconfig.openvswitch-controller %files -n python-openvswitch %defattr(-,root,root) %dir %{py_sitedir}/ovs %{py_sitedir}/ovs/* %files -n python-openvswitch-test %defattr(-,root,root) %dir %{py_sitedir}/ovstest %{py_sitedir}/ovstest/* %if 0%{?build_ipsec} %files ipsec %defattr(-,root,root) %{_datadir}/openvswitch/ovs-monitor-ipsec %endif %files switch %defattr(-,root,root) %{_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 /var/adm/fillup-templates/sysconfig.openvswitch-switch %{_sysconfdir}/init.d/openvswitch-switch %{_sbindir}/rc%{name}-switch %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 %files test %defattr(-,root,root) %{_bindir}/ovs-test %{_bindir}/ovs-l3ping %{_bindir}/ovs-vlan-test %{_mandir}/man8/ovs-test.8.gz %{_mandir}/man8/ovs-l3ping.8.gz %{_mandir}/man8/ovs-vlan-test.8.gz %if ! 0%{?sles_version} %files ovsdbmonitor %defattr(-,root,root) %{_bindir}/ovsdbmonitor %dir %{_datadir}/ovsdbmonitor %{_datadir}/applications/ovsdbmonitor.desktop %{_datadir}/ovsdbmonitor/* %{_mandir}/man1/ovsdbmonitor.1.gz %endif %changelog