I’d like to better understand the flow of how PlatformIO works. How does the build process work from the Python perspective. Where are the entry points when I call “build” from the IDE? Is there a better way to learn about how all of this flows together other than just browsing through the python code?
Sorry, we don’t have internal documentation for the PlatformIO Core. The whole source code of PlatformIO Core is open source and is hosted on Github GitHub - platformio/platformio-core: A professional collaborative platform for embedded development .
So, you can easily learn through the code. It is not well documented but it is clear for understanding. PlatformIO Build System is based on the SCons Project.
Does it use VM’s somehow under the hood? Download VM images then run them from Python? How are the build environments the same across Windows, Mac, and Linux?
No, system-native tools are downloaded from the registry, e.g. a compiler. Since the PlatformIO core and the platform logic is in cross-system Python and that, very high-level, ‘converts’ the project’s
platformio.ini options in compiler invocations and build steps, cross-os compatibility is achieved there.
You may also find this piece of ‘docs’ helpful.
@maxgerhardt , Do you have any feel / understanding for how well this process is able to build the exact same binary firmware file for a PIO build process on different OS’s? For instance, I’m trying to make myself confident that building my project on different OS’s will ALWAYS produce the exact same binary firmware file.
The building process is independent of the host machine. We use cross toolchains. If they were cross-compiled using the same source code, then the resulting firmware should be the same.