diff options
| author | Colin Percival <cperciva@FreeBSD.org> | 2026-09-22 00:08:26 +0000 |
|---|---|---|
| committer | Colin Percival <cperciva@FreeBSD.org> | 2026-09-22 00:19:01 +0000 |
| commit | 5a2328a17851ac609ab6c786d9b0db388f15e6b3 (patch) | |
| tree | bb1d7ba90f528560894c340d8fbf01aaff91c7d2 | |
| parent | 8a0cab240f2146a000396c411df471df4b75bb9d (diff) | |
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.subr | 3 |
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 |
