mirror of
https://github.com/armbian/build.git
synced 2025-09-19 20:51:12 +02:00
> How to use: > > `./compile.sh inventory` - does just the board inventory; look for output in `output/info` > > `./compile.sh targets-dashboard` - does inventory, targets compositing, and images info; look for output in `output/info`, read the instructions output by the command if you want to load the OpenSearch dashboards. > > `./compile.sh targets` - does the full targets compositing and artifacts, look for output in `output/info` > > If you don't have a `userpatches/targets.yaml`, _one will be provided for you_ defaulting to Jammy minimal CLI > and Jammy xfce desktop, for all boards in all branches. You can pass filters via `TARGETS_FILTER_INCLUDE=...` to narrow. > - board JSON inventory: - more generic regex parsing of variables from board files: - all top-level (non-indented) variables are parsed and included in the JSON board inventory - this allows us to add new variables to the board files without having to update the parser - variables can be bare, `export` or `declare -g`, but **_must_ be quoted** (single or double) and UPPER_CASE - some special treatment for certain variables: - `KERNEL_TARGET` is parsed as a _comma-separated_ list of valid BRANCH'es - `BOARD_MAINTAINER` is parsed as _space-separated_ list of valid maintainer GH usernames as `BOARD_MAINTAINERS: [...]` in the JSON - script complains if `BOARD_MAINTAINER` is not set in core boards. Empty is still allowed. - `HAS_VIDEO_OUTPUT="no"` causes `BOARD_HAS_VIDEO: false` in the JSON (for desktop-only inventorying, see below) - introduce `not-eos-with-video` in `items-from-inventory` at the targets compositor - the same as `not-eos`, but with added `BOARD_HAS_VIDEO: true` filter, see above - introduce `TARGETS_FILTER_INCLUDE` for targets compositor - this filters the targets _after_ compositing (but before getting image info), based on the board inventory data - it's a comma-separated list of `key:value` pairs, which are OR-ed together - new virtual info `BOARD_SLASH_BRANCH` post-compositing inventory for filtering of a specific BOARD/BRANCH combo (e.g. `odroidhc4/edge`) - some interesting possible filters: - `TARGETS_FILTER_INCLUDE="BOARD:odroidhc4"`: _only_ build a single board, all branches. JIRA [AR-1806] - `TARGETS_FILTER_INCLUDE="BOARD_SLASH_BRANCH:odroidhc4/current"`: _only_ build a single board/branch combo - `TARGETS_FILTER_INCLUDE="BOARD:odroidhc4,BOARD:odroidn2"`: _only_ build _two_ boards, all branches. - `TARGETS_FILTER_INCLUDE="BOARD_MAINTAINERS:rpardini"`: build all boards and branches where rpardini is a maintainer - `TARGETS_FILTER_INCLUDE="BOARDFAMILY:rockchip64"`: build all boards and branches in the rockchip64 family - image-info-only variables like `LINUXFAMILY` is **not** available for filtering at this stage - rename `config/templates` `targets-all-cli.yaml` to `targets-default.yaml` - this is used when no `userpatches/targets.yaml` is found - new default includes all boards vs branches for non-EOS boards - also desktop for all boards that _don't_ have `HAS_VIDEO_OUTPUT='no`` - introduce simplified `targets-dashboard` CLI: - does only inventory, compositing, and image info, but not artifact reducing, etc. - ignore desktop builds in the OpenSearch indexer - update the OpenSearch Dashboards, including new information now available - invert the logic used for `CLEAN_INFO` and `CLEAN_MATRIX` - defaults to `yes` now, so new users/CI don't get hit by stale caches by default - repo pipeline CLI stuff is usually run on saved/restored artifacts for `output/info`, so don't clean by default via the CLI
65 lines
1.6 KiB
Python
Executable File
65 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com
|
|
#
|
|
# This file is a part of the Armbian Build Framework
|
|
# https://github.com/armbian/build/
|
|
#
|
|
import json
|
|
|
|
import sys
|
|
from opensearchpy import OpenSearch # pip3 install opensearch-py
|
|
|
|
|
|
def eprint(*args, **kwargs):
|
|
print(*args, file=sys.stderr, **kwargs)
|
|
|
|
|
|
# Read JSON from stdin
|
|
# - should be an array of objects
|
|
# - loop over array and index each obj into OS in to the passed index
|
|
# read_from_stdin = sys.stdin.read()
|
|
|
|
json_object = json.load(sys.stdin)
|
|
|
|
eprint("Loaded {} objects from stdin...".format(len(json_object)))
|
|
|
|
host = '127.0.0.1'
|
|
port = 9200
|
|
|
|
# Create the OpenSearch client.
|
|
client = OpenSearch(hosts=[{'host': host, 'port': port}], http_compress=False, use_ssl=False)
|
|
|
|
# Create an index with non-default settings.
|
|
index_name = 'board-vars-build'
|
|
index_body = {'settings': {'index': {'number_of_shards': 1, 'number_of_replicas': 0}}}
|
|
|
|
# Delete the index; remove old data.
|
|
try:
|
|
delete_response = client.indices.delete(index=index_name)
|
|
eprint('\nDeleting index...')
|
|
# print(delete_response)
|
|
except:
|
|
eprint("Failed to delete index {}".format(index_name))
|
|
|
|
eprint('\nCreating index...')
|
|
response_create = client.indices.create(index_name, body=index_body)
|
|
# print(response_create)
|
|
|
|
counter = 0
|
|
|
|
for obj in json_object:
|
|
# Skip desktop builds
|
|
if 'BUILD_DESKTOP' in obj['in']['vars']:
|
|
if obj['in']['vars']['BUILD_DESKTOP'] == 'yes':
|
|
continue
|
|
response = client.index(index=index_name, body=obj)
|
|
counter += 1
|
|
|
|
eprint(f"\nRefreshing index after loading {counter}...")
|
|
client.indices.refresh(index=index_name)
|
|
|
|
eprint("\nDone.")
|