2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 09:58:01 +00:00

build: Add support for building RPMs for Fedora Linux

Add RPM specfiles for building OVS for Fedora Linux. This
allows users of the upstream project the ability to
generate RPMs for their Open vSwitch needs.

Signed-off-by: Ralf Spenneberg <ralf@spenneberg.net>
[kmestery@cisco.com made substantial changes including
 writing documentation]
Signed-off-by: Kyle Mestery <kmestery@cisco.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ralf Spenneberg 2012-10-02 14:31:55 -04:00 committed by Ben Pfaff
parent 986390c3ab
commit d8fe0a6ac8
6 changed files with 340 additions and 1 deletions

52
INSTALL.Fedora Normal file
View File

@ -0,0 +1,52 @@
How to Install Open vSwitch on Fedora Linux
===========================================
This document describes how to build and install Open vSwitch on a Fedora
Linux host. If you want to install Open vSwitch on a generic Linux host,
see INSTALL.Linux instead.
We have tested these instructions with Fedora 16 and Fedora 17.
Building Open vSwitch for Fedora
--------------------------------
You may build from an Open vSwitch distribution tarball or from an
Open vSwitch Git tree.
Before you begin, note the RPM source directory on your version of
Fedora. On Fedora 15, it is $HOME/rpmbuild/SOURCES.
1. If you are building from an Open vSwitch Git tree, then you will
need to first create a distribution tarball by running "./boot.sh;
./configure; make dist" in the Git tree.
2. Copy the distribution tarball into the RPM source directory.
3. Unpack the distribution tarball into a temporary directory and "cd"
into the root of the distribution tarball.
4. To build Open vSwitch userspace, run:
rpmbuild -bb rhel/openvswitch-fedora.spec
This produces one RPM: "openvswitch".
5. On Fedora 15, to build the Open vSwitch kernel module, run:
rpmbuild -bb rhel/openvswitch-kmod-fedora.spec
You might have to specify a kernel version and/or variants, e.g.:
rpmbuild -bb \
-D "kversion 2.6.32-131.6.1.el6.x86_64" \
-D "kflavors default debug kdump" \
rhel/openvswitch-kmod-rhel6.spec
This produces an "kmod-openvswitch" RPM for each kernel variant,
in this example: "kmod-openvswitch", "kmod-openvswitch-debug", and
"kmod-openvswitch-kdump".
Reporting Bugs
--------------
Please report problems to bugs@openvswitch.org.

2
rhel/.gitignore vendored
View File

@ -1,3 +1,5 @@
openvswitch-kmod-rhel5.spec openvswitch-kmod-rhel5.spec
openvswitch-kmod-rhel6.spec openvswitch-kmod-rhel6.spec
openvswitch-kmod-fedora.spec
openvswitch.spec openvswitch.spec
openvswitch-fedora.spec

View File

@ -17,9 +17,14 @@ EXTRA_DIST += \
rhel/openvswitch-kmod-rhel5.spec.in \ rhel/openvswitch-kmod-rhel5.spec.in \
rhel/openvswitch-kmod-rhel6.spec \ rhel/openvswitch-kmod-rhel6.spec \
rhel/openvswitch-kmod-rhel6.spec.in \ rhel/openvswitch-kmod-rhel6.spec.in \
rhel/openvswitch-kmod-fedora.spec \
rhel/openvswitch-kmod-fedora.spec.in \
rhel/openvswitch.spec \ rhel/openvswitch.spec \
rhel/openvswitch.spec.in \ rhel/openvswitch.spec.in \
rhel/usr_share_openvswitch_scripts_sysconfig.template rhel/openvswitch-fedora.spec \
rhel/openvswitch-fedora.spec.in \
rhel/usr_share_openvswitch_scripts_sysconfig.template \
rhel/usr_lib_systemd_system_openvswitch.service
update_rhel_spec = \ update_rhel_spec = \
($(ro_shell) && sed -e 's,[@]VERSION[@],$(VERSION),g') \ ($(ro_shell) && sed -e 's,[@]VERSION[@],$(VERSION),g') \
@ -32,5 +37,11 @@ $(srcdir)/rhel/openvswitch-kmod-rhel5.spec: rhel/openvswitch-kmod-rhel5.spec.in
$(srcdir)/rhel/openvswitch-kmod-rhel6.spec: rhel/openvswitch-kmod-rhel6.spec.in $(top_builddir)/config.status $(srcdir)/rhel/openvswitch-kmod-rhel6.spec: rhel/openvswitch-kmod-rhel6.spec.in $(top_builddir)/config.status
$(update_rhel_spec) $(update_rhel_spec)
$(srcdir)/rhel/openvswitch-kmod-fedora.spec: rhel/openvswitch-kmod-fedora.spec.in $(top_builddir)/config.status
$(update_rhel_spec)
$(srcdir)/rhel/openvswitch.spec: rhel/openvswitch.spec.in $(top_builddir)/config.status $(srcdir)/rhel/openvswitch.spec: rhel/openvswitch.spec.in $(top_builddir)/config.status
$(update_rhel_spec) $(update_rhel_spec)
$(srcdir)/rhel/openvswitch-fedora.spec: rhel/openvswitch-fedora.spec.in $(top_builddir)/config.status
$(update_rhel_spec)

View File

@ -0,0 +1,197 @@
# Spec file for Open vSwitch.
# Copyright (C) 2009, 2010 Nicira Networks, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without warranty of any kind.
#%define kernel 2.6.40.4-5.fc15.x86_64
Name: openvswitch
Summary: Open vSwitch
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
Version: @VERSION@
# The entire source code is ASL 2.0 except datapath/ which is GPLv2
License: ASL 2.0
Release: 1%{?dist}
Source: openvswitch-%{version}.tar.gz
#Source1: openvswitch-init
Buildroot: /tmp/openvswitch-fedora-rpm
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
%description
Open vSwitch provides standard network bridging functions augmented with
support for the OpenFlow protocol for remote per-flow control of
traffic.
%prep
%setup -q -n openvswitch-%{version}
%build
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} --enable-ssl %{build_number}
make %{_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
install -d -m 755 $RPM_BUILD_ROOT/etc
install -d -m 755 $RPM_BUILD_ROOT/etc/openvswitch
install -p -D -m 0644 rhel/usr_lib_systemd_system_openvswitch.service \
$RPM_BUILD_ROOT%{_unitdir}/openvswitch.service
install -m 755 rhel/etc_init.d_openvswitch \
$RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init
install -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig
install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d
install -m 755 rhel/etc_logrotate.d_openvswitch \
$RPM_BUILD_ROOT/etc/logrotate.d/openvswitch
install -d -m 755 $RPM_BUILD_ROOT/etc/profile.d
install -m 644 vswitchd/vswitch.ovsschema \
$RPM_BUILD_ROOT/usr/share/openvswitch/vswitch.ovsschema
install -d -m 755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
install -d -m 0755 $RPM_BUILD_ROOT/etc/sysconfig/network-scripts/
install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifdown-ovs \
$RPM_BUILD_ROOT/etc/sysconfig/network-scripts/ifdown-ovs
install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifup-ovs \
$RPM_BUILD_ROOT/etc/sysconfig/network-scripts/ifup-ovs
install -p -D -m 0644 rhel/usr_share_openvswitch_scripts_sysconfig.template \
$RPM_BUILD_ROOT/etc/sysconfig/openvswitch
install -d -m 755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
install python/compat/uuid.py $RPM_BUILD_ROOT/usr/share/openvswitch/python
install python/compat/argparse.py $RPM_BUILD_ROOT/usr/share/openvswitch/python
install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
%clean
rm -rf $RPM_BUILD_ROOT
%preun
# Package removal, not upgrade
systemctl stop openvswitch.service
systemctl disable openvswitch.service
%post
if test ! -e /etc/openvswitch/conf.db; then
install -d -m 755 -o root -g root /etc/openvswitch
# Create ovs-vswitchd config database
ovsdb-tool -vANY:console:emer create /etc/openvswitch/conf.db \
/usr/share/openvswitch/vswitch.ovsschema
# Create initial table in config database
ovsdb-tool -vANY:console:emer transact /etc/openvswitch/conf.db \
'[{"op": "insert", "table": "Open_vSwitch", "row": {}}]' \
> /dev/null
fi
# Initial installation
systemctl enable openvswitch.service
systemctl start openvswitch.service
%postun
%files
%defattr(-,root,root)
%config /etc/sysconfig/openvswitch
%config /etc/logrotate.d/openvswitch
%{_unitdir}/openvswitch.service
%{_datadir}/openvswitch/scripts/openvswitch.init
%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
/usr/share/openvswitch/bugtool-plugins/
/usr/share/openvswitch/python/ovs/__init__.py
/usr/share/openvswitch/python/ovs/daemon.py
/usr/share/openvswitch/python/ovs/db/__init__.py
/usr/share/openvswitch/python/ovs/db/data.py
/usr/share/openvswitch/python/ovs/db/error.py
/usr/share/openvswitch/python/ovs/db/idl.py
/usr/share/openvswitch/python/ovs/db/parser.py
/usr/share/openvswitch/python/ovs/db/schema.py
/usr/share/openvswitch/python/ovs/db/types.py
/usr/share/openvswitch/python/ovs/dirs.py
/usr/share/openvswitch/python/ovs/fatal_signal.py
/usr/share/openvswitch/python/ovs/json.py
/usr/share/openvswitch/python/ovs/jsonrpc.py
/usr/share/openvswitch/python/ovs/ovsuuid.py
/usr/share/openvswitch/python/ovs/poller.py
/usr/share/openvswitch/python/ovs/process.py
/usr/share/openvswitch/python/ovs/reconnect.py
/usr/share/openvswitch/python/ovs/socket_util.py
/usr/share/openvswitch/python/ovs/stream.py
/usr/share/openvswitch/python/ovs/timeval.py
/usr/share/openvswitch/python/ovs/util.py
/usr/share/openvswitch/python/ovs/version.py
/usr/share/openvswitch/python/ovs/unixctl/__init__.py
/usr/share/openvswitch/python/ovs/unixctl/client.py
/usr/share/openvswitch/python/ovs/unixctl/server.py
/usr/share/openvswitch/python/uuid.py
/usr/share/openvswitch/python/argparse.py
/usr/share/openvswitch/python/ovs/vlog.py
/usr/share/openvswitch/python/ovstest/__init__.py
/usr/share/openvswitch/python/ovstest/args.py
/usr/share/openvswitch/python/ovstest/rpcserver.py
/usr/share/openvswitch/python/ovstest/tcp.py
/usr/share/openvswitch/python/ovstest/udp.py
/usr/share/openvswitch/python/ovstest/util.py
/usr/share/openvswitch/python/ovstest/vswitch.py
/usr/share/openvswitch/python/ovstest/tests.py
/usr/share/openvswitch/scripts/ovs-bugtool-*
/usr/share/openvswitch/scripts/ovs-check-dead-ifs
/usr/share/openvswitch/scripts/ovs-lib
%config /usr/share/openvswitch/vswitch.ovsschema
/usr/sbin/ovs-brcompatd
/usr/sbin/ovs-bugtool
/usr/sbin/ovs-vswitchd
/usr/sbin/ovsdb-server
/usr/bin/ovs-appctl
/usr/bin/ovs-dpctl
/usr/bin/ovs-ofctl
/usr/bin/ovs-vsctl
/usr/bin/ovsdb-client
/usr/bin/ovsdb-tool
/usr/bin/ovs-controller
/usr/bin/ovs-pki
/usr/bin/ovs-test
/usr/bin/ovs-l3ping
%doc /usr/share/man/man8/ovs-controller.8.gz
%doc /usr/share/man/man8/ovs-pki.8.gz
%doc /usr/share/man/man1/ovsdb-client.1.gz
%doc /usr/share/man/man1/ovsdb-server.1.gz
%doc /usr/share/man/man1/ovsdb-tool.1.gz
%doc /usr/share/man/man5/ovs-vswitchd.conf.db.5.gz
%doc /usr/share/man/man8/ovs-appctl.8.gz
%doc /usr/share/man/man8/ovs-bugtool.8.gz
%doc /usr/share/man/man8/ovs-brcompatd.8.gz
%doc /usr/share/man/man8/ovs-dpctl.8.gz
%doc /usr/share/man/man8/ovs-ofctl.8.gz
%doc /usr/share/man/man8/ovs-parse-leaks.8.gz
%doc /usr/share/man/man8/ovs-vsctl.8.gz
%doc /usr/share/man/man8/ovs-vswitchd.8.gz
%doc /usr/share/man/man8/ovs-test.8.gz
%doc /usr/share/man/man8/ovs-l3ping.8.gz
/var/lib/openvswitch
/usr/share/openvswitch/scripts/ovs-ctl
%exclude /etc/openvswitch
%exclude /usr/bin/ovs-benchmark
%exclude /usr/bin/ovs-parse-leaks
%exclude /usr/bin/ovs-pcap
%exclude /usr/bin/ovs-tcpundump
%exclude /usr/bin/ovs-vlan-test
%exclude /usr/sbin/ovs-vlan-bug-workaround
%exclude /usr/share/man/man1/ovs-benchmark.1.gz
%exclude /usr/share/man/man1/ovs-pcap.1.gz
%exclude /usr/share/man/man1/ovs-tcpundump.1.gz
%exclude /usr/share/man/man8/ovs-ctl.8.gz
%exclude /usr/share/man/man8/ovs-vlan-bug-workaround.8.gz
%exclude /usr/share/man/man8/ovs-vlan-test.8.gz
%exclude /usr/share/openvswitch/scripts/ovs-save
%changelog
* Wed Jan 12 2011 Ralf Spenneberg <ralf@os-s.net>
- First build on F14

View File

@ -0,0 +1,65 @@
# Spec file for Open vSwitch.
# Copyright (C) 2009, 2010 Nicira Networks, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without warranty of any kind.
#%define kernel 3.1.5-1.fc16.x86_64
#define kernel %{kernel_source}
%{?kversion:%define kernel %kversion}
Name: openvswitch-kmod
Summary: Open vSwitch Kernel Modules
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
Vendor: OpenSource Security Ralf Spenneberg <ralf@os-s.net>
Version: @VERSION@
# The entire source code is ASL 2.0 except datapath/ which is GPLv2
License: GPLv2
Release: 1%{?dist}
Source: openvswitch-%{version}.tar.gz
#Source1: openvswitch-init
Buildroot: /tmp/openvswitch-xen-rpm
%description
Open vSwitch provides standard network bridging functions augmented with
support for the OpenFlow protocol for remote per-flow control of
traffic. This package contains the kernel modules.
%prep
%setup -q -n openvswitch-%{version}
%build
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} --with-linux=/lib/modules/%{kernel}/build --enable-ssl %{build_number}
make %{_smp_mflags} -C datapath/linux
%install
rm -rf $RPM_BUILD_ROOT
make -C datapath/linux modules_install
install -d -m 755 $RPM_BUILD_ROOT/lib/modules/%{kernel}/kernel/extra/openvswitch
find datapath/linux -name *.ko -exec install -m 755 \{\} $RPM_BUILD_ROOT/lib/modules/%{kernel}/kernel/extra/openvswitch \;
%clean
rm -rf $RPM_BUILD_ROOT
%preun
%post
# Ensure that modprobe will find our modules.
depmod %{kernel}
%files
%defattr(-,root,root)
/lib/modules/%{kernel}/kernel/extra/openvswitch/openvswitch.ko
/lib/modules/%{kernel}/kernel/extra/openvswitch/brcompat.ko
%changelog
* Wed Sep 21 2011 Kyle Mestery <kmestery@cisco.com>
- Updated for F15
* Wed Jan 12 2011 Ralf Spenneberg <ralf@os-s.net>
- First build on F14

View File

@ -0,0 +1,12 @@
[Unit]
Description=Open vSwitch
After=syslog.target network.target
[Service]
Type=oneshot
ExecStart=/usr/share/openvswitch/scripts/openvswitch.init start
ExecStop=/usr/share/openvswitch/scripts/openvswitch.init stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target