TorizonCore Builder 3.9.0 release |
TCB-426 | Fixed | Building kernel modules for Verdin AM62 fails with error "make[1]: *** No rule to make target 'arch/arm64/tools/gen-sysreg.awk', needed by 'arch/arm64/include/generated/asm/sysreg-defs.h'. Stop." | Low |
Description: As reported on Hello-mod kernel module doesn’t build Building kernel modules for Verdin AM62 fails with error "make[1]: *** No rule to make target 'arch/arm64/tools/gen-sysreg.awk', needed by 'arch/arm64/include/generated/asm/sysreg-defs.h'. Stop." Workaround: This has been fixed and you must use the Torizon OS monthly 202403 or newer. |
TorizonCore Builder 3.8.1 release |
TCB-401 | Fixed | "platform lockbox" command fails with error "TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'" when using a custom OS image | Low |
Description: On TCB 3.8.0, when you use the "platform lockbox" to create a lockbox that has been defined in the Platform Services, it may fail with the error "TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'" in case your lockbox contains an OS update with a custom OS image that you pushed to the Platform Services. |
TCB-399 | New Feature | As a user, I want the "platform lockbox" to work on non-host networks, so I can use it on GH Actions | |
Description: As reported on the TorizonCore Builder issue tracker on GitHub, the command "platform lockbox" fails on non-host networks. |
TorizonCore Builder 3.8.0 release |
TCB-398 | Fixed | Faulty handling of custom URI in Lockboxes leads to error "Could not fetch file" | Low |
Description: As reported in the Toradex community, downloading lockboxes with the early access version of TCB (c.a. July 15th, 2023) fails with the error "Could not fetch file". Workaround: Use the latest early access TCB release, or a stable TCB release. |
TCB-396 | Fixed | Torizoncore-builder "kernel" fails on a TorizonCore 6.3.0 image with error "subprocess.CalledProcessError: Command returned non-zero exit status 2." | Low |
Description: The error "subprocess.CalledProcessError: Command 'PATH=$PATH:/storage/toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/bin make -C /storage/linux ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- modules_prepare' returned non-zero exit status 2." happens when trying to build an out-of-tree module for a TorizonCore 6.3.0 image. Workaround: Use the early access release of TorizonCore Builder until the stable release 3.8.0 is available. |
TCB-390 | New Feature | Add support for OCI images to commands platform push and lockbox | |
Description: When you try to push an OCI image to the Torizon Platform, or create a lockbox with one, TorizonCore Builder fails due to lack of support for OCI images. |
TCB-386 | Fixed | "ostree serve" fails with "error: Remote refs not available; server has no summary file" when unpacking a Toradex Easy Installer image | Low |
Description: When taking a Toradex Easy Installer image as input, running it through the build command, and then serving it (by running "images unpack" followed by "ostree serve"), you should be able (on a device) to fetch the refs and commits from the served repository. However, what one gets on a device when trying to list the remote refs is "error: Remote refs not available; server has no summary file".
This is an advanced use case, and most users of TCB should not be affected. |
TCB-383 | New Feature | Add canonicalization metadata so the Platform Services can use it instead of parsing Compose file names with the .lock.yml extension | |
Description: TorizonCore Builder and the Torizon Platform are limited to only accepting files that end in ".lock.yml" for creating lockboxes, used in offline updates. |
TCB-381 | Fixed | "platform lockbox" fails with errror "AssertionError: Could not fetch manifest of" when fetching images from repos with a dot in their name | Low |
Description: If you try to create a lockbox with a container image that contains a dot in the name, for example "my.remote.registry:4567/user.name/image-name:image-tag", TorizonCore Builder fails with "AssertionError: Could not fetch manifest of" Workaround: Use the Early Access Version of TorizonCore Builder, which has the bug fixed, while the 3.8.0 version or later is not released. |
TCB-371 | Fixed | The "platform push" command fails with secure registries other than Docker Hub having a certificate signed by a known CA | Low |
Description: When using the "platform push" command to push docker-compose files with canonicalization (i.e. when the --canonicalize or --canonicalize-only switches are passed), TorizonCore Builder has to access the registries where the referenced images are stored.
For container images available on container registries whose certificate is signed by a known CA (except Docker Hub) - for example, GCR - the command fails. |
TCB-365 | Fixed | Torizoncore-builder "push" fails with "Error: Can't determine digest for image" when canonicalizing docker-compose files that refer to OCI container images | Low |
Description: When using a command that canonicalizes a Docker Compose file, such as the "platform push", the error "Error: Can't determine digest for image 'image-tag'" will happen if the Docker Compose references at least one container image that is OCI compatible instead of Docker compatible. |
TCB-356 | New Feature | As a user, I want a tool to upload binary packages for subsystem updates (on-SoM Cortex-M, configuration, bootloader, external HW firmware, among others), so I can update any HW or SW subsystem in my product | |
Description: Until this feature is implemented, only OS and application updates are supported in TorizonCore. As of this feature, any other subsystem can be updated, such as but not limited to: Cortex-M, system configuration, application metadata, firmware for external HW.
Update: learn how to push any firmware to the Platform Services on Signing and Pushing TorizonCore Packages to Torizon Platform Services. |
TCB-346 | Fixed | The bundle command fails with "Error: Could not load the Docker compose file 'docker-compose.yml'." when using a valid Docker Compose file with spec version of 3.x due to missing properties | Low |
Description: As posted in the community thread Torizoncore-builder maximum version for docker-compose.yml, TorizonCore Builder fails when trying to bundle some Docker Compose files with the 3.x specification, due to missing properties such as "device_cgroup_rules". |
TorizonCore Builder 3.7.0 release |
TCB-370 | New Feature | As a user, I want to be warned that special characters on package name and version cause errors, so I can use their ASCII representation instead | |
Description: Due to a mismatch between how the client and the server calculate the hashes of packages names and versions, updates of packages that contain multi-character bytes in their name or version fail.
If you try to use unsupported characters, TorizonCore Builder will fail and let you know. |
TCB-363 | New Feature | As a user, I want to use a custom CA certificate in the build command, so I can use a private registry | |
Description: TorizonCore Builder supports using private secure registries with their own certificates, as documented on remarks about using private registries. A limitation is that this support is enabled through the standalone TorizonCore Builder commands, but not extended to the "build" command.
Support has been added through an external contribution on the project's GitHub, reviewed, and approved. Documentation is available in the TorizonCore Builder "build" command article, under the output --> easy-installer --> bundle --> ca-certificate. |
TCB-353 | New Feature | As a user, I want to learn how to use the TorizonCore Builder early access version | |
Description: The tip of the TorizonCore Builder branch is named "early access". Toradex builds this version every weekend, and you can leverage it for critical bug fixes or feature previews. There is no guarantee that what is on the early access has any documentation available yet or that it even works at all. Partially finished work may be included in early access before a release.
Learn about when you should use it, and how to use it, in the tcb-env-setup project's README. |
TCB-350 | New Feature | As a user, I want a workaround for the lack of support for the "dt checkout" command in TorizonCore Builder for TorizonCore 6, so I can perform device tree and device tree overlays operations to support my custom carrier board and peripherals | |
Description: The TorizonCore Builder command "dt checkout" is not yet supported for TorizonCore 6.
As we re-evaluate the device tree and overlays workflow with TorizonCore Builder, and the potential deprecation of the "dt checkout" command, we document a workaround instructing you to directly pull the Git repositories with the device trees and overlays source-code.
Please consider that, from TorizonCore 6 onward, the "dt checkout" may not become available. If it happens, a new workflow will be available instead. If it doesn't happen, at some point "dt checkout" support will be reintroduced.
Update: the workaround is documented on TorizonCore Builder Tool - Customizing TorizonCore Images - Device Tree. |
TCB-345 | New Feature | As a user, I want to use the "kernel build_module" command on TorizonCore 6 with a GCC version and toolchain that matches the one used to build TorizonCore 6, so the likelihood of issues is reduced | |
Description: Until the release of TorizonCore 6, the GCC toolchain used by TorizonCore Builder matched the version used to build TorizonCore 5 images. It must be updated to match TorizonCore 6 images so the likelihood of compiler issues due to version mismatch is reduced.
Update: this version bump is being implemented in a retro compatible way. If you are using TorizonCore 5 as input image, TorizonCore Builder will still use the older toolchain version that matches it, and if you are using TorizonCore 6 as input image, the newer toolchain will be automatically selected. |
TCB-343 | Fixed | build: "toradex-feed" property doesn't have support for 6.X.Y images, failing with the error "Error: Don't know how to handle a major version of 6" | Low |
Description: TorizonCore Builder is not yet updated to handle TorizonCore 6 images as input. This leads to failure in two commands: (1) in the "build" command when using the "toradex-feed" option, and (2) in the "images download" command.
The resulting error is "Error: Don't know how to handle a major version of 6". Workaround: For the "build" command, either manually download the TorizonCore 6 image and use the "local" property or use the image URL and the "remote" property. For the "images download" command, manually download and unpack the image.
Download links are available on Toradex Download Links (Torizon, Linux BSP, WinCE and Partner Demos). |
TCB-332 | New Feature | As a user, I want argument abbreviations disabled on TorizonCore Builder, so my scripts are guaranteed to use supported and non-conflicting arguments | |
Description: Until TorizonCore 3.6.0, abbreviated commands were accepted by the TorizonCore Builder command-line argument parser.
This behavior is undocumented and may lead you to write scripts that may get broken in the future if we add new options that may conflict with existing ones (taking a current example: --login vs --login-to). We decided that being more strict leads to a higher quality of any scripts you may integrate TorizonCore Builder on. Workaround: This is an undocumented feature and must not provide any breaking changes. If you see any issues, it may be due to a typo. Please double-check your scripts. |
TCB-303 | New Feature | As a user, I want to set package compatibility with TorizonCore Builder | |
Description: In the Torizon Platform Services web UI, it is possible to set compatibility on application packages, describing a list of compatible OS packages and versions. We plan to make it possible on the TorizonCore Builder command line, allowing you to integrate it into your CI scripts.
Update: adding compatibility based on the package version isn't trivial. To overcome it, it was decided to support initially setting up the compatibility based on the hash instead of the version. The hash is available in the web UI, making it easy for you to find out its value. |
TCB-300 | New Feature | As a user, I want advanced registry access when using "platform lockbox", so I can keep my application in private or local container registries | |
Description: Currently, the "tcb platform lockbox" does not accept advanced registry access, for example access to private registries. This is an issue when doing canonicalization, which requires access to the registry. |
TCB-299 | New Feature | As a user, I want advanced registry access when using "platform push" with canonicalization, so I can keep my application in private or local container registries | |
Description: Currently, the "tcb platform push" does not accept advanced registry access, for example access to private registries. This is an issue when doing canonicalization, which requires access to the registry. Workaround: Here is a suggested workaround which hasn't been fully validated:
- Use the bundle command on the docker-compose file to be used in the lockbox.
- The bundle command will fetch the Docker images (unnecessarily) but it will also create a docker-compose in canonical form, by default in bundle/docker-compose.yml; even though it doesn't have the .lock.yml extension this file is actually in canonical form.
- Copy the file to a name having the .lock.yml extension.
- Push the renamed/copied file to OTA with platform push; if setting the package name (with the --package-name switch) make sure to end it with the .lock.yml extension).
- The pushed compose file should then be suitable for use with the lockbox.
|
TCB-290 | Fixed | "--login" parameter ignored when passing it to the bundle command in CI environment | Low |
Description: For an unknown reason, the "--login" parameter of "tcb bundle" is being ignored in a CI environment.
Update: this bug happened once but was not reproducible. We have improved automated tests to validate the "--login" parameter further. If you are able to reproduce the bug, please let us know. |
TCB-119 | New Feature | As a user, I want to be able to use secure private Docker registries with the bundle command | |
Description: At the moment, we only support using insecure private registries on TCB, with the "--dind-param" flag of the "tcb bundle" command, as documented in the example in the commands manual. It has been requested by customers to support secure private registries as well.
Update: this has been implemented. Learn more on the remarks about using Docker registries. |
TorizonCore Builder 3.6.0 release |
TCB-323 | Fixed | Setup Script: Latest image tag is no longer found due to deprecated API | Low |
Description: The TorizonCore Builder Setup Script relies on the Docker API to fetch the latest available version of the tool. The version of the API used has been deprecated, thus breaking the script. Workaround: This has been fixed. Please re-download the setup script. |
TCB-319 | Fixed | Documentation for `isolate` command lists ignored files that are not actually ignored. | Low |
Description: The documentation that lists files ignored by the "isolate" command is outdated. For example, the files "/etc/passwd" and "/etc/shadow" are indeed captured, since you are allowed to customize the default password. |
TCB-306 | Fixed | TorizonCore Builder auto-completion error "_alternative:shift:14: argument to shift must be non-negative" on Zsh | Low |
Description: When trying to use autocompletion feature of TCB with Zsh (by pressing Tab), it does not work and the following error is printed "_alternative:shift:14: argument to shift must be non-negative".
Keep in mind that Zsh is not fully supported. We fix bugs when reported and reasonable to maintain, but otherwise all our tests focus on Bash. Workaround: Until we fix it, either use Bash, or don't use autocompletion on Zsh. |
TCB-304 | New Feature | As a user, I want to set the package description from TorizonCore Builder | |
Description: In the Torizon Platform Services web UI, it is possible to set a description for packages. We plan to make it possible on the TorizonCore Builder command line, allowing you to integrate it into your CI scripts.
Learn how to use the "--description" flag in the platform push documentation. |
TCB-302 | Fixed | Offline Updates: Incorrect Metadata in Lockbox | Low |
Description: Sometimes TorizonCore Builder fetches wrong metadata from the Platform Services server and offline updates fail. While this seems to be server-related, we plan to investigate it further and confirm the root cause, improving TorizonCore Builder if possible.
Update: it was confirmed as an issue on the Platform Services, and fixed there. No updates were required on TorizonCore Builder. |
TCB-298 | New Feature | As a user, I want the tcb-env-setup.sh script to autoupdate | |
Description: As of TorizonCore 3.5.0, the setup script does not get automatically updated. This is an issue because sometimes changes in the setup script are required for using newer versions of TorizonCore Builder.
Update: after some investigation and customer feedback, it was decided that the script will print a message asking you to update it. This message will provide the exact command you must run, as to make the update easy to execute. |
TCB-294 | Fixed | Autocompletion for TCB "bundle --bundle-directory" and "deploy --deploy-sysroot-directory" commands do not show available switches correctly | Low |
Description: Autocompletion for "tcb bundle" shows old flags such as "--directory" instead of "--bundle-directory", and "tcb deploy" shows "--sysroot-directory" instead of "--deploy-sysroot-directory". |
TCB-276 | New Feature | As a user, I want to accept NXP's EULA for provisioning at scale | Low |
Description: Toradex Easy Installer images may contain an End User License Agreement (EULA). The TorizonCore images have NXP’s EULA included. Therefore, a mechanism for accepting the EULA with TorizonCore Builder must be added, as to ensure that you have actively accepted such a license even in a production programming environment, where it isn't required to accept the EULA on every installation. |
TCB-207 | Fixed | Autocompletion for TorizonCore Builder push command does not show the 'docker-compose.yml' file as an option | Low |
Description: When running "tcb push", you have two options: 1) push an OSTree reference, also known as OS update and; 2) push a docker-compose.yml file, also known as application update.
Currently, the autocompletion only takes into consideration 1), and therefore it does not suggest YML files as possible autocomplete options. |
TCB-46 | New Feature | As a user, I want to learn how to use the secure offline updates | Low |
Description: As a final step to releasing the secure offline updates MVP, public documentation on how to use it will be written.
Update: documentation is now available on How to use secure offline updates with TorizonCore. |
TorizonCore Builder 3.5.1 patch release |
TCB-293 | Known Issue | Build error "KeyError: 'dir'" in TCB 3.5.0 when bundling images | Critical |
Description: When bundling a Docker Compose file with TorizonCore Builder 3.5.0, a stack trace is printed and the error "KeyError: 'dir'" is displayed |
TorizonCore Builder 3.5.0 release |
TCB-287 | Fixed | Push command assigns weird package name to pushed compose file by default | Low |
Description: The "platform push" (formerly "images push") command allows you to set the package name and version. At the moment, the default package name is set to "docker-compose_file.yml", which is not a sane default. We'll fix it by using the base input file name instead. For example if the input file is "my-docker-compose.yml", the base name will be "my-docker-compose". |
TCB-284 | New Feature | As a user, I want to be able to fetch provisioning data with TorizonCore Builder, so I don't need to do it from the web UI | Low |
Description: To create a custom TorizonCore image with provisioning data, it is first required that you fetch such data from the Platform Services.
The command "platform provisioning-data" fetches this data. Learn how to use it on The Platform Command. |
TCB-283 | Fixed | Push command does not translate all image references in docker-compose to digest form | Medium |
Description: The push command has the ability to canonicalize Docker Compose files, creating their corresponding lockfiles with hashes instead of tags. This is a good practice and particularly important for the upcoming secure offline updates. At the moment, canonicalization is not always happening. |
TCB-277 | Fixed | Build: Overlays get cleared by default | Low |
Description: There seems to be a discrepancy between the "build" command documentation and what actually happens. Specifically in regards to adding device tree overlays. In the overlays section of the "tcbuild.yaml" there’s a "clear" property that does the following according to the documentation:
clear (boolean, optional): Boolean indicating whether or not to ignore all the binary overlays (dtbo files) that may already be present in the base image. This property is useful only if no custom device tree was set. Default: false.
If "clear" is not specified in "tcbuild.yaml" then pre-existing overlays will not be cleared by default. However, the actual behavior is that if "clear" is not specified in "tcbuild.yaml" then pre-existing overlays will be cleared by default. |
TCB-267 | New Feature | As a user, I want to either set or override the OS updates "hardware_id" property with the push command, so I can deploy updates to one or more devices with a custom hostname that doesn't match the one originally setup by Toradex | |
Description: An OSTree deployment can be compatible with multiple Hardware IDs.
At the moment, the "push" command has an undocumented parameter named "--hardwareid" that only sets the Hardware ID if the value is missing in the OSTree metadata.
We will change the default behavior so that "--hardwareid" can be used to override the default Hardware ID by the user, and can be passed multiple times to support more than one Hardware ID. |
TCB-263 | Fixed | Bundle: Bundle command no longer works on Windows with error "ConnectionRefusedError: [Errno 111] Connection refused" | Low |
Description: When running the bundle command on Windows, an error happens and it says "ConnectionRefusedError: [Errno 111] Connection refused". Workaround: Run the setup script like so: "source tcb-env-setup.sh -- --network=host". |
TCB-260 | New Feature | As a user, I want to autoinstall and auto-reboot TorizonCore images customized with TorizonCore Builder | Low |
Description: Toradex Easy Installer supports two features that are very useful for production programming: autoinstall and |