rhel: Add '--with dpdk' spec option to build DPDK-enabled packages
[cascardo/ovs.git] / rhel / openvswitch-fedora.spec.in
1 # Spec file for Open vSwitch.
2
3 # Copyright (C) 2009, 2010, 2013, 2014, 2015 Nicira Networks, Inc.
4 #
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.
9 #
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
13
14 #%define kernel 2.6.40.4-5.fc15.x86_64
15
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
20 %bcond_with dpdk
21
22 # Enable PIE, bz#955181
23 %global _hardened_build 1
24
25 # some distros (e.g: RHEL-7) don't define _rundir macro yet
26 # Fedora 15 onwards uses /run as _rundir
27 %if 0%{!?_rundir:1}
28 %define _rundir /run
29 %endif
30
31 Name: openvswitch
32 Summary: Open vSwitch
33 Group: System Environment/Daemons
34 URL: http://www.openvswitch.org/
35 Version: @VERSION@
36
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
41 Release: 1%{?dist}
42 Source: http://openvswitch.org/releases/%{name}-%{version}.tar.gz
43
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 # make check dependencies
50 BuildRequires: procps-ng
51 %if %{with libcapng}
52 BuildRequires: libcap-ng libcap-ng-devel
53 %endif
54 %if %{with dpdk}
55 BuildRequires: dpdk-devel >= 2.2.0
56 Provides: %{name}-dpdk = %{version}-%{release}
57 %endif
58
59 Requires: openssl iproute module-init-tools
60 #Upstream kernel commit 4f647e0a3c37b8d5086214128614a136064110c3
61 #Requires: kernel >= 3.15.0-0
62
63 Requires(post): systemd-units
64 Requires(preun): systemd-units
65 Requires(postun): systemd-units
66 Obsoletes: openvswitch-controller <= 0:2.1.0-1
67
68 %bcond_without check
69
70 %description
71 Open vSwitch provides standard network bridging functions and
72 support for the OpenFlow protocol for remote per-flow control of
73 traffic.
74
75 %package -n python-openvswitch
76 Summary: Open vSwitch python bindings
77 License: ASL 2.0
78 BuildArch: noarch
79 Requires: python
80 Requires: python-six
81
82 %description -n python-openvswitch
83 Python bindings for the Open vSwitch database
84
85 %package test
86 Summary: Open vSwitch testing utilities
87 License: ASL 2.0
88 BuildArch: noarch
89 Requires: python-openvswitch = %{version}-%{release}
90 Requires: python python-twisted-core python-twisted-web
91
92 %description test
93 Utilities that are useful to diagnose performance and connectivity
94 issues in Open vSwitch setup.
95
96 %package devel
97 Summary: Open vSwitch OpenFlow development package (library, headers)
98 License: ASL 2.0
99 Provides: openvswitch-static = %{version}-%{release}
100
101 %description devel
102 This provides static library, libopenswitch.a and the openvswitch header
103 files needed to build an external application.
104
105 %package ovn
106 Summary: Open vSwitch - Open Virtual Network support
107 License: ASL 2.0
108 Requires: openvswitch
109
110 %description ovn
111 OVN, the Open Virtual Network, is a system to support virtual network
112 abstraction.  OVN complements the existing capabilities of OVS to add
113 native support for virtual network abstractions, such as virtual L2 and L3
114 overlays and security groups.
115
116
117 %prep
118 %setup -q
119
120 %build
121 %configure \
122 %if %{with libcapng}
123         --enable-libcapng \
124 %else
125         --disable-libcapng \
126 %endif
127 %if %{with dpdk}
128         --with-dpdk=$(dirname %{_datadir}/dpdk/*/.config) \
129 %endif
130         --enable-ssl \
131         --with-pkidir=%{_sharedstatedir}/openvswitch/pki
132
133 make %{?_smp_mflags}
134
135 %install
136 rm -rf $RPM_BUILD_ROOT
137 make install DESTDIR=$RPM_BUILD_ROOT
138
139 install -d -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch
140
141 install -p -D -m 0644 \
142         rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
143         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch
144 for service in openvswitch openvswitch-nonetwork \
145                 ovn-controller ovn-controller-vtep ovn-northd; do
146         install -p -D -m 0644 \
147                         rhel/usr_lib_systemd_system_${service}.service \
148                         $RPM_BUILD_ROOT%{_unitdir}/${service}.service
149 done
150 install -m 0755 rhel/etc_init.d_openvswitch \
151         $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init
152
153 install -p -D -m 0644 rhel/etc_logrotate.d_openvswitch \
154         $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/openvswitch
155
156 install -m 0644 vswitchd/vswitch.ovsschema \
157         $RPM_BUILD_ROOT/%{_datadir}/openvswitch/vswitch.ovsschema
158
159 install -d -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/
160 install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifdown-ovs \
161         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
162 install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifup-ovs \
163         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
164
165 install -d -m 0755 $RPM_BUILD_ROOT%{python_sitelib}
166 mv $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/* \
167    $RPM_BUILD_ROOT%{python_sitelib}
168 rmdir $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/
169
170 install -d -m 0755 $RPM_BUILD_ROOT/%{_sharedstatedir}/openvswitch
171
172 touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db
173 touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/system-id.conf
174
175 # remove unpackaged files
176 rm -f $RPM_BUILD_ROOT%{_bindir}/ovs-benchmark \
177         $RPM_BUILD_ROOT%{_bindir}/ovs-parse-backtrace \
178         $RPM_BUILD_ROOT%{_bindir}/ovs-pcap \
179         $RPM_BUILD_ROOT%{_bindir}/ovs-tcpundump \
180         $RPM_BUILD_ROOT%{_sbindir}/ovs-vlan-bug-workaround \
181         $RPM_BUILD_ROOT%{_mandir}/man1/ovs-benchmark.1 \
182         $RPM_BUILD_ROOT%{_mandir}/man1/ovs-pcap.1 \
183         $RPM_BUILD_ROOT%{_mandir}/man1/ovs-tcpundump.1 \
184         $RPM_BUILD_ROOT%{_mandir}/man8/ovs-vlan-bug-workaround.8 \
185         $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovs-save
186
187 %check
188 %if %{with check}
189     if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
190        make check TESTSUITEFLAGS='--recheck'; then :;
191     else
192         cat tests/testsuite.log
193         exit 1
194     fi
195 %endif
196
197 %clean
198 rm -rf $RPM_BUILD_ROOT
199
200 %preun
201 %if 0%{?systemd_preun:1}
202     %systemd_preun %{name}.service
203 %else
204     if [ $1 -eq 0 ] ; then
205     # Package removal, not upgrade
206         /bin/systemctl --no-reload disable %{name}.service >/dev/null 2>&1 || :
207         /bin/systemctl stop %{name}.service >/dev/null 2>&1 || :
208     fi
209 %endif
210
211 %preun ovn
212 %if 0%{?systemd_preun:1}
213     %systemd_preun ovn-controller.service
214     %systemd_preun ovn-controller-vtep.service
215     %systemd_preun ovn-northd.service
216 %else
217     if [ $1 -eq 0 ] ; then
218     # Package removal, not upgrade
219         /bin/systemctl --no-reload disable ovn-controller.service >/dev/null 2>&1 || :
220         /bin/systemctl stop ovn-controller.service >/dev/null 2>&1 || :
221         /bin/systemctl --no-reload disable ovn-controller-vtep.service >/dev/null 2>&1 || :
222         /bin/systemctl stop ovn-controller-vtep.service >/dev/null 2>&1 || :
223         /bin/systemctl --no-reload disable ovn-northd.service >/dev/null 2>&1 || :
224         /bin/systemctl stop ovn-northd.service >/dev/null 2>&1 || :
225     fi
226 %endif
227
228 %post
229 %if 0%{?systemd_post:1}
230     %systemd_post %{name}.service
231 %else
232     # Package install, not upgrade
233     if [ $1 -eq 1 ]; then
234         /bin/systemctl daemon-reload >dev/null || :
235     fi
236 %endif
237
238 %post ovn
239 %if 0%{?systemd_post:1}
240     %systemd_post ovn-controller.service
241     %systemd_post ovn-controller-vtep.service
242     %systemd_post ovn-northd.service
243 %else
244     # Package install, not upgrade
245     if [ $1 -eq 1 ]; then
246         /bin/systemctl daemon-reload >dev/null || :
247     fi
248 %endif
249
250 %postun
251 %if 0%{?systemd_postun_with_restart:1}
252     %systemd_postun_with_restart %{name}.service
253 %else
254     /bin/systemctl daemon-reload >/dev/null 2>&1 || :
255     if [ "$1" -ge "1" ] ; then
256     # Package upgrade, not uninstall
257         /bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
258     fi
259 %endif
260
261 %postun ovn
262 %if 0%{?systemd_postun_with_restart:1}
263     %systemd_postun_with_restart ovn-controller.service
264     %systemd_postun_with_restart ovn-controller-vtep.service
265     %systemd_postun_with_restart ovn-northd.service
266 %else
267     /bin/systemctl daemon-reload >/dev/null 2>&1 || :
268     if [ "$1" -ge "1" ] ; then
269     # Package upgrade, not uninstall
270         /bin/systemctl try-restart ovn-controller.service >/dev/null 2>&1 || :
271         /bin/systemctl try-restart ovn-controller-vtep.service >/dev/null 2>&1 || :
272         /bin/systemctl try-restart ovn-northd.service >/dev/null 2>&1 || :
273     fi
274 %endif
275
276 %files -n python-openvswitch
277 %{python_sitelib}/ovs
278 %doc COPYING
279
280 %files test
281 %{_bindir}/ovs-test
282 %{_bindir}/ovs-vlan-test
283 %{_bindir}/ovs-l3ping
284 %{_mandir}/man8/ovs-test.8*
285 %{_mandir}/man8/ovs-vlan-test.8*
286 %{_mandir}/man8/ovs-l3ping.8*
287 %{python_sitelib}/ovstest
288
289 %files devel
290 %{_libdir}/*.a
291 %{_libdir}/*.la
292 %{_libdir}/pkgconfig/*.pc
293 %{_includedir}/openvswitch/*
294 %{_includedir}/openflow/*
295
296 %files
297 %defattr(-,root,root)
298 %{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash
299 %{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash
300 %dir %{_sysconfdir}/openvswitch
301 %config %ghost %{_sysconfdir}/openvswitch/conf.db
302 %config %ghost %{_sysconfdir}/openvswitch/system-id.conf
303 %config(noreplace) %{_sysconfdir}/sysconfig/openvswitch
304 %config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch
305 %{_unitdir}/openvswitch.service
306 %{_unitdir}/openvswitch-nonetwork.service
307 %{_datadir}/openvswitch/scripts/openvswitch.init
308 %{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
309 %{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
310 %{_datadir}/openvswitch/bugtool-plugins/
311 %{_datadir}/openvswitch/scripts/ovs-bugtool-*
312 %{_datadir}/openvswitch/scripts/ovs-check-dead-ifs
313 %{_datadir}/openvswitch/scripts/ovs-lib
314 %{_datadir}/openvswitch/scripts/ovs-vtep
315 %{_datadir}/openvswitch/scripts/ovs-ctl
316 %config %{_datadir}/openvswitch/vswitch.ovsschema
317 %config %{_datadir}/openvswitch/vtep.ovsschema
318 %{_bindir}/ovs-appctl
319 %{_bindir}/ovs-docker
320 %{_bindir}/ovs-dpctl
321 %{_bindir}/ovs-dpctl-top
322 %{_bindir}/ovs-ofctl
323 %{_bindir}/ovs-vsctl
324 %{_bindir}/ovsdb-client
325 %{_bindir}/ovsdb-tool
326 %{_bindir}/ovs-testcontroller
327 %{_bindir}/ovs-pki
328 %{_bindir}/vtep-ctl
329 %{_sbindir}/ovs-bugtool
330 %{_sbindir}/ovs-vswitchd
331 %{_sbindir}/ovsdb-server
332 %{_mandir}/man1/ovsdb-client.1*
333 %{_mandir}/man1/ovsdb-server.1*
334 %{_mandir}/man1/ovsdb-tool.1*
335 %{_mandir}/man5/ovs-vswitchd.conf.db.5*
336 %{_mandir}/man5/vtep.5*
337 %{_mandir}/man8/vtep-ctl.8*
338 %{_mandir}/man8/ovs-appctl.8*
339 %{_mandir}/man8/ovs-bugtool.8*
340 %{_mandir}/man8/ovs-ctl.8*
341 %{_mandir}/man8/ovs-dpctl.8*
342 %{_mandir}/man8/ovs-dpctl-top.8*
343 %{_mandir}/man8/ovs-ofctl.8*
344 %{_mandir}/man8/ovs-pki.8*
345 %{_mandir}/man8/ovs-vsctl.8*
346 %{_mandir}/man8/ovs-vswitchd.8*
347 %{_mandir}/man8/ovs-parse-backtrace.8*
348 %{_mandir}/man8/ovs-testcontroller.8*
349 %doc COPYING DESIGN.md INSTALL.SSL.md NOTICE README.md WHY-OVS.md
350 %doc FAQ.md NEWS INSTALL.DPDK.md rhel/README.RHEL
351 /var/lib/openvswitch
352 /var/log/openvswitch
353 %ghost %attr(755,root,root) %{_rundir}/openvswitch
354
355 %files ovn
356 %{_bindir}/ovn-controller
357 %{_bindir}/ovn-controller-vtep
358 %{_bindir}/ovn-docker-overlay-driver
359 %{_bindir}/ovn-docker-underlay-driver
360 %{_bindir}/ovn-nbctl
361 %{_bindir}/ovn-northd
362 %{_bindir}/ovn-sbctl
363 %{_datadir}/openvswitch/scripts/ovn-ctl
364 %{_mandir}/man8/ovs-testcontroller.8*
365 %{_mandir}/man5/ovn-nb.5*
366 %{_mandir}/man5/ovn-sb.5*
367 %{_mandir}/man7/ovn-architecture.7*
368 %{_mandir}/man8/ovn-controller.8*
369 %{_mandir}/man8/ovn-controller-vtep.8*
370 %{_mandir}/man8/ovn-ctl.8*
371 %{_mandir}/man8/ovn-nbctl.8*
372 %{_mandir}/man8/ovn-northd.8*
373 %{_mandir}/man8/ovn-sbctl.8*
374 %config %{_datadir}/openvswitch/ovn-nb.ovsschema
375 %config %{_datadir}/openvswitch/ovn-sb.ovsschema
376 %{_unitdir}/ovn-controller.service
377 %{_unitdir}/ovn-controller-vtep.service
378 %{_unitdir}/ovn-northd.service
379
380 %changelog
381 * Wed Jan 12 2011 Ralf Spenneberg <ralf@os-s.net>
382 - First build on F14