On Monday February 01 2016 16:31:59 Marius Schamschula wrote:

> > - portfile is extra complicated (does some craziness to generate a large 
> > number sub-ports)
> 
> Yup. Like mysql*, php, etc.
> 
> Then there are ports like sqlite3 that use a non-standard versioning scheme 
> for the distfile, which causes my current script to fail.

That might be less of an issue if the feature is implemented in "base" itself. 
You wouldn't have to guess the distfile name(s), it'd be available through 
${distfiles}, and the corresponding checksum(s) through ${checksums}. Then you 
should indeed be able to do what I suggested earlier:
- calculate the new checksums
- determine and check all old checksums; if there are cases of aliasing 
(several files having the same checksum), just print the new checksums and 
abort. Possibly over-careful, but so simple it shouldn't cost anything to add 
as a failsafe. Same if the old checksums cannot be determined for each 
distfile. NB: this kind of aliasing would only be a problem for brute 
search/replace operations, so I doubt there's ever been reason to pay attention 
to its possible occurrence.
- for each old,new checksum pair, do a whole-pattern search and replace of 
oldchecksum with newchecksum in the entire file.

Determining the name of the old distfile(s) is still going to be an issue, but 
maybe there could be a special variable for the old version, to be used only by 
a port maintainer when upgrading a port and not to be present otherwise:

previous_version        1.0
version                         1.1

with that, the algorithm ought to be able to reconstruct the old distfile name 
by replacing ${version} with ${previous_version} ... but even that only works 
for distfiles that have the full version in their name. At least that gives a 
few more conditions that have to be met (and can be evaluated) for the feature 
to be applicable.

R.
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to