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

_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to