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