On Feb 24, 2019, at 17:55, Dave Horsfall wrote:

> Hmmm...  Proceed regardless:
> 
>    ozzie:~ dave$ sudo port -p upgrade outdated
>    Nothing to upgrade.
> 
> (Yes, I'm in the habit of using "-p" to get past broken ports.)

Please do not habitually (or ideally ever) use "-p" when installing or 
upgrading. It will cause problems.

Suppose that you have installed a port PROG that depends on a library LIB. 
Suppose we upgrade LIB to a new version, and that this requires PROG to be 
rebuilt, so we also increase the revision of PROG. You've selfupdated and 
received these changes, and then you run "sudo port -p upgrade PROG", which 
causes LIB to be upgraded first, since it is a dependency.

Suppose that for whatever reason, LIB fails to build on your system. Because 
you used the "-p" flag, MacPorts proceeds past this failure and rebuilds PROG 
anyway. If MacPorts is able to get a binary of PROG from our build server, that 
binary will be linked with the new version of LIB, which you don't have, so 
PROG will be broken. If you don't get a binary, it will build on your system, 
linking with the old version of LIB that you already had installed, despite the 
fact that the only reason for the rebuild was to link with the new version of 
LIB. So it will look to you as if PROG built successfully, but in fact what you 
built was not what we intended for you to get. Worse, when whatever problem 
prevented LIB from building on your system is fixed and you are able to upgrade 
it, you will have a broken PROG because it was linked with the old LIB.

We should probably modify MacPorts base to prevent using the "-p" flag for the 
install or upgrade actions.


Reply via email to