Skip to content

Commit c15361a

Browse files
committed
jsoninfo: add inventory-artifacts cli, which 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
1 parent b202541 commit c15361a

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

lib/functions/cli/cli-jsoninfo.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ function cli_json_info_run() {
1717

1818
prep_conf_main_minimal_ni
1919

20+
# shellcheck disable=SC2317
2021
function json_info_logged() { # logging wrapper
2122
LOG_SECTION="json_info" do_with_logging json_info_only
2223
}
2324

25+
# shellcheck disable=SC2317
2426
function json_info_only() {
2527
prepare_python_and_pip # requires HOSTRELEASE
2628

@@ -113,6 +115,8 @@ function cli_json_info_run() {
113115
declare IMAGE_INFO_CSV_FILE="${BASE_INFO_OUTPUT_DIR}/image-info.csv"
114116
declare INVENTORY_BOARDS_CSV_FILE="${BASE_INFO_OUTPUT_DIR}/boards-inventory.csv"
115117
declare REDUCED_ARTIFACTS_FILE="${BASE_INFO_OUTPUT_DIR}/artifacts-reduced.json"
118+
declare REDUCED_KERNELS_FILE="${BASE_INFO_OUTPUT_DIR}/kernels.ndjson"
119+
declare REDUCED_UBOOTS_FILE="${BASE_INFO_OUTPUT_DIR}/uboots.ndjson"
116120
declare ARTIFACTS_INFO_FILE="${BASE_INFO_OUTPUT_DIR}/artifacts-info.json"
117121
declare ARTIFACTS_INFO_UPTODATE_FILE="${BASE_INFO_OUTPUT_DIR}/artifacts-info-uptodate.json"
118122
declare OUTDATED_ARTIFACTS_IMAGES_FILE="${BASE_INFO_OUTPUT_DIR}/outdated-artifacts-images.json"
@@ -199,6 +203,17 @@ function cli_json_info_run() {
199203
if [[ ! -f "${REDUCED_ARTIFACTS_FILE}" ]]; then
200204
display_alert "Reducing info into artifacts" "artifact-reducer" "info"
201205
run_host_command_logged "${PYTHON3_VARS[@]}" "${PYTHON3_INFO[BIN]}" "${INFO_TOOLS_DIR}"/artifact-reducer.py "${IMAGE_INFO_FILE}" ">" "${REDUCED_ARTIFACTS_FILE}"
206+
207+
# Simple jq to get reduced kernels, with board and branch coordinates and number of images for each; NDJSON (newline-delimited JSON) format.
208+
jq -c '.[] | select(.artifact_name == "kernel") | {"vars": .original_inputs.vars,"kernel":.inputs.LINUXFAMILY,"needed_by":.needed_by} | {"BOARD":.vars.BOARD,"BRANCH":.vars.BRANCH,"kernel":.kernel,"needed_by":.needed_by}' < "${REDUCED_ARTIFACTS_FILE}" > "${REDUCED_KERNELS_FILE}"
209+
210+
# Similar, but for u-boot's.
211+
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}"
212+
fi
213+
214+
if [[ "${ARMBIAN_COMMAND}" == "inventory-artifacts" ]]; then
215+
display_alert "Done with" "inventory-artifacts" "info"
216+
return 0
202217
fi
203218

204219
# The artifact info extractor.

lib/functions/cli/commands.sh

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,16 @@ function armbian_register_commands() {
2727
["config-dump-json"]="config_dump_json" # implemented in cli_config_dump_json_pre_run and cli_config_dump_json_run
2828
["config-dump-no-json"]="config_dump_json" # implemented in cli_config_dump_json_pre_run and cli_config_dump_json_run
2929

30-
["inventory"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
31-
["targets"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
32-
["targets-dashboard"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
33-
["inventory-boards"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
34-
["targets-composed"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
35-
["debs-to-repo-json"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
36-
["gha-matrix"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
37-
["gha-workflow"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
38-
["gha-template"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
30+
["inventory"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
31+
["targets"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
32+
["targets-dashboard"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
33+
["inventory-boards"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
34+
["inventory-artifacts"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
35+
["targets-composed"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
36+
["debs-to-repo-json"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
37+
["gha-matrix"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
38+
["gha-workflow"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
39+
["gha-template"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run
3940

4041
# These probably should be in their own separate CLI commands file, but for now they're together in jsoninfo.
4142
["debs-to-repo-download"]="json_info" # implemented in cli_json_info_pre_run and cli_json_info_run

0 commit comments

Comments
 (0)