Older versions of "cst" want to read the CSF frm 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 <[email protected]>
---
 scripts/imx/imx-image.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index 452a544bc3eb..17d504586967 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -558,7 +558,21 @@ 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 frm 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,
+                      "if %s | grep 'Input CSF text filename'; then"
+                      "        %s -o %s -i /dev/stdin;"
+                      "else"
+                      "        %s -o %s;"
+                      "fi",
+                      cst,
+                      cst, csffile,
+                      cst, csffile);
        if (ret < 0)
                return -ENOMEM;
 
-- 
2.18.0


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to