]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[build] Report detailed errors when unable to find a usable mkisofs
authorMichael Brown <mcb30@ipxe.org>
Fri, 12 Feb 2021 12:13:18 +0000 (12:13 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 12 Feb 2021 12:16:48 +0000 (12:16 +0000)
As of commit 7c3d186 ("[build] Check that mkisofs equivalent supports
the required options"), we may refuse to use a mkisofs equivalent if
it does not support the options required to produce the requested
output file.

This can result in confusing error messages since the user is unaware
of the reason for which the installed mkisofs or genisoimage has been
rejected.

Fix by explicitly reporting the reason why each possible mkisofs
equivalent could not be used.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/util/genfsimg

index 419c3f8010b1777f471d5b2e17d656da4f8fa139..c3123f3ed04f9e3e52cd79e5e0e71394a1a8a712 100755 (executable)
@@ -268,13 +268,27 @@ fi
 #
 if [ -n "${ISOIMG}" ] ; then
     MKISOFS=
+    MKISOFS_MISSING=
+    MKISOFS_NOTSUP=
     for CMD in genisoimage mkisofs xorrisofs ; do
-       if "${CMD}" ${ISOARGS} --version "${ISODIR}" >/dev/null 2>&1 ; then
-           MKISOFS="${CMD}"
-           break
+       if ! "${CMD}" --version >/dev/null 2>&1 ; then
+           MKISOFS_MISSING="${MKISOFS_MISSING} ${CMD}"
+           continue
        fi
+       if ! "${CMD}" ${ISOARGS} --version "${ISODIR}" >/dev/null 2>&1 ; then
+           MKISOFS_NOTSUP="${MKISOFS_NOTSUP} ${CMD}"
+           continue
+       fi
+       MKISOFS="${CMD}"
+       break
     done
     if [ -z "${MKISOFS}" ] ; then
+       if [ -n "${MKISOFS_MISSING}" ] ; then
+           echo "${0}:${MKISOFS_MISSING}: not installed" >&2
+       fi
+       if [ -n "${MKISOFS_NOTSUP}" ] ; then
+           echo "${0}:${MKISOFS_NOTSUP}: cannot handle ${ISOARGS}" >&2
+       fi
        echo "${0}: cannot find a suitable mkisofs or equivalent" >&2
        exit 1
     fi