"OBATA Akio" <obache%netbsd.org@localhost> writes: > On Wed, 25 Jan 2012 21:37:52 +0900, Greg Troxel <gdt%ir.bbn.com@localhost> > wrote: > >> >> "OBATA Akio" <obache%netbsd.org@localhost> writes: >> >>> Are you just talking about pkg_rolling-replace (and `replace' target)? >>> Yes, it it insufficient and should be fixed instead. >>> (I've just killed `pkg_admin set unsafe_depends=YES' locally). >> >> Well, you're welcome to implement logic to set unsafe_depends_loose, >> which is only true if there was an ABI change, and do >> pkg_rolling-replace -l. The tricky part is choosing when to se >> unsafe_depends_loose, because it seems telling if there is an ABI change >> is very hard. But it would be a good experiment. But please don't >> change what unsafe_depends means, since that's a useful definition >> (package was rebuilt and was different before), which surely is a >> superset of "package ABI changed". > > There are two types of ABI change(shlib bump, new dependency on other > library, and so on): > > 1. by updating package itself > 2. by changing users' PKG_OPTIONS settings and rebuild the package. > > About which type, are you talking about? I meant type 1, but indeed type 2 is an issue as well. Currently, unsafe_depends isn't set when one does 'make replace' and the new options differ from the installed options, but that's a bug. My larger point is that setting up a scheme to be able to say "the ABI changed" vs "the ABI did not change" is hard to get right, and the current "unsafe_depends" variable is meant to capture "the ABI might have changed, and "unsafe_depends_strict" (without unsafe_depends) captures "the ABI should not have changed, but the package was replaced so you never really know". > And do you want to care manual `make replace' with pkg_rolling-replace? The bookkeeping of unsafe_depends variables is done by make replace; pkg_rolling-replace just looks at them. This is a core part of the design, so that pkg_rolling-replace (or any tool that anyone else wants to write) interworks with manual replacing. (e.g, make replace on jpeg, and then pkg_rolling-replace to rebuild all packages which depend on it, and so on). But that's not the issue. The real issue is having a way to know if a particular replace changes the ABI.
Attachment:
pgp38yn7mKb6b.pgp
Description: PGP signature