Subject: Re: Fwd: pkg/26633: package ABI is often broken on NetBSD due to libtool porting problem
To: Ben Collver <ben@NetBSD.org>
From: John R. Shannon <shannonjr@netbsd.org>
List: tech-pkg
Date: 08/13/2004 08:01:51
=2D----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm willing to take it on.

On Friday 13 August 2004 07:19 am, Ben Collver wrote:
> Hello,
>
> I am looking for a volunteer to take responsibility for this PR about
> devel/libtool from Noriyuki Soda.  Nick Hudson agrees that the numbering
> is wrong and needs a flag day.
>
> Any takers?
>
> Ben Collver
>
> ----- Forwarded message from Noriyuki Soda <soda@sra.co.jp> -----
>
> >Number:         26633
> >Category:       pkg
> >Synopsis:       package ABI is often broken on NetBSD due to libtool
> > porting problem Confidential:   no
> >Severity:       serious
> >Priority:       medium
> >Responsible:    pkg-manager
> >State:          open
> >Class:          sw-bug
> >Submitter-Id:   net
> >Arrival-Date:   Thu Aug 12 23:51:00 UTC 2004
> >Closed-Date:
> >Last-Modified:
> >Originator:     Noriyuki Soda
> >Release:        NetBSD 1.6.2
> >Organization:
>
> Software Research Associates, Inc.
>
> >Environment:
>
> System: NetBSD boaz 1.6.2 NetBSD 1.6.2 (GENERIC_LAPTOP) #0: Tue Feb 10
> 22:02:37 UTC 2004
> autobuild@tgm.netbsd.org:/autobuild/netbsd-1-6-PATCH002/i386/OBJ/autobuil=
d/
>netbsd-1-6-PATCH002/src/sys/arch/i386/compile/GENERIC_LAPTOP i386
> Architecture: i386
> Machine: i386
>
> >Description:
>
> 	NetBSD port of libtool doesn't properly implement libtool versioning
> 	concept.
>
> 	Every time a function is added to a third party library,
> 	major version of the library is needlessly incremented on NetBSD,
> 	thus, the library ABI is unnecessarily broken on NetBSD.
>
> 	In contrast, this problem doesn't happen on Linux, IRIX, OSF
> 	and Windows, because libtool is properly ported to those
> 	platforms, thus adding a new function doesn't change major version
> 	unless there is real ABI change.
>
> 	See "6.2 Libtool's versioning system"
> 		http://www.gnu.org/software/libtool/manual.html#SEC34
> 	or "Versioning" section of libtool info page for the detail
> 	of the libtool versioning concept.
> 	As you see, library major version must be calculated as
> 	$CURRENT - $AGE with this concept, but actually major version
> 	is just equal to $CURRENT on NetBSD.
>
> >How-To-Repeat:
> >
> >Fix:
>
> 	Change the following (current) way to calculate shared object
> 	name in libtool from:
> 		major=3D".$current"
> 		versuffix=3D".$current.$revision"
> 	to either this way:
> 		major=3D".`expr $curent - $age`"
> 		versuffix=3D"`expr $age '*' 1000 + $revision`"
> 	or the following way:
> 		major=3D.`expr $current - $age`
> 		versuffix=3D"$major.$age.$revision"
>
> 	Unfortunately, simply doing so breaks nearly all existing
> 	binary packages, so, changing LOCALBASE from /usr/pkg to
> 	something else is needed too. ;-/
> 	Or, is there any other way to solve this problem?
>
> >Release-Note:
> >Audit-Trail:
> >Unformatted:
>
> ----- End forwarded message -----

=2D --=20

John R. Shannon
shannonjr@netbsd.org
=2D----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (NetBSD)

iEYEARECAAYFAkEcyc8ACgkQOKbCxya4HYvpMQCfRbW2n6LKfeXp6Xbn1HUanhI5
yzEAoKJI7QH4dAxR/g1EpfOe+lVW8rcL
=3DVBTo
=2D----END PGP SIGNATURE-----