DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Thomas Monjalon <thomas@monjalon.net>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2] devtools: add test script for meson builds
Date: Fri, 25 May 2018 16:18:58 +0100	[thread overview]
Message-ID: <20180525151858.GA18500@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <20180525145158.5113-1-thomas@monjalon.net>

On Fri, May 25, 2018 at 04:51:58PM +0200, Thomas Monjalon wrote:
> From: Bruce Richardson <bruce.richardson@intel.com>
> 
> To simplify testing with the meson and ninja builds, we can add a script
> to set up and do multiple builds. Currently this script sets up:
> 
> * clang and gcc builds
> * builds using static and shared linkage for binaries (libs are always
>    built as both)
> * a build using the lowest instruction-set level for x86 (-march=nehalem)
> * cross-builds for each cross-file listed in config/arm
> 
> Each build is configured in a directory ending in *-build, and then for
> the build stage, we just call ninja in each directory in turn. [i.e. we
> assume every directory starting with "build-" is a meson build, which is
> probably an ok assumption].
> 
> It can use the same configuration file as for the legacy test-build.sh.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> v2: it is a rework with 3 major changes
>    - automatically stop on error thanks to -e
>    - directory name starts with "build-"
>    - optionally load a config file to get some environment variables
> ---
>  MAINTAINERS                   |  1 +
>  devtools/test-meson-builds.sh | 75 +++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 76 insertions(+)
>  create mode 100755 devtools/test-meson-builds.sh
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e56c72687..4d015fe53 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -86,6 +86,7 @@ F: devtools/get-maintainer.sh
>  F: devtools/git-log-fixes.sh
>  F: devtools/load-devel-config
>  F: devtools/test-build.sh
> +F: devtools/test-meson-builds.sh
>  F: license/
>  
>  
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> new file mode 100755
> index 000000000..8ce0a1d31
> --- /dev/null
> +++ b/devtools/test-meson-builds.sh
> @@ -0,0 +1,75 @@
> +#! /bin/sh -e
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018 Intel Corporation
> +
> +# Run meson to auto-configure the various builds.
> +# * all builds get put in a directory whose name starts with "build-"
> +# * if a build-directory already exists we assume it was properly configured
> +# Run ninja after configuration is done.
> +
> +default_path=$PATH
> +
> +# Load config options
> +. $(dirname $(readlink -e $0))/load-devel-config
> +

Why is this needed here, it seems to be called before each individual
config anyway.

> +reset_env ()
> +{
> +	export PATH=$default_path
> +	unset CROSS
> +	unset ARMV8_CRYPTO_LIB_PATH
> +	unset FLEXRAN_SDK
> +	unset LIBMUSDK_PATH
> +	unset LIBSSO_SNOW3G_PATH
> +	unset LIBSSO_KASUMI_PATH
> +	unset LIBSSO_ZUC_PATH
> +	unset PQOS_INSTALL_PATH

These variables bar PATH are unused by meson build, so should be removed
here to avoid giving the impression they are use. $CROSS is used by the
script so perhaps it can be kept. However, the whole point of the
cross-files is that you include all the needed details of your compiler
there. I think we should move away from using the CROSS value completely,
and use the cross-files properly.

> +}
> +
> +cd $(dirname $(readlink -m $0))/..
> +
I don't think we should force the builds to be always put into the base
directory. Instead of using cd, I think we should instead capture the base
directory path and pass that to meson.

> +load_config ()
> +{
> +	reset_env
> +	. $(dirname $(readlink -e $0))/load-devel-config
> +	MESON=${MESON:-meson}
> +}
Why does this need to be done each time?

> +
> +build () # <directory> <meson options>
> +{
> +	dir=$1
> +	shift
> +	if [ ! -d "$dir" ] ; then
> +		options="--werror -Dexamples=all $*"
> +		# TODO: the configuration variables $DPDK_DEP_CFLAGS
> +		# and $DPDK_DEP_LDFLAGS are not handled in this script
> +		echo "$MESON $options $dir"
> +		$MESON $options $dir
> +		unset CC
> +	fi
> +	echo "ninja -C $dir"
> +	ninja -C $dir
> +}
> +
> +# shared and static linked builds with gcc and clang
> +for c in gcc clang ; do
> +	for s in static shared ; do
> +		load_config
> +		export CC="ccache $c"
> +		build build-$c-$s --default-library=$s
> +	done
> +done
> +
> +# test compilation with minimal x86 instruction set
> +load_config
> +build build-x86-default -Dmachine=nehalem
> +
> +# enable cross compilation if gcc cross-compiler is found
> +for f in config/arm/arm*gcc ; do
> +	DPDK_TARGET=$(basename $f | tr '_' '-')
> +	load_config
> +	CROSS=${CROSS:-aarch64-linux-gnu-}
> +	if ! command -v ${CROSS}gcc >/dev/null 2>&1 ; then
> +		continue
> +	fi
> +	build build-$(echo $DPDK_TARGET | cut -d'-' -f-2) --cross-file $f
> +done
> -- 
> 2.16.2
> 

  reply	other threads:[~2018-05-25 15:19 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-24 12:32 [dpdk-dev] [PATCH] " Bruce Richardson
2018-04-24 14:36 ` Bruce Richardson
2018-04-24 14:38 ` Bruce Richardson
2018-05-25 14:51 ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
2018-05-25 15:18   ` Bruce Richardson [this message]
2018-05-26  9:32     ` Thomas Monjalon
2018-05-28  9:33       ` Bruce Richardson
2018-05-28 10:26         ` Thomas Monjalon
2018-05-28 13:20           ` Bruce Richardson
2018-05-29 10:38             ` Thomas Monjalon
2018-05-29 10:59               ` Bruce Richardson
2018-05-26  9:54 ` [dpdk-dev] [PATCH v3] " Thomas Monjalon
2018-05-26 11:21 ` [dpdk-dev] [PATCH v4] " Thomas Monjalon
2018-05-28  9:39   ` Bruce Richardson
2018-05-29 14:42 ` [dpdk-dev] [PATCH v5] " Thomas Monjalon
2018-05-29 14:58   ` Richardson, Bruce
2018-05-29 15:37     ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180525151858.GA18500@bricha3-MOBL.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).