Index: Keywords/pkg_install.awk =================================================================== --- Keywords/pkg_install.awk +++ Keywords/pkg_install.awk @@ -83,6 +83,18 @@ next } +$1 == "@dirrmtry" { + directory=$2 + print "@comment begin " $0 + if ($2 ~ /^\//) { + print "@unexec rmdir " directory " 2>/dev/null || true" + } else { + print "@unexec rmdir %D/" directory " 2>/dev/null || true" + } + print "@comment end " $0 + next +} + # Print everything else as-is { print $0 Index: Mk/bsd.port.mk =================================================================== --- Mk/bsd.port.mk +++ Mk/bsd.port.mk @@ -1590,7 +1590,7 @@ PLIST_SUB_SED_MIN?= 2 PLIST_SUB_SED?= ${PLIST_SUB:C/.*=.{1,${PLIST_SUB_SED_MIN}}$//g:NEXTRACT_SUFX=*:NOSREL=*:NLIB32DIR=*:NPREFIX=*:NLOCALBASE=*:N*="":N*="@comment*:C/([^=]*)="?([^"]*)"?/s!\2!%%\1%%!g;/g:C/\./\\./g} -PLIST_REINPLACE+= dirrmtry stopdaemon rmtry +PLIST_REINPLACE+= stopdaemon rmtry PLIST_REINPLACE_DIRRMTRY=s!^@dirrmtry \(.*\)!@unexec rmdir "%D/\1" 2>/dev/null || true! PLIST_REINPLACE_RMTRY=s!^@rmtry \(.*\)!@unexec rm -f %D/\1 2>/dev/null || true! PLIST_REINPLACE_STOPDAEMON=s!^@stopdaemon \(.*\)!@unexec %D/etc/rc.d/\1 forcestop 2>/dev/null || true! @@ -5740,7 +5740,7 @@ .if (${PREFIX} != "/usr") @${ECHO_CMD} "@unexec if [ -f %D/${INFO_PATH}/dir ]; then if sed -e '1,/Menu:/d' %D/${INFO_PATH}/dir | grep -q '^[*] '; then true; else rm %D/${INFO_PATH}/dir; fi; fi" >> ${TMPPLIST} .if (${PREFIX} != ${LOCALBASE} && ${PREFIX} != ${LINUXBASE}) - @${ECHO_CMD} "@unexec rmdir %D/${INFO_PATH} 2>/dev/null || true" >> ${TMPPLIST} + @${ECHO_CMD} "@dirrmtry ${INFO_PATH}" >> ${TMPPLIST} .endif .endif .endif @@ -5752,7 +5752,7 @@ .if (${PREFIX} != ${LOCALBASE} && ${PREFIX} != ${LINUXBASE} && \ ${PREFIX} != "/usr" && !defined(NO_PREFIX_RMDIR)) add-plist-post: - @${ECHO_CMD} "@unexec rmdir %D 2> /dev/null || true" >> ${TMPPLIST} + @${ECHO_CMD} "@dirrmtry %D" >> ${TMPPLIST} .endif .endif Index: Mk/bsd.python.mk =================================================================== --- Mk/bsd.python.mk +++ Mk/bsd.python.mk @@ -580,7 +580,7 @@ ${LS} ${PYDISTUTILS_EGGINFODIR}/${egginfo} | while read f; do \ ${ECHO_CMD} ${PYDISTUTILS_EGGINFODIR:S;^${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}/$${f} >> ${TMPPLIST}; \ done; \ - ${ECHO_CMD} "@unexec rmdir \"%D/${PYDISTUTILS_EGGINFODIR:S;${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}\" 2>/dev/null || true" >> ${TMPPLIST}; \ + ${ECHO_CMD} "@dirrmtry ${PYDISTUTILS_EGGINFODIR:S;${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}" >> ${TMPPLIST}; \ fi; . endfor .else @@ -613,11 +613,11 @@ while read line; do \ ${GREP} -qw "^$${line}$$" ${WRKDIR}/.localmtree || { \ [ -n "$${line}" ] && \ - ${ECHO_CMD} "@unexec rmdir \"%D/$${line}\" 2>/dev/null || true"; \ + ${ECHO_CMD} "@dirrmtry $${line}"; \ }; \ done | ${SORT} | uniq | ${SORT} -r >> ${TMPPLIST} - @${ECHO_CMD} "@unexec rmdir \"%D/${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}\" 2>/dev/null || true" >> ${TMPPLIST} - @${ECHO_CMD} "@unexec rmdir \"%D/${PYTHON_LIBDIR:S;${PYTHONBASE}/;;}\" 2>/dev/null || true" >> ${TMPPLIST} + @${ECHO_CMD} "@dirrmtry ${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}" >> ${TMPPLIST} + @${ECHO_CMD} "@dirrmtry ${PYTHON_LIBDIR:S;${PYTHONBASE}/;;}" >> ${TMPPLIST} .else .if ${PYTHON_REL} >= 320 && defined(PYTHON_PY3K_PLIST_HACK)