Determine before installation whether a port can be installed

Ryan Schmidt ryandesign at
Thu Jul 28 01:21:56 PDT 2016

On Jul 28, 2016, at 2:06 AM, Artur Szostak wrote:

> "... A better implementation would let the port indicate that a port builds on macOS 10.X or older, or macOS 10.Y or newer. ..."
> This sounds like there is a need to allow encoding of version ranges.

Right, *if* we make a MacPorts base feature that allows or disallows building on some macOS versions, it should allow ranges. We could use the same syntax we use in the compiler_blacklist_versions portgroup for blacklisting ranges of clang compiler versions.

However, as I've said, there are other reasons why a port might not be able to install. Should we really modify MacPorts base and create new variables to accommodate each of those reasons? Is there a specific objection to what I consider the easiest and most flexible of the options I suggested: implement a new preflight phase, in which the port can run any logic to determine if the port can be installed?

> In which case I would suggest to solve this problem generically, to allow encoding version ranges in port dependencies also. Similar to what is possible with RPMs or Debian packages. If the logic is implemented for dependencies then one could surely easily have things like the following encoded in the Portfile:
>  macosx >= 10.9
>  macosx < 10.10

Allowing version numbers or ranges in port dependencies is completely unrelated to this thread, and is completely outside the realm of possibility, because MacPorts does not have the capability to install a specific version of a port, because there is only one version of a portfile in existence at a time, so that is the only version MacPorts can install. I don't see this ever changing.

More information about the macports-dev mailing list