Subject: Re: Marking .so files obsolete
To: None <tech-toolchain@NetBSD.org>
From: Luke Mewburn <lukem@NetBSD.org>
List: tech-toolchain
Date: 06/04/2007 16:31:25
--apSYfA7d5AHMku3c
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, Jun 02, 2007 at 04:11:06AM +0400, Valeriy E. Ushakov wrote:
  | [Moving to tech-toolchain.
  |  Summary: Update builds broken b/c of stale libssp* files in destdir]
  |=20
  | On Sat, Jun 02, 2007 at 02:34:42 +0400, Valeriy E. Ushakov wrote:
  |=20
  | > It certainly does run postinstall-fix-obsolete target, update build or
  | > not.
  | >=20
  | > People forgetting to mark files as obsolete is a different issue :)
  |=20
  | I've brought back static and lint ssp libs and marked them as
  | obsolete.
  |=20
  | Now, the so's are a different matter.  The problem with .so's is that
  | there might be locally compiled apps (i.e. not in the base system)
  | that are linked against the "obsolete" .so's.  If those "obsolete"
  | .so's are removed, the apps get broken.
  |=20
  | postinstall fix obsolete can automatically clean up lib dirs from old
  | minor versions (so we don't need to have an obsolete entry for each
  | minor version in the set lists), but it doesn't touch old major
  | versions.  It has code to do so, but it's not enabled (there's even no
  | command line option to enable it).
  |=20
  | For major version bumps we could 1) remove list entries instead of
  | marking them obsolete, and 2) run postinstall-fix-obsolete target with
  | AllLibs enabled.  We only run postinstall-fix-obsolete for builds that
  | are not in-place, so it should be safe, it will clean the destdir (b/c
  | of #2), and it will not touch obsolete major versions in an installed
  | system (b/c of #1).

I suggest that we:

    *	Modify the obsolete_libs() API to support controlling the
    	AllLibs setting in the awk fragment, most likely with a second
	argument to obsolete_libs ?

    *	Add a disabled 'do_obsolete_major_libs' postinstall item to
	clean obsolete major libraries, using the functionality that
	Pavel Cahyna recently committed to postinstall.

    *	Consider using this (disabled) "obsolete_major_libs" postinstall
	in the builds that aren't in-place.
	I'm not yet 100% convinced that this needs to be part of
	the postinstall-fix-obsolete target in src/Makefile.


  | That still doesn't address the issue of removing a library though
  | (there's no newer major version to trigger the deletion of the library
  | in the destdir by postinstall running with AllLibs enabled).

This last issue is a rather special case; we rarely delete shared
libraries.


Luke.

--apSYfA7d5AHMku3c
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (NetBSD)

iD8DBQFGY7G9pBhtmn8zJHIRArE8AKCOawrIuKuetT+fbmWaodh1TyFD4ACdHIbe
AOhxY2lwHtfi5SvyE/4jULU=
=lHg8
-----END PGP SIGNATURE-----

--apSYfA7d5AHMku3c--