| 1 | = Nightly Linux builds using Docker = |
| 2 | |
| 3 | 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 build script as well as the resulting docker image. |
| 4 | |
| 5 | The Linux build script: |
| 6 | |
| 7 | 1. Makes the **rbvi/chimerax-devel:1.0** docker image if it isn't already present. |
| 8 | 1. Creates a temporary directory that contains: |
| 9 | * the chimerax source for the given revision |
| 10 | * the PyQt5 commercial wheel |
| 11 | (including the wheel means that the docker image does not need ssh access to plato) |
| 12 | 1. 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) |
| 13 | 1. 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 |
| 14 | 1. The build.out file is copied back from the docker container |
| 15 | 1. If the build was successful, the application tree is copied back from the docker container and is placed in the chimerax download directory |
| 16 | 1. At exit, the docker container and image are removed, as well as the temporary directory |
| 17 | |
| 18 | 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** |