
I just updated the wiki [1] with a build script I wrote in Docker [2]. Putting together the build script in Docker was a very pleasant experience. I broke the script up into many small pieces so that if one particular part failed I could simply go back to the last checkpoint and start from there. Once I had finished the script, I also had very high assurance that it would work with no problems whatsoever when I ran it again from scratch. Normally putting together build scripts is difficult because of the inherently stateful nature of a file system. If you are working on a build script that takes a long time to run the temptation is not to start again from scratch every time something goes wrong. The turn-around times are simply too long. You can't be waiting 50 minutes every time you make a small change. Therein lies madness. But because Docker uses a copy-on-write filesystem under the hood, the filesystem is really a kind of persistent data structure. When one particular part of the script failed I was able to go back to *exactly* the state it was in before it failed. The boon to my productivity and my sanity was immense. Sean [1] https://www.haskell.org/haskellwiki/Android [2] https://github.com/sseefried/docker-build-ghc-android