Hm... So CentOS 7 and it's progenitor are both still python2-based, and I'm not seeing where a python3-Cython package would be coming from, so I'm not so sure you want to default to python3 for el7. I'd default to python2 there, and it's possible that package won't be built in el7's native/shipping rdma-core packages, due to missing build dependencies in the distro itself. You should be fine defaulting to python3 for anything newer, but again, need to make sure new dependencies actually exist in the target distribution. On Mon, Nov 12, 2018 at 7:32 PM Leon Romanovsky <leon@xxxxxxxxxx> wrote: > > From: Noa Osherovich <noaos@xxxxxxxxxxxx> > > Update spec file and cbuild dependencies to allow pyverbs to be > included in RedHat-based distributions. > > Signed-off-by: Noa Osherovich <noaos@xxxxxxxxxxxx> > Signed-off-by: Alaa Hleihel <alaa@xxxxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > --- > buildlib/cbuild | 4 ++-- > redhat/rdma-core.spec | 23 +++++++++++++++++++++++ > 2 files changed, 25 insertions(+), 2 deletions(-) > > diff --git a/buildlib/cbuild b/buildlib/cbuild > index 1cc54f31..098bea23 100755 > --- a/buildlib/cbuild > +++ b/buildlib/cbuild > @@ -119,7 +119,7 @@ class centos7(YumEnvironment): > specfile = "redhat/rdma-core.spec"; > > class centos7_epel(centos7): > - pkgs = (centos7.pkgs - {"cmake","make"}) | {"ninja-build","cmake3","pandoc"}; > + pkgs = (centos7.pkgs - {"cmake","make"}) | {"ninja-build","cmake3","pandoc", 'python3-Cython', 'python3-devel'}; > name = "centos7_epel"; > use_make = False; > pandoc = True; > @@ -135,7 +135,7 @@ class centos7_epel(centos7): > > class fc28(Environment): > docker_parent = "fedora:28"; > - pkgs = (centos7.pkgs - {"make"}) | {"ninja-build","pandoc","perl-generators"}; > + pkgs = (centos7.pkgs - {"make"}) | {"ninja-build","pandoc","perl-generators","python3-Cython","python3-devel"}; > name = "fc28"; > specfile = "redhat/rdma-core.spec"; > ninja_cmd = "ninja-build"; > diff --git a/redhat/rdma-core.spec b/redhat/rdma-core.spec > index 644c3ffd..422ac010 100644 > --- a/redhat/rdma-core.spec > +++ b/redhat/rdma-core.spec > @@ -23,7 +23,13 @@ BuildRequires: pkgconfig(libnl-route-3.0) > BuildRequires: valgrind-devel > BuildRequires: systemd > BuildRequires: systemd-devel > +%define with_pyverbs %{?_with_pyverbs: 1} %{?!_with_pyverbs: 0} > +%if %{with_pyverbs} > +BuildRequires: python3-devel > +BuildRequires: python3-Cython > +%else > BuildRequires: python > +%endif > %if 0%{?fedora} >= 21 > BuildRequires: perl-generators > %endif > @@ -211,6 +217,14 @@ Requires: %{name}%{?_isa} = %{version}-%{release} > In conjunction with the kernel ib_srp driver, srp_daemon allows you to > discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand. > > +%package -n python3-pyverbs > +Summary: Python3 API over IB verbs > +%{?python_provide:%python_provide python3-pyverbs} > + > +%description -n python3-pyverbs > +Pyverbs is a Cython-based Python API over libibverbs, providing an > +easy, object-oriented access to IB verbs. > + > %prep > %setup > > @@ -244,6 +258,10 @@ discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand. > -DCMAKE_INSTALL_UDEV_RULESDIR:PATH=%{_udevrulesdir} \ > %if %{with_static} > -DENABLE_STATIC=1 \ > +%endif > +%if %{with_pyverbs} > + -DPYTHON_EXECUTABLE:PATH=%{__python3} \ > + -DCMAKE_INSTALL_PYTHON_ARCH_LIB:PATH=%{python3_sitearch} \ > %endif > %{EXTRA_CMAKE_FLAGS} > %make_jobs > @@ -469,3 +487,8 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh > %{_mandir}/man5/srp_daemon.service.5* > %{_mandir}/man5/srp_daemon_port@.service.5* > %doc %{_docdir}/%{name}-%{version}/ibsrpdm.md > + > +%if %{with_pyverbs} > +%files -n python3-pyverbs > +%{python3_sitearch}/pyverbs > +%endif > -- > 2.19.1 >