> -----Original Message-----
> From: Richardson, Bruce <[email protected]>
> Sent: Thursday, July 2, 2020 9:32 PM
> To: Pai G, Sunil <[email protected]>; Ilya Maximets
> <[email protected]>; [email protected]
> Cc: Stokes, Ian <[email protected]>; [email protected];
> Tummala, Sivaprasad <[email protected]>
> Subject: RE: [PATCH RFC dpdk-latest] build: Add support for DPDK meson
> build.
> 
> 
> 
> > -----Original Message-----
> > From: Pai G, Sunil <[email protected]>
> > Sent: Thursday, July 2, 2020 4:25 PM
> > To: Ilya Maximets <[email protected]>; [email protected]
> > Cc: Stokes, Ian <[email protected]>; [email protected];
> > Richardson, Bruce <[email protected]>; Tummala, Sivaprasad
> > <[email protected]>
> > Subject: RE: [PATCH RFC dpdk-latest] build: Add support for DPDK meson
> > build.
> >
> > > -----Original Message-----
> > > From: Ilya Maximets <[email protected]>
> > > Sent: Thursday, July 2, 2020 7:26 PM
> > > To: Pai G, Sunil <[email protected]>; [email protected]
> > > Cc: Stokes, Ian <[email protected]>; [email protected];
> > > [email protected]; Richardson, Bruce
> > > <[email protected]>; Tummala, Sivaprasad
> > > <[email protected]>; [email protected]
> > > Subject: Re: [PATCH RFC dpdk-latest] build: Add support for DPDK
> > > meson
> > build.
> > >
> > > On 7/2/20 3:13 PM, Sunil Pai G wrote:
> > > > Make based build is deprecated in DPDK. Meson based build to be
> > > > used for future DPDK releases.
> > > >
> > > > This updates travis, configure script and documentation for using
> > > > DPDK Meson with OVS.
> > > >
> > > > Signed-off-by: Sunil Pai G <[email protected]>
> > >
> > > Thanks for working on this!
> > > Not a full review, just a few quick bits.
> > >
> > > At first, why dpdk-latest?  Is there issue with meson build on 19.11?
> >
> > The linker always picked the shared DPDK libraries over static when
> > built with Meson in DPDK-19.11. -Bstatic flag would get jumbled by
> > libtool causing this.
> > Thanks to Bruce, there was recently merged series which fixed a bunch
> > of issues along with this :
> > https://patches.dpdk.org/project/dpdk/list/?series=10690
> > It is requested for a back port of this series to DPDK-19.11.
> >
> > >
> > > Few more comments inline.
> > >
> > > Best regards, Ilya Maximets.
> > >
> > > > ---
> > > >  .travis.yml                           |  3 ++
> > > >  .travis/linux-build.sh                | 37 +++++++++-------
> > > >  .travis/linux-prepare.sh              |  1 +
> > > >  Documentation/intro/install/afxdp.rst |  2 +-
> > > > Documentation/intro/install/dpdk.rst  | 56 ++++++++++++++++++++---
> -
> > > >  Makefile.am                           |  3 +-
> > > >  acinclude.m4                          | 42 ++++++++++++------
> > > >  parse_pkg_cfg.py                      | 62
> > +++++++++++++++++++++++++++
> > > >  8 files changed, 167 insertions(+), 39 deletions(-)  create mode
> > > > 100644 parse_pkg_cfg.py
> > > >
> > > > diff --git a/.travis.yml b/.travis.yml index 97249c1ce..46d7ad9bb
> > > > 100644
> > > > --- a/.travis.yml
> > > > +++ b/.travis.yml
> > > > @@ -27,6 +27,9 @@ addons:
> > > >        - selinux-policy-dev
> > > >        - libunbound-dev
> > > >        - libunwind-dev
> > > > +      - python3-setuptools
> > > > +      - python3-wheel
> > > > +      - ninja-build
> > > >
> > > >  before_install: ./.travis/${TRAVIS_OS_NAME}-prepare.sh
> > > >
> > > > diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh index
> > > > 33b359a61..7fa7e738c 100755
> > > > --- a/.travis/linux-build.sh
> > > > +++ b/.travis/linux-build.sh
> > > > @@ -85,17 +85,21 @@ function install_dpdk()  {
> > > >      local DPDK_VER=$1
> > > >      local VERSION_FILE="dpdk-dir/travis-dpdk-cache-version"
> > > > +    local DPDK_OPTS=""
> > > >
> > > > -    if [ -z "$TRAVIS_ARCH" ] ||
> > > > -       [ "$TRAVIS_ARCH" == "amd64" ]; then
> > > > -        TARGET="x86_64-native-linuxapp-gcc"
> > > > -    elif [ "$TRAVIS_ARCH" == "aarch64" ]; then
> > > > -        TARGET="arm64-armv8a-linuxapp-gcc"
> > > > -    else
> > > > +    if [ "$TRAVIS_ARCH" == "aarch64" ]; then
> > > > +        DPDK_OPTS="$DPDK_OPTS --cross-file
> > > config/arm/arm64_armv8_linux_gcc"
> > >
> > > We're not cross compiling, we're actually building on aarch64 here.
> > > This option should not be needed.  IIUC, meson should detect current
> > > architecture and build with appropriate configuration.
> > >
> > > We should be able to just drop all the TRAVIS_ARCH checks for DPDK
> here.
> >
> > Sure ,let me check on this . I see a similar approach taken in DPDK
> > travis.
> > May be Bruce can comment as well ?
> >
> > >
> > > > +    elif [ "$TRAVIS_ARCH" != "amd64" ] && [ -n "$TRAVIS_ARCH" ];
> > > > + then
> > > >          echo "Target is unknown"
> > > >          exit 1
> > > >      fi
> > > >
> > > > +    if [ "$DPDK_SHARED" ]; then
> > > > +        EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=shared"
> > > > +    else
> > > > +        EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=static"
> > > > +    fi
> > >
> > > I gusee we could just change the env variable and not parse it here.
> > > i.e. have DPDK_LIB=static defined by travis.yml by default and
> > > redefine it for matrix entries where we need shared libs.
> >
> > Yes , this could be done. But if we install the libraries in a custom
> > path using a prefix, we would have to export the LD_LIBRARY_PATH for
> > which querying whether to build as shared/static will be
> > required.(This in relation to the below comment as well :))
> >
> >
> > >
> > > > +
> > > >      if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then
> > > >          # Avoid using cache for git tree build.
> > > >          rm -rf dpdk-dir
> > > > @@ -108,7 +112,8 @@ function install_dpdk()
> > > >          if [ -f "${VERSION_FILE}" ]; then
> > > >              VER=$(cat ${VERSION_FILE})
> > > >              if [ "${VER}" = "${DPDK_VER}" ]; then
> > > > -                EXTRA_OPTS="${EXTRA_OPTS} --with-dpdk=$(pwd)/dpdk-
> > dir/build"
> > > > +                sudo ninja -C $(pwd)/dpdk-dir/build install
> > > > +                sudo ldconfig
> > >
> > > I think that installing right here inside the cached folder and just
> > > adjusting environment variables should be a bit faster than re-
> > installing DPDK every time.
> > >
> > > This script also will be a good example for people like me, who
> > > really don't want to install development versions of DPDK globally
> > > on a work laptop while testing OVS builds.
> >
> > Yes , Thanks for the suggestion. Although ,using an install to a
> > directory with a prefix would require this patch from Bruce:
> > https://patches.dpdk.org/patch/72271/
> >  (which is not merged yet as of this writing) .without this , OVS
> > would fail to run searching for few shared DPDK libraries even when
> > built with static libraries.
> >
> > >
> > > >                  echo "Found cached DPDK ${VER} build in
> > > > $(pwd)/dpdk-
> > dir"
> > > >                  return
> > > >              fi
> > > > @@ -122,16 +127,18 @@ function install_dpdk()
> > > >          pushd dpdk-dir
> > > >      fi
> > > >
> > > > -    make config CC=gcc T=$TARGET
> > > > +    # Disable building DPDK kernel modules. Not needed for OVS
> > > > + build
> > or tests.
> > > > +    DPDK_OPTS="$DPDK_OPTS -Denable_kmods=false"
> > >
> > > We should also disable examples and tests at least.
> >
> > Sure , this will reduce the build time as well.
> >  Will update in the next version.
> >
> 
> Examples will be disabled by default, but disabling tests indeed makes sense
> here.
> 
> > >
> > > >
> > > > -    if [ "$DPDK_SHARED" ]; then
> > > > -        sed -i '/CONFIG_RTE_BUILD_SHARED_LIB=n/s/=n/=y/'
> > build/.config
> > > > -        export
> LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/$TARGET/lib
> > > > -    fi
> > > > +    DPDK_OPTS="$DPDK_OPTS -Dc_args=-fPIC"
> > > > +    CC=gcc meson $DPDK_OPTS build
> > > > +    ninja -C build
> > > > +    sudo ninja -C build install
> > > > +
> > > > +    # Update the library paths.
> > > > +    sudo ldconfig
> > > >
> > > > -    make -j4 CC=gcc EXTRA_CFLAGS='-fPIC'
> > > > -    EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=$(pwd)/build"
> > > > -    echo "Installed DPDK source in $(pwd)"
> > > > +    echo "Installed DPDK source"
> > > >      popd
> > > >      echo "${DPDK_VER}" > ${VERSION_FILE}  } diff --git
> > > > a/.travis/linux-prepare.sh b/.travis/linux-prepare.sh index
> > > > 8cbbd5623..682f6234b 100755
> > > > --- a/.travis/linux-prepare.sh
> > > > +++ b/.travis/linux-prepare.sh
> > > > @@ -16,6 +16,7 @@ cd ..
> > > >
> > > >  pip3 install --disable-pip-version-check --user flake8 hacking
> > > >  pip3 install --user --upgrade docutils
> > > > +pip3 install --user  'meson==0.47.1'
> > >
> > > I understand that that is the minimum required version, but why not
> > > the most recent one or, at least, a bit more recent?
> > >
> >
> > Yes , quoting David's commit message from DPDK travis :
> > "
> >     meson 0.53.0 has a compatibility issue [1] with the python 3.5.2
> > that comes
> >     in Ubuntu 16.04.
> >     On the other hand, the minimal version supported in dpdk is 0.47.1.
> >
> >     Stick to this version to avoid getting hit by regressions in meson
> > latest
> >     shiny release.
> >
> >     1: https://github.com/mesonbuild/meson/issues/6427
> > "
> >
> 
> Does your travis instance use 16.04 or 18.04? If possible can you standardize
> on a new specific version to get some additional benefits. For example, with
> meson
> 0.54 there is support for "uninstalled" pkg-config files, which you can use 
> for
> linking against a DPDK instance which has not been installed on the system.
> [https://mesonbuild.com/Release-notes-for-0-54-0.html#uninstalled-
> pkgconfig-files]
> I think that feature may be of interest or of use for the future.

Currently 16.04 is being used . I tried to moving to 18.04 as well. But seems 
like few other 
test cases which require kernel 3.16 seem to fail. Probably Ilya/David/Ian 
could comment if those test cases
can be removed and we could move to 18.04 travis? 

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to