Compare commits

...

10 Commits

Author SHA1 Message Date
Arturo Buzarra 74628a35ce meta-digi: revert revisions to AUTOREV
Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2026-05-27 22:03:34 +02:00
Arturo Buzarra 1acb052f68 meta-digi: update revisions for dey-5.0-r4.2
Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2026-05-27 22:03:33 +02:00
Arturo Buzarra d58d20358e meta-digi-dey: bump distro version to 5.0-r4.2
Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2026-05-27 21:36:19 +02:00
Arturo Buzarra 14cd1e7966 build.sh: use dey-image-containers image name
Update the build script to use `dey-image-containers` instead of the old
`dey-image-container-manager` name.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2026-05-27 21:17:37 +02:00
Arturo Buzarra 89c42a5b0f installer: media: drop extra usb reset between partitions
Avoid EHCI timeout errors seen on some USB sticks by removing the redundant
`usb reset` between partitions.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2026-05-27 21:13:33 +02:00
Gonzalo Ruiz ed9beccdcd sysinfo: add SMARC information
If device is a SMARC, use SMARC properties to log in sysinfo (serial
number, variant, hardware version). If not, use SOM properties.

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2026-05-27 18:32:17 +02:00
Gonzalo Ruiz 9be4f140d2 connectcore-demo-example: ccimx95: add mp4 video file
Replace current MOV video file not supported by Chromium with a MP4
video file with the same video content.

https://onedigi.atlassian.net/browse/DEL-10156

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2026-05-27 18:29:34 +02:00
Gonzalo Ruiz 0248d4a728 video-examples: update tarball to include mp4 file
Add an mp4 example video, with the same contents as the mov file:
1280x720, MPEG-4 format.

Also, for ccimx95, due to Chromium limitations, install the mp4 file
instead of the mov file.

https://onedigi.atlassian.net/browse/DEL-10156

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2026-05-27 18:29:34 +02:00
Francisco Gil 18a23d71d6 dey-image-containers: rename image references
While on it, fix a typo.

Signed-off-by: Francisco Gil <francisco.gilmartinez@digi.com>
Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-05-27 17:36:07 +02:00
Isaac Hermida 7950ac2460 meta-digi-containers: modify how to generate the DCP
Modify and document the way to generate a DCP by package_id.
Update the source code of the container manager to align with.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-05-27 17:01:02 +02:00
15 changed files with 90 additions and 86 deletions

View File

@ -19,7 +19,7 @@ Digi Embedded Yocto provides the following image recipes:
Expansion of custom Digi core-image-base including full Flutter Expansion of custom Digi core-image-base including full Flutter
framework support. framework support.
* dey-image-container-manager: container management image * dey-image-containers: container management image
Minimal image including the trimmed Podman and LXC runtimes used to Minimal image including the trimmed Podman and LXC runtimes used to
manage container artifacts on target. manage container artifacts on target.

View File

@ -19,7 +19,7 @@ Digi Embedded Yocto provides the following image recipes:
Expansion of custom Digi core-image-base including full Flutter Expansion of custom Digi core-image-base including full Flutter
framework support. framework support.
* dey-image-container-manager: container management image * dey-image-containers: container management image
Minimal image including the trimmed Podman and LXC runtimes used to Minimal image including the trimmed Podman and LXC runtimes used to
manage container artifacts on target. manage container artifacts on target.

View File

@ -179,7 +179,6 @@ fi
# - Erase the 'update' partition # - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition # - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after # - Run 'recovery' and let the system boot after
# NOTE: insert some 'usb reset' commands to avoid EHCI timeouts
setenv bootcmd " setenv bootcmd "
env default -a; env default -a;
setenv dualboot ${dualboot}; setenv dualboot ${dualboot};
@ -228,9 +227,6 @@ setenv bootcmd "
exit; exit;
fi; fi;
fi; fi;
if test "${INSTALL_MEDIA}" = "usb"; then
usb reset;
fi;
echo \"\"; echo \"\";
echo \"\"; echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\"; echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";

View File

@ -22,7 +22,7 @@ CONTAINERS_BACKEND_TOOLS = "lxc"
the trimmed runtime packages to keep the image smaller. the trimmed runtime packages to keep the image smaller.
The layer explicitly depends on `meta-virtualization`. The layer explicitly depends on `meta-virtualization`.
`dey-image-dcp` and`dey-image-containers` requires `dey-image-dcp` and `dey-image-containers` require
`DISTRO_FEATURES:append = " virtualization"` in `local.conf`. `DISTRO_FEATURES:append = " virtualization"` in `local.conf`.
The `dey-image-dcp` workflow produces: The `dey-image-dcp` workflow produces:
@ -78,13 +78,11 @@ The script generates exactly one runtime artifact per execution.
Notes: Notes:
- `--output-dir` is optional. If omitted, the script writes the DCP to the current directory. - `--output-dir` is optional. If omitted, the script writes the DCP to the current directory.
- If the input manifest omits `package_id`, the generator derives the final - The input manifest must provide `package_id`, which becomes the stable target
`package_id` from `name` and appends a unique suffix using the `created_at` identifier.
timestamp encoded in base36 milliseconds. - The output file name is always derived from the package ID and
- If the input manifest provides `package_id`, that value is kept unchanged.
- The output file name is always derived from the generated package ID and
manifest fields as: manifest fields as:
- `<generated_package_id>-<runtime>-<device_types[0]>.tar.gz` - `<package_id>-<runtime>-<device_types[0]>.tar.gz`
- For Podman payloads, the final internal payload name is always `payload/image.tar` - For Podman payloads, the final internal payload name is always `payload/image.tar`
- For LXC payloads, the generator requires a Yocto-style `.tar.gz` bundle, validates its layout, - For LXC payloads, the generator requires a Yocto-style `.tar.gz` bundle, validates its layout,
and stores it inside the DCP using the original file name and format without re-packaging it. and stores it inside the DCP using the original file name and format without re-packaging it.
@ -104,14 +102,13 @@ python3 meta-digi-containers/scripts/generate-dcp.py \
This generates a bundle named like: This generates a bundle named like:
- `./flutter-demo-<base36_created_at_ms>-podman-ccmp25-dvk.tar.gz` - `./flutter-demo-podman-ccmp25-dvk.tar.gz`
In those manifests: In those manifests:
- `name` is the stable logical container name stored on the target. - `package_id` is the stable target identifier.
- `friendly_name` is the user-facing label shown by the manager output when available. - `friendly_name` is the user-facing label shown by the manager output when available.
- the final `package_id` is generated automatically from `name` unless the - the final DCP manifest does not include a second container identifier
input manifest provides an explicit `package_id`
- `registration_defaults` is limited to local manager policy such as `autostart`, - `registration_defaults` is limited to local manager policy such as `autostart`,
`monitor`, and `restart`; this release does not generate DRM-specific defaults `monitor`, and `restart`; this release does not generate DRM-specific defaults
@ -182,19 +179,12 @@ Outputs are generated in:
Final outputs: Final outputs:
- `${DCP_NAME}-<base36_created_at_ms>-podman-<device_types[0]>.tar.gz` - `${DCP_NAME}-podman-<device_types[0]>.tar.gz`
- `${DCP_NAME}-<base36_created_at_ms>-lxc-<device_types[0]>.tar.gz` - `${DCP_NAME}-lxc-<device_types[0]>.tar.gz`
Notes: Notes:
- The generator script derives `package_id` from the input `name` only when the - In Yocto builds, `dey-image-dcp` sets `package_id` to `${DCP_NAME}`.
manifest does not provide one explicitly. In that default case it appends a
base36-encoded millisecond timestamp suffix, stores the generated `package_id`
in the final `manifest.json`, and uses it in the DCP file name.
- In Yocto builds, `dey-image-dcp` keeps that unique-name behavior and
removes older DCP artifacts with the same `${DCP_NAME}` prefix before
generating the new one, so the deploy directory does not keep accumulating
previous builds of the same container/runtime.
Intermediate rootfs and OCI outputs are kept available for incremental rebuilds. Intermediate rootfs and OCI outputs are kept available for incremental rebuilds.
The LXC bundle and Podman archive are generated as temporary payloads while The LXC bundle and Podman archive are generated as temporary payloads while
@ -281,7 +271,6 @@ Supported placeholders in LXC config fragments:
The artifact manifest is generated automatically and includes: The artifact manifest is generated automatically and includes:
- `package_id` - `package_id`
- `name` [stable logical container name]
- `friendly_name` [optional user-facing display name] - `friendly_name` [optional user-facing display name]
- `version` - `version`
- `runtime` - `runtime`

View File

@ -1,5 +1,5 @@
{ {
"name": "flutter-demo", "package_id": "flutter-demo",
"friendly_name": "Flutter Demo", "friendly_name": "Flutter Demo",
"version": "1.0", "version": "1.0",
"runtime": "lxc", "runtime": "lxc",

View File

@ -1,5 +1,5 @@
{ {
"name": "flutter-demo", "package_id": "flutter-demo",
"friendly_name": "Flutter Demo", "friendly_name": "Flutter Demo",
"version": "1.0", "version": "1.0",
"runtime": "podman", "runtime": "podman",

View File

@ -15,8 +15,8 @@ SRC_URI = " \
file://cc-containerd.service \ file://cc-containerd.service \
file://cc-containerd-shutdown.service \ file://cc-containerd-shutdown.service \
" "
SRC_URI[archive.md5sum] = "6d84c6f5ec9dc94d542c91001ff5fd36" SRC_URI[archive.md5sum] = "2ae2c3c09e9bf223e7de4ec0994376f3"
SRC_URI[archive.sha256sum] = "ce24c4fde041a69a7646eb9bad4891d2eb91291f3534e71444552d3830247aaa" SRC_URI[archive.sha256sum] = "627d90eb53a48bf978fb6993f661af3dba8e6bf091d295ff481457e4c0cb96a0"
S = "${WORKDIR}/${BP}" S = "${WORKDIR}/${BP}"

View File

@ -15,9 +15,9 @@ do_clean_old_container_artifacts() {
fi fi
for runtime in lxc podman; do for runtime in lxc podman; do
old_artifact_glob="${DEPLOY_DIR_IMAGE}/${DCP_NAME}-*-${runtime}-${primary_device_type}.tar.gz" artifact_path="${DEPLOY_DIR_IMAGE}/${DCP_NAME}-${runtime}-${primary_device_type}.tar.gz"
bbnote "Removing old ${runtime} container artifacts matching ${old_artifact_glob}" bbnote "Removing old ${runtime} container artifact ${artifact_path}"
rm -f ${old_artifact_glob} rm -f "${artifact_path}"
done done
} }
@ -69,7 +69,7 @@ do_image_container_artifacts() {
manifest_path="$2" manifest_path="$2"
create_args="$3" create_args="$3"
build_id="$4" build_id="$4"
NAME="${DCP_NAME}" \ PACKAGE_ID="${DCP_NAME}" \
FRIENDLY_NAME="${CONTAINER_FRIENDLY_NAME}" \ FRIENDLY_NAME="${CONTAINER_FRIENDLY_NAME}" \
VERSION="${CONTAINER_ARTIFACT_VERSION}" \ VERSION="${CONTAINER_ARTIFACT_VERSION}" \
RUNTIME="${runtime}" \ RUNTIME="${runtime}" \
@ -87,7 +87,7 @@ do_image_container_artifacts() {
LABELS_JSON="${CONTAINER_ARTIFACT_LABELS_JSON}" \ LABELS_JSON="${CONTAINER_ARTIFACT_LABELS_JSON}" \
python3 -c 'import json, os, sys; \ python3 -c 'import json, os, sys; \
parse_bool = lambda name: os.environ[name].strip().lower() == "true"; \ parse_bool = lambda name: os.environ[name].strip().lower() == "true"; \
payload = {"name": os.environ["NAME"], "friendly_name": os.environ["FRIENDLY_NAME"], "version": os.environ["VERSION"], "runtime": os.environ["RUNTIME"], "registration_defaults": {"autostart": parse_bool("AUTOSTART"), "monitor": parse_bool("MONITOR"), "restart": {"enabled": parse_bool("RESTART_ENABLED"), "max_retries": int(os.environ["RESTART_MAX_RETRIES"]), "window": int(os.environ["RESTART_WINDOW"]), "retry_delay": int(os.environ["RESTART_RETRY_DELAY"]) } }, "device_types": json.loads(os.environ["DEVICE_TYPES_JSON"]), "firmware_versions": os.environ["FIRMWARE_VERSIONS"], "build_id": os.environ["BUILD_ID"], "description": os.environ["DESCRIPTION"], "labels": json.loads(os.environ["LABELS_JSON"])}; \ payload = {"package_id": os.environ["PACKAGE_ID"], "friendly_name": os.environ["FRIENDLY_NAME"], "version": os.environ["VERSION"], "runtime": os.environ["RUNTIME"], "registration_defaults": {"autostart": parse_bool("AUTOSTART"), "monitor": parse_bool("MONITOR"), "restart": {"enabled": parse_bool("RESTART_ENABLED"), "max_retries": int(os.environ["RESTART_MAX_RETRIES"]), "window": int(os.environ["RESTART_WINDOW"]), "retry_delay": int(os.environ["RESTART_RETRY_DELAY"]) } }, "device_types": json.loads(os.environ["DEVICE_TYPES_JSON"]), "firmware_versions": os.environ["FIRMWARE_VERSIONS"], "build_id": os.environ["BUILD_ID"], "description": os.environ["DESCRIPTION"], "labels": json.loads(os.environ["LABELS_JSON"])}; \
create_args = os.environ["CREATE_ARGS"].strip(); \ create_args = os.environ["CREATE_ARGS"].strip(); \
payload.update({"create_args": create_args} if create_args else {}); \ payload.update({"create_args": create_args} if create_args else {}); \
open(sys.argv[1], "w", encoding="utf-8").write(json.dumps(payload, indent=2) + "\n")' \ open(sys.argv[1], "w", encoding="utf-8").write(json.dumps(payload, indent=2) + "\n")' \

View File

@ -15,32 +15,15 @@ import sys
import tarfile import tarfile
import tempfile import tempfile
BASE36_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz"
def fail(message: str) -> "NoReturn": def fail(message: str) -> "NoReturn":
raise SystemExit(f"error: {message}") raise SystemExit(f"error: {message}")
def to_base36(value: int) -> str:
if value < 0:
fail("cannot convert negative values to base36")
if value == 0:
return "0"
result: list[str] = []
while value:
value, remainder = divmod(value, 36)
result.append(BASE36_ALPHABET[remainder])
return "".join(reversed(result))
def format_created_at(timestamp: datetime) -> str: def format_created_at(timestamp: datetime) -> str:
return timestamp.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z") return timestamp.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
def build_generated_package_id(base_name: str, *, created_at_ms: int) -> str:
return f"{base_name}-{to_base36(created_at_ms)}"
def load_manifest(path: Path) -> dict: def load_manifest(path: Path) -> dict:
try: try:
data = json.loads(path.read_text(encoding="utf-8")) data = json.loads(path.read_text(encoding="utf-8"))
@ -100,11 +83,7 @@ def validate_labels(value: object) -> dict:
def validate_manifest(data: dict) -> dict: def validate_manifest(data: dict) -> dict:
package_id = data.get("package_id") package_id = validate_string(data, "package_id", path="manifest")
if package_id is not None:
if not isinstance(package_id, str) or not package_id.strip():
fail("invalid manifest: package_id must be a non-empty string")
package_id = package_id.strip()
version = validate_string(data, "version", path="manifest") version = validate_string(data, "version", path="manifest")
runtime = validate_string(data, "runtime", path="manifest") runtime = validate_string(data, "runtime", path="manifest")
if runtime not in {"lxc", "podman"}: if runtime not in {"lxc", "podman"}:
@ -136,7 +115,6 @@ def validate_manifest(data: dict) -> dict:
description = data.get("description", "") description = data.get("description", "")
if description is not None and not isinstance(description, str): if description is not None and not isinstance(description, str):
fail("invalid manifest: description must be a string") fail("invalid manifest: description must be a string")
name = validate_string(data, "name", path="manifest")
friendly_name = data.get("friendly_name") friendly_name = data.get("friendly_name")
if friendly_name is not None: if friendly_name is not None:
if not isinstance(friendly_name, str) or not friendly_name.strip(): if not isinstance(friendly_name, str) or not friendly_name.strip():
@ -145,7 +123,6 @@ def validate_manifest(data: dict) -> dict:
validated = { validated = {
"package_id": package_id, "package_id": package_id,
"name": name,
"friendly_name": friendly_name, "friendly_name": friendly_name,
"version": version, "version": version,
"runtime": runtime, "runtime": runtime,
@ -269,7 +246,6 @@ def build_final_manifest(
) -> dict: ) -> dict:
output = { output = {
"package_id": package_id, "package_id": package_id,
"name": base["name"],
"friendly_name": base["friendly_name"], "friendly_name": base["friendly_name"],
"version": base["version"], "version": base["version"],
"runtime": base["runtime"], "runtime": base["runtime"],
@ -332,18 +308,10 @@ def main() -> int:
fail(f"cannot create output directory {output_dir}: {exc}") fail(f"cannot create output directory {output_dir}: {exc}")
created_at_dt = datetime.now(timezone.utc) created_at_dt = datetime.now(timezone.utc)
created_at_ms = int(created_at_dt.timestamp() * 1000)
created_at = format_created_at(created_at_dt) created_at = format_created_at(created_at_dt)
generated_package_id = ( package_id = manifest["package_id"]
manifest["package_id"]
if manifest["package_id"]
else build_generated_package_id(
manifest["name"],
created_at_ms=created_at_ms,
)
)
output_name = build_output_name( output_name = build_output_name(
package_id=generated_package_id, package_id=package_id,
runtime=manifest["runtime"], runtime=manifest["runtime"],
device_type=manifest["device_types"][0], device_type=manifest["device_types"][0],
) )
@ -375,7 +343,7 @@ def main() -> int:
final_manifest = build_final_manifest( final_manifest = build_final_manifest(
manifest, manifest,
package_id=generated_package_id, package_id=package_id,
artifact_type=artifact_type, artifact_type=artifact_type,
digest=digest, digest=digest,
size_bytes=size_bytes, size_bytes=size_bytes,
@ -389,7 +357,7 @@ def main() -> int:
lambda dst: write_default_readme( lambda dst: write_default_readme(
dst, dst,
manifest, manifest,
package_id=generated_package_id, package_id=package_id,
created_at=created_at, created_at=created_at,
payload_name=payload_name, payload_name=payload_name,
), ),

View File

@ -4,7 +4,7 @@ require conf/distro/poky.conf
YOCTO_MAJOR = "5" YOCTO_MAJOR = "5"
YOCTO_MINOR = "0" YOCTO_MINOR = "0"
DEY_RELEASE = "4" DEY_RELEASE = "4"
DEY_BUILD = "1" DEY_BUILD = "2"
# Firmware version of the system. # Firmware version of the system.
DEY_FIRMWARE_VERSION ?= "${YOCTO_MAJOR}.${YOCTO_MINOR}.${DEY_RELEASE}.${DEY_BUILD}" DEY_FIRMWARE_VERSION ?= "${YOCTO_MAJOR}.${YOCTO_MINOR}.${DEY_RELEASE}.${DEY_BUILD}"

View File

@ -14,6 +14,8 @@ SRC_URI += "\
file://connectcore-demo-server.service \ file://connectcore-demo-server.service \
file://suspendtarget-connectcore-demo-server.service \ file://suspendtarget-connectcore-demo-server.service \
" "
SRC_URI:append:ccimx95 = " file://0001-multimedia-replace-MOV-video-with-MP4.patch;patchdir=${WORKDIR}/git"
S = "${WORKDIR}/git/connectcore-demo-example" S = "${WORKDIR}/git/connectcore-demo-example"
do_configure[noexec] = "1" do_configure[noexec] = "1"

View File

@ -0,0 +1,30 @@
From: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
Date: Wed, 27 May 2026 16:33:46 +0200
Subject: [PATCH 1/1] multimedia: replace MOV video with MP4
This is required for Chromium demo.
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
---
connectcore-demo-example/multimedia.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/connectcore-demo-example/multimedia.html b/connectcore-demo-example/multimedia.html
index 4073ff0..0327c1a 100644
--- a/connectcore-demo-example/multimedia.html
+++ b/connectcore-demo-example/multimedia.html
@@ -189,9 +189,9 @@ Digi Demo - Multimedia
<div class="row">
<div class="col-xl-2 multimedia-container">
<div class="d-flex justify-content-center align-items-center multimedia-box">
- <div class="multimedia-item" onclick="location.href='multimedia_viewer.html?exampleURL=videos/big_buck_bunny.mov'">
- <div class="multimedia-title">Big Buck Bunny (MOV)</div>
- <img src="./static/images/big_buck_bunny.jpg" alt="Big Buck Bunny (MOV)">
+ <div class="multimedia-item" onclick="location.href='multimedia_viewer.html?exampleURL=videos/big_buck_bunny.mp4'">
+ <div class="multimedia-title">Big Buck Bunny (MP4)</div>
+ <img src="./static/images/big_buck_bunny.jpg" alt="Big Buck Bunny (MP4)">
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
# Copyright (C) 2020-2022, Digi International Inc. # Copyright (C) 2020-2026, Digi International Inc.
SUMMARY = "Short videos to demonstrate video playback on the WPE WebKit" SUMMARY = "Short videos to demonstrate video playback on the WPE WebKit"
DESCRIPTION = "This package contains fragments of the short film 'Big Buck Bunny', which are used to demonstrate how WebKit makes use of hardware acceleration for video decoding" DESCRIPTION = "This package contains fragments of the short film 'Big Buck Bunny', which are used to demonstrate how WebKit makes use of hardware acceleration for video decoding"
@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/CC-BY-3.0;md5=dfa02b5755629022e
SRC_URI = "${DIGI_PKG_SRC}/${BPN}-${PV}.tar.gz" SRC_URI = "${DIGI_PKG_SRC}/${BPN}-${PV}.tar.gz"
SRC_URI[md5sum] = "d22cc0fa20fde187455b27a799d2f9e6" SRC_URI[md5sum] = "5b4cf8fe878adc6105df88866038e6db"
SRC_URI[sha256sum] = "97389f33d98c52d4311117366f0aa8dc78d00f51a787697af349de4668ccdbf6" SRC_URI[sha256sum] = "18d64ec814d1a318641b1afc2ff51f93326390fc07dc2b79e53fb92477a0e8bd"
S = "${WORKDIR}/${PN}-${PV}" S = "${WORKDIR}/${PN}-${PV}"
@ -20,6 +20,10 @@ VIDEO_FORMATS = " \
mov \ mov \
webm \ webm \
" "
VIDEO_FORMATS:ccimx95 = " \
mp4 \
webm \
"
# Name of the video sample # Name of the video sample
VIDEO_NAME = "big_buck_bunny" VIDEO_NAME = "big_buck_bunny"
@ -41,3 +45,5 @@ FILES:${PN} = "/${WEBSERVER_ROOT}/*"
# Don't generate dbg or dev packages # Don't generate dbg or dev packages
PACKAGES = "${PN}" PACKAGES = "${PN}"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@ -567,8 +567,14 @@ if grep -qs 'DVK' /proc/device-tree/model; then
else else
BOARD_TYPE="SBC" BOARD_TYPE="SBC"
fi fi
BOARD_VARIANT="$(cat /proc/device-tree/digi,hwid,variant | tr -d '\0')" SOM_SN="$(cat /proc/device-tree/digi,hwid,sn | tr -d '\0')"
BOARD_SN="$(cat /proc/device-tree/digi,hwid,sn | tr -d '\0')" SOM_VARIANT="$(cat /proc/device-tree/digi,hwid,variant | tr -d '\0')"
SOM_VERSION="$(($(cat /proc/device-tree/digi,hwid,hv | tr -d '\0' )))"
if [ -e /proc/device-tree/digi,smarcid,variant ]; then
SMARC_SN="$(cat /proc/device-tree/digi,smarcid,sn | tr -d '\0')"
SMARC_VARIANT="$(cat /proc/device-tree/digi,smarcid,variant | tr -d '\0')"
SMARC_VERSION="$(($(cat /proc/device-tree/digi,smarcid,hv | tr -d '\0' )))"
fi
BOARD_VERSION="$(cat /proc/device-tree/digi,carrierboard,version | tr -d '\0')" BOARD_VERSION="$(cat /proc/device-tree/digi,carrierboard,version | tr -d '\0')"
[ -e "/proc/device-tree/digi,carrierboard,id" ] && BOARD_ID="$(cat /proc/device-tree/digi,carrierboard,id | tr -d '\0')" [ -e "/proc/device-tree/digi,carrierboard,id" ] && BOARD_ID="$(cat /proc/device-tree/digi,carrierboard,id | tr -d '\0')"
[ -e "/proc/device-tree/cpus/rev" ] && SOC_REV="$(cat /proc/device-tree/cpus/rev | tr -d '\0')" [ -e "/proc/device-tree/cpus/rev" ] && SOC_REV="$(cat /proc/device-tree/cpus/rev | tr -d '\0')"
@ -627,7 +633,14 @@ print_qr || exit $?
echo "" echo ""
echo "|||:Component|:Version" echo "|||:Component|:Version"
DUT_HEADER="SN-${BOARD_SN}, ${MACHINE} ${BOARD_VARIANT} ${BOARD_TYPE}v${BOARD_VERSION}" if [ -n "${SMARC_VARIANT}" ]; then
DUT_HEADER="SN-${SMARC_SN}, ${MACHINE} ${SMARC_VARIANT} SMARCv${SMARC_VERSION}"
else
DUT_HEADER="SN-${SOM_SN}, ${MACHINE} ${SOM_VARIANT} SOMv${SOM_VERSION}"
fi
DUT_HEADER="${DUT_HEADER} ${BOARD_TYPE}v${BOARD_VERSION}"
if [ -n "${BOARD_ID}" ]; then if [ -n "${BOARD_ID}" ]; then
DUT_HEADER="${DUT_HEADER} board_ID=${BOARD_ID}" DUT_HEADER="${DUT_HEADER} board_ID=${BOARD_ID}"
fi fi

View File

@ -3,7 +3,7 @@
# #
# build.sh # build.sh
# #
# Copyright (C) 2013-2025 by Digi International Inc. # Copyright (C) 2013-2026 by Digi International Inc.
# All rights reserved. # All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
@ -275,22 +275,22 @@ done<<-_EOF_
ccimx6ulrftest dey-image-mft-module-rf ccimx6ulrftest dey-image-mft-module-rf
ccmp15-dvk dey-image-qt,dey-image-webkit,dey-image-lvgl,dey-image-flutter ccmp15-dvk dey-image-qt,dey-image-webkit,dey-image-lvgl,dey-image-flutter
ccmp13-dvk core-image-base ccmp13-dvk core-image-base
ccmp25-dvk dey-image-qt,dey-image-webkit,dey-image-lvgl,dey-image-flutter,dey-image-container-manager ccmp25-dvk dey-image-qt,dey-image-webkit,dey-image-lvgl,dey-image-flutter,dey-image-containers
ccimx91-dvk core-image-base ccimx91-dvk core-image-base
ccimx93-dvk dey-image-qt,dey-image-lvgl ccimx93-dvk dey-image-qt,dey-image-lvgl
ccimx95-dvk dey-image-qt,dey-image-chromium,dey-image-lvgl,dey-image-flutter,dey-image-container-manager ccimx95-dvk dey-image-qt,dey-image-chromium,dey-image-lvgl,dey-image-flutter,dey-image-containers
_EOF_ _EOF_
# Set additional layers required for yocto images # Set additional layers required for yocto images
declare -A EXTRA_YOCTO_LAYERS declare -A EXTRA_YOCTO_LAYERS
EXTRA_YOCTO_LAYERS["dey-image-container-manager"]="\ EXTRA_YOCTO_LAYERS["dey-image-containers"]="\
meta-openembedded/meta-filesystems \ meta-openembedded/meta-filesystems \
meta-virtualization \ meta-virtualization \
meta-digi/meta-digi-containers" meta-digi/meta-digi-containers"
# Set additional configurations required for yocto images # Set additional configurations required for yocto images
declare -A EXTRA_YOCTO_CONF declare -A EXTRA_YOCTO_CONF
EXTRA_YOCTO_CONF["dey-image-container-manager"]="\ EXTRA_YOCTO_CONF["dey-image-containers"]="\
DISTRO_FEATURES:append = \" virtualization\" \ DISTRO_FEATURES:append = \" virtualization\" \
" "