1 # Spec file for Open vSwitch.
3 # Copyright (C) 2009, 2010, 2013, 2014, 2015, 2016 Nicira Networks, Inc.
5 # Copying and distribution of this file, with or without modification,
6 # are permitted in any medium without royalty provided the copyright
7 # notice and this notice are preserved. This file is offered as-is,
8 # without warranty of any kind.
10 # If tests have to be skipped while building, specify the '--without check'
11 # option. For example:
12 # rpmbuild -bb --without check rhel/openvswitch-fedora.spec
14 #%define kernel 2.6.40.4-5.fc15.x86_64
16 # If libcap-ng isn't available and there is no need for running OVS
17 # as regular user, specify the '--without libcapng'
18 %bcond_without libcapng
19 # To enable DPDK support, specify '--with dpdk' when building
22 # Enable PIE, bz#955181
23 %global _hardened_build 1
25 # some distros (e.g: RHEL-7) don't define _rundir macro yet
26 # Fedora 15 onwards uses /run as _rundir
33 Group: System Environment/Daemons
34 URL: http://www.openvswitch.org/
37 # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the
38 # lib/sflow*.[ch] files are SISSL
39 # datapath/ is GPLv2 (although not built into any of the binary packages)
40 License: ASL 2.0 and LGPLv2+ and SISSL
42 Source: http://openvswitch.org/releases/%{name}-%{version}.tar.gz
44 BuildRequires: autoconf automake libtool
45 BuildRequires: systemd-units openssl openssl-devel
46 BuildRequires: python python-twisted-core python-zope-interface PyQt4 python-six
47 BuildRequires: desktop-file-utils
48 BuildRequires: groff graphviz
49 BuildRequires: checkpolicy, selinux-policy-devel
50 # make check dependencies
51 BuildRequires: procps-ng
53 BuildRequires: libcap-ng libcap-ng-devel
56 BuildRequires: dpdk-devel >= 2.2.0
57 Provides: %{name}-dpdk = %{version}-%{release}
60 Requires: openssl iproute module-init-tools
61 #Upstream kernel commit 4f647e0a3c37b8d5086214128614a136064110c3
62 #Requires: kernel >= 3.15.0-0
64 Requires(post): systemd-units
65 Requires(preun): systemd-units
66 Requires(postun): systemd-units
67 Obsoletes: openvswitch-controller <= 0:2.1.0-1
72 Open vSwitch provides standard network bridging functions and
73 support for the OpenFlow protocol for remote per-flow control of
76 %package selinux-policy
77 Summary: Open vSwitch SELinux policy
80 Requires: selinux-policy-targeted
82 %description selinux-policy
83 Tailored Open vSwitch SELinux policy
85 %package -n python-openvswitch
86 Summary: Open vSwitch python bindings
92 %description -n python-openvswitch
93 Python bindings for the Open vSwitch database
96 Summary: Open vSwitch testing utilities
99 Requires: python-openvswitch = %{version}-%{release}
100 Requires: python python-twisted-core python-twisted-web
103 Utilities that are useful to diagnose performance and connectivity
104 issues in Open vSwitch setup.
107 Summary: Open vSwitch OpenFlow development package (library, headers)
109 Provides: openvswitch-static = %{version}-%{release}
112 This provides static library, libopenswitch.a and the openvswitch header
113 files needed to build an external application.
116 Summary: Open vSwitch - Open Virtual Network support
118 Requires: openvswitch
121 OVN, the Open Virtual Network, is a system to support virtual network
122 abstraction. OVN complements the existing capabilities of OVS to add
123 native support for virtual network abstractions, such as virtual L2 and L3
124 overlays and security groups.
138 --with-dpdk=$(dirname %{_datadir}/dpdk/*/.config) \
141 --with-pkidir=%{_sharedstatedir}/openvswitch/pki
145 make -f %{_datadir}/selinux/devel/Makefile
148 rm -rf $RPM_BUILD_ROOT
149 make install DESTDIR=$RPM_BUILD_ROOT
151 install -d -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch
153 install -p -D -m 0644 \
154 rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
155 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch
156 for service in openvswitch openvswitch-nonetwork \
157 ovn-controller ovn-controller-vtep ovn-northd; do
158 install -p -D -m 0644 \
159 rhel/usr_lib_systemd_system_${service}.service \
160 $RPM_BUILD_ROOT%{_unitdir}/${service}.service
162 install -m 0755 rhel/etc_init.d_openvswitch \
163 $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init
165 install -p -D -m 0644 rhel/etc_logrotate.d_openvswitch \
166 $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/openvswitch
168 install -m 0644 vswitchd/vswitch.ovsschema \
169 $RPM_BUILD_ROOT/%{_datadir}/openvswitch/vswitch.ovsschema
171 install -d -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/
172 install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifdown-ovs \
173 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
174 install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifup-ovs \
175 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
177 install -d -m 0755 $RPM_BUILD_ROOT%{python_sitelib}
178 mv $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/* \
179 $RPM_BUILD_ROOT%{python_sitelib}
180 rmdir $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/
182 install -d -m 0755 $RPM_BUILD_ROOT/%{_sharedstatedir}/openvswitch
184 touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db
185 touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/system-id.conf
187 install -p -m 644 -D selinux/openvswitch-custom.pp \
188 $RPM_BUILD_ROOT%{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp
190 # remove unpackaged files
191 rm -f $RPM_BUILD_ROOT%{_bindir}/ovs-parse-backtrace \
192 $RPM_BUILD_ROOT%{_bindir}/ovs-pcap \
193 $RPM_BUILD_ROOT%{_bindir}/ovs-tcpundump \
194 $RPM_BUILD_ROOT%{_sbindir}/ovs-vlan-bug-workaround \
195 $RPM_BUILD_ROOT%{_mandir}/man1/ovs-pcap.1 \
196 $RPM_BUILD_ROOT%{_mandir}/man1/ovs-tcpundump.1 \
197 $RPM_BUILD_ROOT%{_mandir}/man8/ovs-vlan-bug-workaround.8
201 if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
203 cat tests/testsuite.log
209 rm -rf $RPM_BUILD_ROOT
212 %if 0%{?systemd_preun:1}
213 %systemd_preun %{name}.service
215 if [ $1 -eq 0 ] ; then
216 # Package removal, not upgrade
217 /bin/systemctl --no-reload disable %{name}.service >/dev/null 2>&1 || :
218 /bin/systemctl stop %{name}.service >/dev/null 2>&1 || :
223 %if 0%{?systemd_preun:1}
224 %systemd_preun ovn-controller.service
225 %systemd_preun ovn-controller-vtep.service
226 %systemd_preun ovn-northd.service
228 if [ $1 -eq 0 ] ; then
229 # Package removal, not upgrade
230 /bin/systemctl --no-reload disable ovn-controller.service >/dev/null 2>&1 || :
231 /bin/systemctl stop ovn-controller.service >/dev/null 2>&1 || :
232 /bin/systemctl --no-reload disable ovn-controller-vtep.service >/dev/null 2>&1 || :
233 /bin/systemctl stop ovn-controller-vtep.service >/dev/null 2>&1 || :
234 /bin/systemctl --no-reload disable ovn-northd.service >/dev/null 2>&1 || :
235 /bin/systemctl stop ovn-northd.service >/dev/null 2>&1 || :
240 %if 0%{?systemd_post:1}
241 %systemd_post %{name}.service
243 # Package install, not upgrade
244 if [ $1 -eq 1 ]; then
245 /bin/systemctl daemon-reload >dev/null || :
250 %if 0%{?systemd_post:1}
251 %systemd_post ovn-controller.service
252 %systemd_post ovn-controller-vtep.service
253 %systemd_post ovn-northd.service
255 # Package install, not upgrade
256 if [ $1 -eq 1 ]; then
257 /bin/systemctl daemon-reload >dev/null || :
262 /usr/sbin/semodule -i %{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp &> /dev/null || :
265 %if 0%{?systemd_postun_with_restart:1}
266 %systemd_postun_with_restart %{name}.service
268 /bin/systemctl daemon-reload >/dev/null 2>&1 || :
269 if [ "$1" -ge "1" ] ; then
270 # Package upgrade, not uninstall
271 /bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
276 %if 0%{?systemd_postun_with_restart:1}
277 %systemd_postun_with_restart ovn-controller.service
278 %systemd_postun_with_restart ovn-controller-vtep.service
279 %systemd_postun_with_restart ovn-northd.service
281 /bin/systemctl daemon-reload >/dev/null 2>&1 || :
282 if [ "$1" -ge "1" ] ; then
283 # Package upgrade, not uninstall
284 /bin/systemctl try-restart ovn-controller.service >/dev/null 2>&1 || :
285 /bin/systemctl try-restart ovn-controller-vtep.service >/dev/null 2>&1 || :
286 /bin/systemctl try-restart ovn-northd.service >/dev/null 2>&1 || :
290 %postun selinux-policy
291 if [ $1 -eq 0 ] ; then
292 /usr/sbin/semodule -r openvswitch-custom &> /dev/null || :
295 %files selinux-policy
296 %defattr(-,root,root)
297 %{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp
299 %files -n python-openvswitch
300 %{python_sitelib}/ovs
305 %{_bindir}/ovs-vlan-test
306 %{_bindir}/ovs-l3ping
307 %{_mandir}/man8/ovs-test.8*
308 %{_mandir}/man8/ovs-vlan-test.8*
309 %{_mandir}/man8/ovs-l3ping.8*
310 %{python_sitelib}/ovstest
315 %{_libdir}/pkgconfig/*.pc
316 %{_includedir}/openvswitch/*
317 %{_includedir}/openflow/*
320 %defattr(-,root,root)
321 %{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash
322 %{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash
323 %dir %{_sysconfdir}/openvswitch
324 %config %ghost %{_sysconfdir}/openvswitch/conf.db
325 %config %ghost %{_sysconfdir}/openvswitch/system-id.conf
326 %config(noreplace) %{_sysconfdir}/sysconfig/openvswitch
327 %config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch
328 %{_unitdir}/openvswitch.service
329 %{_unitdir}/openvswitch-nonetwork.service
330 %{_datadir}/openvswitch/scripts/openvswitch.init
331 %{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
332 %{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
333 %{_datadir}/openvswitch/bugtool-plugins/
334 %{_datadir}/openvswitch/scripts/ovs-bugtool-*
335 %{_datadir}/openvswitch/scripts/ovs-check-dead-ifs
336 %{_datadir}/openvswitch/scripts/ovs-lib
337 %{_datadir}/openvswitch/scripts/ovs-save
338 %{_datadir}/openvswitch/scripts/ovs-vtep
339 %{_datadir}/openvswitch/scripts/ovs-ctl
340 %config %{_datadir}/openvswitch/vswitch.ovsschema
341 %config %{_datadir}/openvswitch/vtep.ovsschema
342 %{_bindir}/ovs-appctl
343 %{_bindir}/ovs-docker
345 %{_bindir}/ovs-dpctl-top
348 %{_bindir}/ovsdb-client
349 %{_bindir}/ovsdb-tool
350 %{_bindir}/ovs-testcontroller
353 %{_sbindir}/ovs-bugtool
354 %{_sbindir}/ovs-vswitchd
355 %{_sbindir}/ovsdb-server
356 %{_mandir}/man1/ovsdb-client.1*
357 %{_mandir}/man1/ovsdb-server.1*
358 %{_mandir}/man1/ovsdb-tool.1*
359 %{_mandir}/man5/ovs-vswitchd.conf.db.5*
360 %{_mandir}/man5/vtep.5*
361 %{_mandir}/man8/vtep-ctl.8*
362 %{_mandir}/man8/ovs-appctl.8*
363 %{_mandir}/man8/ovs-bugtool.8*
364 %{_mandir}/man8/ovs-ctl.8*
365 %{_mandir}/man8/ovs-dpctl.8*
366 %{_mandir}/man8/ovs-dpctl-top.8*
367 %{_mandir}/man8/ovs-ofctl.8*
368 %{_mandir}/man8/ovs-pki.8*
369 %{_mandir}/man8/ovs-vsctl.8*
370 %{_mandir}/man8/ovs-vswitchd.8*
371 %{_mandir}/man8/ovs-parse-backtrace.8*
372 %{_mandir}/man8/ovs-testcontroller.8*
373 %doc COPYING DESIGN.md INSTALL.SSL.md NOTICE README.md WHY-OVS.md
374 %doc FAQ.md NEWS INSTALL.DPDK.md rhel/README.RHEL
377 %ghost %attr(755,root,root) %{_rundir}/openvswitch
380 %{_bindir}/ovn-controller
381 %{_bindir}/ovn-controller-vtep
382 %{_bindir}/ovn-docker-overlay-driver
383 %{_bindir}/ovn-docker-underlay-driver
385 %{_bindir}/ovn-northd
387 %{_datadir}/openvswitch/scripts/ovn-ctl
388 %{_datadir}/openvswitch/scripts/ovn-bugtool-nbctl-show
389 %{_datadir}/openvswitch/scripts/ovn-bugtool-sbctl-lflow-list
390 %{_datadir}/openvswitch/scripts/ovn-bugtool-sbctl-show
391 %{_mandir}/man8/ovs-testcontroller.8*
392 %{_mandir}/man5/ovn-nb.5*
393 %{_mandir}/man5/ovn-sb.5*
394 %{_mandir}/man7/ovn-architecture.7*
395 %{_mandir}/man8/ovn-controller.8*
396 %{_mandir}/man8/ovn-controller-vtep.8*
397 %{_mandir}/man8/ovn-ctl.8*
398 %{_mandir}/man8/ovn-nbctl.8*
399 %{_mandir}/man8/ovn-northd.8*
400 %{_mandir}/man8/ovn-sbctl.8*
401 %config %{_datadir}/openvswitch/ovn-nb.ovsschema
402 %config %{_datadir}/openvswitch/ovn-sb.ovsschema
403 %{_unitdir}/ovn-controller.service
404 %{_unitdir}/ovn-controller-vtep.service
405 %{_unitdir}/ovn-northd.service
408 * Wed Jan 12 2011 Ralf Spenneberg <ralf@os-s.net>