|TorizonCore Builder 3.8.1 release|
| TCB-401||Known Issue||"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||Feature Request||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 auto-reboot.
To make it possible to easily set these properties in a custom TorizonCore image, TorizonCore Builder must provide an interface for these capabilities.
| TCB-261||New Feature||As a user, I want aktualizr-torizon to report back correct manifest information regarding any pre-provisioned docker-compose packages||Low|
Description: At the moment, if you (1) use TorizonCore Builder to pre-provision (bundle) containers into a Toradex Easy Installer image, and (2) upload the same version of the containers to the Torizon Platform Services, your device will not report to the Platoform that it has that SW version installed.
We are working on a fix on TorizonCore Builder that will allow existing TorizonCore versions to provide this version information to the server. We are also working on a fix in Aktualizr that will allow devices that are already provisioned to be updated to newer versions of TorizonCore Builder and then properly report the version to the server.
| TCB-258||Fixed||"ostree serve" command not working on Windows||Low|
Description: The TorizonCore Builder "ostree serve" command is not working on Windows machines, due to a limitation of the Docker host network driver.
When sourcing the setup script, you must pass an optional flag that will expose the given port to the host.
| TCB-251||Fixed||Variable replacement in tcbuild.yaml file fails with the error "Parsing errors found"||Low|
Description: When using variable substitution with the "build" command, the YAML parser do validation before doing the substitution. This results in the error "Parsing errors found".
| TCB-249||Fixed||Serving OSTree repos with TorizonCore Builder fails when external repository directory is specified||Medium|
Description: When passing the switch --ostree-repo-directory to the ostree serve command, for example "torizoncore-builder ostree serve --ostree-repo-directory ostree_repo/", the tool throws an error:
"UnboundLocalError: local variable 'storage_dir' referenced before assignment"
| TCB-248||New Feature||As a user, I want to customize TorizonCore with online provisioning data so provisioning at scale supports this use case||Low|
Description: To allow provisioning devices at scale to the Torizon Platform Services, we will make it possible to include provisioning credentials into a custom TorizonCore image.
To learn more, check out the "provision" properties in the "output section" of the build command manual.
| TCB-85||New Feature||As a user, I want the "deploy" command to automatically find and use a free SSH port||Low|
Description: The TorizonCore Builder "deploy" command uses the hardcoded port 8080 to deploy customization to a board. Sometimes this port is not free for some reason and the command fails.
We will improve the logic and let TorizonCore Builder find and use a random free port for the deployment.
| TCB-209||Fixed||TorizonCore Builder: Bundle command does not work properly with cgroups v2||Low|
Description: If the Linux distro installed in your development PC has already moved to using cgroup rules v2, you will get the following error when running the TorizonCore Builder "bundle" command: "docker.errors.NullResource: Resource ID was not provided".
| TCB-115||New Feature||As a user, I want to update the device trees to the latest available with the 'dt checkout ' command||Low|
Description: The "dt checkout" command conveniently clones the device-trees repository in the correct branch for a given input image. It does not provide an option to update the repository given that some updates were made upstream. This task adds the option "--update" that will attempt to pull the latest.
Workaround: Use Git commands as "git pull" to update the repository.
| TCB-126||New Feature||As a user, I want to update kernel arguments when deploying a new OSTree image to the device using TorizonCore Builder||Low|
Description: Currently, in TorizonCore, default kernel arguments are not updateable. That means when we deploy a new OSTree commit, the kargs defined in this new commit will not be used during deployment.
|TorizonCore Builder 3.4.0 minor release|
| TCB-247||New Feature||As a user, I want to learn how to set the name and version when pushing OSTree commits to Torizon OTA||Low|
Description: TorizonCore Builder is capable of setting OSTree name and version when pushing commits to the Torizon Platform Services.
This task documents how you can use this feature. Learn how to use it in the article Signing and Pushing TorizonCore Images to Torizon OTA.
| TCB-51||New Feature||As a user, I want to be aware about and free to use my own canonical Docker Compose files||Low|
Description: For the offline-updates MVP - and also as a best practice - a canonical Docker Compose file is required. It is a Docker Compose file that does not have comments or blank lines, and instead of tags, it uses SHA hashes for the versions of all containers. The purpose is to ensure the version of all packages for your application will be ensured, or in other words, locked.
Due to this, we are introducing the concept of a docker-compose.lock.yaml file, that is the canonical version of a regular docker-compose.yaml file.
In this task, we have introduced this feature along with documentation explaining how to use it, and why it is important.
|TorizonCore Builder 3.2.0 minor release|
| TCB-132||New Feature||As a user, I want to be able to customize the non-initramfs splash screen||Low|
Description: TorizonCore has two splash screens: one that shows when booting, and another that shows on reboot or shutdown.
It was reported that the reboot/shutdown splash was not being updated by TorizonCore Builder. This ticket address it and makes sure that both splash screens are updated.
| TCB-236||Fixed||TorizonCore Builder: --storage-directory argument does not seem to work well||Low|
Description: Make it possible to set the storage directory in the setup script, and change the --storage-directory parameter to be hidden (it will be deprecated later).
| TCB-144||New Feature||As a user, I want to be able to change the SSH port used by TorizonCore Builder for device connection||Low|
Description: Create a --remote-port parameter to make it possible to set the SSH port TorizonCore Builder will use to connect to devices running TorizonCore.
| TCB-200||Fixed||TorizonCore builder does not update tezi image metadata on a deploy command||Low|
Description: When running the `deploy` command, an image compatible with Toradex Easy Installer is created. Some metadata contained in image.json, such as the image size, are not updated by TorizonCore builder, and it uses the same values as the input image.
| TCB-133||New Feature||As a user, I want to locally provision an Easy Installer image via an HTTP server, so I don't have to use a USB stick||Low|
Description: In TorizonCore Builder, the deploy and combine commands are responsible to generate Easy Installer images.
To be able to install them using the LAN in an easy way, we have introduced the `images serve` command, that brings up a local Easy Installer image server.
|TorizonCore Builder 3.1.2 patch release|
| TCB-221||Fixed||TorizonCore Builder is failing to push docker-compose files to Torizon OTA||Low|
Description: After recent changes in the backend, TorizonCore Builder is failing when we try to push docker-compose files to OTA.
|TorizonCore Builder 3.1.1 patch release|
| TCB-222||Fixed||TorizonCore Builder does not apply the Splash Screen on an image when an external kernel module build is also included||Low|
Description: When building a Custom Image of TorizonCore with external kernel modules and a splash screen, the splash screen does not show on the device display. When the external kernel module is not included the splash screen shows on the display.
| TCB-217||Fixed||TorizonCore Builder: Isolate fails when using --changes-directory with symlinks||Low|
Description: There is an issue when using the isolate command when there are symlinks to be isolated and using the --changes-directory argument.
| TCB-86||New Feature||As a user, I want to be able to use TorizonCore Builder to generate takeout images for offline updates||Low|
Description: The command `images takeout` is introduced to the TorizonCore 3.x series, as part of the preparation for the secure offline updates MVP. The command is still unstable, features and syntax may change without further notice in the near future.
| TCB-61||New Feature||Improve the error message requiring an unpack image in TorizonCore Builder||Low|
Description: Improve the error messages on TorizonCore Builder when "unpack" hasn't been run yet.
|TorizonCore Builder 3.1.0 minor release|
| TCB-166||New Feature||As a user, I want to automatically complete commands and parameters in TorizonCore Builder||Low|
Description: Command-line developers are used to pressing `Tab` to autocomplete commands. We are introducing such a feature for TorizonCore Builder as well.
| TCB-227||Fixed||TorizonCore Builder: "splash" directory in storage is not cleared by images command||Low|
Description: The `images` command has an option to clear the storage directories. It does not clear the /splash directory, though. This ticket aims to fix it.
| TCB-67||New Feature||As a user, I want to be able to isolate/union files containing especial characters||Low|
Description: TorizonCore Builder should be able to handle (isolate, union) files with special characters (e.g. "hello'world.txt).
| TCB-117||New Feature||As a user, I want files created by torizoncore-builder to belong to user and not to root||Low|
Description: TorizonCore Builder runs inside a container, and by default it creates files owned by root. This is a bit annoying since we sometimes want to edit or erase some files with our user in the development PC. We investigate and implement a way to make files belong to the user and not root.
| TCB-162||New Feature||As a user, I want to use TorizonCore Builder to push container updates to TorizonCore OTA, so I don't need the web frontend and can use offline keys||Low|
Description: Add feature in TorizonCore Builder to push container updates (docker-compose files) to TorizonCore OTA.
| TCB-160||New Feature||Improve TorizonCore Builder device connection parameters||Low|
Description: For the commands that require device connection, make --remote-username and --remote-password parameters optional.
|TorizonCore Builder 3.0.0 major release|
| TCB-59||New Feature||As a developer, I want to show a message in the TorizonCore Builder set up script to warn users about files in the working directory||Low|
Description: TorizonCore Builder can only see files inside the working directory, but users often change directories outside of their working directory or reference file paths outside of it. To improve that, let's add a message in the setup script
| TCB-215||Fixed||Torizoncore builder union command fails with enabled systemd services.||Low|
Description: Torizoncore builder union command fails with enabled systemd services.
Workaround: Disable the systemd service before running the "isolate" command. This will require you to manually enable it after deployment.
| TCB-77||New Feature||Improvements in the TorizonCore Builder CLI||Low|
Description: Several improvements in the command line interface in TorizonCore Builder:
- Move --bundle-directory parameter from the top-level torizoncore-builder command to the "batch", "bundle" and "combine" subcommand.
- Remove --image-directory and --output-directory from the combine command (make them positional arguments).
- Check if the given image input directory for the "combine" command contains a valid Easy Installer image.
| TCB-223||Fixed||TorizonCore Builder's union command doesn't work with symlinks||Low|
Description: If you have a symlink in the changes directory that points to a file using the full path, TorizonCore Builder’s union command fails.
| TCB-238||Fixed||TorizonCore Builder: "bundle" fails with insecure http registry||Low|
Description: The bundle command doesn't work when trying to fetch images from their insecure local HTTP registry.
| TCB-163||New Feature||Improve the user interface of the TorizonCore Builder union command||Low|
Description: The interface of the union command was simplified to make it easier to
- the --extra-changes-directory switch was removed and its functionality moved to --changes-directory;
- the switch --union-branch no longer exists either - the branch name is now a positional parameter;
|TorizonCore Builder 2.6.1 patch release|
| TCB-138||New Feature||As a user, I want TorizonCore Builder to return an error if I try to compile a device tree using an overlay||Low|
Description: TorizonCore Builder should return an error if users try to apply a device tree using a device tree overlay.
|TorizonCore Builder 2.6.0 minor release|
| TCB-212||Fixed||torizoncore-builder leaves temporary files in the working directory||Low|
Description: When uncompressing a local image, TorizonCore Builder leaves behind the uncompressed directory, even though it isn't used anymore. In this ticket we clean up the uncompressed directory.
| TCB-90||New Feature||As a user, I want TorizonCore Builder to customize the TEZI image metadata even when not bundling containers in it||Low|
Description: TorizonCore Builder should be able to customize a Toradex Easy Installer Image (by setting its name, description, license file, and release notes) even when not trying to bundle container images in it.
| TCB-71||New Feature||As a user, I want to set permissions on files, so I can keep credentials when committing changes to OSTree||Low|
Description: TorizonCore Builder should be able to save and restore credentials when isolating files from the device and union-ing files to another TorizonCore image.
| TCB-165||New Feature||As a user, I want to store image customizations in a configuration file, so I can better manage the changes and incrementally rebuild the image||Low|
Description: Introduce TorizonCore Builder "build" command to build a customized image based on a configuration file.
|TorizonCore Builder 2.5.4 patch release|
| TCB-225||Fixed||Bundle command in TorizonCore Builder sometimes creates an incorrect tar file||Low|
Description: There's an issue with the bundle sub-command where the the tar file output that gets created is inconsistent. The proper expected name that should be created is docker-storage.tar.xz, yet sometimes a docker-storage.tar is created instead.
|TorizonCore Builder 2.5.3 patch release|
| TCB-240||Fixed||TorizonCore Builder union fails if changes directory is in a sub-directory||Low|
Description: The `union` command applies changes to an image. It currently only works if the changes are kept in a directory directly under the TorizonCore Builder directory. Sub-directories such as "samples/changes" does not work.
| TCB-226||Fixed||Isolate command doesn't capture the mandatory password change for the torizon user||Low|
Description: Upon the first login, it is mandatory to change the password. This modification is not captured by TorizonCore Builder's isolate command.
| TCB-194||Fixed||torizoncore-builder: Bundle fails if trying to access a private registry that is not dockerhub||Low|
Description: So far, only Docker Hub is supported by TorizonCore Builder. We will add a `--registry` flag or something similar to the `bundle` command, so users can pass any registry for login.
| TCB-231||Fixed||TorizonCore Builder isolate issue with NetworkManager connections with spaces in names||Low|
Description: The isolate command fails because of spaces in the name of files.
| TCB-229||Fixed||TorizonCore Builder is not able to build and apply some device tree overlays||Low|
Description: Some device tree overlays from Toradex's overlays repository fail to build.
|TorizonCore Builder 2.5.2 patch release|
| TCB-237||Fixed||TorizonCore Builder cannot fetch branch toradex_5.4-2.3.x-imx from device trees repository||Low|
Description: TorizonCore Builder cannot fetch the new NXP BSP branch (toradex_5.4-2.3.x-imx) from device trees repository.
| TCB-219||Fixed||Some services fail to start after deploying a new OSTree image with TorizonCore Builder||Low|
Description: After deploying an OSTree image with custom files using TorizonCore Builder, some services fail to start.
| TCB-201||Fixed||TorizonCore Builder: Bundle commands fails when used on Windows in a WSL 2 distro||Low|
Description: If you attempt to bundle a container with TorizonCore Builder on Windows from WSL 2, it fails.
|TorizonCore Builder 2.5.1 patch release|
| TCB-54||New Feature||As a user, I want to run TorizonCore Builder on Windows, so I don't have to install/learn Linux||Low|
Description: TorizonCore Builder already runs in a containerized environment. In this task, we document how to set it up on Windows and add tests on Windows to our release tests.
|TorizonCore Builder 2.5.0 minor release|
| TCB-218||Fixed||TorizonCore Builder container image size is too big||Low|
Description: With the introduction of the `kernel build_module` command, the size of TorizonCore Builder increased by a factor of ~10x, due to the download of a duplicated toolchain. This commit addresses this issue and also removes the toolchain from TorizonCore Builder, leaving the download only to those users who need to execute the `kernel build_module` command. This approach increases the time for the first run of the command, while leaving TorizonCore Builder much smaller by default.
| TCB-197||Fixed||Cannot Export tcb-env-setup.sh with Zsh||Low|
Description: Make TorizonCore Builder set up script work with other shells like ksh and zsh.
| TCB-202||Fixed||TorizonCore Builder Not Listing All Compatible Overlays||Low|
Description: TorizonCore Builder seems to not be listing all compatible overlays for some machines, like Apalis iMX8.
| TCB-70||New Feature||As a user, I want TorizonCore Builder to build my own kernel modules, so I don't need to learn OpenEmbedded to do that||Low|
Description: Add the build_module command in TorizonCore Builder to build and add to the image out-of-tree kernel modules.
| TCB-69||New Feature||As a user, I want to use TorizonCore Builder to set custom kernel arguments, so I can generate customized images with my own kernel arguments||Low|
Description: Make it possible to set custom kernel arguments using TorizonCore Builder.
|TorizonCore Builder 2.4.0 minor release|
| TCB-135||New Feature||As a user, I want to run just one command to deploy an overlay in the device, so it is easier and less error-prone||Low|
Description: Create 'dto deploy' command in TorizonCore Builder to automatically deploy a device tree overlay in the device.
|TorizonCore Builder 2.3.0 minor release|
| TCB-49||New Feature||As a user, I want TorizonCore Builder to automatically download and unpack TorizonCore images, so I don't need to||Low|
Description: Add 'images download/unpack' commands in TorizonCore Builder to automatically download Tezi images from Artifactory (based on the version running on a device) and unpack for further customizations.
| TCB-55||New Feature||Support mDNS on hosts with multiple network interfaces||Low|
Description: It seems that currently mDNS only works on the primary network interface. Hosts with multiple network interfaces are quite common, especially in more restrictive corporate networks, where development needs to happen on a separate network. It can also be relevant if WiFi and Ethernet is used alongside.
|TorizonCore Builder 2.2.0 minor release|
| TCB-161||New Feature||As a user, I want to know when a new version of TorizonCore Builder is available, so I can update it as soon as possible to leverage new commands and features||Low|
Description: Create a shell script to automate environment configuration and warn the user when a new TorizonCore Builder version is available.
| TCB-57||New Feature||Add the ability in TorizonCore Builder to "bundle" containers stored in private registries||Low|
Description: Currently, there is a limitation with the "bundle" command of TorizonCore Builder. If any of the container images specified in the provided docker-compose.yml are stored in private registries the "docker pull" will fail, causing the entire command to error out.
| TCB-168||New Feature||As a user, I want to see a link to the web documentation in the help option, so I have quick access to more information about the tool||Low|
Description: To increase awareness about the TorizonCore Builder documentation, we add a hyperlink to it at the end of the `--help`.
| TCB-214||Fixed||Torizoncore-builder: Deploying new OSTree on the device fails if I perform hard reboot to boot into the new deployment||Low|
Description: Deploying new OSTree on the device fails if I perform hard reboot to boot into the new deployment.
| TCB-233||Fixed||TorizonCore Builder dt deploy fails if hostname is used instead of IP address||Low|
Description: If you execute `torizoncore-builder deploy dt_changes` and pass the board hostname as parameter for `--remote-host` instead of the board IP, for example `apalis-imx8-06543292.local`, it does not work.
Workaround: It has been fixed in TorizonCore Builder 2.2.0. Use this version of the tool.
|TorizonCore Builder 2.1.2 patch release|
| TCB-235||Fixed||Internet connection stops working after applying overlay with TorizonCore-Builder||Low|
Description: After applying some device tree overlays with TorizonCore Builder, the internet connection stops working.
|TorizonCore Builder 2.1.1 patch release|
| TCB-105||New Feature||Refactor device tree commands and adapt them to use overlays.txt||Low|
Description: Refactor device tree commands and adapt them to use overlays.txt.
|TorizonCore Builder 2.1.0 minor release|
| TCB-220||Fixed||TorizonCore Builder is generating Easy Installer images that don't boot||Low|
Description: TorizonCore Builder is generating Easy Installer images that don't boot.
| TCB-199||Fixed||TorizonCore Builder is creating an Easy Installer image with incorrect permissions||Low|
Description: After using TorizonCore Builder to customize an Easy Installer image with a device tree overlay applied, the generated Easy Installer image has incorrect permissions in the /home/torizon directory.
|TorizonCore Builder 2.0.1 patch release|
| TCB-193||Fixed||TorizonCore Builder splash command does not work using --storage-directory||Low|
Description: TorizonCore Builder splash command does not work using --storage-directory.
|TorizonCore Builder 2.0.0 major release|
| TCB-101||New Feature||Move torizoncore-builder container to Bullseye||Low|
Description: Update the TorizonCore Builder container to Debian Bullseye.
|TorizonCore Builder 1.3.1 minor release|
| TCB-123||New Feature||Allow to specifiy Easy Installer feed for evaluation container build command||Low|
Description: To allow TorizonCore Builder batch command (only available on the 1.x series) to use any Easy Installer feed, and not only the internal Toradex one, we added the parameter `--tezi-feed-url`.
|TorizonCore Builder 1.x.y series releases up to 1.2.1|
| TCB-242||Fixed||Torizoncore-builder: invalid compose file after bundle command||Low|
Description: Torizoncore Builder generates an invalid compose file after bundle command.
| TCB-78||New Feature||Add product IDs to evaluation containers||Low|
Description: Add a property called TORADEX_PRODUCT_IDS to the TorizonCore images with pre-provisioned containers.
| TCB-203||Fixed||docker-compose file missing MACHINE variable||Low|
Description: When TorizonCore Builder replaces the tags in docker-compose file with concrete sha256 hashes, it drops the MACHINE variable.
| TCB-148||New Feature||Investigate how to improve TorizonCore Builder usability||Low|
Description: In this ticket we make some UX-based improvements
- Show list of available device tree overlays automatically if none specified. Improve console visible messages in general.
- Use sensible default include paths for device tree includes.
- Improve dt subcommand description to be a bit more descriptive.
- Currently --devicetree specifies a binary or source device tree depending on the exact subcommand. This might lead to confusion. Use --devicetree for device tree binaries exclusively and --devicetree-source when a source file is required.
- Write a clear error message if the "devicetree" file is not present.
| TCB-106||New Feature||Create "dt list-overlays" sub-command to list available/compatible device tree overlays||Low|
Description: We want to create the "dt list-overlays" (or similar name) sub-command to list available (and compatible with the module) device tree overlays.
| TCB-109||New Feature||Create "dt checkout" command to checkout a branch from the device tree overlays repositories||Low|
Description: Create the "dt checkout" sub-command to checkout a branch from the device tree overlays repositories, to improve customers UX as they will not need to manually find the repository, correct branch, compatible version.
| TCB-48||New Feature||Doc: How to use TorizonCore Builder to apply device trees||Low|
Description: Create documentation on how to use TorizonCore Builder to apply device trees
| TCB-107||New Feature||Show currently applied device tree overlays||Low|
Description: Add an option in TorizonCore Builder so the customer can see the device tree overlays applied to the current device tree.
| TCB-111||New Feature||Add additional metadata to OTA targets.json||Low|
Description: Add additional metadata to OTA targets.json.
| TCB-108||New Feature||Implement deploy to device||Low|
Description: TorizonCore Builder command to deploy a OSTree reference directly onto a target device.
| TCB-40||New Feature||Implement splash sub-command||Low|
Description: Add feature in TorizonCore Builder to set a splash screen image.
| TCB-216||Fixed||TorizonCore Builder isolate does not work with mDNS host names||Low|
Description: TorizonCore Builder should work with mDNS host names
| TCB-121||New Feature||Push OSTree repository to OTA||Low|
Description: Add the push command to torizoncore-builder tool to upload changes in an OSTree repository to Torizon OTA.
| TCB-211||Fixed||TorizonCore Builder not working with a Docker-compose with environment variables||Low|
Description: Trying to run torizoncore-builder bundle with a Docker-compose that has an environment variable gives an error.
| TCB-13||New Feature||TorizonCore Builder tool||Low|
Description: TorizonCore Builder is a tool that helps to integrate Docker containers and user's customization in a production image.
| TCB-410||New Feature||Add nano to the dev-tools container|
Description: The dev-tools container should have nano as text editors for a better user experience
| TCB-152||New Feature||Support custom EULA when preprovisioning containers||Low|
Description: Some containers such as our base containers with Vivante binary drivers need the customer to accept an EULA. We should support adding an EULA to the Tezi image as part of the pre-provisioning process (in torizoncore-builder).
| TCB-228||Fixed||torizoncore-builder error on Windows using cmd||Low|
Description: torizoncore-builder does not work on Windows using cmd
| TCB-328||Known Issue||Bundle command fails with the error "ConnectionRefusedError: [Errno 111] Connection refused" when using a Linux distro with the ZFS filesystem||Low|
Description: TorizonCore Builder does not support the ZFS filesystem. If you setup a computer with a Linux distro that uses ZFS - for example, Ubuntu 22.04 LTS with the experimental ZFS support enabled - you will see errors such as "ConnectionRefusedError: [Errno 111] Connection refused" when running the bundle command.
On TorizonCore Builder we run Docker in Docker (DinD) and use the OverlayFS driver. As stated on Docker storage drivers - Supported storage drivers per Linux distribution, it is the recommended storage driver and requires XFS or ext4 as the filesystem where "/var/lib/docker" (from the DinD) is located. In practice, this means that you have to use a filesystem compatible with OverlayFS on your computer for TorizonCore Builder to work, even if you don't run the Docker daemon itself with OverlayFS.
At the moment, our plans are to make the error message more intuitive, stating that ZFS is not supported. We will keep monitoring the adoption of ZFS and possibly other filesystems and, as they gain traction and become the default on major Linux distros, we might consider adding support for them in upcoming TorizonCore versions.
Workaround: Use a Linux distro with either ext4 or XFS (with `d_type=true` enabled) as the filesystem
| TCB-208||Known Issue||TorizonCore Builder: bundled container executed with net=host permission fails with error "SIOCSIFFLAGS: Operation not permitted"||Low|
Description: As reported in our community, with TorizonCore Builder, If you bundle a container that sets extended attributes on files inside the container (for example, using the "setcap" command), the container will fail upon execution with the error "SIOCSIFFLAGS: Operation not permitted" or another related error.
If you remove the bundled container and manually pull it from Docker Hub, then try to run it again, the same error will not happen.
While this bug was investigated, we came to docker build does not preserve xattrs in the generated image, and after several tests such as setting capabilities and building the container with the classic Docker vs Buildkit, we concluded that:
- Docker does not keep all extended attributes that are set in a Dockerfile, regardless of using Buildkit or the Classic Docker builder, and using Docker directly (without Compose).
- Even some capabilities that are kept by Docker get lost when bundling a container with TorizonCore Builder
Given the constraints of Docker, we won't work on a fix in TorizonCore Builder, and we advise you to not rely on xattrs or any feature based on them inside a container.
Workaround: For this specific bug: set the suid for executable files rather than using setcap. For example use "chmod u+s" instead of "setcap" seems to work as well and may carry through the bundle process.
In general, do not rely on xattrs or any feature based on them inside a container. Capabilities and ACLs are features that may be set via xattrs and can also be set via docker-compose properties, which is the recommended way to set them in a portable and reliable way.
| TCB-232||Known Issue||TorizonCore Builder: "bundle" command causes issues on a local registry on Windows machines||Low|
Description: After using the "bundle" command the container running the local registry stops working properly. On further investigation, it appears that while the container for the local registry is still up and running the port for this container is no longer accessible.
This issue only happens on Windows machines.
Update: this bug is not reproducible anymore, therefore it has possibly been fixed by an update on Docker for Windows. If you face such issue, please let us know and we'll reevaluate it.
Workaround: Until the bug is fixed, use a Linux machine.
| TCB-409||Known Issue||Applying overlay on Apalis iMX8X fails||Low|
Description: Activating device tree overlay fails on Apalis i.MX8
| TCB-327||Feature Request||As a user of torizoncore-builder I want a line number when a parse error occurs in the "build" command|
Description: When running the build command with a tcbuild.yaml file with incorrect syntax, the error does not display the line number.
| TCB-316||Known Issue||Build command fails when not using Docker volumes||Low|
Description: It is possible to run TorizonCore Builder without using a Docker volume, by passing some extra flags to the setup script: "source tcb-env-setup.sh -d -s /srv/builder-tool/storage".
When using the "tcb build" command, though, it does not create the output directory as expected.
It has been reported on the TCB GitHub issues.
Workaround: Use docker volumes (the default option) when using the build command.
| TCB-305||Known Issue||"dto deploy" error "AttributeError: 'Namespace' object has no attribute 'update'" because it does not have the "update" switch||Low|
Description: The command "dto deploy" is a combination of several commands at once. It essentially runs the following commands in sequence:
- images download
- dt checkout
- dto remove
- dto apply
However not every switch for the individual commands is supported by dto deploy. In particular for this bug the --update switch from the dt checkout command isn’t supported which causes the error AttributeError: 'Namespace' object has no attribute 'update'
Workaround: Run the commands stated in the public description above one-by-one.
You might not need to run all of them, though. Consult each command functionality in the TorizonCore Builder - Commands Manual to evaluate which ones you need to run.
| TCB-205||Known Issue||"images serve" command not working on Windows||Low|
Description: The TorizonCore Builder "images serve" command was added to TorizonCore Builder on version 3.2.0. It does not work on Windows due to two limitations: (1) the Docker host network driver is not supported on Windows and (2) the multicast DNS (mDNS) used by Avahi does not work.
Workaround: Take the output image from TorizonCore Builder and use an SD Card/USB stick to install it to a Toradex SoM.
Alternatively, use a Linux machine.
| TCB-230||Known Issue||Torizoncore builder "bundle" command fails when TCP docker access is enabled||Low|
Description: When Docker is run with TCP access, the bundle command fails with error "ConnectionRefusedError: [Errno 111] Connection refused"
Workaround: Run Docker with the default configuration instead of TCP.