8bc4a2c363d04c838712b163b7314363fbd275b5
[cascardo/ovs.git] / xenserver / openvswitch-xen.spec.in
1 # Spec file for Open vSwitch.
2
3 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, 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 # For XenServer version < 6.5, when building, the rpmbuild command line
11 # should define openvswitch_version, kernel_name, kernel_version and
12 # kernel_flavor using -D arguments.
13 # for example:
14 #
15 #    rpmbuild -D "openvswitch_version 1.1.0+build123"
16 #      -D "kernel_name  NAME-xen"
17 #      -D "kernel_version 2.6.32.12-0.7.1.xs5.6.100.323.170596"
18 #      -D "kernel_flavor xen"
19 #      -bb /usr/src/redhat/SPECS/openvswitch-xen.spec
20 #
21 # For XenServer version >= 6.5, use kernel_uname which should be
22 # the `uname -r` output.
23 # for example:
24 #
25 #    rpmbuild -D "openvswitch_version 2.3.0+build123"
26 #      -D "kernel_uname  3.10.0+2"
27 #      -bb /usr/src/redhat/SPECS/openvswitch-xen.spec
28 #
29 # If tests have to be skipped while building, specify the '--without check'
30 # option. For example:
31 # rpmbuild -bb --without check xenserver/openvswitch-xen.spec
32
33 %if %{?openvswitch_version:0}%{!?openvswitch_version:1}
34 %define openvswitch_version @VERSION@
35 %endif
36
37 %if %{?kernel_uname:1}%{!?kernel_uname:0}
38 %define kernel_name kernel
39 %define kernel_version %{kernel_uname}
40 %endif
41
42 %if %{?kernel_name:0}%{!?kernel_name:1}
43 %define kernel %(rpm -qa 'kernel*xen-devel' | head -1)
44 %define kernel_name %(rpm -q --queryformat "%%{Name}" %{kernel} | sed 's/-devel//' | sed 's/kernel-//')
45 %define kernel_version %(rpm -q --queryformat "%%{Version}-%%{Release}" %{kernel})
46 %define kernel_flavor xen
47 %endif
48
49 %if %{?xen_version:0}%{!?xen_version:1}
50 %define xen_version %{kernel_version}%{?kernel_flavor:%{kernel_flavor}}
51 %endif
52
53 # bump this when breaking compatibility with userspace
54 %define module_abi_version 0
55
56 # build-supplemental-pack.sh requires this naming for kernel module packages
57 %define module_package modules%{?kernel_flavor:-%{kernel_flavor}}-%{kernel_version}
58
59 %bcond_without check
60
61 Name: openvswitch
62 Summary: Open vSwitch daemon/database/utilities
63 Group: System Environment/Daemons
64 URL: http://www.openvswitch.org/
65 Vendor: Nicira, Inc.
66 Version: %{openvswitch_version}
67
68 License: ASL 2.0
69 Release: 1
70 Source: openvswitch-%{openvswitch_version}.tar.gz
71 Buildroot: /tmp/openvswitch-xen-rpm
72 Requires: openvswitch.ko.%{module_abi_version}
73
74 %description
75 Open vSwitch provides standard network bridging functions augmented with
76 support for the OpenFlow protocol for remote per-flow control of
77 traffic.
78
79 %package %{module_package}
80 Summary: Open vSwitch kernel module
81 Group: System Environment/Kernel
82 License: GPLv2
83 Provides: %{name}-modules%{?kernel_flavor:-%{kernel_flavor}} = %{kernel_version}, openvswitch.ko.%{module_abi_version}
84 %if %{?kernel_uname:0}%{!?kernel_uname:1}
85 Requires: kernel%{?kernel_flavor:-%{kernel_flavor}} = %{kernel_version}
86 %endif
87 %if %{?kernel_uname:1}%{!?kernel_uname:0}
88 Requires: kernel-uname-r = %{kernel_version}
89 %endif
90
91 %description %{module_package}
92 Open vSwitch Linux kernel module compiled against kernel version
93 %{kernel_version}%{?kernel_flavor:%{kernel_flavor}}.
94
95 %prep
96 %setup -q -n openvswitch-%{openvswitch_version}
97
98 %build
99 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} --with-linux=/lib/modules/%{xen_version}/build --enable-ssl CFLAGS='-g -O2 -msse -msse2'
100 make %{_smp_mflags}
101
102 %install
103 rm -rf $RPM_BUILD_ROOT
104 make install DESTDIR=$RPM_BUILD_ROOT
105 install -d -m 755 $RPM_BUILD_ROOT/etc
106 install -d -m 755 $RPM_BUILD_ROOT/etc/init.d
107 install -m 755 xenserver/etc_init.d_openvswitch \
108          $RPM_BUILD_ROOT/etc/init.d/openvswitch
109 install -m 755 xenserver/etc_init.d_openvswitch-xapi-update \
110          $RPM_BUILD_ROOT/etc/init.d/openvswitch-xapi-update
111 install -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig
112 install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d
113 install -m 755 xenserver/etc_logrotate.d_openvswitch \
114          $RPM_BUILD_ROOT/etc/logrotate.d/openvswitch
115 install -d -m 755 $RPM_BUILD_ROOT/etc/profile.d
116 install -m 755 xenserver/etc_profile.d_openvswitch.sh \
117          $RPM_BUILD_ROOT/etc/profile.d/openvswitch.sh
118 install -d -m 755 $RPM_BUILD_ROOT/etc/xapi.d/plugins
119 install -m 755 xenserver/etc_xapi.d_plugins_openvswitch-cfg-update \
120          $RPM_BUILD_ROOT/etc/xapi.d/plugins/openvswitch-cfg-update
121 install -d -m 755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
122 install -m 755 xenserver/opt_xensource_libexec_interface-reconfigure \
123              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/interface-reconfigure
124 install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigure.py \
125              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigure.py
126 install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py \
127              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureBridge.py
128 install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py \
129              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
130 install -m 755 xenserver/etc_xensource_scripts_vif \
131              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/vif
132 install -m 755 xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync \
133                $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovs-xapi-sync
134 install -m 755 xenserver/usr_share_openvswitch_scripts_sysconfig.template \
135          $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/sysconfig.template
136 install -d -m 755 $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base
137 install -m 644 \
138         xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
139                $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
140
141 install -d -m 755 $RPM_BUILD_ROOT/lib/modules/%{xen_version}/extra/openvswitch
142 find datapath/linux -name *.ko -exec install -m 755  \{\} $RPM_BUILD_ROOT/lib/modules/%{xen_version}/extra/openvswitch \;
143
144 install -d -m 755 $RPM_BUILD_ROOT/etc/xensource/bugtool
145 cp -rf $RPM_BUILD_ROOT/usr/share/openvswitch/bugtool-plugins/* $RPM_BUILD_ROOT/etc/xensource/bugtool
146
147 # Get rid of stuff we don't want to make RPM happy.
148 rm \
149     $RPM_BUILD_ROOT/usr/bin/ovs-testcontroller \
150     $RPM_BUILD_ROOT/usr/bin/ovs-l3ping \
151     $RPM_BUILD_ROOT/usr/bin/ovs-pki \
152     $RPM_BUILD_ROOT/usr/bin/ovs-test \
153     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-testcontroller.8 \
154     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-l3ping.8 \
155     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-pki.8 \
156     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-test.8
157 (cd "$RPM_BUILD_ROOT" && rm -f usr/lib/lib*)
158 (cd "$RPM_BUILD_ROOT" && rm -rf usr/include)
159 (cd "$RPM_BUILD_ROOT" && rm -rf usr/lib/pkgconfig)
160
161 install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
162
163 %check
164 %if %{with check}
165     if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
166        make check TESTSUITEFLAGS='--recheck'; then :;
167     else
168         cat tests/testsuite.log
169         exit 1
170     fi
171 %endif
172
173 %clean
174 rm -rf $RPM_BUILD_ROOT
175
176 %post
177 # A list of Citrix XenServer scripts that we might need to replace
178 # with our own versions.
179 scripts="
180     /etc/xensource/scripts/vif
181     /opt/xensource/libexec/InterfaceReconfigure.py
182     /opt/xensource/libexec/InterfaceReconfigureBridge.py
183     /opt/xensource/libexec/InterfaceReconfigureVswitch.py
184     /opt/xensource/libexec/interface-reconfigure"
185
186 # Calculate into $md5sums a comma-separated set of md5sums of the
187 # Citrix XenServer scripts that we might need to replace.  We might be
188 # upgrading an older version of the package that moved the files out
189 # of the way, so we need to look for the files in those out-of-the-way
190 # locations first.
191 md5sums=
192 for script in $scripts; do
193     b=$(basename "$script")
194     if test -e /usr/lib/openvswitch/xs-saved/"$b"; then
195         f=/usr/lib/openvswitch/xs-saved/"$b"
196     elif test -e /usr/lib/openvswitch/xs-original/"$b"; then
197         f=/usr/lib/openvswitch/xs-original/"$b"
198     elif test -e "$script" && test ! -h "$script"; then
199         f=$script
200     else
201         printf "\n$script: not found\n"
202         f=/dev/null
203     fi
204     md5sums="$md5sums,$(md5sum $f | awk '{print $1}')"
205 done
206 md5sums=${md5sums#,}
207
208 # Now check the md5sums against the known sets of md5sums:
209 #
210 #   - If they are known to be a version of XenServer scripts that we should
211 #     replace, we replace them (by putting $scripts into $replace_files).
212 #
213 #   - Otherwise, we guess that it's better not to replace them, because the
214 #     improvements that our versions of the scripts provide are minimal, so
215 #     it's better to avoid possibly breaking any changes made upstream by
216 #     Citrix.
217 case $md5sums in
218     cf09a68d9f8b434e79a4c83b01a3bb4b,395866df1b0b20c12c4dd2f7de0ecdb4,9d493545ae81463239d3162cbc798852,862d0939b441de9264a900628e950fe9,21f85db25599d7f026cd489385d58aa6)
219         keep_files=
220         replace_files=$scripts
221         printf "\nVerified host scripts from XenServer 6.0.0.\n"
222         ;;
223
224     c5f48246577a17cf1b971fb5ce4e920b,2e2c912f86f9c536c89adc34ff3c2b2b,28d3ff72d72bdec4f37d70699f5edb76,67e1d0af16fc1ddf10009c5c063ad2ba,f3feff30aa3b3f8b514664a96a8dc0ab)
225         keep_files=
226         replace_files=$scripts
227         printf "\nVerified host scripts from XenServer 5.6-SP2.\n"
228         ;;
229         
230     c5f48246577a17cf1b971fb5ce4e920b,2e2c912f86f9c536c89adc34ff3c2b2b,28d3ff72d72bdec4f37d70699f5edb76,67e1d0af16fc1ddf10009c5c063ad2ba,24bae6906d182ba47668174f8e480cc6)
231         keep_files=
232         replace_files=$scripts
233         printf "\nVerified host scripts from XenServer 5.6-FP1.\n"
234         ;;
235
236     *)
237         keep_files=$scripts
238         replace_files=
239         cat <<EOF
240
241 The host scripts on this machine are not those of any supported
242 version of XenServer.  On XenServer earlier than 5.6-FP1, your Open
243 vSwitch installation will not work.  On XenServer 5.6-FP1 or later,
244 Open vSwitch is not verified to work, which could lead to unexpected
245 behavior.
246
247 EOF
248         ;;
249 esac
250
251 if grep -F net.ipv4.conf.all.arp_filter /etc/sysctl.conf >/dev/null 2>&1; then :; else
252     cat >>/etc/sysctl.conf <<EOF
253 # This works around an issue in xhad, which binds to a particular
254 # Ethernet device, which in turn causes ICMP port unreachable messages
255 # if packets are received are on the wrong interface, which in turn
256 # can happen if we send out ARP replies on every interface (as Linux
257 # does by default) instead of just on the interface that has the IP
258 # address being ARPed for, which this sysctl setting in turn works
259 # around.
260 #
261 # Bug #1378.
262 net.ipv4.conf.all.arp_filter = 1
263 EOF
264 fi
265
266 if test ! -e /etc/openvswitch/conf.db; then
267     install -d -m 755 -o root -g root /etc/openvswitch
268
269     # Create ovs-vswitchd config database
270     ovsdb-tool -vconsole:off create /etc/openvswitch/conf.db \
271             /usr/share/openvswitch/vswitch.ovsschema
272
273     # Create initial table in config database
274     ovsdb-tool -vconsole:off transact /etc/openvswitch/conf.db \
275             '[{"op": "insert", "table": "Open_vSwitch", "row": {}}]' \
276             > /dev/null
277 fi
278
279 # Create default or update existing /etc/sysconfig/openvswitch.
280 SYSCONFIG=/etc/sysconfig/openvswitch
281 TEMPLATE=/usr/share/openvswitch/scripts/sysconfig.template
282 if [ ! -e $SYSCONFIG ]; then
283     cp $TEMPLATE $SYSCONFIG
284 else
285     for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
286     do
287         if ! grep $var $SYSCONFIG >/dev/null 2>&1; then
288             echo >> $SYSCONFIG
289             sed -n "/$var:/,/$var=/p" $TEMPLATE >> $SYSCONFIG
290         fi
291     done
292 fi
293
294 # Deliberately break %postun in broken OVS builds that revert original
295 # XenServer scripts during rpm -U by moving the directory where it thinks
296 # they are saved.
297 if [ -d /usr/lib/openvswitch/xs-original ]; then
298     mkdir -p /usr/lib/openvswitch/xs-saved
299     mv /usr/lib/openvswitch/xs-original/* /usr/lib/openvswitch/xs-saved/ &&
300         rmdir /usr/lib/openvswitch/xs-original
301 fi
302
303 # Replace XenServer files by our versions.
304 mkdir -p /usr/lib/openvswitch/xs-saved \
305     || printf "Could not create script backup directory.\n"
306 for f in $replace_files; do
307     s=$(basename "$f")
308     t=$(readlink "$f")
309     if [ -f "$f" ] && [ "$t" != "/usr/share/openvswitch/scripts/$s" ]; then
310         mv "$f" /usr/lib/openvswitch/xs-saved/ \
311             || printf "Could not save original XenServer $s script\n"
312         ln -s "/usr/share/openvswitch/scripts/$s" "$f" \
313             || printf "Could not link to Open vSwitch $s script\n"
314     fi
315 done
316
317 # Clean up dangling symlinks to removed OVS replacement scripts no longer
318 # provided by OVS. Any time a replacement script is removed from OVS,
319 # it should be added here to ensure correct reversion from old versions of
320 # OVS that don't clean up dangling symlinks during the uninstall phase.
321 for orig in /usr/sbin/xen-bugtool $keep_files; do
322     saved=/usr/lib/openvswitch/xs-saved/$(basename "$orig")
323     [ -e "$saved" ] && mv -f "$saved" "$orig"
324 done
325
326 # Ensure all required services are set to run
327 for s in openvswitch openvswitch-xapi-update; do
328     if chkconfig --list $s >/dev/null 2>&1; then
329         chkconfig --del $s || printf "Could not remove $s init script.\n"
330     fi
331     chkconfig --add $s || printf "Could not add $s init script.\n"
332     chkconfig $s on || printf "Could not enable $s init script.\n"
333 done
334
335 if [ "$1" = "1" ]; then    # $1 = 1 for install
336     # Configure system to use Open vSwitch
337     /opt/xensource/bin/xe-switch-network-backend vswitch
338 else    # $1 = 2 for upgrade
339
340     mode=$(cat /etc/xensource/network.conf)
341     if [ "$mode" != "vswitch" ] && [ "$mode" != "openvswitch" ]; then
342         printf "\nThe server is not configured to run Open vSwitch.  To run in\n"
343         printf "vswitch mode, you must run the following command:\n\n"
344         printf "\txe-switch-network-backend vswitch"
345         printf "\n\n"
346     fi
347 fi
348
349 %posttrans %{module_package}
350 # Ensure that modprobe will find our modules.
351 #
352 # This has to be in %posttrans instead of %post because older versions
353 # installed modules into a different directory and "rpm -U" runs the
354 # new version's %post before removing the old version's files, so if
355 # we use %post then depmod may find the old versions that are about to
356 # be removed.
357 depmod %{xen_version}
358
359 mode=$(cat /etc/xensource/network.conf)
360 if [ "$mode" = "vswitch" ] || [ "$mode" = "openvswitch" ]; then
361     printf "\nTo use the newly installed Open vSwitch kernel module, you\n"
362     printf "will either have to reboot the hypervisor or follow any\n"
363     printf "workarounds provided by your administration guide. Failure to do\n"
364     printf "so may result in incorrect operation."
365     printf "\n\n"
366 fi
367
368 %preun
369 if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
370     # Configure system to use bridge
371     /opt/xensource/bin/xe-switch-network-backend bridge
372
373     # The "openvswitch" service should have been removed from
374     # "xe-switch-network-backend bridge".
375     for s in openvswitch openvswitch-xapi-update; do
376         if chkconfig --list $s >/dev/null 2>&1; then
377             chkconfig --del $s || printf "Could not remove $s init script."
378         fi
379     done
380 fi
381
382 %postun
383 # Restore original XenServer scripts if the OVS equivalent no longer exists.
384 # This works both in the upgrade and erase cases.
385 # This lists every file that every version of OVS has ever replaced. Never
386 # remove old files that OVS no longer replaces, or upgrades from old versions
387 # will fail to restore the XS originals, leaving the system in a broken state.
388 # Also be sure to add removed script paths to the %post scriptlet above to
389 # prevent the same problem when upgrading from old versions of OVS that lack
390 # this restore-on-upgrade logic.
391 for f in \
392     /etc/xensource/scripts/vif \
393     /usr/sbin/xen-bugtool \
394     /opt/xensource/libexec/interface-reconfigure \
395     /opt/xensource/libexec/InterfaceReconfigure.py \
396     /opt/xensource/libexec/InterfaceReconfigureBridge.py \
397     /opt/xensource/libexec/InterfaceReconfigureVswitch.py
398 do
399     # Only revert dangling symlinks.
400     if [ -h "$f" ] && [ ! -e "$f" ]; then
401         s=$(basename "$f")
402         if [ ! -f "/usr/lib/openvswitch/xs-saved/$s" ]; then
403             printf "Original XenServer $s script not present in /usr/lib/openvswitch/xs-saved\n" >&2
404             printf "Could not restore original XenServer script.\n" >&2
405         else
406             (rm -f "$f" \
407                 && mv "/usr/lib/openvswitch/xs-saved/$s" "$f") \
408                 || printf "Could not restore original XenServer $s script.\n" >&2
409         fi
410     fi
411 done
412
413 if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
414     rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyc \
415         /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyo
416
417     rm -f /usr/share/openvswitch/scripts/InterfaceReconfigure.pyc \
418         /usr/share/openvswitch/scripts/InterfaceReconfigure.pyo \
419         /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyc \
420         /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyo \
421         /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyc \
422         /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyo
423
424     # Remove all configuration files
425     rm -f /etc/openvswitch/conf.db
426     rm -f /etc/sysconfig/openvswitch
427     rm -f /etc/openvswitch/vswitchd.cacert
428
429     # Remove saved XenServer scripts directory, but only if it's empty
430     rmdir -p /usr/lib/openvswitch/xs-saved 2>/dev/null
431 fi
432
433 exit 0
434
435 %files
436 %defattr(-,root,root)
437 /etc/bash_completion.d/ovs-appctl-bashcomp.bash
438 /etc/bash_completion.d/ovs-vsctl-bashcomp.bash
439 /etc/init.d/openvswitch
440 /etc/init.d/openvswitch-xapi-update
441 /etc/xapi.d/plugins/openvswitch-cfg-update
442 /etc/xensource/bugtool/*
443 /etc/logrotate.d/openvswitch
444 /etc/profile.d/openvswitch.sh
445 /usr/share/openvswitch/python/
446 /usr/share/openvswitch/bugtool-plugins/*
447 /usr/share/openvswitch/scripts/ovs-check-dead-ifs
448 /usr/share/openvswitch/scripts/ovs-xapi-sync
449 /usr/share/openvswitch/scripts/interface-reconfigure
450 /usr/share/openvswitch/scripts/InterfaceReconfigure.py
451 /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.py
452 /usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
453 /usr/share/openvswitch/scripts/vif
454 /usr/share/openvswitch/scripts/sysconfig.template
455 /usr/share/openvswitch/scripts/ovs-bugtool-*
456 /usr/share/openvswitch/scripts/ovs-save
457 /usr/share/openvswitch/scripts/ovs-ctl
458 /usr/share/openvswitch/scripts/ovs-lib
459 /usr/share/openvswitch/scripts/ovs-vtep
460 /usr/share/openvswitch/vswitch.ovsschema
461 /usr/share/openvswitch/vtep.ovsschema
462 /usr/sbin/ovs-bugtool
463 /usr/sbin/ovs-vlan-bug-workaround
464 /usr/sbin/ovs-vswitchd
465 /usr/sbin/ovsdb-server
466 /usr/bin/ovs-appctl
467 /usr/bin/ovs-dpctl
468 /usr/bin/ovs-dpctl-top
469 /usr/bin/ovs-docker
470 /usr/bin/ovs-ofctl
471 /usr/bin/ovs-parse-backtrace
472 /usr/bin/ovs-pcap
473 /usr/bin/ovs-tcpundump
474 /usr/bin/ovs-vlan-test
475 /usr/bin/ovs-vsctl
476 /usr/bin/ovsdb-client
477 /usr/bin/ovsdb-tool
478 /usr/bin/vtep-ctl
479 /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
480 /usr/share/man/man1/ovsdb-client.1.gz
481 /usr/share/man/man1/ovsdb-server.1.gz
482 /usr/share/man/man1/ovsdb-tool.1.gz
483 /usr/share/man/man5/ovs-vswitchd.conf.db.5.gz
484 /usr/share/man/man5/vtep.5.gz
485 /usr/share/man/man8/ovs-appctl.8.gz
486 /usr/share/man/man8/ovs-bugtool.8.gz
487 /usr/share/man/man8/ovs-ctl.8.gz
488 /usr/share/man/man8/ovs-dpctl.8.gz
489 /usr/share/man/man8/ovs-dpctl-top.8.gz
490 /usr/share/man/man8/ovs-ofctl.8.gz
491 /usr/share/man/man8/ovs-parse-backtrace.8.gz
492 /usr/share/man/man1/ovs-pcap.1.gz
493 /usr/share/man/man1/ovs-tcpundump.1.gz
494 /usr/share/man/man8/ovs-vlan-bug-workaround.8.gz
495 /usr/share/man/man8/ovs-vlan-test.8.gz
496 /usr/share/man/man8/ovs-vsctl.8.gz
497 /usr/share/man/man8/ovs-vswitchd.8.gz
498 /usr/share/man/man8/vtep-ctl.8.gz
499 /var/lib/openvswitch
500 /var/log/openvswitch
501 %exclude /usr/lib/xsconsole/plugins-base/*.py[co]
502 %exclude /usr/share/openvswitch/scripts/*.py[co]
503 %exclude /usr/share/openvswitch/python/*.py[co]
504 %exclude /usr/share/openvswitch/python/ovs/*.py[co]
505 %exclude /usr/share/openvswitch/python/ovs/db/*.py[co]
506 %exclude /usr/bin/ovn-*
507 %exclude /usr/share/man/man5/ovn-*
508 %exclude /usr/share/man/man7/ovn-*
509 %exclude /usr/share/man/man8/ovn-*
510 %exclude /usr/share/openvswitch/ovn-*
511 %exclude /usr/share/openvswitch/scripts/ovn-*
512
513 %files %{module_package}
514 /lib/modules/%{xen_version}/extra/openvswitch/openvswitch.ko
515 /lib/modules/%{xen_version}/extra/openvswitch/vport-*.ko