aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Spenneberg <ralf@spenneberg.net>2012-10-02 14:31:55 -0400
committerBen Pfaff <blp@nicira.com>2012-10-10 09:28:39 -0700
commitd8fe0a6ac8e9a21917ba4faab9e2a376e2a1a9fc (patch)
tree9711ccc222596d59329b26dc1ba460e8161f5478
parent986390c3ab79ec7447240de539a673e3621c0bd8 (diff)
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>
-rw-r--r--INSTALL.Fedora52
-rw-r--r--rhel/.gitignore2
-rw-r--r--rhel/automake.mk13
-rw-r--r--rhel/openvswitch-fedora.spec.in197
-rw-r--r--rhel/openvswitch-kmod-fedora.spec.in65
-rw-r--r--rhel/usr_lib_systemd_system_openvswitch.service12
6 files changed, 340 insertions, 1 deletions
diff --git a/INSTALL.Fedora b/INSTALL.Fedora
new file mode 100644
index 00000000..d0231271
--- /dev/null
+++ b/INSTALL.Fedora
@@ -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.
diff --git a/rhel/.gitignore b/rhel/.gitignore
index 69e69b93..fa2554fa 100644
--- a/rhel/.gitignore
+++ b/rhel/.gitignore
@@ -1,3 +1,5 @@
openvswitch-kmod-rhel5.spec
openvswitch-kmod-rhel6.spec
+openvswitch-kmod-fedora.spec
openvswitch.spec
+openvswitch-fedora.spec
diff --git a/rhel/automake.mk b/rhel/automake.mk
index 4c1d7821..3bdc4ced 100644
--- a/rhel/automake.mk
+++ b/rhel/automake.mk
@@ -17,9 +17,14 @@ EXTRA_DIST += \
rhel/openvswitch-kmod-rhel5.spec.in \
rhel/openvswitch-kmod-rhel6.spec \
rhel/openvswitch-kmod-rhel6.spec.in \
+ rhel/openvswitch-kmod-fedora.spec \
+ rhel/openvswitch-kmod-fedora.spec.in \
rhel/openvswitch.spec \
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 = \
($(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
$(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
$(update_rhel_spec)
+
+$(srcdir)/rhel/openvswitch-fedora.spec: rhel/openvswitch-fedora.spec.in $(top_builddir)/config.status
+ $(update_rhel_spec)
diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in
new file mode 100644
index 00000000..04cfeec7
--- /dev/null
+++ b/rhel/openvswitch-fedora.spec.in
@@ -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
diff --git a/rhel/openvswitch-kmod-fedora.spec.in b/rhel/openvswitch-kmod-fedora.spec.in
new file mode 100644
index 00000000..af75ddd0
--- /dev/null
+++ b/rhel/openvswitch-kmod-fedora.spec.in
@@ -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
diff --git a/rhel/usr_lib_systemd_system_openvswitch.service b/rhel/usr_lib_systemd_system_openvswitch.service
new file mode 100644
index 00000000..f39d7e61
--- /dev/null
+++ b/rhel/usr_lib_systemd_system_openvswitch.service
@@ -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