blob: 2d3525dd1fa4e010df9cff45804fd4df841d586a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
CMake Release Utilities
***********************
This directory contains scripts used to package CMake itself for distribution
on ``cmake.org``. See also the `CMake Source Code Guide`_.
.. _`CMake Source Code Guide`: ../../Help/dev/source.rst
Docker
------
The ``<os>/<arch>/`` directories contain Docker specifications that anyone
may use to produce binaries for CMake on the following platforms:
* ``linux/x86_64/``: Linux on ``x86_64`` architectures.
* ``win/x86/``: Windows on ``x86_64`` and ``i386`` architectures.
Each ``<os>/<arch>/`` directory contains the following:
* ``<os>/<arch>/base/Dockerfile``:
Produces a base image with a build environment for portable CMake binaries.
This image is published in the `kitware/cmake Docker Hub Repository`_
with tag ``build-<os>-<arch>-base-<date>``.
* ``<os>/<arch>/deps/Dockerfile``:
Produces an image with custom-built dependencies for portable CMake binaries.
This image is published in the `kitware/cmake Docker Hub Repository`_
with tag ``build-<os>-<arch>-deps-<date>``.
* ``<os>/<arch>/Dockerfile``:
Produce an image containing a portable CMake binary package.
Build this image using the CMake source directory as the build context.
The resulting image will have an ``/out`` (or ``c:/out``) directory
containing the package. For example, on Linux ``x86_64``:
.. code-block:: console
$ docker build --tag=cmake:build --network none \
-f cmake-src/Utilities/Release/linux/x86_64/Dockerfile cmake-src
$ docker container create --name cmake-build cmake:build
$ docker cp cmake-build:/out .
$ ls out/cmake-*-Linux-x86_64.*
On Windows, the ``win/x86`` specifications support both the ``x86_64``
and ``i386`` architectures selected via ``--build-arg ARCH=...``.
* ``<os>/<arch>/test/Dockerfile``:
Produces a base image with a test environment for packaged CMake binaries.
For example, on Linux ``x86_64``, one may build the test base image:
.. code-block:: console
$ docker build --tag=cmake:test-base \
cmake-src/Utilities/Release/linux/x86_64/test
Then create a local ``test/Dockerfile`` to prepare an image with both the
CMake source tree and the above-built package::
FROM cmake:test-base
COPY cmake-src /opt/cmake/src/cmake
ADD out/cmake-<ver>-Linux-x86_64.tar.gz /opt/
ENV PATH=/opt/cmake-<ver>-Linux-x86_64/bin:$PATH
Build the test image and run it to drive testing:
.. code-block:: console
$ docker build --tag cmake:test --network none -f test/Dockerfile .
$ docker run --network none cmake:test bash test-make.bash
$ docker run --network none cmake:test bash test-ninja.bash
On Windows, the test scripts are called ``test-nmake.bat`` and
``test-ninja.bat``. In the ``x86`` architecture they accept one
argument specifying either ``x86_64`` or ``i386``.
.. _`kitware/cmake Docker Hub Repository`: https://hub.docker.com/r/kitware/cmake
|