@@ -439,6 +439,35 @@ actions:
439439 fi
440440{{- end }}
441441
442+ # copy each spinor flash dir into its parent storage flash dirs;
443+ # storage types are read from product_info/chipid in contents.xml
444+ for spinor_dir in "${ARTIFACTDIR}"/flash_*_spinor; do
445+ contents_xml="${spinor_dir}/contents.xml"
446+ [ -f "${contents_xml}" ] || continue
447+ spinor_dir_name="$(basename "${spinor_dir}")"
448+ board="${spinor_dir_name#flash_}"; board="${board%_spinor}"
449+ xmlstarlet sel -t -m "//product_info/chipid" -v "@storage_type" -n "${contents_xml}" | \
450+ tr '[:upper:]' '[:lower:]' | sort -u | \
451+ while read -r storage; do
452+ [ "${storage}" = "spinor" ] && continue
453+ target_dir="${ARTIFACTDIR}/flash_${board}_${storage}"
454+ [ -d "${target_dir}" ] || continue
455+ cp --preserve=all --no-dereference -av "${spinor_dir}/." "${target_dir}/spinor/"
456+ efi_img=$("${RECIPEDIR}/../scripts/get-rawprogram-filename.py" efi "${target_dir}/rawprogram0.xml")
457+ rootfs_img=$("${RECIPEDIR}/../scripts/get-rawprogram-filename.py" rootfs "${target_dir}/rawprogram0.xml")
458+ # fix file_path (../->../../) then rename efi.bin/rootfs.img
459+ copied_contents="${target_dir}/spinor/contents.xml"
460+ if [ -f "${copied_contents}" ]; then
461+ xmlstarlet ed -L \
462+ -u "//*[@storage_type='${storage}'][file_name/text()='efi.bin']/file_path[text()='../']" -v "../../" \
463+ -u "//*[@storage_type='${storage}']/file_name[text()='efi.bin']" -v "${efi_img}" \
464+ -u "//*[@storage_type='${storage}'][file_name/text()='rootfs.img']/file_path[text()='../']" -v "../../" \
465+ -u "//*[@storage_type='${storage}']/file_name[text()='rootfs.img']" -v "${rootfs_img}" \
466+ " ${copied_contents}"
467+ fi
468+ done
469+ done
470+
442471 # cleanup
443472 rm -rf build
444473
0 commit comments