Ensure qts folder header files are properly updated by isolating the
Python execution environment. This prevents partial or failed script
runs from corrupting the target directory.

Signed-off-by: Brian Sune <[email protected]>

Reviewed-by: Simon Glass <[email protected]>
Reviewed-by: Tien Fong Chee <[email protected]>

---

Changes for v6:
- Clean HANDOFF_KEEP comments.
Changes for v5:
- Change HANDOFF_KEEP condition to if [ "$${HANDOFF_KEEP:-0}" != "0" ];
- Add HANDOFF_KEEP and HANDOFF_PATH comments in config.mk
Changes for v4:
- Move trap 'rm -rf "$$TEMP_DIR"' EXIT; after temp folder create
- Change HANDOFF_KEEP condition to
  if [ -n "$${HANDOFF_KEEP+x}" ] && [ "$${HANDOFF_KEEP:-1}" != "0" ];
  HANDOFF_KEEP=0 from rename to discard old header files
Changes for v3:
- Implement a temp folder for Python script execution.
- Clean temp folder automatically despite execution failures.
- Gate the file replacement process on the successful exit of the Python 
scripts.
- Execute the replacement (with or without keep) only upon script
  success via the NEW HANDOFF_KEEP=xxx variable.
- Rename old files to .h.handoff_backup.<timestamp> when the keep option is 
selected.
Changes for v2:
- Add handoff Python script execution check
Changes for v1:
- Implement basic remove and replace header files
---
 arch/arm/mach-socfpga/config.mk | 39 ++++++++++++++++++++++++++++++---
 1 file changed, 36 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-socfpga/config.mk b/arch/arm/mach-socfpga/config.mk
index 1ca1d33cb16..f341aaaea56 100644
--- a/arch/arm/mach-socfpga/config.mk
+++ b/arch/arm/mach-socfpga/config.mk
@@ -1,6 +1,18 @@
 # SPDX-License-Identifier: GPL-2.0+
 #
 # Brian Sune <[email protected]>
+#
+# HANDOFF_PATH
+# ------------
+# Unset - Board path where qts locates and "hps_isw_handoff" should be placed.
+# Set   - Custom path points to "hps_isw_handoff" folder.
+#
+# HANDOFF_KEEP
+# ------------
+# Unset        - Clean header files.
+# Set  - HANDOFF_KEEP= , Clean header files.
+#        HANDOFF_KEEP=0, Clean header files.
+#        HANDOFF_KEEP=1, Backup header files and rename to 
".h.handoff_backup.<timestamp>".
 
 ifeq ($(CONFIG_ARCH_SOCFPGA_CYCLONE5),y)
 archprepare: socfpga_g5_handoff_prepare
@@ -43,6 +55,27 @@ socfpga_g5_handoff_prepare:
                        exit 0; \
                fi; \
                echo "[INFO] Found hiof file: $$HIOF_FILE"; \
-               echo "[INFO] Running BSP generator..."; \
-               python3 $(srctree)/tools/cv_bsp_generator/cv_bsp_generator.py 
-i "$$HANDOFF_PATH" -o "$$BOARD_DIR/qts" || echo "[WARN] BSP generator failed, 
continuing..."; \
-               echo "[DONE] SoCFPGA QTS handoff conversion complete."
+               echo "[INFO] Try BSP generator..."; \
+               TEMP_DIR=$$(mktemp -dp "$$BOARD_DIR/"); \
+               trap 'rm -rf "$$TEMP_DIR"' EXIT; \
+               if python3 
$(srctree)/tools/cv_bsp_generator/cv_bsp_generator.py -i "$$HANDOFF_PATH" -o 
"$$TEMP_DIR"; then \
+                       if [ "$${HANDOFF_KEEP:-0}" != "0" ]; then \
+                               echo "[INFO] Preserving old BSP files..."; \
+                               TIMESTAMP=$$(date +%Y%m%d_%H%M%S); \
+                               for f in "$$BOARD_DIR"/qts/*.h; do \
+                                       [ -e "$$f" ] || continue; \
+                                       echo "[INFO] $$f -> 
$${f%.h}.h.handoff_backup.$$TIMESTAMP"; \
+                                       mv "$$f" 
"$${f%.h}.h.handoff_backup.$$TIMESTAMP"; \
+                               done; \
+                       else \
+                               echo "[INFO] Clean old BSP files..."; \
+                               if ls "$$BOARD_DIR/qts"/*.h >/dev/null 2>&1; 
then \
+                                       rm "$$BOARD_DIR/qts"/*.h; \
+                                       echo "[INFO] Removed old BSP files..."; 
\
+                               fi; \
+                       fi; \
+                       mv "$$TEMP_DIR"/*.h "$$BOARD_DIR"/qts; \
+                       echo "[INFO] SoCFPGA QTS handoff conversion complete."; 
\
+               else \
+                       echo "[WARN] BSP generator failed!"; \
+               fi;
-- 
2.34.1

Reply via email to