Since building python-openvswitch _json.so requires libopenvswitch.so a separate spec file is added which configures Open vSwitch with --enable-shared flag. The resulting RPM also includes the Open vSwitch shared library.
$ rpm -qlp python-openvswitch-2.6.90-1.fc25.x86_64.rpm /usr/lib64/libopenvswitch.so /usr/lib64/libopenvswitch.so.1 /usr/lib64/libopenvswitch.so.1.0.0 /usr/lib64/python2.7/site-packages/ovs /usr/lib64/python2.7/site-packages/ovs-2.6.90-py2.7.egg-info ... /usr/lib64/python2.7/site-packages/ovs/_json.so ... CC: Terry Wilson <[email protected]> Signed-off-by: Numan Siddique <[email protected]> --- INSTALL.Fedora.rst | 13 +++++ python/setup.py | 9 ++- rhel/automake.mk | 9 +++ rhel/python-openvswitch-fedora.spec.in | 103 +++++++++++++++++++++++++++++++++ 4 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 rhel/python-openvswitch-fedora.spec.in diff --git a/INSTALL.Fedora.rst b/INSTALL.Fedora.rst index b9be0ed..40eacfc 100644 --- a/INSTALL.Fedora.rst +++ b/INSTALL.Fedora.rst @@ -83,6 +83,8 @@ This will create the RPMs `openvswitch`, `python-openvswitch`, `openvswitch-ovn-central`, `openvswitch-ovn-host`, `openvswitch-ovn-vtep`, `openvswitch-ovn-docker`, and `openvswitch-debuginfo`. +`python-openvswitch` RPM doesn't include the native json library. + To enable DPDK support in the openvswitch package, the ``--with dpdk`` option can be added: @@ -98,6 +100,17 @@ these tests, the ``--without check`` option can be added: $ make rpm-fedora RPMBUILD_OPT="--without check" +Open vSwitch python binding RPM with native json library +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To build the `python-openvswitch` RPM with native json library, run: + + +:: + $ make rpm-fedora-python-ovs + +This also builds the Open vSwitch shared library and includes it in the RPM. + Kernel OVS Tree Datapath RPM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/python/setup.py b/python/setup.py index 19c1f18..5070c9b 100644 --- a/python/setup.py +++ b/python/setup.py @@ -12,6 +12,7 @@ from __future__ import print_function import sys +import os from distutils.command.build_ext import build_ext from distutils.errors import CCompilerError, DistutilsExecError, \ @@ -33,6 +34,10 @@ ext_errors = (CCompilerError, DistutilsExecError, DistutilsPlatformError) if sys.platform == 'win32': ext_errors += (IOError, ValueError) +# Get the include path if defined +include_dirs = os.environ.get('OVS_INCLUDE_DIR', '.') +library_dirs = os.environ.get('OVS_LIB_DIR', '.') + class BuildFailed(Exception): pass @@ -77,7 +82,9 @@ setup_args = dict( 'Programming Language :: Python :: 3.4', ], ext_modules=[setuptools.Extension("ovs._json", sources=["ovs/_json.c"], - libraries=['openvswitch'])], + libraries=['openvswitch'], + include_dirs=[include_dirs], + library_dirs=[library_dirs])], cmdclass={'build_ext': try_build_ext}, ) diff --git a/rhel/automake.mk b/rhel/automake.mk index 45aa9b1..1113fd8 100644 --- a/rhel/automake.mk +++ b/rhel/automake.mk @@ -23,6 +23,7 @@ EXTRA_DIST += \ rhel/openvswitch.spec.in \ rhel/openvswitch-fedora.spec \ rhel/openvswitch-fedora.spec.in \ + rhel/python-openvswitch-fedora.spec.in \ rhel/usr_share_openvswitch_scripts_sysconfig.template \ rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ rhel/usr_lib_systemd_system_openvswitch.service \ @@ -62,6 +63,14 @@ rpm-fedora: dist $(srcdir)/rhel/openvswitch-fedora.spec -D "_topdir ${RPMBUILD_TOP}" \ -ba $(srcdir)/rhel/openvswitch-fedora.spec +# Build Python binding RPM with native json +rpm-fedora-python-ovs: dist $(srcdir)/rhel/python-openvswitch-fedora.spec + ${MKDIR_P} ${RPMBUILD_TOP}/SOURCES + cp ${DIST_ARCHIVES} ${RPMBUILD_TOP}/SOURCES + rpmbuild ${RPMBUILD_OPT} \ + -D "_topdir ${RPMBUILD_TOP}" \ + -ba $(srcdir)/rhel/python-openvswitch-fedora.spec + # Build kernel datapath RPM rpm-fedora-kmod: dist $(srcdir)/rhel/openvswitch-kmod-fedora.spec ${MKDIR_P} ${RPMBUILD_TOP}/SOURCES diff --git a/rhel/python-openvswitch-fedora.spec.in b/rhel/python-openvswitch-fedora.spec.in new file mode 100644 index 0000000..cd863d8 --- /dev/null +++ b/rhel/python-openvswitch-fedora.spec.in @@ -0,0 +1,103 @@ +# Spec file for Python Open vSwitch with native json library + +# Copyright (C) 2016 Red Hat, 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. +# + +# If libcap-ng isn't available and there is no need for running OVS +# as regular user, specify the '--without libcapng' +%bcond_without libcapng + +# Enable PIE, bz#955181 +%global _hardened_build 1 + +# some distros (e.g: RHEL-7) don't define _rundir macro yet +# Fedora 15 onwards uses /run as _rundir +%if 0%{!?_rundir:1} +%define _rundir /run +%endif + +%global pkgname openvswitch +%global srcname openvswitch + +Name: python-%{pkgname} +Summary: Open vSwitch python bindings +Group: System Environment/Daemons +URL: http://www.openvswitch.org/ +Version: @VERSION@ + +# Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the +# lib/sflow*.[ch] files are SISSL +License: ASL 2.0 and LGPLv2+ and SISSL +Release: 1%{?dist} +Source: http://openvswitch.org/releases/%{pkgname}-%{version}.tar.gz + +BuildRequires: autoconf automake libtool +BuildRequires: systemd-units openssl openssl-devel +BuildRequires: python python-twisted-core python-zope-interface python-six +BuildRequires: desktop-file-utils +BuildRequires: groff graphviz +BuildRequires: checkpolicy, selinux-policy-devel +# make check dependencies +BuildRequires: procps-ng +%if %{with libcapng} +BuildRequires: libcap-ng libcap-ng-devel +%endif + +Requires: openssl iproute module-init-tools +Requires: python +Requires: python-six + +%description +Python bindings for the Open vSwitch database + +%prep +rm -rf $RPM_BUILD_DIR/%{pkgname}-%{version} +cp $RPM_SOURCE_DIR/%{pkgname}-%{version}.tar.gz . +tar xzvf %{pkgname}-%{version}.tar.gz + +%build +cd %{pkgname}-%{version} +%configure \ +%if %{with libcapng} + --enable-libcapng \ +%else + --disable-libcapng \ +%endif +%if %{with dpdk} + --with-dpdk=$(dirname %{_datadir}/dpdk/*/.config) \ +%endif + --enable-ssl \ + --with-pkidir=%{_sharedstatedir}/openvswitch/pki \ + --enable-shared + +make %{?_smp_mflags} + +export OVS_INCLUDE_DIR=$PWD/include/ +export OVS_LIB_DIR=$PWD/lib/.libs/ +cd python +%{__python2} setup.py build + +%install +rm -rf $RPM_BUILD_ROOT + +cd %{pkgname}-%{version}/python +%{__python2} setup.py install -O1 --skip-build --root %{buildroot} +cd .. +cp -d lib/.libs/libopenvswitch.so* %{buildroot}/%{_libdir}/ + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%{python2_sitearch}/ovs +%{python2_sitearch}/ovs-%{version}-py?.?.egg-info +%{_libdir}/*.so* + +%changelog +* Fri Nov 25 2016 Numan Siddique <[email protected]> +- First build on F25 -- 2.9.3 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
