#!/bin/sh # # Iterate over the ports collection, assemble the list of LATEST_LINKs and # then look for duplicates. Send a nag-mail to the responsible maintainers. # Sanitize environment export __MAKE_CONF=/dev/null export PORT_DBDIR=/nonexistent export PKG_DBDIR=/nonexistent export LOCALBASE=/nonexistent if [ -z "${PORTSDIR}" ]; then PORTSDIR=/usr/ports fi if [ "$1" = "-nomail" ]; then NOMAIL=1 else NOMAIL=0 fi cd ${PORTSDIR} CATEGORIES=$(make -V SUBDIR) for cat in ${CATEGORIES}; do cd ${PORTSDIR}/${cat} dirs=$(make -V SUBDIR) make "PORTSDIR=${PORTSDIR}" "CATEGORY=${cat}" "DIRS=${dirs}" -k -j3 -f - << "EOF" all: ${DIRS:S/$/.portinfo/} .for d in ${DIRS} ${d}.portinfo: @cd ${PORTSDIR}/${CATEGORY}/${d}; make 'portinfo=$${NO_LATEST_LINK}| $${MAINTAINER} $${.CURDIR:S,${PORTSDIR}/,,} $${LATEST_LINK}' -V portinfo .endfor EOF done | grep '^|' > ${PORTSDIR}/.latest_link cd ${PORTSDIR} (awk '{print " " $4 "$"}' < .latest_link) | sort | uniq -d > .latest_dups grep -f .latest_dups .latest_link | sort -i -k4 > .latest_full maint=$(awk '{print $2}' < .latest_full | sort -ui | tr '\n' ' ') (echo "Dear port maintainers," echo echo "The following list includes ports maintained by you that have duplicate" echo "LATEST_LINK values. They should either be modified to use a unique" echo "PKGNAME, e.g. by using PKGNAMESUFFIX. Note that NO_LATEST_LINK is" echo "deprecated. See the portmgr blog post for more information:" echo "http://blogs.freebsdish.org/portmgr/2013/10/03/package-name-collisions/" echo echo echo "Thanks," echo "Erwin \"Annoying Reminder Guy III\" Lansing" echo echo printf "%-20s %-30s %-20s\n" "LATEST_LINK" "PORTNAME" "MAINTAINER" echo "==========================================================================" while read dummy i j k; do printf "%-20s %-30s %-20s\n" $k $j $i done < .latest_full num=$(wc -l .latest_full | awk '{print $1}') echo echo "Total: $num ports") > .latest_mail if [ "${NOMAIL}" = "0" ]; then for i in ${maint}; do mail -s "Ports with duplicate LATEST_LINKs" $i < .latest_mail done # Copy to erwin@ mail -s "Ports with duplicate LATEST_LINKs" erwin@FreeBSD.org < .latest_mail else cat .latest_mail fi rm .latest_dups .latest_full .latest_link .latest_mail