======================= running Pocl in Docker ======================= Install Docker ---------------- * install docker for your distribution * start the docker daemon * make sure you have enough space (default location is usually ``/var/lib/docker``, required storage for standard pocl build is about 1.5 GB per container, and more than 10GB for TCE/PHSA builds) start Pocl container ---------------------- * create an empty directory * copy Dockerfile of your choice (any file from tools/docker/) to ``/Dockerfile`` * ``cd ; sudo docker build -t TAG .`` .. where TAG is a name you can choose for the build. * ``sudo docker run -t TAG`` * this will by default use master branch of pocl git; to use a different branch/commit, run docker build with ``--build-arg GIT_COMMIT=`` Dockerfiles ------------ Many are split up into two or three build stages, in which you must build all but last stage with a proper tag (grep the dockerfiles for "FROM "). Dockerfiles are named according to what they build: * `base`: the first stage in multi-stage Docker builds. Downloads dependencies and clones pocl git repo but does nothing more. * `default`: builds pocl, then runs the internal tests from build dir. Uses latest release of a distribution, with whatever is the default version of LLVM. * ``: same as above, except uses specific release and specific LLVM version (the latest available in that release). * `default.32bit`: same as default but sets up i386 environment * `test_install`: builds & installs pocl into system path, then runs the internal tests * `distro`: does a distribution-friendly build (enables runtime detection of CPU, etc) Some additional notes: * Arch Dockerfiles are split up into two-stage builds * some (not all) Ubuntu Dockerfiles are split up into multi-stage builds * RHEL 7 was added, it's using unofficial LLVM 5.0 binaries from copr, since the official RHEL 7 LLVM is too old. * TCE added - TCE is built using three stages (LLVM, TCE, pocl) * PHSA added - also built using three stages (LLVM, PHSA runtime, pocl)