mailarchive of the pengutronix oss-tools mailing list
 help / color / mirror / Atom feed
From: "Enrico Jörns" <ejo@pengutronix.de>
To: Roland Hieber <rhi@pengutronix.de>,
	Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: oss-tools@pengutronix.de
Subject: Re: [OSS-Tools] [PATCH dt-utils] meson: align libdt-utils version with autotools'
Date: Mon, 06 Nov 2023 15:04:29 +0100	[thread overview]
Message-ID: <3f541c627fe002268f515be0a036288a14388ece.camel@pengutronix.de> (raw)
In-Reply-To: <20231106135636.z4u4l7qqxrjktmev@pengutronix.de>

Hi Roland,

Am Montag, dem 06.11.2023 um 14:56 +0100 schrieb Roland Hieber:
> On Mon, Nov 06, 2023 at 01:12:48PM +0100, Enrico Jörns wrote:
> > Am Montag, dem 06.11.2023 um 13:04 +0100 schrieb Roland Hieber:
> > > On Mon, Nov 06, 2023 at 12:58:22PM +0100, Ahmad Fatoum wrote:
> > > > Makefile.am has:
> > > > 
> > > >   LIBDT_CURRENT=6
> > > >   LIBDT_REVISION=0
> > > >   LIBDT_AGE=0
> > > > 
> > > > along with a comment on how the values were chosen. Copy the comment and
> > > > the values into the meson.build as well, so appropriate symlinks
> > > > pointing at the versioned library are created. We forego the extra
> > > > complexity of having a common file that's read from both build systems
> > > > as we are intent on phasing out autotools anyway, once wrinkles such as
> > > > what's fixed here are ironed out.
> > > > 
> > > > Reported-by: Enrico Jörns <e.joerns@pengutronix.de>
> > > > Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> > > 
> > > Reviewed-by: Roland Hieber <rhi@pengutronix.de>
> > > 
> > > > ---
> > > >  meson.build | 9 +++++++++
> > > >  1 file changed, 9 insertions(+)
> > > > 
> > > > diff --git a/meson.build b/meson.build
> > > > index 9579e712dfea..9894d7311bb3 100644
> > > > --- a/meson.build
> > > > +++ b/meson.build
> > > > @@ -133,6 +133,15 @@ libdt = shared_library('dt-utils',
> > > >    c_args : ['-include', meson.current_build_dir() / 'version.h'],
> > > >    dependencies : [udevdep, versiondep],
> > > >    gnu_symbol_visibility : 'default',
> > > > +# If the library source code has changed at all since the last release,
> > > > +#   then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
> > > > +# If any interfaces have been added/removed/changed since the last release,
> > > > +#   then increment current, and set revision to 0.
> > 
> > Does this make sense?
> > Isn't "current" meant to mark *incompatible* public API changes?
> > This might be valid for "removed" or "changed", but not for "added".
> > 
> > How does "interfaces" differ from "public interfaces" below?
> > 
> > Regards, Enrico
> > 
> > > > +# If any public interfaces have been added since the last public release,
> > > > +#   then increment age.
> > > > +# If any interfaces have been removed or changed since the last release,
> > > > +#   then set age to 0.
> > > > +  version: '6.0.0',
> 
> Wait. Enrico has a point. The "version" field in meson has the usual
> "major.minor.patch" semantics [1], which does not relate to autotools'
> current/revision/age scheme, which in autotools is used to calculate the
> soversion (by some strange formula that I can never memorise). meson
> however assumes the major number as soversion if nothing else is
> specified.

mh, but this is just the 'library version' and may thus be changed by hand and independent from any
other release version, right?

And "soversion" is just the first component of "version" by default if I get the documentation
right:

> If this is not specified, the first part of version is used instead (see below). For example, if
> version is 3.6.0 and soversion is not defined, it is set to 3.

https://mesonbuild.com/Reference-manual_functions.html#shared_library

Regards, Enrico

> Also [2] notes:
> 
>   > To set the version of the library, libtool provides the
>   > -version-info parameter, which accepts three numbers, separated by
>   > colons, that are called respectively, current, revision and age.
>   > Both their name and their behaviour, nowadays, have to be considered
>   > fully arbitrary, as the explanation provided in the official
>   > documentation is confusing to say the least, and can be, in some
>   > cases, considered completely wrong. 
> 
> As we want to get rid of autotools in the foreseeable future anyway, I
> suggest that we drop the current/revision/age scheme and use semantic
> versioning instead (i.e., increase major for ABI-incompatible changes,
> increase minor for ABI-compatible new features, increase patch for
> ABI-compatible bugfixes), which for versions like "6.1.2" results in
> library names like "libdt-utils.so.6.1.2" and soversion of 6.
> 
>   [1]: https://mesonbuild.com/Reference-manual_functions.html#shared_library_version
>   [2]: https://autotools.info/libtool/version.html#idm1602
> 
> (Please disregard my premature Reviewed-by.)
> 
>  - Roland
> 
> > > >    install : true)
> > > >  
> > > >  executable('barebox-state',
> > > > -- 
> > > > 2.39.2
> > > > 
> > > > 
> > > > 
> > > 
> > 
> > -- 
> > Pengutronix e.K.                           | Enrico Jörns                |
> > Embedded Linux Consulting & Support        | https://www.pengutronix.de/ |
> > Steuerwalder Str. 21                       | Phone: +49-5121-206917-180  |
> > 31137 Hildesheim, Germany                  | Fax:   +49-5121-206917-9    |
> > 
> > 
> 

-- 
Pengutronix e.K.                           | Enrico Jörns                |
Embedded Linux Consulting & Support        | https://www.pengutronix.de/ |
Steuerwalder Str. 21                       | Phone: +49-5121-206917-180  |
31137 Hildesheim, Germany                  | Fax:   +49-5121-206917-9    |



      reply	other threads:[~2023-11-06 14:04 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-06 11:58 Ahmad Fatoum
2023-11-06 12:04 ` Roland Hieber
2023-11-06 12:12   ` Enrico Jörns
2023-11-06 13:44     ` Ahmad Fatoum
2023-11-06 13:59       ` Enrico Jörns
2023-11-06 13:56     ` Roland Hieber
2023-11-06 14:04       ` Enrico Jörns [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3f541c627fe002268f515be0a036288a14388ece.camel@pengutronix.de \
    --to=ejo@pengutronix.de \
    --cc=a.fatoum@pengutronix.de \
    --cc=oss-tools@pengutronix.de \
    --cc=rhi@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox