Subject: Re: Fwd: pkg/26633: package ABI is often broken on NetBSD due to
To: Ben Collver <ben@NetBSD.org>
From: Todd Vierling <tv@duh.org>
List: tech-pkg
Date: 08/13/2004 11:26:09
On Fri, 13 Aug 2004, Ben Collver wrote:

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

For some context:  NetBSD's config for libtool was taken from SunOS's way
back in NetBSD 1.3 (because SunOS was also a.out); we didn't know at the
time that the config for SunOS was wrong.  soda emlightened me yesterday
about it.

HOWEVER, NetBSD is not the only affected platform.  Note that libtool does
the same for:

- NetBSD a.out (which may need .major.minor, rather than .major.minor.teeny)

- FreeBSD ELF

- FreeBSD a.out (same note as NetBSD a.out, but may not be supported by
  pkgsrc anyway at the moment)

- Darwin (*after* the change in pkgsrc's patch-ac for libtool; without the
  patch, it does the "correct" thing)

- Solaris ("SunOS 5")

- OSF/1 (pkgsrc is not supported on this at the moment)

I can fix libtool for NetBSD plus the supported platforms above, but this
will require the following (not all of which I necessarily have the time to
do right now).  "Flag days" are very bad, so this should be done in a way
that keeps pkgsrc atomically correct.

A single commit to pkgsrc should do all of the following:

1. Change libtool, bump its PKGREVISION.

2. Bump _OPSYS_LIBTOOL_REQD to the new version in NetBSD.mk.

3. Bump the PKGREVISION of all USE_LIBTOOL packages, and all their direct
   dependencies (but not indirect dependencies); this will unfortunately
   impact all platforms, but it's unavoidable.

4. Bump the BUILDLINK_RECOMMENDED.foo of any packages bumped in (3) above,
   so that default builds will require the new shlib major/minor values,
   but experienced pkgsrc users may override this to allow for phased
   upgrades (leaving some old pkgs installed temporarily if needed).

As to the changes noted in the PR:

> 	Change the following (current) way to calculate shared object
> 	name in libtool from:
> 		major=".$current"
> 		versuffix=".$current.$revision"

> 	or the following way:
> 		major=.`expr $current - $age`
> 		versuffix="$major.$age.$revision"

The above is the correct change.

-- 
-- Todd Vierling <tv@duh.org> <tv@pobox.com>