Thoughts on building QNX with Yocto
I'm using QNX as a SafeOS and the build system is a mess. What QNX provides by default is a simple Makefile + a qconfig.mk file with some QNX modifications. This is fine for small projects, but I was wondering what tools I could use to build better with better dependency and geometry management.
We use a wrapped build system based on CMake and run in a Docker environment. The code is not all source, some is binary, and some is too unstable and workaround heavy for CMake to cover.
QNX provides toolchains, base binaries, etc. in the Software Development Platform (SDP). When you get the SDP, you also get the SoC vendor's SoC-specific stuff, if you authorize it and set it up. All of them are provided in binary form and you build each component code based on them.
Install the SDP in a location and manage the component source code using the repo tool. Then, build the components sequentially with Make or CMake. Since the components are small, it doesn't take much time to build them, but it gives you a lot to think about.
- Cache usage
- Dependency management
- Development Process
I thought it might be a good idea to use yocto, and a friend from the Cluster team suggested it a few months ago. At that time, another QNX developer didn't recommend it because he didn't have any problems with it and said it would be more time consuming and difficult to debug if something went wrong. Today, while talking to SoC vendors, this topic came up again and I thought about it again. Some OEMs are using QNX wrapped in yocto to build their systems.
They cited the advantages listed above: cache usage, dependency management, development process, and unified development process with Linux. If you set up the ExternalToolchain to be unpacked in SDP and build it, you should be able to build it without any problems. However, you need to know a little bit about QNX's build system before making the switch.
We haven't talked about it in depth yet, but it's worth a quick dip. QNX is commercial, so it can't be open, but I searched github to try to imitate it, but there is no meta-qnx, so I created a group and repository https://github.com/meta-qnx/meta-qnx with no content.
Many of my friends don't recommend going to QNX because they are burned by Yocto when using Linux, but personally, I think it's definitely worth a try. I think it would be good to give it a try with a low priority.