From d8fe0a6ac8e9a21917ba4faab9e2a376e2a1a9fc Mon Sep 17 00:00:00 2001 From: Ralf Spenneberg Date: Tue, 2 Oct 2012 14:31:55 -0400 Subject: [PATCH] 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 [kmestery@cisco.com made substantial changes including writing documentation] Signed-off-by: Kyle Mestery Signed-off-by: Ben Pfaff --- INSTALL.Fedora | 52 +++++ rhel/.gitignore | 2 + rhel/automake.mk | 13 +- rhel/openvswitch-fedora.spec.in | 197 ++++++++++++++++++ rhel/openvswitch-kmod-fedora.spec.in | 65 ++++++ ...usr_lib_systemd_system_openvswitch.service | 12 ++ 6 files changed, 340 insertions(+), 1 deletion(-) create mode 100644 INSTALL.Fedora create mode 100644 rhel/openvswitch-fedora.spec.in create mode 100644 rhel/openvswitch-kmod-fedora.spec.in create mode 100644 rhel/usr_lib_systemd_system_openvswitch.service 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 +- 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 +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 +- Updated for F15 +* Wed Jan 12 2011 Ralf Spenneberg +- 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 -- 2.30.2