Subject: Re: Ignoring sub-sub-sub version bumps?
To: Peter Seebach <seebs@plethora.net>
From: Greg Troxel <gdt@ir.bbn.com>
List: tech-pkg
Date: 08/15/2006 20:26:38
--=-=-=
You may be interested in pkg_rolling-replace, which does 'make
replace' on things in tsorted dependency order, so you aren't left
with the 'failed make update means I have no packages' problem.
Instead you have the "some things don't work if there really was an
ABI change".
That said, I have always felt that pkgsrc is too aggressive about
requiring the latest, but it seems vastly better about that in the
last months to a year. I have USE_ABI_DEPENDS=no set, though.
To get pkg_rolling-replace:
cd /usr/pkgsrc && \
cvs -d anoncvs@acert.ir.bbn.com/cvs/acert co -d acert pkgsrc-acert && \
cd acert/pkg_rolling-replace && \
sudo make package clean
I plan to move this to real pkgsrc when it's finished. (Right now,
others at BBN can commit to the pkgsrc-acert repo, which is like
pkgsrc-wip.)
Here's the man page.
PKG_ROLLING-REPLACE(8) NetBSD System Manager's Manual PKG_ROLLING-REPLACE(8)
NAME
pkg_rolling-replace -- rebuild or update packages using 'make replace' in
tsorted order
SYNOPSIS
pkg_rolling-replace [-hnuvx] [-x pkgs]
DESCRIPTION
pkg_rolling-replace runs 'make replace' on packages that have been marked
with the
'unsafe_depends=YES' flag or the 'rebuild=YES' flag, optionally replac-
ing any outdated packages (as reported by pkg_chk(8)) as well.
Whenever 'make replace' is run on a package, all installed packages that
depend on it are marked with the 'unsafe_depends=YES' flag, which indi-
cates that they may no longer be ABI-compatible with the replaced pack-
age. Running pkg_rolling-replace with no arguments will restore such
packages to a safe state by building a dependency graph, running tsort(1)
on it, and running 'make replace' in the resulting topological order.
The dependency graph and topological sort are re-calculated after each
packages to be marked unsafe.
The user can mark additional packages to be rebuilt by setting the
'rebuild=YES' flag on them using the command
% pkg_admin set rebuild=YES <pkg>
If the -u option is given, pkg_rolling-replace will use to check for
packages for which the version in pkgsrc is different than the installed
version, and run 'make replace' on those packages as well (tsorting them
along with the unsafe/rebuild packages). (Usually this results in pack-
ages being upgraded to newer versions, assuming the pkgsrc tree is more
recent than the currently installed packages.)
Options
-h Brief help.
-n Display actions that would be taken, but don't actually run
'make replace' or change any flags on installed packages. This
option attempts to calculate the new packages that would be
marked unsafe after each 'make replace'.
-u Use to check for outdated packages, and replace those too.
-v Verbose output.
-x pkgs Exclude the comma-separated list of packages from the update
check when -u is given (does not exclude unsafe or rebuild-
requested packages).
ENVIRONMENT
pkg_rolling-replace uses the following environment variables.
PKGSRCDIR
Base of pkgsrc tree. Defaults to /usr/pkgsrc
PKG_DBDIR
pkgsrc database directory. If not set in environment then read
from Defaults to /var/db/pkg
AUTHORS
Nick Goffee <ngoffee@bbn.com, with initial idea and many suggestions
from>
Greg Troxel <gdt@ir.bbn.com>.
BUGS
pkg_rolling-replace does not run fully automatically when any significant
number of packages need to be replaced.
NetBSD 3.0 August 7, 2006 NetBSD 3.0
--=-=-=
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (NetBSD)
iD8DBQFE4mZI+vesoDJhHiURAvhjAJ939cUwMlKPd4nJjaMe63zoaYenfgCfTNxb
w5sqSVXkQUTLJPMIv9WFnY0=
=4qIo
-----END PGP SIGNATURE-----
--=-=-=--