[dpdk-dev] [PATCH v12 01/14] build: alias default build as generic

Juraj Linkeš juraj.linkes at pantheon.tech
Wed Nov 18 15:23:21 CET 2020



> -----Original Message-----
> From: Thomas Monjalon <thomas at monjalon.net>
> Sent: Tuesday, November 17, 2020 10:58 AM
> To: Bruce Richardson <bruce.richardson at intel.com>
> Cc: Juraj Linkeš <juraj.linkes at pantheon.tech>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli at arm.com>; Ruifeng Wang
> <Ruifeng.Wang at arm.com>; Phil Yang <Phil.Yang at arm.com>;
> vcchunga at amazon.com; Dharmik Thakkar <Dharmik.Thakkar at arm.com>;
> jerinjacobk at gmail.com; hemant.agrawal at nxp.com; Ajit Khaparde
> (ajit.khaparde at broadcom.com) <ajit.khaparde at broadcom.com>;
> ferruh.yigit at intel.com; dev at dpdk.org; david.marchand at redhat.com; nd
> <nd at arm.com>
> Subject: Re: [dpdk-dev] [PATCH v12 01/14] build: alias default build as generic
> 
> 17/11/2020 10:15, Bruce Richardson:
> > On Tue, Nov 17, 2020 at 08:49:45AM +0100, Thomas Monjalon wrote:
> > > 17/11/2020 03:46, Honnappa Nagarahalli:
> > > > <snip>
> > > >
> > > > >
> > > > > 16/11/2020 17:16, Bruce Richardson:
> > > > > > On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > > > > > > From: Thomas Monjalon <thomas at monjalon.net>
> > > > > > > > 13/11/2020 15:31, Juraj Linkeš:
> > > > > > > > > The current machine='default' build name is not
> > > > > > > > > descriptive. The actual default build is
> > > > > > > > > machine='native'. Add an alternative string which does
> > > > > > > > > the same build and better describes what we're
> > > > > building:
> > > > > > > > > machine='generic'. Leave machine='default' for backwards
> > > > > compatibility.
> > > > > > > >
> > > > > > > > What?
> > > > > > > >
> > > > > > > > "generic" means... nothing.
> > > > > > > >
> > > > > > >
> > > > > > > An absence of anything means nothing. Generic means
> > > > > > > "characteristic of
> > > > > or relating to a class or group of things; not specific", which
> > > > > is pretty much what we're looking for.
> > > > > > >
> > > > > > > > "default" should be the most common set of options to make
> > > > > > > > a build work everywhere.
> > > > > > >
> > > > > > > What we want is a value of machine that would "be the most
> > > > > > > common
> > > > > set of options to make a build work everywhere" and using the
> > > > > above definition of generic, it fits very well.
> > > > > > > The reason I said the actual default build is
> > > > > > > machine='native' is because
> > > > > that's how the machine option is defined in meson_options.txt.
> > > > > It follows from what default actually means - "a preselected
> > > > > option adopted by a computer program or other mechanism when no
> > > > > alternative is specified by the user or programmer". Default
> > > > > then means no user input, which means machine='native', which means
> the default build is the default build.
> > > > > > >
> > > > > > > What ""default" should mean" looks like an attempt at
> > > > > > > redefining what
> > > > > the word actually means and leads to confusion, in my
> > > > > experience. Hence an attempt to remove the potential ambiguity.
> > > > > > >
> > > > > >
> > > > > > I would tend to agree that "generic" is probably a better term
> > > > > > than "default" for what we use it for here in the config.
> > > > >
> > > > > In the past, we had a different definition with make config.
> > > > > I am just trying to be consistent.
> > > > > Even with meson, default means "minimal CPU instructions".
> > > > >
> > > > > Example in devtools/test-meson-builds.sh:
> > > > > "test compilation with minimal x86 instruction set"
> > > > > is called build-x86-default.
> > > > >
> > > > > In config/meson.build:
> > > > > "
> > > > > machine type 'default' is special, it defaults to the per arch
> > > > > agreed common minimal baseline needed for DPDK.
> > > > > That might not be the most optimized, but the most portable
> > > > > version while still being able to support the CPU features required for
> DPDK.
> > > > > This can be bumped up by the DPDK project, but it can never be
> > > > > an invariant like 'native'
> > > > > "
> > > > >
> > > > > So, why this definition is called "generic" in meson Arm config?
> > > > The explanation above is for a build type 'default'. Whereas meson by
> default builds for build type 'native'. Also when you look at the
> config/arm/meson.build the word 'default' was used where it was not related to
> the build type default. It created lot of confusion.
> > > >
> > > > From the dictionary 'default' - "a preselected option adopted by a
> computer program or other mechanism when no alternative is specified by the
> user or programmer." But, if one had to do build of type default, they have to
> mention -Dmachine=default. If nothing is mentioned, it is a build type 'native',
> which does not go along with the definition of 'default'.
> > > >
> > > > But for 'generic' - "characteristic of or relating to a class or group of things;
> not specific". IMO, it better suits the explanation you have provided above. So,
> separating this machine type to 'generic' to cover the same definition makes
> more sense.
> > > >
> > > > However, 'default' is still supported for backward compatibility.
> > >
> > > So? Are you going to change the DPDK definitions we had for years?
> > >
> >
> > I think we should, or at least support "generic" alongside it. Using
> > the term "default" for something that is not the default is confusing.
> > It's also not a good description of what the result is, since it's a
> > generic binary for the architecture, rather than a "default" one for the
> architecture.
> 
> OK in this case, please do the patch which changes it everywhere, not only for
> Arm. We can change our names as long as it is explained and have some
> consistency.
> 

Yes, I'll make a separate patchset for this. In this case the change also started out as arm specific and we made it arch agnostic over time.


More information about the dev mailing list