build: get version number from header file

Message ID 20180831135132.14730-1-thomas@monjalon.net (mailing list archive)
State Rejected, archived
Delegated to: Thomas Monjalon
Headers
Series build: get version number from header file |

Checks

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

Commit Message

Thomas Monjalon Aug. 31, 2018, 1:51 p.m. UTC
  The header file rte_version.h should be the unique place
to define the version number.
The makefile command "showversion" makes it accessible,
and it is used to set the meson project version with an external command.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---

I don't know how to check easily the meson version number.
Please help in testing, thanks.

---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Luca Boccassi Aug. 31, 2018, 2:10 p.m. UTC | #1
On Fri, 2018-08-31 at 15:51 +0200, Thomas Monjalon wrote:
> The header file rte_version.h should be the unique place
> to define the version number.
> The makefile command "showversion" makes it accessible,
> and it is used to set the meson project version with an external
> command.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> 
> I don't know how to check easily the meson version number.
> Please help in testing, thanks.
> 
> ---
>  meson.build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meson.build b/meson.build
> index 84af32ece..b9d1030e7 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2,7 +2,7 @@
>  # Copyright(c) 2017 Intel Corporation
>  
>  project('DPDK', 'C',
> -	version: '18.11-rc0',
> +	version: run_command('make',
> 'showversion').stdout().strip(),
>  	license: 'BSD',
>  	default_options: ['buildtype=release',
> 'default_library=static'],
>  	meson_version: '>= 0.41'

Isn't the ultimate end goal to remove the makefiles? If so, shouldn't
meson be independent?
  
Bruce Richardson Aug. 31, 2018, 2:24 p.m. UTC | #2
On Fri, Aug 31, 2018 at 03:10:42PM +0100, Luca Boccassi wrote:
> On Fri, 2018-08-31 at 15:51 +0200, Thomas Monjalon wrote:
> > The header file rte_version.h should be the unique place
> > to define the version number.
> > The makefile command "showversion" makes it accessible,
> > and it is used to set the meson project version with an external
> > command.
> > 
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > ---
> > 
> > I don't know how to check easily the meson version number.
> > Please help in testing, thanks.
> > 
> > ---
> >  meson.build | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/meson.build b/meson.build
> > index 84af32ece..b9d1030e7 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -2,7 +2,7 @@
> >  # Copyright(c) 2017 Intel Corporation
> >  
> >  project('DPDK', 'C',
> > -	version: '18.11-rc0',
> > +	version: run_command('make',
> > 'showversion').stdout().strip(),
> >  	license: 'BSD',
> >  	default_options: ['buildtype=release',
> > 'default_library=static'],
> >  	meson_version: '>= 0.41'
> 
> Isn't the ultimate end goal to remove the makefiles? If so, shouldn't
> meson be independent?
> 
> -- 

I would tend to agree. I also think that the rte_version.h file is the
wrong place to put the version info, it would be better specified somewhere
at the root of the tree. Therefore, I think that the toplevel makefile and
meson.build files should have the version number there and then
auto-generate the rte_version.h file based on that information.

/Bruce
  
Thomas Monjalon Aug. 31, 2018, 4:26 p.m. UTC | #3
31/08/2018 16:24, Bruce Richardson:
> On Fri, Aug 31, 2018 at 03:10:42PM +0100, Luca Boccassi wrote:
> > On Fri, 2018-08-31 at 15:51 +0200, Thomas Monjalon wrote:
> > > The header file rte_version.h should be the unique place
> > > to define the version number.
> > > The makefile command "showversion" makes it accessible,
> > > and it is used to set the meson project version with an external
> > > command.
> > > 
> > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > > ---
> > > 
> > > I don't know how to check easily the meson version number.
> > > Please help in testing, thanks.
> > > 
> > > ---
> > >  meson.build | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/meson.build b/meson.build
> > > index 84af32ece..b9d1030e7 100644
> > > --- a/meson.build
> > > +++ b/meson.build
> > > @@ -2,7 +2,7 @@
> > >  # Copyright(c) 2017 Intel Corporation
> > >  
> > >  project('DPDK', 'C',
> > > -	version: '18.11-rc0',
> > > +	version: run_command('make',
> > > 'showversion').stdout().strip(),
> > >  	license: 'BSD',
> > >  	default_options: ['buildtype=release',
> > > 'default_library=static'],
> > >  	meson_version: '>= 0.41'
> > 
> > Isn't the ultimate end goal to remove the makefiles? If so, shouldn't
> > meson be independent?
> > 
> 
> I would tend to agree. I also think that the rte_version.h file is the
> wrong place to put the version info, it would be better specified somewhere
> at the root of the tree. Therefore, I think that the toplevel makefile and
> meson.build files should have the version number there and then
> auto-generate the rte_version.h file based on that information.

Yes

There are only 2 requirements:
- have the version number in a single place
- keep the C macros (generated or not)

Any solution satisfying those two requirements will be welcome.
  

Patch

diff --git a/meson.build b/meson.build
index 84af32ece..b9d1030e7 100644
--- a/meson.build
+++ b/meson.build
@@ -2,7 +2,7 @@ 
 # Copyright(c) 2017 Intel Corporation
 
 project('DPDK', 'C',
-	version: '18.11-rc0',
+	version: run_command('make', 'showversion').stdout().strip(),
 	license: 'BSD',
 	default_options: ['buildtype=release', 'default_library=static'],
 	meson_version: '>= 0.41'