ruby gemcutter ports - how to handle fetching?

Peter Schuller peter.schuller at infidyne.com
Thu Dec 24 13:47:29 UTC 2009


Hello,

I recently submitted two ports with master site set to
http://gemcutter.ogr/gems/ because rubyforge did not have the .gem
files. The ruby community seems to be transitioning to gemcutter, so
it would be good if gemcutter gems were easily maintained in ports. I
suppose gemcutter should be added to bsd.sites.mk (see patch below),
but the other problem is that I ended up adding to my port Makefile:

   # we care about not passing -A
   FETCH_ARGS=     -pRr

While this works it is not maintainable (what if fetch isn't used?
what if other FETCH_ARGS overrides are in effect? etc).

The problem is that the official location of gemcutter gem downloads
return (correctly) 302 redirects - currently to Amazon S3. But the
default FETCH_ARG:s contain -A, which means this is treated as a
failure.

I understand that many times a 302 is just some broken site and we do
not want to follow it. The question is how this is supposed to be
handled in a maintainable way?

Suggestion:

* Create FETCH_DISTFILE_REDIRECTS which, if yes, implies that when
fetching redirects must be followed.
* Define USE_GEMCUTTER=yes which would imply FETCH_DISTFILE_REDIRECTS
(is a USE_* appropriate for this?).
* Have bsd.port.mk add -A only if FETCH_DISTFILES_REDIRECTS is not yes.

Thoughts?

bsd.sites.mk patch for gemcutter follows (will probably be mangled by
gmail). Should one add as a fall-back the current direct destination
being used? In other words, although it is presumably an
implementation detail of gemcutter, should one add, in this case,
http://s3.amazonaws.com/gemcutter_production/gems/ to the master sites
so that fetching has a high chance of working even if gemcutter is
down (as long as S3 is up, which should be reliable)?

--- bsd.sites.mk.orig	2009-12-24 13:53:17.958746367 +0100
+++ bsd.sites.mk	2009-12-24 13:56:57.472840650 +0100
@@ -458,6 +458,11 @@
 	ftp://mirror.aarnet.edu.au/pub/gcc/%SUBDIR%/
 .endif

+.if !defined(IGNORE_MASTER_SITE_GEMCUTTER)
+MASTER_SITE_GEMCUTTER+= \
+	http://gemcutter.org/gems/
+.endif
+
 .if !defined(IGNORE_MASTER_SITE_GENTOO)
 MASTER_SITE_GENTOO+=	\
 	http://ftp.roedu.net/pub/mirrors/gentoo.org/%SUBDIR%/ \


-- 
/ Peter Schuller


More information about the freebsd-ports mailing list