Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-81947

Development Host Toolchain Containerization




      What is the benefit? Why is this valuable?

      For Qt Device Creation (embedded development), we need macOS on ARM host support (which is however provided natively now for mac to mac use case) onto Linux targets. Additionally to this, we can see in horizon two major changes to earlier days: (1) We will need to support all current hosts on both Intel and ARM based hosts duplicating hosts support, and (2) simultaneously we need to support more embedded target OS+HW combinations (Yocto + RTOS + AAOS + Ubuntu) than before (mainly Yocto + RTOS). Old style doing host specific cross compilation toolchains is not sustainable to keep up with the changing world.
      Out of scope of this Epic but part of future: We also have developer teams that would like to orchestrate their targets management so that a project lead can centrally manage the team targets qualities, and sometimes also move compilation and packaging outside of the host machine.
      Out of scope for this Epic but related: Simultaneously, we have customers and partners who want to create target systems where the target application is running in a container instead of directly on target OS. This part is partially overlapping with the business need defined above but out of scope for the main purpose of this Epic.

      Able to deploy from Containerised (Docker) toolchain to embedded HW (using native image as today as opposed to running a container on embedded).

      What are common use cases?

      At least the following uses cases are needed:
      -Develop on Mac on ARM (or x86_64) and cross-compile onto Yocto on ARM or x86_64 targets
      -Develop on WIndows on x86_64 and cross-compile onto Yocto on ARM or x86_64 targets
      -Develop on WIndows on ARM and cross-compile onto Yocto on ARM or x86_64 targets (pending Windows ARM host support)

      Technical information

      Due to Linux x86 toolchain performance issues on ARM macs, opting to use Linux arm64 toolchains on ARM Macs with containers. Hence we'd support three different toolchains:
      -Linux x86
      -Linux arm64
      -Windows mingw

      For Linux we can use the native x86 and arm toolchains without containers while on Mac and Windows a containerised toolchain is to be used. On Windows also the native mingw toolchain is available for the time being.

      Docker Desktop for Apple silicon also supports multi-platform images,
      which allows you to build and run images for both x86 and ARM
      architectures without having to set up a complex cross-compilation
      development environment.
      Qmake support is also required for containerised toolchains as it is still widely used in the market and customers are not willing to change a solution that has been working and they are used to.


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              hjk hjk
              santtuahonen Santtu Ahonen
              Veli-Pekka Heinonen Veli-Pekka Heinonen
              Tommi Mänttäri Tommi Mänttäri
              0 Vote for this issue
              13 Start watching this issue



                Gerrit Reviews

                  There are no open Gerrit changes