[86151] trunk/dports/audio/liblo/Portfile

Ryan Schmidt ryandesign at macports.org
Wed Oct 19 21:41:19 PDT 2011


On Oct 19, 2011, at 23:17, Jeremy Lavergne wrote:

>> liblo: rewrite master_sites to avoid redirects
> 
> As you may have guessed, no one else if even looking for these.

Joshua is doing them too sometimes. But now he's rather busy with licenses and other buildbot errors; rewriting master_sites is a small optimization at best and so isn't really that important probably. I just do them when I notice them.


> I think it might be to our benefit to post such things to lint, if possible. Obviously, not just this master_sites issue.
> Let me know if you want what you're doing added to lint (rather familiar with it now). I've also been drinking a bit. :-) a bit much. but really, this is the sort of thing link warning (not error) would be perfect for.

I'm hesitant, because "lint" is usually defined as a function that checks the syntax of a file.

http://en.wikipedia.org/wiki/Lint_(software)

I wouldn't really want "lint" to go and open network connections to see if there's an HTTP redirect.

I suppose you could check if a master_sites entry is written as "sourceforge" or "sourceforge:name" or "sourceforge:name:tag" and warn in that case. Most sourceforge projects store their files in directories on the server, and so these constructs would be non-optimal and cause a redirect, and the should be rewritten as "sourceforge:project/some/path/..." The test would probably be "starts with 'sourceforge' and doesn't contain a slash". But there are some ports for which that's not actually an error; some (very small number, I think) of projects actually do store their files in a flat structure. But even for those they could use expanded "project/" form sed to avoid the warning.



Here's an excerpt from my ~/.bashrc I'm using:


port() {
	unset PORT
	if [ -z "$2" ]; then
		if [ -f "$PWD/Portfile" ]; then
			PORT=$(basename "$PWD")
		fi
	else
		PORT="$2"
	fi
	
	case "$1" in
		distfix)
			DL="$(command port distfiles ${PORT} | awk '/downloads.sourceforge.net/ {print $1}')"
			if [ -z "$DL" ]; then return; fi
			DL2="$(curl -s -I -L "$DL" | awk '/^Location:/ {print $2}' | tail -n 1)"
			if [ -z "$DL2" ]; then return; fi
			V="$(port info --version --line ${PORT})"
			B="$(echo "$V" | cut -d . -f 1-2)"
			P="$(dirname "$(echo $DL2 | cut -d / -f 4-)" | sed -E -e "s,$V,\${version}," -e "s,$B,\${branch},")"
			echo sourceforge:$P
			;;
	esac
}





More information about the macports-dev mailing list