[PATCH v2] scripts imx-image: add support for newer versions of "cst"

Marc Kleine-Budde mkl at pengutronix.de
Mon Sep 3 06:32:12 PDT 2018


Older versions of "cst" want to read the CSF from STDIN, while newer versions
want to read the CSF from a file. Sadly, the "-i" option doesn't understand
"-i -" to read from STDIN, so we give it "/dev/stdin" instead.

Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
---
 scripts/imx/imx-image.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index b241e8c4b68e..ffde8149650f 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -546,7 +546,28 @@ static int hab_sign(struct config_data *data)
 		}
 	}
 
-	ret = asprintf(&command, "%s -o %s", cst, csffile);
+	/*
+	 * Older versions of "cst" want to read the CSF from STDIN,
+	 * while newer versions want to read the CSF from a
+	 * file. Sadly, the "-i" option doesn't understand "-i -" to
+	 * read from STDIN, so we give it "/dev/stdin" instead.
+	 */
+	ret = asprintf(&command,
+		       "%s | grep 'Input CSF text filename'",
+		       cst);
+	if (ret < 0)
+		return -ENOMEM;
+
+	ret = system(command);
+	free(command);
+	if (ret == -1)
+		return -EINVAL;
+	else if (ret == 0)
+		ret = asprintf(&command, "%s -o %s -i /dev/stdin",
+			       cst, csffile);
+	else
+		ret = asprintf(&command, "%s -o %s;",
+			       cst, csffile);
 	if (ret < 0)
 		return -ENOMEM;
 
-- 
2.18.0




More information about the barebox mailing list