Supporting installing arbitrary port versions

Joshua Root jmr at macports.org
Sun Oct 4 05:58:26 UTC 2020


On 2020-10-4 16:36 , Ryan Schmidt wrote:
> On Oct 3, 2020, at 23:40, Jason Liu wrote:
> 
>>> Just looking at your idea to distribute all portfile versions, let's start with the fact that portfile syntax has evolved over time.
>>
>> This is where portfile syntax itself can, and probably should, be versioned. Maybe by incrementing PortSystem? i.e. PortSystem 1.3, 1.4, 2.0, etc. Similar to how the HTML standard specification's version number has changed over time, from HTML 2 all the way to the current HTML 5.
> 
> Yes, we could do that starting now, but since we haven't up to now, the problem exists. The portsystem version concept was part of the original MacPorts design, predating the involvement of everyone here, so we would have to figure out how it works, whether it was ever fully implemented, what the implications would be of increasing the version, etc.

It is implemented to the extent that "PortSystem $version" is a proc
call that runs "package require port $version". Keeping support for old
Portfiles would require keeping around old versions of the port package
and the other packages it requires, with the old code that the old
Portfiles rely upon (including problematic code; this would need to be
"bug for bug" compatibility.)

Linux distros don't support building their old packages from source in
arbitrary newer environments, they just let you install the package.
Given compatible versions of all the dependencies, that usually works,
because they are an entire OS and so they're targeting the Linux kernel
ABI which is quite stable.

- Josh


More information about the macports-dev mailing list