On Wed, Jul 12, 2023 at 10:06 PM Ilya Maximets <[email protected]> wrote: > > On 6/27/23 12:11, Frode Nordahl wrote: > > Build the upstream Open vSwitch deb package with AF_XDP datapath > > s/datapath/ports/
Ack. > > enabled when required dependencies are available. > > > > Signed-off-by: Frode Nordahl <[email protected]> > > --- > > Documentation/intro/install/debian.rst | 13 ++++++++ > > debian/automake.mk | 45 ++++++++++++++++++-------- > > debian/control.in | 2 ++ > > debian/rules | 8 +++-- > > 4 files changed, 52 insertions(+), 16 deletions(-) > > > > diff --git a/Documentation/intro/install/debian.rst > > b/Documentation/intro/install/debian.rst > > index 6d2687830..428a45307 100644 > > --- a/Documentation/intro/install/debian.rst > > +++ b/Documentation/intro/install/debian.rst > > @@ -63,6 +63,14 @@ You do not need to be the superuser to build the Debian > > packages. > > > > 4. Prepare the package source. > > > > + In order to support building the package across a diverse set of > > + Debian/Ubuntu versions, parts of the package source needs to be > > generated > > + before a package can be built. > > + > > + This process is influenced by the OVS build > > + system, guided by the available dependencies on the system and arguments > > + to the configure script. > > + > > If you want to build the package with DPDK support execute the following > > command:: > > > > @@ -72,6 +80,11 @@ You do not need to be the superuser to build the Debian > > packages. > > > > $ ./boot.sh && ./configure && make debian > > > > + If you want to build the package without AF_XDP support execute the > > + following command:: > > + > > + $ ./boot.sh && ./configure --disable-afxdp && make debian > > + > > Check your work by running ``dpkg-checkbuilddeps`` in the top level of > > your OVS > > directory. If you've installed all the dependencies properly, > > ``dpkg-checkbuilddeps`` will exit without printing anything. If you forgot > > to > > diff --git a/debian/automake.mk b/debian/automake.mk > > index 7b2afafae..414b092a1 100644 > > --- a/debian/automake.mk > > +++ b/debian/automake.mk > > @@ -94,18 +94,36 @@ debian/copyright: AUTHORS.rst debian/copyright.in > > CLEANFILES += debian/copyright > > > > > > +DEB_BUILD_OPTIONS = nocheck parallel=`nproc` > > + > > if DPDK_NETDEV > > -update_deb_control = \ > > - $(AM_V_GEN) sed -e 's/^\# DPDK_NETDEV //' \ > > - < $(srcdir)/debian/control.in > debian/control > > +update_deb_control_dpdk = \ > > + $(AM_V_GEN) sed -i 's/^\# DPDK_NETDEV //' \ > > + $(srcdir)/debian/control > > +else > > +update_deb_control_dpdk = \ > > + $(AM_V_GEN) sed -i '/^\# DPDK_NETDEV /d' \ > > + $(srcdir)/debian/control > > +DEB_BUILD_OPTIONS += nodpdk > > +endif > > + > > +if HAVE_AF_XDP > > These should probably be guarded with HAVE_LIBXDP instead. > The issue is that OVS can build with older libbpf and without > libxdp available. HAVE_AF_XDP will be set in this case, > but the debian package requires libxdp and we will fail to > build it. > > Is that correct? Yes, that makes sense, and thank you for pointing that out, I missed the delineation, will fix it! -- Frode Nordahl > > +update_deb_control_afxdp = \ > > + $(AM_V_GEN) sed -i 's/^\# HAVE_AF_XDP //' \ > > + $(srcdir)/debian/control > > else > > -update_deb_control = \ > > - $(AM_V_GEN) grep -v '^\# DPDK_NETDEV' \ > > - < $(srcdir)/debian/control.in > debian/control > > +update_deb_control_afxdp = \ > > + $(AM_V_GEN) sed -i '/^\# HAVE_AF_XDP /d' \ > > + $(srcdir)/debian/control > > +DEB_BUILD_OPTIONS += noafxdp > > endif > > > > debian/control: $(srcdir)/debian/control.in Makefile > > - $(update_deb_control) > > + cp $(srcdir)/debian/control.in $(srcdir)/debian/control > > + ## Order is significant here as we are modifying the file in-place and > > + ## a DPDK enabled binary may support both DPDK and AFXDP. > > + $(update_deb_control_dpdk) > > + $(update_deb_control_afxdp) > > > > CLEANFILES += debian/control > > > > @@ -120,13 +138,12 @@ debian-deb: debian > > exit 1; > > \ > > fi > > $(MAKE) distclean > > + cp $(srcdir)/debian/control.in $(srcdir)/debian/control > > $(update_deb_copyright) > > - $(update_deb_control) > > + ## Order is significant here as we are modifying the file in-place and > > + ## a DPDK enabled binary may support both DPDK and AFXDP. > > + $(update_deb_control_dpdk) > > + $(update_deb_control_afxdp) > > $(AM_V_GEN) fakeroot debian/rules clean > > -if DPDK_NETDEV > > - $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \ > > - fakeroot debian/rules binary > > -else > > - $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc` nodpdk" \ > > + $(AM_V_GEN) DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS)" \ > > fakeroot debian/rules binary > > -endif > > diff --git a/debian/control.in b/debian/control.in > > index 19f590d06..d2711deaa 100644 > > --- a/debian/control.in > > +++ b/debian/control.in > > @@ -19,6 +19,7 @@ Build-Depends: > > dh-sequence-sphinxdoc, > > graphviz, > > iproute2, > > +# HAVE_AF_XDP libbpf-dev, > > libcap-ng-dev, > > libdbus-1-dev [amd64 i386 ppc64el arm64], > > # DPDK_NETDEV libdpdk-dev (>= 22.11) [amd64 i386 ppc64el arm64], > > @@ -27,6 +28,7 @@ Build-Depends: > > libssl-dev, > > libtool, > > libunbound-dev, > > +# HAVE_AF_XDP libxdp-dev (>= 1.2.9~) [!alpha !arc !hppa !ia64 !m68k !sh4], > > openssl, > > pkg-config, > > procps, > > diff --git a/debian/rules b/debian/rules > > index 28c249d07..4e09e52b6 100755 > > --- a/debian/rules > > +++ b/debian/rules > > @@ -19,13 +19,17 @@ endif > > PYTHON3S:=$(shell py3versions -vr) > > DEB_HOST_ARCH?=$(shell dpkg-architecture -qDEB_HOST_ARCH) > > > > +ifneq (,$(filter noafxdp, $(DEB_BUILD_OPTIONS))) > > +AFXDP:=--disable-afxdp > > +endif > > + > > override_dh_auto_configure: > > test -d _debian || mkdir _debian > > cd _debian && ( \ > > test -e Makefile || \ > > ../configure --prefix=/usr --localstatedir=/var \ > > --enable-ssl \ > > - --disable-afxdp \ > > + $(AFXDP) \ > > --sysconfdir=/etc \ > > $(DATAPATH_CONFIGURE_OPTS) \ > > $(EXTRA_CONFIGURE_OPTS) \ > > @@ -37,7 +41,7 @@ ifeq (,$(filter nodpdk, $(DEB_BUILD_OPTIONS))) > > test -e Makefile || \ > > ../configure --prefix=/usr --localstatedir=/var \ > > --enable-ssl \ > > - --disable-afxdp \ > > + $(AFXDP) \ > > --with-dpdk=shared \ > > --sysconfdir=/etc \ > > $(DATAPATH_CONFIGURE_OPTS) \ > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
