mirror of https://github.com/armbian/build.git
jsoninfo: introduce `inventory-artifacts` cli
- stops after artifacts-reduced and adds kernels.ndjson and uboots.njdson via jq - if one runs `./compile.sh inventory-artifacts` we shall get: - `output/info/kernels.ndjson`: one line for each kernel build - `output/info/uboots.ndjson`: one line for each u-boot build - this is meant as base for other tooling that acts "for each kernel" or "for each u-boot" such as patch/config rewrites, etc - cli-jsoninfo: better kernels.ndjson; new kernels-duplicate-config.json - so we can detect mistakes ref LINUXCONFIG - maybe one day the "Rewrite Kernel Config" GHA can re-use kernels.ndjson - previous commit introduced targets-all-kernels.yaml, so one can run - `./compile.sh inventory-artifacts TARGETS_TEMPLATE=targets-all-kernels.yaml`
This commit is contained in:
parent
f236d317a3
commit
d66aaf8449
|
|
@ -17,10 +17,12 @@ function cli_json_info_run() {
|
|||
|
||||
prep_conf_main_minimal_ni
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
function json_info_logged() { # logging wrapper
|
||||
LOG_SECTION="json_info" do_with_logging json_info_only
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
function json_info_only() {
|
||||
prepare_python_and_pip # requires HOSTRELEASE
|
||||
|
||||
|
|
@ -113,6 +115,9 @@ function cli_json_info_run() {
|
|||
declare IMAGE_INFO_CSV_FILE="${BASE_INFO_OUTPUT_DIR}/image-info.csv"
|
||||
declare INVENTORY_BOARDS_CSV_FILE="${BASE_INFO_OUTPUT_DIR}/boards-inventory.csv"
|
||||
declare REDUCED_ARTIFACTS_FILE="${BASE_INFO_OUTPUT_DIR}/artifacts-reduced.json"
|
||||
declare REDUCED_KERNELS_FILE="${BASE_INFO_OUTPUT_DIR}/kernels.ndjson"
|
||||
declare REDUCED_KERNELS_DUPLICATE_LINUXCONFIG_FILE="${BASE_INFO_OUTPUT_DIR}/kernels-duplicate-config.json"
|
||||
declare REDUCED_UBOOTS_FILE="${BASE_INFO_OUTPUT_DIR}/uboots.ndjson"
|
||||
declare ARTIFACTS_INFO_FILE="${BASE_INFO_OUTPUT_DIR}/artifacts-info.json"
|
||||
declare ARTIFACTS_INFO_UPTODATE_FILE="${BASE_INFO_OUTPUT_DIR}/artifacts-info-uptodate.json"
|
||||
declare OUTDATED_ARTIFACTS_IMAGES_FILE="${BASE_INFO_OUTPUT_DIR}/outdated-artifacts-images.json"
|
||||
|
|
@ -199,6 +204,29 @@ function cli_json_info_run() {
|
|||
if [[ ! -f "${REDUCED_ARTIFACTS_FILE}" ]]; then
|
||||
display_alert "Reducing info into artifacts" "artifact-reducer" "info"
|
||||
run_host_command_logged "${PYTHON3_VARS[@]}" "${PYTHON3_INFO[BIN]}" "${INFO_TOOLS_DIR}"/artifact-reducer.py "${IMAGE_INFO_FILE}" ">" "${REDUCED_ARTIFACTS_FILE}"
|
||||
|
||||
# Simple jq to get reduced kernels, with board and branch coordinates and number of images for each; NDJSON (newline-delimited JSON) format.
|
||||
jq -c '.[] | select(.artifact_name == "kernel") | {"vars": .original_inputs.vars,"kernel":.inputs.LINUXFAMILY,"needed_by":.needed_by,"ARMBIAN_KERNEL_DEB_NAME":.inputs.ARMBIAN_KERNEL_DEB_NAME,"LINUXCONFIG":.inputs.LINUXCONFIG,"KERNELSOURCE":.inputs.KERNELSOURCE,"KERNELBRANCH":.inputs.KERNELBRANCH} | {"BOARD":.vars.BOARD,"BRANCH":.vars.BRANCH,"kernel":.kernel,"needed_by":.needed_by,"ARMBIAN_KERNEL_DEB_NAME":.ARMBIAN_KERNEL_DEB_NAME,"LINUXCONFIG":.LINUXCONFIG,"KERNELSOURCE":.KERNELSOURCE,"KERNELBRANCH":.KERNELBRANCH}' < "${REDUCED_ARTIFACTS_FILE}" > "${REDUCED_KERNELS_FILE}"
|
||||
|
||||
# Similar, but for u-boot's.
|
||||
jq -c '.[] | select(.artifact_name == "uboot") | {"vars": .original_inputs.vars,"needed_by":.needed_by} | {"BOARD":.vars.BOARD,"BRANCH":.vars.BRANCH,"needed_by":.needed_by}' < "${REDUCED_ARTIFACTS_FILE}" > "${REDUCED_UBOOTS_FILE}"
|
||||
|
||||
# Kernels: find duplicate LINUXCONFIG's across the kernels, which is a mistake. Each LINUXFAMILY should have its own LINUXCONFIG, otherwise rewrites will go insane.
|
||||
display_alert "Checking for duplicate LINUXCONFIG's across kernels" "kernel-dup-linuxconfig-check" "info"
|
||||
jq -s 'to_entries | map(.value) | group_by(.LINUXCONFIG) | map(select(length > 1)) | map({LINUXCONFIG: .[0].LINUXCONFIG,duplicates: map({BOARD, ARMBIAN_KERNEL_DEB_NAME, BRANCH, KERNELSOURCE, KERNELBRANCH})})' "${REDUCED_KERNELS_FILE}" > "${REDUCED_KERNELS_DUPLICATE_LINUXCONFIG_FILE}"
|
||||
|
||||
# if "${REDUCED_KERNELS_DUPLICATE_LINUXCONFIG_FILE}" is larger than 3 bytes, we have duplicates; spit an error (don't exit)
|
||||
if [[ $(stat -c%s "${REDUCED_KERNELS_DUPLICATE_LINUXCONFIG_FILE}") -gt 3 ]]; then
|
||||
display_alert "Duplicate LINUXCONFIG's found!" "See ${REDUCED_KERNELS_DUPLICATE_LINUXCONFIG_FILE} for details" "err"
|
||||
run_host_command_logged jq -C '.' "${REDUCED_KERNELS_DUPLICATE_LINUXCONFIG_FILE}"
|
||||
else
|
||||
display_alert "No duplicate LINUXCONFIG's found" "all good" "info"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${ARMBIAN_COMMAND}" == "inventory-artifacts" ]]; then
|
||||
display_alert "Done with" "inventory-artifacts" "info"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# The artifact info extractor.
|
||||
|
|
|
|||
|
|
@ -27,15 +27,16 @@ function armbian_register_commands() {
|
|||
["config-dump-json"]="config_dump_json" # implemented in cli_config_dump_json_pre_run and cli_config_dump_json_run
|
||||
["config-dump-no-json"]="config_dump_json" # implemented in cli_config_dump_json_pre_run and cli_config_dump_json_run
|
||||
|
||||
["inventory"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["targets"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["targets-dashboard"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["inventory-boards"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["targets-composed"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["debs-to-repo-json"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["gha-matrix"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["gha-workflow"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["gha-template"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["inventory"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["targets"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["targets-dashboard"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["inventory-boards"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["inventory-artifacts"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["targets-composed"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["debs-to-repo-json"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["gha-matrix"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["gha-workflow"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
["gha-template"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
|
||||
# These probably should be in their own separate CLI commands file, but for now they're together in jsoninfo.
|
||||
["debs-to-repo-download"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
|
||||
|
|
@ -118,6 +119,7 @@ function armbian_register_commands() {
|
|||
|
||||
# inventory
|
||||
["inventory-boards"]="TARGETS_FILE='something_that_does_not_exist_so_defaults_are_used'"
|
||||
["inventory-artifacts"]="TARGETS_FILE='something_that_does_not_exist_so_defaults_are_used'"
|
||||
|
||||
# patching
|
||||
["rewrite-kernel-patches"]="REWRITE_PATCHES='yes'" # rewrite the patches after round-tripping to git: "rebase patches"
|
||||
|
|
|
|||
Loading…
Reference in New Issue