build: store default/device packages in JSON

With this commit the `profiles.json` contain both the target specific
`default_packages` as well as the device specific `device_packages` as a
array of strings.

This information is required for downstream projects like the various
web-based interactive firmware generators.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Paul Spooren <mail@aparcar.org>
This commit is contained in:
Paul Spooren 2020-06-30 01:02:43 -10:00 committed by Daniel Golle
parent d4c80f5b17
commit 263f7e5bbd
3 changed files with 20 additions and 2 deletions

View File

@ -592,6 +592,7 @@ define Device/Build/image
DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \ DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \
DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \ DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
DEVICE_TITLE="$(DEVICE_TITLE)" \ DEVICE_TITLE="$(DEVICE_TITLE)" \
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
TARGET="$(BOARD)" \ TARGET="$(BOARD)" \
SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \ SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \
VERSION_NUMBER="$(VERSION_NUMBER)" \ VERSION_NUMBER="$(VERSION_NUMBER)" \

View File

@ -54,6 +54,7 @@ image_info = {
"sha256": image_hash, "sha256": image_hash,
} }
], ],
"device_packages": getenv("DEVICE_PACKAGES").split(),
"supported_devices": getenv("SUPPORTED_DEVICES").split(), "supported_devices": getenv("SUPPORTED_DEVICES").split(),
"titles": get_titles(), "titles": get_titles(),
} }

View File

@ -1,9 +1,10 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import json from os import getenv, environ
from pathlib import Path from pathlib import Path
from os import getenv from subprocess import run
from sys import argv from sys import argv
import json
if len(argv) != 2: if len(argv) != 2:
print("JSON info files script requires ouput file as argument") print("JSON info files script requires ouput file as argument")
@ -31,6 +32,21 @@ for json_file in work_dir.glob("*.json"):
image_info["profiles"][device_id]["images"][0] image_info["profiles"][device_id]["images"][0]
) )
output["default_packages"] = run(
[
"make",
"--no-print-directory",
"-C",
f"target/linux/{output['target'].split('/')[0]}",
"val.DEFAULT_PACKAGES",
],
capture_output=True,
check=True,
env=environ.copy().update({"TOPDIR": Path().cwd()}),
text=True,
).stdout.split()
if output: if output:
output_path.write_text(json.dumps(output, sort_keys=True, separators=(",", ":"))) output_path.write_text(json.dumps(output, sort_keys=True, separators=(",", ":")))
else: else: