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