檢查Tcl執行階段並對有上限的指令碼求值
讀取Tcl執行階段描述元與已簽署的就緒記錄,然後對來自stdin的一個有上限的指令碼求值,並檢查其回條。
在Linux上使用Altifigence CLI 0.1.9,讀取已安裝的Tcl執行階段描述元,確認已簽署的執行階段就緒記錄,並透過已安裝的執行器對一個有上限的Tcl指令碼求值。
讀取執行階段描述元
請以一般使用者身分執行命令。每個查詢都會根據封裝的alti-tcl描述元回應並輸出JSON。
alti tcl capabilities
alti tcl environment
alti tcl commandsalti tcl commands會列出已註冊的產品命令及每個命令的可用性。請將其輸出與您的指令碼一併保留。
檢查已簽署的執行階段
讀取已簽署的執行階段就緒記錄。此查詢不會執行Tcl。
set -euo pipefail
WORK="$(mktemp -d)"
alti tcl readiness > "$WORK/readiness.json"
jq '{schemaVersion, installedQualified, cryptographicVerifierLinked, blocker}' \
"$WORK/readiness.json"對指令碼求值之前,請確認結束狀態為0且具有下列值:
{
"schemaVersion": "altifigence.eda-tcl-runtime-component-readiness.v1",
"installedQualified": true,
"cryptographicVerifierLinked": true,
"blocker": null
}對指令碼求值
透過stdin傳入指令碼並儲存回條:
printf '%s' 'expr {6 * 7}' | alti --json tcl evaluate > "$WORK/tcl-evaluate.json"
jq '{schema, status, inputBytes, result, resultBytes, resultArtifactId, failure}' \
"$WORK/tcl-evaluate.json"請確認結束狀態為0。所選回條欄位如下:
{
"schema": "altifigence.cli.tcl-evaluation.v1",
"status": "succeeded",
"inputBytes": 12,
"result": "42",
"resultBytes": 2,
"resultArtifactId": "tcl-evaluation",
"failure": null
}回條還包含inputSha256、jobSha256、resultArtifactSha256與provenance。在provenance中,resolved_placement為local,resolved_device_class為cpu,backend_id為embedded-tcl。
未使用--json時,命令會將結果寫入stdout,並將一行摘要寫入stderr:
printf '%s' 'expr {6 * 7}' | alti tcl evaluate42
[succeeded] tcl.evaluate input=12 sha256=e96de7a3a920d7cd5aafa8c86630028d97a0fb0dc260da2f089de12ea4214a6f artifact=tcl-evaluation每次執行會讀取一個至多4194304位元組的指令碼。CLI會將其寫入/tmp之下的私有工作區,以1個CPU槽位、536870912位元組的記憶體與5000毫秒的實際時間上限,作為本機CPU工作執行,再從執行器讀回結果並移除該工作區。
處理求值失敗
使用--json時,請讀取回條中的failure.code與failure.message。未使用時,stderr會顯示Tcl evaluation failed:,後接代碼。
TCL_INPUT_EMPTY搭配Tcl input must not be empty.會以結束狀態2結束。請透過管線傳入非空的指令碼,然後再次執行命令。
TCL_INPUT_TOO_LARGE搭配Tcl input exceeds the 4194304-byte limit.會以結束狀態2結束。請讓指令碼維持在4194304位元組以內。
status為failed、failure.code為eda-tcl.local-runner.unsupported-command且訊息為local Tcl evaluation failed within the requested boundary時,會以結束狀態1結束。對於產品命令,請從alti tcl commands選擇availability為available的項目,例如::alti::echo或::alti::capabilities。
TCL_INSTALLED_RUNNER_UNAVAILABLE搭配The installed qualified Tcl runner is unavailable.會以結束狀態127結束。請執行0.1.9啟動程式所安裝的alti,然後再次檢查alti tcl readiness。