The implementation uses asyncore in python, and uses tcp connections instead of pinging (pinging is not guaranteed to work). The output is sorted by fastest response time and in a format suitable for Makefile (and thus /etc/make.conf).
% python fastest_site.py
=> Checking servers for MASTER_SITE_GENTOO (77 servers)
MASTER_SITE_GENTOO=\
ftp://ftp.ecc.u-tokyo.ac.jp/GENTOO/%SUBDIR%/ \
ftp://gentoo.kems.net/pub/mirrors/gentoo/%SUBDIR%/ \
ftp://files.gentoo.gr/%SUBDIR%/ \
... <output cut> ...
I recommend that you send the output to a separate file, such as /usr/local/etc/ports_sites.conf, and add the following line to /etc/make.conf:
.include "/usr/local/etc/ports_sites.conf"Now generate the file:
% python fastest_site.py > /usr/local/etc/ports_sites.conf => Checking servers for MASTER_SITE_GENTOO (77 servers) => Checking servers for MASTER_SITE_TCLTK (11 servers) => Checking servers for MASTER_SITE_GET_E (11 servers) => Checking servers for MASTER_SITE_BERLIOS (4 servers) ...Download: fastest_sites.py