#!/bin/sh -e # # Copyright (c) 2004 Oliver Eikemeier. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # 1. Redistributions of source code must retain the above copyright notice # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of the author nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # $FreeBSD$ # if [ ! -d "${DBDIR:=/var/db/distrank}" ]; then mkdir -p "${DBDIR}" fi echo "ranking ports MASTER_SITES" echo "please be patient, this may take more than two hours" cd "${PORTSDIR:=/usr/ports}" CATEGORIES=`make -VSUBDIR` for category in ${CATEGORIES}; do [ -f "${PORTSDIR}/${category}/Makefile" ] || continue cd "${PORTSDIR}/${category}" PORTS=`make -VSUBDIR` for port in ${PORTS}; do [ -f "${PORTSDIR}/${category}/${port}/Makefile" ] || continue cd "${PORTSDIR}/${category}/${port}" make FETCH_ALL=yes makesum -VMASTER_SITES -VPATCH_SITES 2>/dev/null | tr -s ' \t' '\n' | tr '[:upper:]' '[:lower:]' | sed -nE -e 's;^(f|ht)tps?://([^/]+)/.*$;\2;p' | sort -u done done | sort -u | fping -q -c 3 2>&1 | sed -nE 's;^([^ :/]+) *:.*min/avg/max += +[0-9.]+/([0-9.]+)/[0-9.]+.*$;\1 \2;p' | sort -n -k 2 > "${DBDIR}/ranks" chmod a+r "${DBDIR}/ranks"