Index: src/poudriere.d/clean.sh ================================================================== --- src/poudriere.d/clean.sh +++ src/poudriere.d/clean.sh @@ -36,9 +36,15 @@ clean_pool ${dep_pkgname} ${clean_rdepends} done fi rm -rf "${JAILMNT}/poudriere/pool/${pkgname}" - find ${JAILMNT}/poudriere/pool -name "${pkgname}" -type f -delete + if [ -d "${JAILMNT}/poudriere/rpool/${pkgname}" ]; then + for f in $(find "${JAILMNT}/poudriere/rpool/${pkgname}" -type l); do + path=$(realpath $f 2>/dev/null) || continue + rm -f "${path}/${pkgname}" + done + rm -rf "${JAILMNT}/poudriere/rpool/${pkgname}" + fi } clean_pool "${PKGNAME}" ${CLEAN_RDEPENDS} Index: src/poudriere.d/common.sh ================================================================== --- src/poudriere.d/common.sh +++ src/poudriere.d/common.sh @@ -1295,10 +1295,13 @@ for dep_port in `list_deps ${port}`; do debug "${port} depends on ${dep_port}" dep_pkgname=$(cache_get_pkgname ${dep_port} 1) compute_deps "${dep_port}" "${dep_pkgname}" touch "${pkg_pooldir}/${dep_pkgname}" + mkdir -p "${JAILMNT}/poudriere/rpool/${dep_pkgname}" + ln -sf "${JAILMNT}/poudriere/pool/${dep_pkgname}" \ + "${JAILMNT}/poudriere/rpool/${dep_pkgname}/${pkgname}" done } listed_ports() { if [ ${ALL:-0} -eq 1 ]; then @@ -1386,11 +1389,14 @@ _REAL_PARALLEL_JOBS=${PARALLEL_JOBS} msg "Calculating ports order and dependencies" mkdir -p "${JAILMNT}/poudriere" [ -n "${TMPFS_DATA}" ] && mount -t tmpfs tmpfs "${JAILMNT}/poudriere" - mkdir -p "${JAILMNT}/poudriere/pool" "${JAILMNT}/poudriere/var/run" "${JAILMNT}/poudriere/var/cache" + mkdir -p "${JAILMNT}/poudriere/pool" \ + "${JAILMNT}/poudriere/rpool" \ + "${JAILMNT}/poudriere/var/run" \ + "${JAILMNT}/poudriere/var/cache" touch "${JAILMNT}/poudriere/var/cache/origin-pkgname" lock_release origin-pkgname-* || : zset stats_queued "0" :> ${JAILMNT}/poudriere/ports.built @@ -1436,11 +1442,17 @@ export LOCALBASE=${MYBASE:-/usr/local} find ${JAILMNT}/poudriere/pool -type d -depth 1 | while read p; do pn=${p##*/} if [ -f "${PKGDIR}/All/${pn}.${PKG_EXT}" ]; then rm -rf ${p} - find ${JAILMNT}/poudriere/pool -name "${pn}" -type f -delete + if [ -d "${JAILMNT}/poudriere/rpool/${pn}" ]; then + for f in $(find "${JAILMNT}/poudriere/rpool/${pn}" -type l); do + path=$(realpath $f 2>/dev/null) || continue + rm -f "${path}/${pn}" + done + rm -rf "${JAILMNT}/poudriere/rpool/${pn}" + fi fi done local nbq=0 nbq=$(find ${JAILMNT}/poudriere/pool -type d -depth 1 | wc -l)