mailarchive of the pengutronix oss-tools mailing list
 help / color / mirror / Atom feed
From: Roland Hieber <rhi@pengutronix.de>
To: 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, 6 Nov 2023 14:56:36 +0100	[thread overview]
Message-ID: <20231106135636.z4u4l7qqxrjktmev@pengutronix.de> (raw)
In-Reply-To: <3f9dc13e7710d87ad6a022d07c0c3e2314c0e5a1.camel@pengutronix.de>

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.

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    |
> 
> 

-- 
Roland Hieber, Pengutronix e.K.          | r.hieber@pengutronix.de     |
Steuerwalder Str. 21                     | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686         | Fax:   +49-5121-206917-5555 |



  parent reply	other threads:[~2023-11-06 13:56 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 [this message]
2023-11-06 14:04       ` Enrico Jörns

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=20231106135636.z4u4l7qqxrjktmev@pengutronix.de \
    --to=rhi@pengutronix.de \
    --cc=a.fatoum@pengutronix.de \
    --cc=oss-tools@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