diff --git a/include/dts-functions.sh b/include/dts-functions.sh
index d78fe905..c8803222 100644
--- a/include/dts-functions.sh
+++ b/include/dts-functions.sh
@@ -272,324 +272,31 @@ board_config() {
tar xf "$BOARD_CONFIG_PATH.tar.gz" -C "$BOARD_CONFIG_PATH" --strip-components=1
echo "Checking if board is Dasharo compatible."
+ # Handle special cases that need preprocessing or should fail early
case "$SYSTEM_VENDOR" in
+ "To Be Filled By O.E.M.")
+ print_error "Cannot determine board vendor"
+ return 1
+ ;;
"Notebook")
- # Common settings for all Notebooks:
- CAN_USE_FLASHROM="true"
- HAVE_EC="true"
- NEED_EC_RESET="true"
- PLATFORM_SIGN_KEY="customer-keys/novacustom/novacustom-open-source-firmware-release-1.x-key.asc \
- customer-keys/novacustom/dasharo-release-0.9.x-for-novacustom-signing-key.asc"
- NEED_SMMSTORE_MIGRATION="true"
- BUCKET_DPP_HEADS="dasharo-novacustom-heads"
-
- case "$SYSTEM_MODEL" in
- "NV4XMB,ME,MZ")
- DASHARO_REL_NAME="novacustom_nv4x_tgl"
- DASHARO_REL_VER="1.5.2"
- CAN_INSTALL_BIOS="true"
- COMPATIBLE_EC_FW_VERSION="2022-10-07_c662165"
- if check_if_dasharo; then
- # if v1.5.1 or older, flash the whole bios region
- # TODO: Let DTS determine which parameters are suitable.
- # FIXME: Can we ever get rid of that? We change so much in each release,
- # that we almost always need to flash whole BIOS regions
- # because of non-backward compatible or breaking changes.
- compare_versions $DASHARO_VERSION 1.5.2
- if [ $? -eq 1 ]; then
- # For Dasharo version lesser than 1.5.2
- NEED_BOOTSPLASH_MIGRATION="true"
- FLASHROM_ADD_OPT_UPDATE_OVERRIDE="--ifd -i bios"
- fi
- fi
- ;;
- "NS50_70MU")
- DASHARO_REL_NAME="novacustom_ns5x_tgl"
- DASHARO_REL_VER="1.5.2"
- CAN_INSTALL_BIOS="true"
- COMPATIBLE_EC_FW_VERSION="2022-08-31_cbff21b"
- PROGRAMMER_EC="ite_ec:romsize=128K,autoload=disable"
- if check_if_dasharo; then
- # if v1.5.1 or older, flash the whole bios region
- # TODO: Let DTS determine which parameters are suitable.
- # FIXME: Can we ever get rid of that? We change so much in each release,
- # that we almost always need to flash whole BIOS regions
- # because of non-backward compatible or breaking changes.
- compare_versions $DASHARO_VERSION 1.5.2
- if [ $? -eq 1 ]; then
- # For Dasharo version lesser than 1.5.2
- NEED_BOOTSPLASH_MIGRATION="true"
- FLASHROM_ADD_OPT_UPDATE_OVERRIDE="--ifd -i bios"
- fi
- fi
- ;;
- "NS5x_NS7xPU")
- DASHARO_REL_NAME="novacustom_ns5x_adl"
- DASHARO_REL_VER="1.7.2"
- COMPATIBLE_EC_FW_VERSION="2022-08-31_cbff21b"
- if check_if_dasharo; then
- # if v1.7.2 or older, flash the whole bios region
- # TODO: Let DTS determine which parameters are suitable.
- # FIXME: Can we ever get rid of that? We change so much in each release,
- # that we almost always need to flash whole BIOS regions
- # because of non-backward compatible or breaking changes.
- compare_versions $DASHARO_VERSION 1.7.2
- if [ $? -eq 1 ]; then
- # For Dasharo version lesser than 1.7.2
- NEED_BOOTSPLASH_MIGRATION="true"
- FLASHROM_ADD_OPT_UPDATE_OVERRIDE="--ifd -i bios"
- fi
- fi
- ;;
- "NV4xPZ")
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
- fi
-
- HEADS_LINK_DPP="${BUCKET_DPP_HEADS}/${DASHARO_REL_NAME}/v${HEADS_REL_VER_DPP}/${DASHARO_REL_NAME}_v${HEADS_REL_VER_DPP}_heads.rom"
- if check_if_dasharo; then
- # if v1.7.2 or older, flash the whole bios region
- # TODO: Let DTS determine which parameters are suitable.
- # FIXME: Can we ever get rid of that? We change so much in each release,
- # that we almost always need to flash whole BIOS regions
- # because of non-backward compatible or breaking changes.
- compare_versions $DASHARO_VERSION 1.7.2
- if [ $? -eq 1 ]; then
- # For Dasharo version lesser than 1.7.2
- NEED_BOOTSPLASH_MIGRATION="true"
- FLASHROM_ADD_OPT_UPDATE_OVERRIDE="--ifd -i bios"
- else
- HAVE_HEADS_FW="true"
- fi
- if [ "$DASHARO_FLAVOR" == "Dasharo (coreboot+heads)" ]; then
- HAVE_HEADS_FW="true"
- fi
- fi
- ;;
- "V54x_6x_TU")
- # Dasharo 0.9.0-rc10 and higher have board model in baseboard-version
- if check_if_dasharo && compare_versions "$DASHARO_VERSION" 0.9.0-rc10; then
- BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-version)"
- elif ! $DASHARO_ECTOOL check_for_opensource_firm_mock info 2>>"$ERR_LOG_FILE"; then
+ if check_if_dasharo; then
+ BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-version)"
+ else
+ case "$SYSTEM_MODEL" in
+ "V54x_6x_TU")
ask_for_model V540TU V560TU
- else
- BOARD_MODEL=$($DASHARO_ECTOOL novacustom_check_sys_model_mock info | grep "board:" |
- sed -r 's|.*novacustom/(.*)|\1|' | awk '{print toupper($1)}')
- fi
-
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
- fi
-
- BIOS_LINK_COMM="${FW_STORE_URL}/${BIOS_PATH_COMM}"
- BIOS_LINK_COMM_CAP="${FW_STORE_URL}/${BIOS_PATH_COMM_CAP}"
- EC_LINK_COMM="${FW_STORE_URL}/${EC_PATH_COMM}"
- ;;
- "V5xTNC_TND_TNE")
- if check_if_dasharo; then
- BOARD_MODEL="$($DMIDECODE dump_var_mock -s baseboard-version)"
- else
- ask_for_model V540TNx V560TNx
- fi
-
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
- fi
-
- BIOS_LINK_COMM="${FW_STORE_URL}/${BIOS_PATH_COMM}"
- BIOS_LINK_COMM_CAP="${FW_STORE_URL}/${BIOS_PATH_COMM_CAP}"
- EC_LINK_COMM="${FW_STORE_URL}/${EC_PATH_COMM}"
- ;;
- *)
- print_error "Board model $SYSTEM_MODEL is currently not supported"
- return 1
- ;;
- esac
- BIOS_LINK_COMM=${BIOS_LINK_COMM:-"$FW_STORE_URL/$DASHARO_REL_NAME/v$DASHARO_REL_VER/${DASHARO_REL_NAME}_v${DASHARO_REL_VER}.rom"}
- EC_LINK_COMM=${EC_LINK_COMM:-"$FW_STORE_URL/$DASHARO_REL_NAME/v$DASHARO_REL_VER/${DASHARO_REL_NAME}_ec_v${DASHARO_REL_VER}.rom"}
- [ -n "${EOM_PATH_COMM_CAP}" ] && EOM_LINK_COMM_CAP="${FW_STORE_URL}/${EOM_PATH_COMM_CAP}"
- ;;
- "NovaCustom" | "ASRock Industrial")
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
- fi
-
- BIOS_LINK_COMM="${FW_STORE_URL}/${DASHARO_REL_NAME}/uefi/v${DASHARO_REL_VER}/${DASHARO_REL_NAME}_v${DASHARO_REL_VER}.rom"
- ;;
- "Micro-Star International Co., Ltd.")
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
- fi
-
- BIOS_LINK_COMM="${FW_STORE_URL}/${BIOS_PATH_COMM}"
- ;;
- "Dell Inc.")
- # Common configuration for all Dell releases:
- BUCKET_DPP="dasharo-optiplex-uefi"
- DASHARO_REL_NAME="dell_optiplex_7010_9010"
- DASHARO_REL_VER_DPP="0.1.1"
- BIOS_LINK_DPP="$BUCKET_DPP/v$DASHARO_REL_VER_DPP/${DASHARO_REL_NAME}_v$DASHARO_REL_VER_DPP.rom"
- CAN_INSTALL_BIOS="true"
- NEED_SMBIOS_MIGRATION="true"
- NEED_BLOB_TRANSMISSION="true"
- SINIT_ACM_FILENAME="SNB_IVB_SINIT_20190708_PW.bin"
- SINIT_ACM_HASH_FILENAME="${SINIT_ACM_FILENAME}.sha256"
- ACM_MIRROR_URL="https://dl.3mdeb.com/mirror/intel/acm"
- SINIT_ACM_URL="${ACM_MIRROR_URL}/${SINIT_ACM_FILENAME}"
- SINIT_ACM_HASH_URL="${ACM_MIRROR_URL}/${SINIT_ACM_HASH_FILENAME}"
- SINIT_ACM="/tmp/${SINIT_ACM_FILENAME}"
- FLASHROM_ADD_OPT_DEPLOY="--ifd -i bios"
- FLASHROM_ADD_OPT_UPDATE="--fmap -i RW_SECTION_A"
-
- case "$SYSTEM_MODEL" in
- "OptiPlex 7010")
- DBT_BIOS_UPDATE_FILENAME="/tmp/O7010A29.exe"
- DBT_BIOS_UPDATE_URL="https://dl.dell.com/FOLDER05066036M/1/O7010A29.exe"
- DBT_BIOS_UPDATE_HASH="ceb82586c67cd8d5933ac858c12e0cb52f6e0e4cb3249f964f1c0cfc06d16f52 $DBT_BIOS_UPDATE_FILENAME"
- DBT_UEFI_IMAGE="/tmp/_O7010A29.exe.extracted/65C10"
- SCH5545_FW="/tmp/_O7010A29.exe.extracted/65C10_output/pfsobject/section-7ec6c2b0-3fe3-42a0-a316-22dd0517c1e8/volume-0x50000/file-d386beb8-4b54-4e69-94f5-06091f67e0d3/section0.raw"
- ACM_BIN="/tmp/_O7010A29.exe.extracted/65C10_output/pfsobject/section-7ec6c2b0-3fe3-42a0-a316-22dd0517c1e8/volume-0x500000/file-2d27c618-7dcd-41f5-bb10-21166be7e143/object-0.raw"
- ;;
- "OptiPlex 9010")
- DBT_BIOS_UPDATE_FILENAME="/tmp/O9010A30.exe"
- DBT_BIOS_UPDATE_URL="https://dl.dell.com/FOLDER05066009M/1/O9010A30.exe"
- DBT_BIOS_UPDATE_HASH="b11952f43d0ad66f3ce79558b8c5dd43f30866158ed8348e3b2dae1bbb07701b $DBT_BIOS_UPDATE_FILENAME"
- DBT_UEFI_IMAGE="/tmp/_O9010A30.exe.extracted/65C10"
- SCH5545_FW="/tmp/_O9010A30.exe.extracted/65C10_output/pfsobject/section-7ec6c2b0-3fe3-42a0-a316-22dd0517c1e8/volume-0x50000/file-d386beb8-4b54-4e69-94f5-06091f67e0d3/section0.raw"
- ACM_BIN="/tmp/_O9010A30.exe.extracted/65C10_output/pfsobject/section-7ec6c2b0-3fe3-42a0-a316-22dd0517c1e8/volume-0x500000/file-2d27c618-7dcd-41f5-bb10-21166be7e143/object-0.raw"
- ;;
- "Precision T1650")
- # tested on Dasharo Firmware for OptiPlex 9010, will need to be
- # enabled when build for T1650 exists
- #
- # DBT_BIOS_UPDATE_FILENAME="/tmp/T1650A28.exe"
- # DBT_BIOS_UPDATE_URL="https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe"
- # DBT_BIOS_UPDATE_HASH="40a66210b8882f523885849c1d879e726dc58aa14718168b1e75f3e2caaa523b $DBT_BIOS_UPDATE_FILENAME"
- # DBT_UEFI_IMAGE="/tmp/_T1650A28.exe.extracted/65C10"
- # SCH5545_FW="/tmp/_T1650A28.exe.extracted/65C10_output/pfsobject/section-7ec6c2b0-3fe3-42a0-a316-22dd0517c1e8/volume-0x60000/file-d386beb8-4b54-4e69-94f5-06091f67e0d3/section0.raw"
- # ACM_BIN="/tmp/_T1650A28.exe.extracted/65C10_output/pfsobject/section-7ec6c2b0-3fe3-42a0-a316-22dd0517c1e8/volume-0x500000/file-2d27c618-7dcd-41f5-bb10-21166be7e143/object-0.raw"
- print_warning "Dasharo Firmware for Precision T1650 not available yet!"
- print_error "Board model $SYSTEM_MODEL is currently not supported"
- return 1
- ;;
- *)
- print_error "Board model $SYSTEM_MODEL is currently not supported"
- return 1
- ;;
- esac
- ;;
- "ASUS")
- case "$SYSTEM_MODEL" in
- "KGPE-D16")
- DASHARO_REL_NAME="asus_kgpe-d16"
- DASHARO_REL_VER="0.4.0"
- CAN_INSTALL_BIOS="true"
- case "$FLASH_CHIP_SIZE" in
- "2")
- BIOS_HASH_LINK_COMM="65e5370e9ea6b8ae7cd6cc878a031a4ff3a8f5d36830ef39656b8e5a6e37e889 $BIOS_UPDATE_FILE"
- BIOS_LINK_COMM="$FW_STORE_URL/$DASHARO_REL_NAME/v$DASHARO_REL_VER/${DASHARO_REL_NAME}_v${DASHARO_REL_VER}_vboot_notpm.rom"
- ;;
- "8")
- BIOS_HASH_LINK_COMM="da4e6217d50f2ac199dcb9a927a0bc02aa4e792ed73c8c9bac8ba74fc787dbef $BIOS_UPDATE_FILE"
- BIOS_LINK_COMM="$FW_STORE_URL/$DASHARO_REL_NAME/v$DASHARO_REL_VER/${DASHARO_REL_NAME}_v${DASHARO_REL_VER}_${FLASH_CHIP_SIZE}M_vboot_notpm.rom"
;;
- "16")
- BIOS_HASH_LINK_COMM="20055cf57185f149259706f58d5e9552a1589259c6617999c1ac7d8d3c960020 $BIOS_UPDATE_FILE"
- BIOS_LINK_COMM="$FW_STORE_URL/$DASHARO_REL_NAME/v$DASHARO_REL_VER/${DASHARO_REL_NAME}_v${DASHARO_REL_VER}_${FLASH_CHIP_SIZE}M_vboot_notpm.rom"
- ;;
- *)
- print_error "Platform uses chipset with not supported size"
- return 1
+ "V5xTNC_TND_TNE")
+ ask_for_model V540TNx V560TNx
;;
esac
- NEED_SMBIOS_MIGRATION="true"
- ;;
- *)
- print_error "Board model $SYSTEM_MODEL is currently not supported"
- return 1
- ;;
- esac
- ;;
- "PC Engines")
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
fi
-
- BIOS_LINK_DPP="${BUCKET_DPP}/v${DASHARO_REL_VER_DPP}/${DASHARO_REL_NAME}_v${DASHARO_REL_VER_DPP}.rom"
- BIOS_LINK_DPP_SEABIOS="${BUCKET_DPP_SEABIOS}/pcengines_apu2/v${DASHARO_REL_VER_DPP_SEABIOS}/${DASHARO_REL_NAME}_seabios_v${DASHARO_REL_VER_DPP_SEABIOS}.rom"
- ;;
- "HARDKERNEL")
- case "$SYSTEM_MODEL" in
- "ODROID-H4")
- if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
- return 1
- fi
- ;;
- *)
- print_error "Board model $SYSTEM_MODEL is currently not supported"
- return 1
- ;;
- esac
-
- BIOS_LINK_DPP="$BUCKET_DPP/$DASHARO_REL_NAME/v$DASHARO_REL_VER_DPP/${DASHARO_REL_NAME}_v$DASHARO_REL_VER_DPP.rom"
- # TODO: check if it really will be called "*_slimuefi_*.rom"
- BIOS_LINK_DPP_SLIMUEFI="${BUCKET_DPP_SLIMUEFI}/${DASHARO_REL_NAME}/v${DASHARO_REL_VER_DPP_SLIMUEFI}/${DASHARO_REL_NAME}_v${DASHARO_REL_VER_DPP_SLIMUEFI}_slim_bootloader_uefi.rom"
- ;;
- "QEMU" | "Emulation")
- case "$SYSTEM_MODEL" in
- *Q35*ICH9* | *q35*ich9*)
- # Update type:
- CAN_INSTALL_BIOS="true"
- # Download and versioning variables:
- DASHARO_REL_NAME_CAP="qemu_q35"
- DASHARO_REL_VER_CAP="0.2.0"
- DASHARO_SUPPORT_CAP_FROM="0.2.0"
- # TODO: wait till the binaries will be uploaded to the server.
- BIOS_LINK_COMM_CAP="${FW_STORE_URL}/${DASHARO_REL_NAME_CAP}/v${DASHARO_REL_VER_CAP}/"
- ;;
- *)
- print_error "Board model $SYSTEM_MODEL is currently not supported"
- return 1
- ;;
- esac
- ;;
- "To Be Filled By O.E.M.")
- print_error "Cannot determine board vendor"
- return 1
- ;;
- *)
- print_error "Board vendor: $SYSTEM_VENDOR is currently not supported"
- return 1
;;
esac
- # Set some default values at the end:
- [ -z "$BIOS_HASH_LINK_COMM" ] && BIOS_HASH_LINK_COMM="${BIOS_LINK_COMM}.sha256"
- [ -z "$BIOS_SIGN_LINK_COMM" ] && BIOS_SIGN_LINK_COMM="${BIOS_HASH_LINK_COMM}.sig"
- [ -z "$BIOS_HASH_LINK_DPP" ] && BIOS_HASH_LINK_DPP="${BIOS_LINK_DPP}.sha256"
- [ -z "$BIOS_SIGN_LINK_DPP" ] && BIOS_SIGN_LINK_DPP="${BIOS_HASH_LINK_DPP}.sig"
- [ -z "$BIOS_HASH_LINK_DPP_SEABIOS" ] && BIOS_HASH_LINK_DPP_SEABIOS="${BIOS_LINK_DPP_SEABIOS}.sha256"
- [ -z "$BIOS_SIGN_LINK_DPP_SEABIOS" ] && BIOS_SIGN_LINK_DPP_SEABIOS="${BIOS_HASH_LINK_DPP_SEABIOS}.sig"
- [ -z "$HEADS_HASH_LINK_DPP" ] && HEADS_HASH_LINK_DPP="${HEADS_LINK_DPP}.sha256"
- [ -z "$HEADS_SIGN_LINK_DPP" ] && HEADS_SIGN_LINK_DPP="${HEADS_HASH_LINK_DPP}.sig"
- [ -z "$BIOS_HASH_LINK_DPP_SLIMUEFI" ] && BIOS_HASH_LINK_DPP_SLIMUEFI="${BIOS_LINK_DPP_SLIMUEFI}.sha256"
- [ -z "$BIOS_SIGN_LINK_DPP_SLIMUEFI" ] && BIOS_SIGN_LINK_DPP_SLIMUEFI="${BIOS_HASH_LINK_DPP_SLIMUEFI}.sig"
- [ -z "$EC_HASH_LINK_COMM" ] && EC_HASH_LINK_COMM="${EC_LINK_COMM}.sha256"
- [ -z "$EC_SIGN_LINK_COMM" ] && EC_SIGN_LINK_COMM="${EC_HASH_LINK_COMM}.sig"
- [ -z "$EC_HASH_LINK_DPP" ] && EC_HASH_LINK_DPP="${EC_LINK_DPP}.sha256"
- [ -z "$EC_SIGN_LINK_DPP" ] && EC_SIGN_LINK_DPP="${EC_HASH_LINK_DPP}.sig"
- [ -z "$HEADS_EC_HASH_LINK_DPP" ] && HEADS_EC_HASH_LINK_DPP="${HEADS_EC_LINK_DPP}.sha256"
- [ -z "$HEADS_EC_SIGN_LINK_DPP" ] && HEADS_EC_SIGN_LINK_DPP="${HEADS_EC_HASH_LINK_DPP}.sig"
-
- # And for capsules as well:
- [ -z "$BIOS_HASH_LINK_COMM_CAP" ] && BIOS_HASH_LINK_COMM_CAP="${BIOS_LINK_COMM_CAP}.sha256"
- [ -z "$BIOS_SIGN_LINK_COMM_CAP" ] && BIOS_SIGN_LINK_COMM_CAP="${BIOS_HASH_LINK_COMM_CAP}.sig"
- [ -z "$BIOS_HASH_LINK_DPP_CAP" ] && BIOS_HASH_LINK_DPP_CAP="${BIOS_LINK_DPP_CAP}.sha256"
- [ -z "$BIOS_SIGN_LINK_DPP_CAP" ] && BIOS_SIGN_LINK_DPP_CAP="${BIOS_HASH_LINK_DPP_CAP}.sig"
- [ -z "$EC_HASH_LINK_DPP_CAP" ] && EC_HASH_LINK_DPP_CAP="${EC_LINK_DPP_CAP}.sha256"
- [ -z "$EC_SIGN_LINK_DPP_CAP" ] && EC_SIGN_LINK_DPP_CAP="${EC_HASH_LINK_DPP_CAP}.sig"
- [ -z "$EOM_HASH_LINK_COMM_CAP" ] && EOM_HASH_LINK_COMM_CAP="${EOM_LINK_COMM_CAP}.sha256"
- [ -z "$EOM_SIGN_LINK_COMM_CAP" ] && EOM_SIGN_LINK_COMM_CAP="${EOM_HASH_LINK_COMM_CAP}.sig"
+ if ! parse_and_verify_config "$SYSTEM_VENDOR" "$SYSTEM_MODEL" "$BOARD_MODEL"; then
+ return 1
+ fi
rm -rf "$BOARD_CONFIG_PATH"
}
@@ -1784,8 +1491,13 @@ parse_config() {
local system_model="$2"
local board_model="$3"
# The JSONs names in configs directory the same as values in vendor variable
- # but lowercase and spaces replaced with _
- json_file="$BOARD_CONFIG_PATH/configs/$(echo "$vendor" | tr '[:upper:]' '[:lower:]' | sed 's/ /_/g').json"
+ # but lowercase. Spaces and '/' are replaced with _.
+ json_filename="$(echo "$vendor" | tr '[:upper:]' '[:lower:]' | sed -r 's@ |/@_@g').json"
+ json_file="$BOARD_CONFIG_PATH/configs/${json_filename}"
+ # JSON doesn't exist, file isn't JSON or JSON is empty
+ if ! jq -e '.[]' "${json_file}" >/dev/null 2>>"$ERR_LOG_FILE"; then
+ return 1
+ fi
# Parse common variables for vendor
# This finds all keys other than `models` and maps them to bash variables.
# The variable names are converted to lowercase.
@@ -1806,10 +1518,9 @@ parse_config() {
# shellcheck disable=SC2046
output=$(jq -r 'to_entries[] | select(.key != "models") | "\(.key | ascii_upcase)=\"\(.value|tostring)\""' $json_file 2>>"$ERR_LOG_FILE")
- if [ -z "$output" ]; then
- return 1
+ if [ -n "$output" ]; then
+ eval "$output"
fi
- eval "$output"
# Parse system model-specific variables
# This finds all keys in `models[$SYSTEM_MODEL]` other than `board_models`
@@ -1818,16 +1529,12 @@ parse_config() {
# --arg m $(echo "$system_model" ...) stores the lowercase value of
# $system_model in the "$m" jq variable. That variable is then used to access
# models[$system_model] (.models[$m])
-
- # Disabling warning "Quote this to prevent word splitting" to avoid mixing
- # quotes
- # shellcheck disable=SC2046
output=$(jq -r --arg m "$(echo "$system_model" | tr '[:upper:]' '[:lower:]')" '
- .models[$m]
- | to_entries[]
- | select(.key != "board_models")
- | "\(.key | ascii_upcase)=\"\(.value|tostring)\""
-' $json_file 2>>"$ERR_LOG_FILE")
+ .models[$m]
+ | to_entries[]
+ | select(.key != "board_models")
+ | "\(.key | ascii_upcase)=\"\(.value|tostring)\""
+ ' $json_file 2>>"$ERR_LOG_FILE")
if [ -z "$output" ]; then
return 2
fi
@@ -1840,26 +1547,66 @@ parse_config() {
# If .models[$m].board_models[$b] does not exist, the eval will not
# create any new variables
- # shellcheck disable=SC2046
has_key=$(jq -r --arg m "$(echo "$system_model" | tr '[:upper:]' '[:lower:]')" '
.models[$m] | has("board_models")
' $json_file)
if [ "$has_key" == "true" ]; then
- # shellcheck disable=SC2046
output=$(jq -r --arg m "$(echo "$system_model" | tr '[:upper:]' '[:lower:]')" --arg b "$(echo "$board_model" | tr '[:upper:]' '[:lower:]')" '
- .models[$m].board_models[$b]
- | to_entries[]
- | "\(.key | ascii_upcase)=\"\(.value|tostring)\""
- ' $json_file 2>>"$ERR_LOG_FILE")
+ .models[$m].board_models[$b]
+ | to_entries[]
+ | "\(.key | ascii_upcase)=\"\(.value|tostring)\""
+ ' $json_file 2>>"$ERR_LOG_FILE")
if [ -z "$output" ]; then
return 3
fi
eval "$output"
fi
+
+ eval_links
+
return 0
}
+# This is a helper function for parse_config(). It is used to evaluate links.
+# The reason is we cannot store full link in config as sometimes we need to use
+# local servers for development.
+eval_links() {
+ # evaluate BIOSes and ECs
+ [ -n "${BIOS_PATH_COMM}" ] && BIOS_LINK_COMM="${FW_STORE_URL}/${BIOS_PATH_COMM}"
+ [ -n "${EC_PATH_COMM}" ] && EC_LINK_COMM="${FW_STORE_URL}/${EC_PATH_COMM}"
+ [ -n "${BIOS_PATH_COMM_CAP}" ] && BIOS_LINK_COMM_CAP="${FW_STORE_URL}/${BIOS_PATH_COMM_CAP}"
+ [ -n "${EOM_PATH_COMM_CAP}" ] && EOM_LINK_COMM_CAP="${FW_STORE_URL}/${EOM_PATH_COMM_CAP}"
+
+ # Define signatures and hashes for BIOS and EC
+ [ -z "$BIOS_HASH_LINK_COMM" ] && BIOS_HASH_LINK_COMM="${BIOS_LINK_COMM}.sha256"
+ [ -z "$BIOS_SIGN_LINK_COMM" ] && BIOS_SIGN_LINK_COMM="${BIOS_HASH_LINK_COMM}.sig"
+ [ -z "$BIOS_HASH_LINK_DPP" ] && BIOS_HASH_LINK_DPP="${BIOS_LINK_DPP}.sha256"
+ [ -z "$BIOS_SIGN_LINK_DPP" ] && BIOS_SIGN_LINK_DPP="${BIOS_HASH_LINK_DPP}.sig"
+ [ -z "$BIOS_HASH_LINK_DPP_SEABIOS" ] && BIOS_HASH_LINK_DPP_SEABIOS="${BIOS_LINK_DPP_SEABIOS}.sha256"
+ [ -z "$BIOS_SIGN_LINK_DPP_SEABIOS" ] && BIOS_SIGN_LINK_DPP_SEABIOS="${BIOS_HASH_LINK_DPP_SEABIOS}.sig"
+ [ -z "$HEADS_HASH_LINK_DPP" ] && HEADS_HASH_LINK_DPP="${HEADS_LINK_DPP}.sha256"
+ [ -z "$HEADS_SIGN_LINK_DPP" ] && HEADS_SIGN_LINK_DPP="${HEADS_HASH_LINK_DPP}.sig"
+ [ -z "$BIOS_HASH_LINK_DPP_SLIMUEFI" ] && BIOS_HASH_LINK_DPP_SLIMUEFI="${BIOS_LINK_DPP_SLIMUEFI}.sha256"
+ [ -z "$BIOS_SIGN_LINK_DPP_SLIMUEFI" ] && BIOS_SIGN_LINK_DPP_SLIMUEFI="${BIOS_HASH_LINK_DPP_SLIMUEFI}.sig"
+ [ -z "$EC_HASH_LINK_COMM" ] && EC_HASH_LINK_COMM="${EC_LINK_COMM}.sha256"
+ [ -z "$EC_SIGN_LINK_COMM" ] && EC_SIGN_LINK_COMM="${EC_HASH_LINK_COMM}.sig"
+ [ -z "$EC_HASH_LINK_DPP" ] && EC_HASH_LINK_DPP="${EC_LINK_DPP}.sha256"
+ [ -z "$EC_SIGN_LINK_DPP" ] && EC_SIGN_LINK_DPP="${EC_HASH_LINK_DPP}.sig"
+ [ -z "$HEADS_EC_HASH_LINK_DPP" ] && HEADS_EC_HASH_LINK_DPP="${HEADS_EC_LINK_DPP}.sha256"
+ [ -z "$HEADS_EC_SIGN_LINK_DPP" ] && HEADS_EC_SIGN_LINK_DPP="${HEADS_EC_HASH_LINK_DPP}.sig"
+
+ # Same as above but for capsules
+ [ -z "$BIOS_HASH_LINK_COMM_CAP" ] && BIOS_HASH_LINK_COMM_CAP="${BIOS_LINK_COMM_CAP}.sha256"
+ [ -z "$BIOS_SIGN_LINK_COMM_CAP" ] && BIOS_SIGN_LINK_COMM_CAP="${BIOS_HASH_LINK_COMM_CAP}.sig"
+ [ -z "$BIOS_HASH_LINK_DPP_CAP" ] && BIOS_HASH_LINK_DPP_CAP="${BIOS_LINK_DPP_CAP}.sha256"
+ [ -z "$BIOS_SIGN_LINK_DPP_CAP" ] && BIOS_SIGN_LINK_DPP_CAP="${BIOS_HASH_LINK_DPP_CAP}.sig"
+ [ -z "$EC_HASH_LINK_DPP_CAP" ] && EC_HASH_LINK_DPP_CAP="${EC_LINK_DPP_CAP}.sha256"
+ [ -z "$EC_SIGN_LINK_DPP_CAP" ] && EC_SIGN_LINK_DPP_CAP="${EC_HASH_LINK_DPP_CAP}.sig"
+ [ -z "$EOM_HASH_LINK_COMM_CAP" ] && EOM_HASH_LINK_COMM_CAP="${EOM_LINK_COMM_CAP}.sha256"
+ [ -z "$EOM_SIGN_LINK_COMM_CAP" ] && EOM_SIGN_LINK_COMM_CAP="${EOM_HASH_LINK_COMM_CAP}.sig"
+}
+
fetch_fw() {
# fetch_fw
# Used do download fw from remote ${FW_STORE_URL}/ to local
diff --git a/include/hal/common-mock-func.sh b/include/hal/common-mock-func.sh
index 68493153..b88d1b5a 100644
--- a/include/hal/common-mock-func.sh
+++ b/include/hal/common-mock-func.sh
@@ -770,3 +770,18 @@ mei-amt-check_common_mock() {
return 1
fi
}
+
+################################################################################
+# amdtool
+################################################################################
+
+amdtool_on_amd_mock() {
+ # lowercase
+ local cpu="${TEST_CPU_VERSION,,}"
+
+ if [[ "$cpu" == *amd* ||
+ "$cpu" == *"advanced micro devices"* ]]; then
+ return 0
+ fi
+ return 1
+}
diff --git a/reports/dasharo-hcl-report.sh b/reports/dasharo-hcl-report.sh
index 3f008912..cd9b575a 100644
--- a/reports/dasharo-hcl-report.sh
+++ b/reports/dasharo-hcl-report.sh
@@ -145,7 +145,7 @@ update_result "Intel configuration registers" logs/inteltool.err.log
progress_bar_update
# echo "Dumping AMD configuration registers..."
-$AMDTOOL -a >logs/amdtool.log 2>logs/amdtool.err.log
+$AMDTOOL on_amd_mock -a >logs/amdtool.log 2>logs/amdtool.err.log
update_result "AMD configuration registers" logs/amdtool.err.log
progress_bar_update