Problems with +CONTENTS being messed up by pkg_delete -f
Stephen Montgomery-Smith
stephen at math.missouri.edu
Wed Jul 18 20:56:50 UTC 2007
If you "pkg_delete -f" a package and then install the port again (but
after it has been bumped up a version), then the +CONTENTS of ports that
require the original port will be incorrect. This apparently messes up
programs like portmanager. There is a sense in which one should never do
"pkg_delete -f" and expect /var/db/pkg to keep its integrety - on the
other hand this is exactly what "make deinstall" does.
My feeling is that the integrety of /var/db/pkg should be maintained
across a "make deinstall" and subsequent "make install" of a bumped
version of the port.
This is my suggestion. When a "pkg_delete -f" is executed, it looks
through +REQUIRED_BY of the port it is going to delete, and modifies the
+CONTENTS file of each of them, replacing lines like
@pkgdep xineramaproto-1.1.2
@comment DEPORIGIN:x11/xineramaproto
to maybe something like
@comment DELDEPORIGIN:x11/xineramaproto
("deleted dependency origin"). A subsequent "make install" of
x11/xineramaproto should look through the +CONTENTS of all entries in
/var/db/pkg and change these lines to something like
@pkgdep xineramaproto-1.1.3
@comment DEPORIGIN:x11/xineramaproto
A further benefit of this approach is that one could also accurately
reconstruct the +REQUIRED_BY of the port just reinstalled - right now this
is left empty and thus inaccurate.
What do you guys think? I know I could write the code for this quite
quickly, but I want some feedback before I work on it.
Stephen
More information about the freebsd-hackers
mailing list