On Apr 6, 2020, at 03:39, Christopher Jones wrote: > On 6 Apr 2020, at 8:42 am, Dave Horsfall wrote: > >> On Mon, 6 Apr 2020, Ryan Schmidt wrote: >> >>> You should not routinely use the -p flag like this. >> >> I did that following advice on this list about a year ago, when some port >> ("guile"?) that I'd never even heard of would not build.
I do not recommend it. You should almost never use the -p flag. I'm uncertain why we have this flag at all. Using the -p flag to proceed to build an outdated port P, despite the fact that one of its dependencies D could not be updated, can defeat the purpose of upgrading the port P. One possible result, depending on the reason why port D was updated, if you got a binary of the updated port P, is that port P will then immediately be considered broken and will need to be rebuilt from source. And once the problem with port D is fixed and you're able to upgrade it, you'll then find port P is broken again and will need to be refetched or rebuilt again. Rev-upgrade can only detect certain kinds of brokenness (i.e. library linkage errors). It's completely possible that by proceeding to update a port P despite failure of updating its dependency D you will introduce an unintended behavior into the upgraded port P that MacPorts cannot detect. Port P will then no longer show as outdated, even though it does not necessarily correspond to what you should have for that version / revision. You mentioned that you use "port upgrade -p outdated". Note that single-dash / single-letter flags like -p are global and do nothing unless you place them immediately after the command "port", e.g. (but don't do this!) "sudo port -p upgrade foo". In contrast, double-dash / multiple-letter flags like --no-rev-upgrade are specific to each command verb and must be placed after the command verb, e.g. "sudo port -u upgrade --no-rev-upgrade foo". >>> Do you mean openssl? or libressl? or something else? >> >> openssl-1.1.1f_0+universal.darwin_16.i386-x86_64 > > So from the above you can tell you are using the universal variant of the > package. > > Looking at > > http://packages.macports.org/openssl/ > > you can see these variants used to be built by the buildbots and thus > distributed in binary form, however this appears to have stopped for the more > recent versions. This is why you had to build it from source, and likely why > you are having to build a lot of dependencies from source. > > Why this was done, intentionally or otherwise, I do not know. A universal package will only be produced by our buildbot when something is committed that requires it. Three such ports are wine, wine-devel, and wine-crossover. Wine requires 32-bit support which means that on 64-bit systems it requires universal dependencies. I used to update the wine ports regularly; a new development version of wine would appear every two weeks. So universal packages for all of wine's dependencies would be produced every two weeks. I haven't been updating the wine ports lately. I intend to get back to doing that. It would be nice if we always built a universal version of a port if we had ever built a universal version of that port before. However we have not implemented that feature in our buildbot yet. See https://trac.macports.org/ticket/35897#comment:20 If you don't need to use the universal variant (or any other particular variant) of a port, reinstall it with its default set of variants to make it more likely that you will receive a binary package.