Friday, December 14, 2012

Cross platform package building..?

Sorry for the chatter post, but if anybody has recommendations for a tool that can build for win, osx, and lin that would be great. The project is an autofools one, mainly coded in 100s of kloc of C++. Builds like a treat on a Fedora machine, can be beaten unto submission to build on osx, and I assume on a suitably tainted windows machine it will gcc into binaries too. At least it has built on those other platforms in the past.

I've had great success with OBS, but that was mainly for Linux packages. It seems OBS can do mingw too, but I've not walked the valley of darkness into building for the more closed platforms on OBS before.

The saucelabs looks pretty cool, but it seems targeted to web code if I am reading it correctly.

The initial plan is to get 24hr rolling packages for all platforms and have feedback as to which day a github commit has broken the package build. It might be nice to have it for each github commit, but I think it would be easy enough to bisect a break given a 24 hour window unless an armada of contributors rushes at the ship.

A separate build issue I've been tinkering with in my mind for a while is grabbing from a github repo and creating android packages. Different code base for this though, mainly some of my n9 apps, as such, preferably for a mixed C++/QML app. But I think for that project I'll wind up taking my chisel and hammer and coming back with a cron job.


4 comments:

csslayer said...

if it's qt only.. I think qmake would be the best one. I think can also handle your n9/android app together easily.

Use cmake if you want something more complex.. but it would take much work for write cmake script.

Dennis Nienhüser said...

We're using http://en.wikipedia.org/wiki/Buildbot at work for some years now for pretty much this purpose: each commit to the master branch of various repositories triggers a rebuild (source update + compile), and each night a complete build is run from scratch. Requires a central server to dispatch build tasks (buildmaster) and at least one system for each operating system you want to support (buildslaves).

Buildbot is pretty flexible, we're also using it for sanity checks and package installations of ~30 Linux workstations.

Diane said...

CMake can generate native build files for most platforms. It can for instance make gnu makefiles, visual studio projects, and xcode projects.

Craig Ringer said...

Have you thought about Jenkins for the build automation part? It's a pretty good build / test controller with lots of useful plug-ins, plus plug-ins are really easy to write.