[123602] trunk/dports/python/py-astropy/Portfile

Sean Farley sean at macports.org
Tue Sep 30 17:26:41 PDT 2014


Ryan Schmidt writes:

> On Sep 30, 2014, at 4:55 PM, Sean Farley wrote:
>
>> As for this exact issue, it could be something as simple as a fallback
>> test:
>> 
>> if checksum doesn't match and revision is new:
>>  try downloading again
>>  write state so we don't download in an infinite loop
>
> That's a conceivable change. But let's look at what problems that particular change would involve:
>
> * MacPorts would need to gain the capability to go back to a previous phase (fetch) after it has already been completed. Or perhaps simpler, MacPorts would need the ability to automatically clean a port and try it from the beginning based on some criteria. This would be quite useful for a number of issues MacPorts users currently experience, but it's not a capability that exists today.

This is a very real issue. Difficult to do in today's code base.

> * It assumes the port's revision will be increased. That's not always necessary. Sometimes the only change in the distfile is the name of (or presence of) the enclosing directory, or there are only changes in comments or documentation files or other files that don't affect the build, and in those cases there would be zero benefit to increasing the port's revision and forcing everyone to rebuild or redownload.

That's true. In this case, we should borrow an idea from DVCSes: use a
hash to see if something has changed (probably something like a Merkle
tree). This would be a nontrivial amount of work but would help mitigate
the whole 'epoch' business.

> * The old distfile would get removed from our mirrors, making it impossible for anyone to later determine what exactly changed in the stealth update. Many maintainers handle stealth updates incorrectly. It is nice for others to be able to investigate after the fact.

If we used hashes in the distfile naming, we wouldn't be overwriting
things.

These are all just ideas / vague shots in the dark. I'm not volunteering
to do this work :-P


More information about the macports-dev mailing list