[v2,2/2] build: add drivers_install_subdir meson option

Message ID 20181002130646.14919-2-bluca@debian.org (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v2,1/2] build: change default PMD installation subdir to dpdk/pmds-XX.YY |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Luca Boccassi Oct. 2, 2018, 1:06 p.m. UTC
  Allow users and packagers to override the default dpdk/drivers
subdirectory where the PMDs get installed under $lib.

Signed-off-by: Luca Boccassi <bluca@debian.org>
---
 meson.build       | 10 ++++++++--
 meson_options.txt |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)
  

Comments

Bruce Richardson Oct. 2, 2018, 2:28 p.m. UTC | #1
On Tue, Oct 02, 2018 at 02:06:46PM +0100, Luca Boccassi wrote:
> Allow users and packagers to override the default dpdk/drivers
> subdirectory where the PMDs get installed under $lib.
> 
> Signed-off-by: Luca Boccassi <bluca@debian.org>
> ---
>  meson.build       | 10 ++++++++--
>  meson_options.txt |  2 ++
>  2 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 4bd04b9de3..9f7f17f7fe 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -20,8 +20,14 @@ dpdk_extra_ldflags = []
>  pver = meson.project_version().split('.')
>  major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
>  
> -driver_install_path = join_paths(get_option('libdir'), 'dpdk',
> -	'pmds-' + major_version)
> +pmd_subdir_opt = get_option('drivers_install_subdir')
> +if pmd_subdir_opt == 'dpdk/pmds-XX.YY'
> +	driver_install_path = join_paths(get_option('libdir'),
> +		'dpdk', 'pmds-' + major_version)
> +else
> +	driver_install_path = join_paths(get_option('libdir'),
> +		pmd_subdir_opt)
> +endif

Not sure I like this degree of hard-coding of paths. While meson doesn't
have a string replace function, we can still use "sed" via run_command to
perform some substitution, or else get a little creative using split if it
can be made work. That would allow us to put in e.g "<VERSION>" as a
generic placeholder in the text.

/Bruce
  
Luca Boccassi Oct. 2, 2018, 2:59 p.m. UTC | #2
On Tue, 2018-10-02 at 15:28 +0100, Bruce Richardson wrote:
> On Tue, Oct 02, 2018 at 02:06:46PM +0100, Luca Boccassi wrote:
> > Allow users and packagers to override the default dpdk/drivers
> > subdirectory where the PMDs get installed under $lib.
> > 
> > Signed-off-by: Luca Boccassi <bluca@debian.org>
> > ---
> >  meson.build       | 10 ++++++++--
> >  meson_options.txt |  2 ++
> >  2 files changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/meson.build b/meson.build
> > index 4bd04b9de3..9f7f17f7fe 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -20,8 +20,14 @@ dpdk_extra_ldflags = []
> >  pver = meson.project_version().split('.')
> >  major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> >  
> > -driver_install_path = join_paths(get_option('libdir'), 'dpdk',
> > -	'pmds-' + major_version)
> > +pmd_subdir_opt = get_option('drivers_install_subdir')
> > +if pmd_subdir_opt == 'dpdk/pmds-XX.YY'
> > +	driver_install_path = join_paths(get_option('libdir'),
> > +		'dpdk', 'pmds-' + major_version)
> > +else
> > +	driver_install_path = join_paths(get_option('libdir'),
> > +		pmd_subdir_opt)
> > +endif
> 
> Not sure I like this degree of hard-coding of paths. While meson
> doesn't
> have a string replace function, we can still use "sed" via
> run_command to
> perform some substitution, or else get a little creative using split
> if it
> can be made work. That would allow us to put in e.g "<VERSION>" as a
> generic placeholder in the text.
> 
> /Bruce

Do you mean for the "if pmd_subdir_opt == 'dpdk/pmds-XX.YY'" bit? I can
change that to "== 'dpdk/pmds-<VERSION>'" if you prefer?
  
Bruce Richardson Oct. 2, 2018, 3:19 p.m. UTC | #3
On Tue, Oct 02, 2018 at 03:59:48PM +0100, Luca Boccassi wrote:
> On Tue, 2018-10-02 at 15:28 +0100, Bruce Richardson wrote:
> > On Tue, Oct 02, 2018 at 02:06:46PM +0100, Luca Boccassi wrote:
> > > Allow users and packagers to override the default dpdk/drivers
> > > subdirectory where the PMDs get installed under $lib.
> > > 
> > > Signed-off-by: Luca Boccassi <bluca@debian.org>
> > > ---
> > >  meson.build       | 10 ++++++++--
> > >  meson_options.txt |  2 ++
> > >  2 files changed, 10 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/meson.build b/meson.build
> > > index 4bd04b9de3..9f7f17f7fe 100644
> > > --- a/meson.build
> > > +++ b/meson.build
> > > @@ -20,8 +20,14 @@ dpdk_extra_ldflags = []
> > >  pver = meson.project_version().split('.')
> > >  major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> > >  
> > > -driver_install_path = join_paths(get_option('libdir'), 'dpdk',
> > > -	'pmds-' + major_version)
> > > +pmd_subdir_opt = get_option('drivers_install_subdir')
> > > +if pmd_subdir_opt == 'dpdk/pmds-XX.YY'
> > > +	driver_install_path = join_paths(get_option('libdir'),
> > > +		'dpdk', 'pmds-' + major_version)
> > > +else
> > > +	driver_install_path = join_paths(get_option('libdir'),
> > > +		pmd_subdir_opt)
> > > +endif
> > 
> > Not sure I like this degree of hard-coding of paths. While meson
> > doesn't
> > have a string replace function, we can still use "sed" via
> > run_command to
> > perform some substitution, or else get a little creative using split
> > if it
> > can be made work. That would allow us to put in e.g "<VERSION>" as a
> > generic placeholder in the text.
> > 
> > /Bruce
> 
> Do you mean for the "if pmd_subdir_opt == 'dpdk/pmds-XX.YY'" bit? I can
> change that to "== 'dpdk/pmds-<VERSION>'" if you prefer?
> 

Yes, though I was more thinking of:
	 "if pmd_subdir_opt.contains('<VERSION>')" ...
rather than matching on the whole string.

/Bruce
  
Luca Boccassi Oct. 2, 2018, 3:26 p.m. UTC | #4
On Tue, 2018-10-02 at 16:19 +0100, Bruce Richardson wrote:
> On Tue, Oct 02, 2018 at 03:59:48PM +0100, Luca Boccassi wrote:
> > On Tue, 2018-10-02 at 15:28 +0100, Bruce Richardson wrote:
> > > On Tue, Oct 02, 2018 at 02:06:46PM +0100, Luca Boccassi wrote:
> > > > Allow users and packagers to override the default dpdk/drivers
> > > > subdirectory where the PMDs get installed under $lib.
> > > > 
> > > > Signed-off-by: Luca Boccassi <bluca@debian.org>
> > > > ---
> > > >  meson.build       | 10 ++++++++--
> > > >  meson_options.txt |  2 ++
> > > >  2 files changed, 10 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/meson.build b/meson.build
> > > > index 4bd04b9de3..9f7f17f7fe 100644
> > > > --- a/meson.build
> > > > +++ b/meson.build
> > > > @@ -20,8 +20,14 @@ dpdk_extra_ldflags = []
> > > >  pver = meson.project_version().split('.')
> > > >  major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> > > >  
> > > > -driver_install_path = join_paths(get_option('libdir'), 'dpdk',
> > > > -	'pmds-' + major_version)
> > > > +pmd_subdir_opt = get_option('drivers_install_subdir')
> > > > +if pmd_subdir_opt == 'dpdk/pmds-XX.YY'
> > > > +	driver_install_path = join_paths(get_option('libdir'),
> > > > +		'dpdk', 'pmds-' + major_version)
> > > > +else
> > > > +	driver_install_path = join_paths(get_option('libdir'),
> > > > +		pmd_subdir_opt)
> > > > +endif
> > > 
> > > Not sure I like this degree of hard-coding of paths. While meson
> > > doesn't
> > > have a string replace function, we can still use "sed" via
> > > run_command to
> > > perform some substitution, or else get a little creative using
> > > split
> > > if it
> > > can be made work. That would allow us to put in e.g "<VERSION>"
> > > as a
> > > generic placeholder in the text.
> > > 
> > > /Bruce
> > 
> > Do you mean for the "if pmd_subdir_opt == 'dpdk/pmds-XX.YY'" bit? I
> > can
> > change that to "== 'dpdk/pmds-<VERSION>'" if you prefer?
> > 
> 
> Yes, though I was more thinking of:
> 	 "if pmd_subdir_opt.contains('<VERSION>')" ...
> rather than matching on the whole string.
> 
> /Bruce

Ok, fixed in v3
  

Patch

diff --git a/meson.build b/meson.build
index 4bd04b9de3..9f7f17f7fe 100644
--- a/meson.build
+++ b/meson.build
@@ -20,8 +20,14 @@  dpdk_extra_ldflags = []
 pver = meson.project_version().split('.')
 major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
 
-driver_install_path = join_paths(get_option('libdir'), 'dpdk',
-	'pmds-' + major_version)
+pmd_subdir_opt = get_option('drivers_install_subdir')
+if pmd_subdir_opt == 'dpdk/pmds-XX.YY'
+	driver_install_path = join_paths(get_option('libdir'),
+		'dpdk', 'pmds-' + major_version)
+else
+	driver_install_path = join_paths(get_option('libdir'),
+		pmd_subdir_opt)
+endif
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
 
 # configure the build, and make sure configs here and in config folder are
diff --git a/meson_options.txt b/meson_options.txt
index d14bde892d..d0f5675eb7 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,7 @@ 
 option('allow_invalid_socket_id', type: 'boolean', value: false,
 	description: 'allow out-of-range NUMA socket id\'s for platforms that don\'t report the value correctly')
+option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-XX.YY',
+	description: 'Subdirectory of libdir where to install PMDs. Defaults to using a versioned subdirectory.')
 option('enable_driver_mlx_glue', type: 'boolean', value: false,
 	description: 'Enable glue library for Mellanox PMDs')
 option('enable_kmods', type: 'boolean', value: true,