From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5FFBEA04E7; Mon, 2 Nov 2020 13:11:36 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CFD83C840; Mon, 2 Nov 2020 13:11:33 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 1468AC838 for ; Mon, 2 Nov 2020 13:11:31 +0100 (CET) IronPort-SDR: da7jn/rmGw4LD7bX/K2wkazsGw4aJH12OeoLf+eCu+eouXy/7Sma0RClJjlogKPSi2RiL6lASe 9cxD8Sp6YPPg== X-IronPort-AV: E=McAfee;i="6000,8403,9792"; a="166282269" X-IronPort-AV: E=Sophos;i="5.77,444,1596524400"; d="scan'208";a="166282269" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Nov 2020 04:11:30 -0800 IronPort-SDR: LE3cGBbUzAphzv2eVXT618odKfGNsoj45BrowC0gN5DQ8w5dEnNeQQnzvBSrireibmN8LsH3I4 8EoeeXvlH1hA== X-IronPort-AV: E=Sophos;i="5.77,444,1596524400"; d="scan'208";a="470354641" Received: from bricha3-mobl.ger.corp.intel.com ([10.252.49.238]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 02 Nov 2020 04:11:27 -0800 Date: Mon, 2 Nov 2020 12:11:23 +0000 From: Bruce Richardson To: Gregory Etelson Cc: dev@dpdk.org, matan@nvidia.com, rasland@nvidia.com, thomas@monjalon.net, bluca@debian.org, david.marchand@redhat.com, christian.ehrhardt@canonical.com, ktraynor@redhat.com Message-ID: <20201102121123.GA1440@bricha3-MOBL.ger.corp.intel.com> References: <20201029091638.26646-1-getelson@nvidia.com> <20201102064548.9291-1-getelson@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20201102064548.9291-1-getelson@nvidia.com> Subject: Re: [dpdk-dev] [PATCH v2] build: add pkg-config validation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Mon, Nov 02, 2020 at 08:45:48AM +0200, Gregory Etelson wrote: > DPDK relies on pkg-config(1) to provide correct parameters for > compiler and linker used in application build. > Inaccurate build parameters, produced by pkg-config from DPDK .pc > files could fail application build or cause unpredicted results > during application runtime. > > This patch validates host pkg-config utility and notifies about > known issues. > > Signed-off-by: Gregory Etelson > --- > buildtools/pkg-config/meson.build | 11 ++++++ > buildtools/pkg-config/pkgconfig-validate.sh | 40 +++++++++++++++++++++ > doc/guides/linux_gsg/sys_reqs.rst | 5 +++ > 3 files changed, 56 insertions(+) > create mode 100755 buildtools/pkg-config/pkgconfig-validate.sh > > diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build > index 5f19304289..4f907d7638 100644 > --- a/buildtools/pkg-config/meson.build > +++ b/buildtools/pkg-config/meson.build > @@ -53,3 +53,14 @@ This is required for a number of static inline functions in the public headers.' > # For static linking with dependencies as shared libraries, > # the internal static libraries must be flagged explicitly. > run_command(py3, 'set-static-linker-flags.py', check: true) > + > +pkgconf = find_program('pkg-config', 'pkgconf', required: false) > +if (pkgconf.found()) > + cmd = run_command('./pkgconfig-validate.sh', pkgconf.path(), > + check:false) > + if cmd.returncode() != 0 > + version = run_command(pkgconf, '--version') > + warning('invalid pkg-config version @0@'.format( > + version.stdout().strip())) > + endif > +endif > diff --git a/buildtools/pkg-config/pkgconfig-validate.sh b/buildtools/pkg-config/pkgconfig-validate.sh > new file mode 100755 > index 0000000000..61ddd6d5a3 > --- /dev/null > +++ b/buildtools/pkg-config/pkgconfig-validate.sh > @@ -0,0 +1,40 @@ > +#! /bin/sh > +# SPDX-License-Identifier: BSD-3-Clause > + > +# Statically linked private DPDK objects of form > +# -l:file.a must be positionned between --whole-archive … --no-whole-archive > +# linker parameters. > +# Old pkg-config versions misplace --no-whole-archive parameter and put it > +# next to --whole-archive. > +test1_static_libs_order () { > + PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:$pc_dir" \ Should the $pc_dir not be put first, in case there are older .pc files around for DPDK?