On Jul 24, 2007, at 5:27 PM, Xin Liu wrote:
I checked the code for the "update" command: if I'm not wrong, the code lies in macports::upgrade{}. According to the following piece excerpted from the it:
*** # library depends is upgraded if {[info exists portinfo(depends_lib)]} { foreach i $portinfo(depends_lib) { if {![llength [array get depscache $i]]} { set d [lindex [split $i :] end] set depscache($i) 1 upgrade $d $i $variationslist $optionslist depscache } } } ***
It does not seem to check the external dependencies at all: all it does is to extract the port name from strings like "bin:tex:teTeX" and upgrade the port. It SHOULD have used something like _mportispresent{} to check whether the external dependencies have been satisfied. Or did I miss something?
bin style dependencies are discouraged because of problems like this. The upgrade code (unless you pass it -n, which is what you want to be doing to fix this particular issue for yourself) needs to upgrade library dependencies (for cases where the new version of the port needs the newer library) and can't just check bin/lib style dependencies in that case (as the port could be installed, but is an older version). -- Daniel J. Luke +========================================================+ | *---------------- dluke@geeklair.net ----------------* | | *-------------- http://www.geeklair.net -------------* | +========================================================+ | Opinions expressed are mine and do not necessarily | | reflect the opinions of my employer. | +========================================================+