aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Percival <cperciva@FreeBSD.org>2026-09-22 00:08:26 +0000
committerColin Percival <cperciva@FreeBSD.org>2026-09-22 00:19:01 +0000
commit5a2328a17851ac609ab6c786d9b0db388f15e6b3 (patch)
treebb1d7ba90f528560894c340d8fbf01aaff91c7d2
parent8a0cab240f2146a000396c411df471df4b75bb9d (diff)
vmimage.subr: Include dangling symlinks in imagesHEADmain
When creating VM images, we filter the METALOG file created by pkg(8) when installing non-base packages, rejecting any lines which correspond to files which don't exist; this solves a problem which arose when a package was installed and then deinstalled (or upgraded) later in the image-building process. Unfortunately [ -e ... ] follows symlinks and is not basedir-aware, so an absolute symlink which is valid *inside* the image is omitted from the image if it points to something which isn't present in the build host system. Replace [ -e ... ] with [ -e ... ] || [ -L ... ] so that symlinks are included even if dangling. While I'm here, add quoting in case future paths become problematic. Sponsored by: Amazon MFC after: 3 days
-rw-r--r--release/tools/vmimage.subr3
1 files changed, 2 insertions, 1 deletions
diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr
index f06bf4848cb8..b8d2be965dde 100644
--- a/release/tools/vmimage.subr
+++ b/release/tools/vmimage.subr
@@ -266,7 +266,8 @@ buildfs() {
# have been logged which no longer exist if a package was removed.
if [ -f ${DESTDIR}/METALOG.pkg ]; then
while read F REST; do
- if [ -e ${DESTDIR}/${F} ]; then
+ if [ -e "${DESTDIR}/${F}" ] ||
+ [ -L "${DESTDIR}/${F}" ]; then
echo "${F} ${REST}" >> ${DESTDIR}/METALOG
fi
done < ${DESTDIR}/METALOG.pkg