From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id A820C1B273; Mon, 7 Jan 2019 17:55:56 +0100 (CET) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Jan 2019 08:55:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,451,1539673200"; d="scan'208";a="136071961" Received: from bricha3-mobl.ger.corp.intel.com ([10.237.221.54]) by fmsmga001.fm.intel.com with SMTP; 07 Jan 2019 08:55:53 -0800 Received: by (sSMTP sendmail emulation); Mon, 07 Jan 2019 16:55:52 +0000 Date: Mon, 7 Jan 2019 16:55:52 +0000 From: Bruce Richardson To: Luca Boccassi Cc: dev@dpdk.org, stable@dpdk.org, techboard@dpdk.org Message-ID: <20190107165552.GA23828@bricha3-MOBL.ger.corp.intel.com> References: <20190103175725.5836-1-bluca@debian.org> <20190103175725.5836-2-bluca@debian.org> <20190107142812.GB14912@bricha3-MOBL.ger.corp.intel.com> <1546879174.6022.24.camel@debian.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1546879174.6022.24.camel@debian.org> Organization: Intel Research and Development Ireland Ltd. User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH 2/2] build: use dependency() instead of find_library() 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: , X-List-Received-Date: Mon, 07 Jan 2019 16:55:57 -0000 On Mon, Jan 07, 2019 at 04:39:34PM +0000, Luca Boccassi wrote: > On Mon, 2019-01-07 at 14:28 +0000, Bruce Richardson wrote: > > On Thu, Jan 03, 2019 at 06:57:25PM +0100, Luca Boccassi wrote: > > > Whenever possible (if the library ships a pkg-config file) use > > > meson's > > > dependency() function to look for it, as it will automatically add > > > it > > > to the Requires.private list if needed, to allow for static builds > > > to > > > succeed for reverse dependencies of DPDK. Otherwise the recursive > > > dependencies are not parsed, and users doing static builds have to > > > resolve them manually by themselves. > > > When using this API avoid additional checks that are superfluos and > > > take extra time, and avoid adding the linker flag manually which > > > causes > > > it to be duplicated. > > > > > > An internal checker has been added to Meson 0.42 to detect libpcap, > > > which ships a custom tool rather than a pkg-config file, so bump > > > the > > > minimum Meson version from 0.41 to 0.42. > > > > If we are going to bump the version, I think we should bump it > > further to > > e.g. 0.46 or 0.47 unless there is anyone who still wants an earlier > > version. That should get rid of a number of the meson version > > warnings we > > see on each run. > > The distros situation, as far as I can see: > > Debian 10 0.49 > Ubuntu 18.04 LTS 0.45 > Ubuntu 18.10 0.47 > Fedora 27 0.43 > Fedora 28 0.45 > SUSE Leap 15 0.46 > FreeBSD 10 0.46 > CentOS 7 0.47 > > So by bumping to 0.47, required to fix the bug below, we'd leave behind > a fair few distros. > > Now for me it's fine to go to 0.47 - but I think the CC to stable > should then be removed. > Looking at the list probably 0.45 is safe for now. The follow-up question is whether expecting people to get updated meson using pip is reasonable. If it is, then I'm all in favour of bumping min to 0.47.1 and taking in your changes below. > > > > > > For libbsd, which is checked in a top level file and used to be > > > added > > > to the global linker flags array, add it to the ext_deps array of > > > all top level meson files (app, test, lib, examples, drivers). The > > > most correct change would be to let each individual > > > library/driver/app > > > depend on it individually if they use symbols from it, but it would > > > diverge from the legacy Makefile's behaviour and make life a bit > > > more > > > difficult for contributors. > > > > It shouldn't be necessary to add libbsd as a dependency for > > everything. I > > think just adding it as a dependency of EAL should work fine. > > Won't that mean that the shared libraries other than EAL will have > undefined references? Should not happen. AFAIK when you link against a library in meson it will also link against any of that libraries dependencies too. For shared libraries meson always disallowed undefined references in the linker commandline. [To have libs with undefined refs, e.g. plugins, you need to use "shared_module" rather than "shared_library" command]. > Now, in practice it would be fine because I'm pretty sure none of them > can and would actually be used without EAL, so when linking executables > everything will be fine, but for example the Debian build tools will at > the very least print warnings if a shared library links > > > However, in > > conjunction with meson version checks, I believe this was done this > > way > > originally because of a meson bug which caused recursive dependencies > > for > > things like this to get duplicated many times in the build.ninja > > file. > > > > https://github.com/mesonbuild/meson/issues/2150 > > > > If we take the approach of adding bsd explicitly using dependency > > object > > our minimum version needs to have the fix for this bug included. > > Ah that's not nice. Just verified, and it happens with dependency() as > well as find_library(). It was fixed in 0.47.1. > Yep, it was a right royal pain when I was doing the original work. Now that there is a fix in, we can do cleanups like you suggest if we are prepared to bump our minimum version. I'll refer back to the key question here: "Is it reasonable to ask users compiling DPDK to pull meson from pip rather than using the distro built-in version?" [Adding techboard on CC, in the hopes they might have some thoughts] If it is ok for most folks, and personally I don't think it's a big deal, then that gives us a faster path forward. If not, we raise the minimum more slowly, and keep the existing way of managing the dependencies for a while longer. Worst case, I'd still hope by 19.11 LTS for us to have minimum 0.47.1 to have the fix in question. /Bruce