Nightly Linux builds using Docker
Keep for historical reference (19 Septemeber 2018)
We create a base docker image that has the necessary tools to build ChimeraX. This image is called rbvi/chimerax-devel:1.0 and it is based on the debian:8 image with a lot of development packages. The plan is to create a rbvi/chimerax-devel:2.0 that is based on the official Python manylinux1 docker image, quay.io/pypa/manylinux1_x86_64 with a newer C++ compiler (the manylinx1 image has gcc 4.8.2 and ChimeraX needs 4.9 or newer). The plan is to publish the docker image as well as the build script.
The Linux build script:
- Makes the rbvi/chimerax-devel:1.0 docker image if it isn't already present.
- Creates a temporary directory that contains:
- the chimerax source for the given revision
- the PyQt5 commercial wheel (including the wheel means that the docker image does not need ssh access to plato)
- Creates a docker image with the temporary directory as /home/chimerax and a make install > build.out command (the contents of the temporary directory are copied into the docker image, but could be mounted at runtime if the -v option work, but it doesn't)
- That docker image can be run interactively with the make install done by hand for testing, but the script runs it, creating a docker container, and waits for it to complete
- The build.out file is copied back from the docker container
- If the build was successful, the application tree is copied back from the docker container and is placed in the chimerax download directory
- At exit, the docker container and image are removed, as well as the temporary directory
If the docker daemon is not running, the script also starts the docker daemon with audit docker start and stops it with audit docker stop