Since this forum has shown such active and enthusiastic
responses to complex tools in the Parallax ecosystem, I thought I'd talk about two more: Conan and Docker. I recently started a new job and have begun using these two tools - and I like them a lot.
Finally, a package manager for the C/C++ world that is build system agnostic. It's very new and the C/C++ world is extremely
complex (there's a reason nothing like it has become hugely popular despite the languages being so old), so it isn't perfect. But... it's pretty darned cool. In short, a package maintainer writes "recipes" and compiles the package using that recipe for as many "profiles" (a profile might be Linux/x86_64 and another might be Windows/x86) as possible. The resulting binaries are uploaded to a (hopefully public) repository. When another user wants to use the package, Conan downloads the recipe for them and checks their "profile." If the end-user's profile matches a binary in the repo, then the binary is downloaded and used. If not, then the recipe contains all information necessary to download the package source code and re-compile for the user's profile, and Conan will automatically do just that.
Imagine if a new Propeller user could just install Conan and then let Conan download all necessary tools: PropGCC, Simple Libraries, PropWare (see what I did there? "necessary" tools
), PropLoader, etc. From there, they'd just have to write their code and run! How cool!
My experience with Conan is with Linux only
and x86_64 and ARM. Conan works well in Windows (so I've read, and expect to be true since it is Python) and, if I can get cross-compiling well for ARM, it should work just fine for the Propeller too.
So, the result is a lot of extra complexity for anyone that understands how all of it works together, but the user should
see significantly less
complexity because Conan will just take care of it all.
Another tool that is massively more complex than anyone on these forums has asked for. There are a number of ways this could be leveraged for our community:
1) Alternative to Conan: Ship a Docker image with PropGCC, Simple Libraries, PropLoader (is this even useful in a Docker image??? I have no idea...), PropWare, etc. All a user has to do is pull the Docker image and they're off to the races!
2) Combine with Conan: Ship a Docker image that has Conan pre-installed along with the Propeller profile. Use Conan as described above, but without the worry of installing Conan or maintaining the profile. I don't know that this adds much value... either way you have to install one
of the tools (assuming the user doesn't already have one of them) and Docker is certainly more complex (and larger) than Conan.
3) Purely for the sake of creating artifacts for end-users to download. I've already started this: my build server (http://david.zemon.name:8111?guest=1
) has switched to Docker for cross-compiling OpenSpin and Spin2cpp for the Raspberry Pi and I plan to make the necessary configuration changes soon so that PropGCC for RPi is also built via Docker. Going down this route has the added benefit of being able provide to any Propeller user well-tested Docker images for compiling PropGCC from source! No more lengthy instructions explaining what to do with texinfo and how to download the ARM cross-compiler; just run "docker run --rm -v `pwd`:/opt/project -w /opt/project dockcross/linux-armv6 make -j9999" and pretty soon you'll have a copy of PropGCC!
I'm willing to put the work in for any of this that folks are interested in - I don't think it will be too hard. Just let me know if any of this sounds intriguing.
Docker image in the works: https://hub.docker.com/r/davidzemon/propworld
. Has full suite of Propeller tools but lacks any instructions or helper scripts for using them.