#! /bin/sh
set -o pipefail
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_CHECK_LEFTOVERS}" ] && set -x
origin="$1"
[ $# -eq 1 ] || { echo "Must supply ORIGIN as parameter" >&2; exit 1; }
[ -n "${PORTSDIR}" ] || { echo "PORTSDIR must be set" >&2; exit 1; }
: ${portdir:="${PORTSDIR}/${origin}"}
if [ -n "${PREFIX}" ]; then
PORT_FLAGS="${PORT_FLAGS} PREFIX=${PREFIX}"
else
PREFIX=$(make -C ${portdir} -VPREFIX)
fi
if [ -n "${LOCALBASE}" ]; then
PORT_FLAGS="${PORT_FLAGS} LOCALBASE=${LOCALBASE}"
else
LOCALBASE=$(make -C ${portdir} -VLOCALBASE)
fi
if [ -z "${CCACHE_DIR}" ]; then
CCACHE_DIR=$(make -C ${portdir} -VCCACHE_DIR)
fi
if [ -z "${UID_FILES}" ]; then
UID_FILES=$(make -C ${portdir} -VUID_FILES)
fi
homedirs=$(awk -F: -v users="$(make -C ${portdir} -V USERS|sed -e 's, ,|,g;/^$/d;s,^,^(,;s,$,)$,')" 'users && $1 ~ users {print $9}' ${UID_FILES}|sort -u|sed -e "s|/usr/local|${PREFIX}|"|tr "\n" " ")
plistsub_sed=$(mktemp -t plistsub_sed)
trap "rm -f ${plistsub_sed}" EXIT 1
make -C ${portdir} -VPLIST_SUB_SED | /bin/sh ${PORTSDIR}/Mk/Scripts/plist_sub_sed_sort.sh ${plistsub_sed}
tmpplist=$(make -C ${portdir} -VTMPPLIST)
while read -r modtype path extra; do
case "${path}" in
${CCACHE_DIR:-/nonexistent}/*|\
/compat/linux/proc/*|\
/dev/*|\
/etc/make.conf.bak|\
/proc/*|\
/tmp/*|\
/var/db/pkg/*|\
/var/db/ports/*|\
/var/log/*|\
/var/mail/*|\
/var/run/*|\
/var/tmp/*) continue ;;
/var/db/fontconfig/*) continue ;;
esac
ignore_path=0
sub_path=$(echo "$path" | sed -e "s|^${PREFIX}/||" -f "${plistsub_sed}")
orig_sub_path="${sub_path}"
is_dir=0
if [ -d "${path}" ]; then
is_dir=1
sub_path="@dir ${sub_path}"
fi
case "${orig_sub_path}" in
%%DOCSDIR%%*) sub_path="%%PORTDOCS%%${sub_path}" ;;
%%EXAMPLESDIR%%*) sub_path="%%PORTEXAMPLES%%${sub_path}" ;;
esac
case $modtype in
+)
if [ ${is_dir} -eq 1 ]; then
case " ${homedirs} " in
*\ ${path}\ *) continue ;;
*\ ${path}/*\ *) continue ;;
esac
grep -qE \
"^@(unexec rmdir \"?(%D/|${PREFIX})?${path#${PREFIX}/}[ \"]|dir(rm|rmtry)? ${path#${PREFIX}/}\$)" \
${tmpplist} && continue
fi
case "${path}" in
/var/qmail/queue/*|/var/qmail/queue) continue ;;
esac
case "${sub_path}" in
etc/gconf/gconf.xml.defaults/%gconf-tree*.xml) ;;
*) echo "+ ${sub_path}" ;;
esac
;;
-)
[ "${path}" = "${PREFIX}" -a "${LOCALBASE}" != "${PREFIX}" ] &&
ignore_path=1
[ "${sub_path}" = "info" -a "${LOCALBASE}" != "${PREFIX}" ] &&
ignore_path=1
[ $ignore_path -eq 0 ] && echo "- ${sub_path}"
;;
M)
case "${sub_path}" in
etc/gconf/gconf.xml.defaults/%gconf-tree*.xml) ;;
info/dir) ;;
*/info/dir) ;;
%%PEARDIR%%/.depdb|%%PEARDIR%%/.filemap) ;;
*/ls-R) ;;
share/octave/octave_packages) ;;
share/xml/catalog.ports) ;;
/etc/group|\
/etc/make.conf|\
/etc/master.passwd|\
/etc/passwd|\
/etc/pwd.db|\
/etc/shells|\
/etc/spwd.db) ;;
*) echo "M ${sub_path#@dir } ${extra}" ;;
esac
;;
esac
done
exit 0