{"basehash":"4480d1cb75f4be8aed8779caae0a026ed6cf9671849a738139842ba7910e7fff","basehash_ignore_vars":{"_set_object":["BBPATH","BBSERVER","BB_CURRENTTASK","BB_HASHSERVE","BB_LIMITEDDEPS","BB_TASKHASH","BB_UNIHASH","BB_WORKERCONTEXT","BUILDHISTORY_DIR","BUILD_ARCH","CCACHE","CCACHE_DIR","CCACHE_NOHASHDIR","CCACHE_TOP_DIR","COREBASE","DEPLOY_DIR","DL_DIR","EXTERNAL_TOOLCHAIN","FILE","FILESEXTRAPATHS","FILESPATH","FILE_DIRNAME","GIT_CEILING_DIRECTORIES","HOME","LICENSE_PATH","LOGNAME","OMP_NUM_THREADS","PARALLEL_MAKE","PATH","PKGDATA_DIR","PLNX_SCRIPTS_PATH","PRSERV_DUMPDIR","PRSERV_DUMPFILE","PRSERV_HOST","PRSERV_LOCKDOWN","PSEUDO_IGNORE_PATHS","PWD","RUST_BUILD_SYS","RUST_HOST_SYS","RUST_TARGET_SYS","SDKPKGSUFFIX","SHELL","SOURCE_DATE_EPOCH","SSTATE_DIR","SSTATE_HASHEQUIV_METHOD","SSTATE_HASHEQUIV_OWNER","SSTATE_HASHEQUIV_REPORT_TASKDATA","SSTATE_PKGARCH","STAGING_DIR_HOST","STAGING_DIR_TARGET","STAMPCLEAN","STAMPS_DIR","THISDIR","TMPDIR","USER","WARN_QA","WORKDIR","extend_recipe_sysroot"]},"file_checksum_values":[],"gendeps":{"CAPSULE_META_OUTPUT":{"_set_object":[]},"CAPSULE_META_TEMPLATE":{"_set_object":[]},"PRODUCT_GUID":{"_set_object":[]},"PRODUCT_NAME":{"_set_object":[]},"PRODUCT_URL":{"_set_object":[]},"UEFI_CAB_DEVELOPER_NAME":{"_set_object":[]},"UEFI_CAB_FW_DESCRIPTION":{"_set_object":["PRODUCT_NAME"]},"UEFI_CAB_FW_NAME":{"_set_object":["PRODUCT_NAME"]},"UEFI_CAB_FW_SUMMARY":{"_set_object":[]},"UEFI_CAB_ID":{"_set_object":["PRODUCT_NAME"]},"UEFI_CAB_RELEASE_DESCRIPTION":{"_set_object":[]},"UEFI_CAB_UPDATE_PROTOCOL":{"_set_object":[]},"VER_FORMAT":{"_set_object":[]},"VER_MAJOR":{"_set_object":[]},"VER_MINOR":{"_set_object":[]},"VER_STRING":{"_set_object":["VER_MAJOR","VER_MINOR"]}},"runtaskdeps":["uefi-capsule:do_compile"],"runtaskhashes":{"uefi-capsule:do_compile":"e141e1e35ba55fa585503c2343316b9d8908b36f4236ec67d37babffabf674e3"},"task":"do_generate_metainfo","taskdeps":{"_set_object":["CAPSULE_META_OUTPUT","CAPSULE_META_TEMPLATE","PRODUCT_GUID","PRODUCT_NAME","PRODUCT_URL","UEFI_CAB_DEVELOPER_NAME","UEFI_CAB_FW_DESCRIPTION","UEFI_CAB_FW_NAME","UEFI_CAB_FW_SUMMARY","UEFI_CAB_ID","UEFI_CAB_RELEASE_DESCRIPTION","UEFI_CAB_UPDATE_PROTOCOL","VER_FORMAT","VER_MAJOR","VER_MINOR","VER_STRING"]},"taskhash":"a0c72d530cd1e2afa37805b391862a97be367a50775c4c0d77303927c3114688","taskhash_ignore_tasks":null,"unihash":"a0c72d530cd1e2afa37805b391862a97be367a50775c4c0d77303927c3114688","varvals":{"CAPSULE_META_OUTPUT":"${WORKDIR}/firmware.metainfo.xml","CAPSULE_META_TEMPLATE":"${WORKDIR}/firmware.metainfo.xml.in","PRODUCT_GUID":"a1f0d8c9-b3a7-4e09-9f25-7c9823b8a6f2","PRODUCT_NAME":"VEK280","PRODUCT_URL":"https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal.html","UEFI_CAB_DEVELOPER_NAME":"AMD","UEFI_CAB_FW_DESCRIPTION":"UEFI capsule update for ${PRODUCT_NAME} boot firmware.","UEFI_CAB_FW_NAME":"AMD EDF ${PRODUCT_NAME} Boot Firmware","UEFI_CAB_FW_SUMMARY":"Boot Firmware Update","UEFI_CAB_ID":"com.amd.edf.${@''.join(c.lower() for c in d.getVar('PRODUCT_NAME') if c.isalnum())}.bootfirmware","UEFI_CAB_RELEASE_DESCRIPTION":"Boot firmware update.","UEFI_CAB_UPDATE_PROTOCOL":"org.uefi.capsule","VER_FORMAT":"pair","VER_MAJOR":"1","VER_MINOR":"0","VER_STRING":"${VER_MAJOR}.${VER_MINOR}","do_generate_metainfo":"    \"\"\"Generate AppStream metainfo XML from template.\n\n    Reads the template, computes firmware checksum, expands variables,\n    and validates the result against AppStream specification.\n    \"\"\"\n    import hashlib\n    import subprocess\n    from pathlib import Path\n\n    firmware = Path(d.getVar(\"WORKDIR\")) / \"firmware.bin\"\n    checksum = hashlib.sha256(firmware.read_bytes()).hexdigest()\n    d.setVar(\"FW_CHECKSUM\", checksum)\n\n    template_path = Path(d.getVar(\"CAPSULE_META_TEMPLATE\"))\n    output_path = Path(d.getVar(\"CAPSULE_META_OUTPUT\"))\n    output_path.write_text(d.expand(template_path.read_text(encoding=\"utf-8\")), encoding=\"utf-8\")\n\n    # Validate metainfo against AppStream spec before packaging\n    result = subprocess.run(\n        [\"appstreamcli\", \"validate\", \"--pedantic\", str(output_path)],\n        capture_output=True, text=True\n    )\n    if result.returncode != 0:\n        output = result.stdout.strip() or result.stderr.strip()\n        bb.warn(\"AppStream validation issues (cabinet may not pass LVFS checks):\\n%s\" % output)\n"}}