mirror of
https://github.com/reactos/CMake.git
synced 2025-01-19 09:54:02 +00:00
Merge topic 'docker-rel-linux'
689fdbfc61 Utilities/Release: Drop linux64 script in favor of docker build 2d7cfd30ac Utilities/Release: Drop source archive generation in scripts facc240a45 Utilities/Release: Add docker specs to build and test Linux binaries bf832ccf01 Utilities/Release: Add README.rst describing directory content ab153f17bf Utilities/Release: Drop machine-specific README ed294c1664 Add option to skip CMake tests that need network access 4b8a864d52 Add option to test CMake itself against its hosting CMake Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Gregor Jasny <gjasny@googlemail.com> Merge-request: !3727
This commit is contained in:
commit
4929453504
@ -29,6 +29,10 @@ if(CMAKE_BOOTSTRAP)
|
||||
unset(CMAKE_BOOTSTRAP CACHE)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_HOST_CMAKE)
|
||||
get_filename_component(CMake_TEST_EXTERNAL_CMAKE "${CMAKE_COMMAND}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
if(NOT CMake_TEST_EXTERNAL_CMAKE)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "HP-UX")
|
||||
message(FATAL_ERROR
|
||||
@ -684,7 +688,7 @@ endif()
|
||||
# to a cdash4simpletest database. In these cases, the CDash dashboards
|
||||
# should be run first.
|
||||
#
|
||||
if("x${CMAKE_TESTS_CDASH_SERVER}" STREQUAL "x")
|
||||
if("x${CMAKE_TESTS_CDASH_SERVER}" STREQUAL "x" AND NOT CMake_TEST_NO_NETWORK)
|
||||
set(CMAKE_TESTS_CDASH_SERVER "http://open.cdash.org")
|
||||
endif()
|
||||
|
||||
|
@ -74,6 +74,8 @@ The CMake source tree is organized as follows.
|
||||
|
||||
* ``Utilities/Release/``:
|
||||
Scripts used to package CMake itself for distribution on ``cmake.org``.
|
||||
See `Utilities/Release/README.rst`_.
|
||||
|
||||
.. _`CMake Documentation Guide`: documentation.rst
|
||||
.. _`Tests/README.rst`: ../../Tests/README.rst
|
||||
.. _`Utilities/Release/README.rst`: ../../Utilities/Release/README.rst
|
||||
|
@ -780,8 +780,6 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH
|
||||
win64_release.cmake)
|
||||
ADD_NIGHTLY_BUILD_TEST(CMakeNightlyOSX
|
||||
osx_release.cmake)
|
||||
ADD_NIGHTLY_BUILD_TEST(CMakeNightlyLinux64
|
||||
linux64_release.cmake)
|
||||
set_property(TEST CMakeNightlyWin64 PROPERTY DEPENDS CMakeNightlyWin32)
|
||||
endif()
|
||||
|
||||
@ -2619,16 +2617,18 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH
|
||||
PASS_REGULAR_EXPRESSION "Could not find executable"
|
||||
FAIL_REGULAR_EXPRESSION "SegFault")
|
||||
|
||||
configure_file(
|
||||
"${CMake_SOURCE_DIR}/Tests/CTestTestUpload/test.cmake.in"
|
||||
"${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake"
|
||||
@ONLY ESCAPE_QUOTES)
|
||||
add_test(CTestTestUpload ${CMAKE_CTEST_COMMAND}
|
||||
-S "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" -V
|
||||
--output-log "${CMake_BINARY_DIR}/Tests/CTestTestUpload/testOut.log"
|
||||
)
|
||||
set_tests_properties(CTestTestUpload PROPERTIES
|
||||
PASS_REGULAR_EXPRESSION "Upload\\.xml")
|
||||
if(NOT CMake_TEST_NO_NETWORK)
|
||||
configure_file(
|
||||
"${CMake_SOURCE_DIR}/Tests/CTestTestUpload/test.cmake.in"
|
||||
"${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake"
|
||||
@ONLY ESCAPE_QUOTES)
|
||||
add_test(CTestTestUpload ${CMAKE_CTEST_COMMAND}
|
||||
-S "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" -V
|
||||
--output-log "${CMake_BINARY_DIR}/Tests/CTestTestUpload/testOut.log"
|
||||
)
|
||||
set_tests_properties(CTestTestUpload PROPERTIES
|
||||
PASS_REGULAR_EXPRESSION "Upload\\.xml")
|
||||
endif()
|
||||
|
||||
configure_file(
|
||||
"${CMake_SOURCE_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake.in"
|
||||
|
@ -1,18 +0,0 @@
|
||||
To create a cmake release, make sure the "release" tag is pointing to the
|
||||
expected git commit:
|
||||
|
||||
https://cmake.org/gitweb?p=cmake.git;a=shortlog;h=refs/heads/release
|
||||
|
||||
Then as kitware@hythloth, using an up-to-date CMake:
|
||||
|
||||
cd ~/CMakeReleases/cmake/Utilities/Release
|
||||
mkdir 283rc1
|
||||
cd 283rc1
|
||||
~/CMakeReleases/build/bin/cmake -DCMAKE_CREATE_VERSION=release -P ../create-cmake-release.cmake
|
||||
./create-release.sh
|
||||
|
||||
|
||||
create-cmake-release.cmake: script to run to create release sh scripts
|
||||
Add or remove machines in create-cmake-release.cmake.
|
||||
|
||||
machine_release.cmake : config files for each machine
|
84
Utilities/Release/README.rst
Normal file
84
Utilities/Release/README.rst
Normal file
@ -0,0 +1,84 @@
|
||||
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 ``linux/<arch>/`` directories contain Docker specifications that anyone
|
||||
may use to produce Linux binaries for CMake:
|
||||
|
||||
* ``linux/<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-linux-<arch>-base-<date>``.
|
||||
|
||||
* ``linux/<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-linux-<arch>-deps-<date>``.
|
||||
|
||||
* ``linux/<arch>/Dockerfile``:
|
||||
Produce an image containing a portable CMake binary package for Linux.
|
||||
Build this image using the CMake source directory as the build context.
|
||||
The resulting image will have an ``/out`` directory containing the package.
|
||||
For example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ docker build --tag=cmake:build --network none \
|
||||
-f cmake-src/Utilities/Release/linux/$arch/Dockerfile cmake-src
|
||||
$ docker container create --name cmake-build cmake:build
|
||||
$ docker cp cmake-build:/out .
|
||||
$ ls out/cmake-*-Linux-$arch.tar.gz
|
||||
|
||||
* ``linux/<arch>/test/Dockerfile``:
|
||||
Produces a base image with a test environment for packaged CMake binaries.
|
||||
For example, build the test base image:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ docker build --tag=cmake:test-base \
|
||||
cmake-src/Utilities/Release/linux/$arch/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-<arch>.tar.gz /opt/
|
||||
ENV PATH=/opt/cmake-<ver>-Linux-<arch>/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
|
||||
|
||||
.. _`kitware/cmake Docker Hub Repository`: https://hub.docker.com/r/kitware/cmake
|
||||
|
||||
Scripts for Kitware
|
||||
-------------------
|
||||
|
||||
Kitware uses the following scripts to produce binaries for ``cmake.org``.
|
||||
They work only on specific machines Kitware uses for such builds.
|
||||
|
||||
* ``create-cmake-release.cmake``:
|
||||
Run ``cmake -DCMAKE_CREATE_VERSION=$ver -P ../create-cmake-release.cmake``
|
||||
to generate ``create-$ver-*.sh`` release scripts. It also displays
|
||||
instructions to run them.
|
||||
|
||||
* ``*_release.cmake``:
|
||||
Platform-specific settings used in corresponding scripts generated above.
|
||||
|
||||
* ``release_cmake.cmake``:
|
||||
Code shared by all ``*_release.cmake`` scripts.
|
||||
|
||||
* ``release_cmake.sh.in``:
|
||||
Template for script that runs on the actual build machines.
|
@ -45,14 +45,12 @@ echo 'Failed to create \${name}.tar.gz'
|
||||
endfunction()
|
||||
|
||||
write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh")
|
||||
write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-linux64.sh" linux64_release) # Linux x86_64
|
||||
write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-macos.sh" osx_release ) # macOS x86_64
|
||||
write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-win64.sh" win64_release ) # Windows x64
|
||||
write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-win32.sh" win32_release ) # Windows x86
|
||||
|
||||
message("Build docs first and then build for each platform:
|
||||
./create-${CMAKE_CREATE_VERSION}-docs.sh &&
|
||||
./create-${CMAKE_CREATE_VERSION}-linux64.sh &&
|
||||
./create-${CMAKE_CREATE_VERSION}-macos.sh &&
|
||||
./create-${CMAKE_CREATE_VERSION}-win64.sh &&
|
||||
./create-${CMAKE_CREATE_VERSION}-win32.sh &&
|
||||
|
35
Utilities/Release/linux/x86_64/Dockerfile
Normal file
35
Utilities/Release/linux/x86_64/Dockerfile
Normal file
@ -0,0 +1,35 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce an image containing a portable CMake binary package for Linux/x86_64.
|
||||
# Build using the CMake source directory as the build context.
|
||||
# The resulting image will have an '/out' directory containing the package.
|
||||
|
||||
ARG FROM_IMAGE_NAME=kitware/cmake:build-linux-x86_64-deps-2019-08-09
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:630c320b26a67fc584e0bc98314f1fb0cb0abc764348bb2613ef07437f7101f9
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
COPY . /opt/cmake/src/cmake
|
||||
|
||||
ARG TEST=true
|
||||
|
||||
RUN : \
|
||||
&& mkdir -p /opt/cmake/src/cmake-build \
|
||||
&& cd /opt/cmake/src/cmake-build \
|
||||
&& cp ../cmake/Utilities/Release/linux/x86_64/cache.txt CMakeCache.txt \
|
||||
&& source /opt/rh/devtoolset-6/enable \
|
||||
&& source /opt/rh/rh-python36/enable \
|
||||
&& export LANG=en_US.UTF-8 \
|
||||
&& set -x \
|
||||
&& ../cmake/bootstrap --parallel=$(nproc) --docdir=doc/cmake \
|
||||
&& nice make -j $(nproc) \
|
||||
&& if $TEST; then \
|
||||
# Run tests that require the full build tree.
|
||||
bin/ctest --output-on-failure -j 8 -R '^(CMake\.|CMakeLib\.|CMakeServerLib\.|RunCMake\.ctest_memcheck)'; \
|
||||
fi \
|
||||
&& bin/cpack -G TGZ \
|
||||
&& set +x \
|
||||
&& mkdir /out \
|
||||
&& mv cmake-*-Linux-x86_64.tar.gz /out \
|
||||
&& :
|
30
Utilities/Release/linux/x86_64/base/Dockerfile
Normal file
30
Utilities/Release/linux/x86_64/base/Dockerfile
Normal file
@ -0,0 +1,30 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce a base image with a build environment for portable CMake binaries.
|
||||
# Build using the directory containing this file as its own build context.
|
||||
|
||||
ARG FROM_IMAGE_NAME=centos:6
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:dec8f471302de43f4cfcf82f56d99a5227b5ea1aa6d02fa56344986e1f4610e7
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
RUN : \
|
||||
&& yum install -y centos-release-scl \
|
||||
&& yum install -y \
|
||||
ca-certificates \
|
||||
curl \
|
||||
devtoolset-6-gcc \
|
||||
devtoolset-6-gcc-c++ \
|
||||
fontconfig-devel \
|
||||
freetype-devel \
|
||||
git \
|
||||
libX11-devel \
|
||||
libxcb-devel \
|
||||
make \
|
||||
patch \
|
||||
perl \
|
||||
rh-python36-python-pip \
|
||||
xz \
|
||||
&& yum clean all \
|
||||
&& :
|
44
Utilities/Release/linux/x86_64/cache.txt
Normal file
44
Utilities/Release/linux/x86_64/cache.txt
Normal file
@ -0,0 +1,44 @@
|
||||
CMAKE_BUILD_TYPE:STRING=Release
|
||||
|
||||
CMAKE_C_STANDARD:STRING=11
|
||||
CMAKE_CXX_STANDARD:STRING=14
|
||||
|
||||
# Require only older APIs where possible.
|
||||
CMAKE_C_FLAGS:STRING=-D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1
|
||||
|
||||
# Link C++ library statically.
|
||||
CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc
|
||||
|
||||
# Enable ssl support in curl
|
||||
CMAKE_USE_OPENSSL:BOOL=ON
|
||||
OPENSSL_CRYPTO_LIBRARY:STRING=/opt/openssl/lib/libcrypto.a;-pthread
|
||||
OPENSSL_INCLUDE_DIR:PATH=/opt/openssl/include
|
||||
OPENSSL_SSL_LIBRARY:FILEPATH=/opt/openssl/lib/libssl.a
|
||||
|
||||
# Enable ccmake
|
||||
BUILD_CursesDialog:BOOL=ON
|
||||
CURSES_FORM_LIBRARY:FILEPATH=/opt/ncurses/lib/libform.a
|
||||
CURSES_INCLUDE_PATH:PATH=/opt/ncurses/include
|
||||
CURSES_NCURSES_LIBRARY:FILEPATH=/opt/ncurses/lib/libncurses.a
|
||||
|
||||
# Enable cmake-gui with static qt plugins
|
||||
BUILD_QtDialog:BOOL=TRUE
|
||||
CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3
|
||||
CMAKE_PREFIX_PATH:STRING=/opt/qt
|
||||
CMake_QT_STATIC_QXcbIntegrationPlugin_LIBRARIES:STRING=/opt/qt/plugins/platforms/libqxcb.a;/opt/qt/lib/libQt5XcbQpa.a;/opt/qt/lib/libQt5ServiceSupport.a;/opt/qt/lib/libQt5EdidSupport.a;/opt/qt/lib/libQt5EventDispatcherSupport.a;/opt/qt/lib/libQt5FontDatabaseSupport.a;/opt/qt/lib/libQt5ThemeSupport.a;/opt/qt/lib/libxcb-static.a;-lxcb;-lfontconfig;-lfreetype
|
||||
|
||||
# Build documentation.
|
||||
SPHINX_EXECUTABLE:FILEPATH=/opt/rh/rh-python36/root/usr/bin/sphinx-build
|
||||
SPHINX_HTML:BOOL=ON
|
||||
SPHINX_MAN:BOOL=ON
|
||||
SPHINX_QTHELP:BOOL=ON
|
||||
QCOLLECTIONGENERATOR_EXECUTABLE:PATH=/opt/qt/bin/qhelpgenerator
|
||||
|
||||
# We bootstrap as part of the build so skip its test.
|
||||
CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE
|
||||
|
||||
# Skip Qt5 tests because our Qt is static.
|
||||
CMake_TEST_Qt5:BOOL=FALSE
|
||||
|
||||
# CPack package file name component for this platform.
|
||||
CPACK_SYSTEM_NAME:STRING=Linux-x86_64
|
142
Utilities/Release/linux/x86_64/deps/Dockerfile
Normal file
142
Utilities/Release/linux/x86_64/deps/Dockerfile
Normal file
@ -0,0 +1,142 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce an image with custom-built dependencies for portable CMake binaries.
|
||||
# Build using the directory containing this file as its own build context.
|
||||
|
||||
ARG FROM_IMAGE_NAME=kitware/cmake:build-linux-x86_64-base-2019-08-09
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:d2c13617f01181a3143a069e4496d6b78eafffa19d181c42be196d5dfd588151
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
# Sphinx
|
||||
RUN : \
|
||||
&& source /opt/rh/rh-python36/enable \
|
||||
&& pip install sphinx==2.1.2 \
|
||||
&& :
|
||||
|
||||
# Qt
|
||||
# Version 5.12.0 was the last to bundle xkbcommon.
|
||||
COPY qt-install.patch /opt/qt/src/
|
||||
RUN : \
|
||||
&& mkdir -p /opt/qt/src/qt-build \
|
||||
&& cd /opt/qt/src \
|
||||
&& curl -OL https://download.qt.io/archive/qt/5.12/5.12.0/single/qt-everywhere-src-5.12.0.tar.xz \
|
||||
&& sha512sum qt-everywhere-src-5.12.0.tar.xz | grep -q 0dd03d2645fb6dac5b58c8caf92b4a0a6900131f1ccfb02443a0df4702b5da0458f4c45e758d1b929ec709b0f4b36900df2fd60a058af9cc8c1a0748b6d57aae \
|
||||
&& tar xJf qt-everywhere-src-5.12.0.tar.xz \
|
||||
&& cd qt-build \
|
||||
&& source /opt/rh/devtoolset-6/enable \
|
||||
&& ../qt-everywhere-src-5.12.0/configure \
|
||||
-prefix /opt/qt \
|
||||
-static \
|
||||
-release \
|
||||
-c++std c++11 \
|
||||
-opensource -confirm-license \
|
||||
-gui \
|
||||
-widgets \
|
||||
-xcb \
|
||||
-fontconfig \
|
||||
-sql-sqlite \
|
||||
-qt-doubleconversion \
|
||||
-qt-libjpeg \
|
||||
-qt-libpng \
|
||||
-qt-pcre \
|
||||
-qt-sqlite \
|
||||
-qt-xcb \
|
||||
-qt-xkbcommon \
|
||||
-qt-zlib \
|
||||
-system-freetype \
|
||||
-no-accessibility \
|
||||
-no-compile-examples \
|
||||
-no-cups \
|
||||
-no-dbus \
|
||||
-no-directfb \
|
||||
-no-egl \
|
||||
-no-eglfs \
|
||||
-no-evdev \
|
||||
-no-gbm \
|
||||
-no-gif \
|
||||
-no-glib \
|
||||
-no-gtk \
|
||||
-no-harfbuzz \
|
||||
-no-iconv \
|
||||
-no-icu \
|
||||
-no-journald \
|
||||
-no-kms \
|
||||
-no-libinput \
|
||||
-no-libproxy \
|
||||
-no-linuxfb \
|
||||
-no-ltcg \
|
||||
-no-mirclient \
|
||||
-no-mtdev \
|
||||
-no-opengl \
|
||||
-no-openssl \
|
||||
-no-pch \
|
||||
-no-sql-mysql \
|
||||
-no-sql-psql \
|
||||
-no-sql-sqlite2 \
|
||||
-no-syslog \
|
||||
-no-system-proxies \
|
||||
-no-tslib \
|
||||
-no-use-gold-linker \
|
||||
-skip declarative \
|
||||
-skip multimedia \
|
||||
-skip qtcanvas3d \
|
||||
-skip qtconnectivity \
|
||||
-skip qtdeclarative \
|
||||
-skip qtlocation \
|
||||
-skip qtmultimedia \
|
||||
-skip qtsensors \
|
||||
-skip qtserialport \
|
||||
-skip qtsvg \
|
||||
-skip qtwayland \
|
||||
-skip qtwebchannel \
|
||||
-skip qtwebengine \
|
||||
-skip qtwebsockets \
|
||||
-skip qtwinextras \
|
||||
-skip qtxmlpatterns \
|
||||
-nomake examples \
|
||||
-nomake tests \
|
||||
&& make install -j $(nproc) \
|
||||
&& cd /opt/qt \
|
||||
&& patch -p1 -i src/qt-install.patch \
|
||||
&& cd /opt \
|
||||
&& rm -rf /opt/qt/src \
|
||||
&& :
|
||||
|
||||
# Curses
|
||||
RUN : \
|
||||
&& mkdir -p /opt/ncurses/src/ncurses-build \
|
||||
&& cd /opt/ncurses/src \
|
||||
&& curl -O https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.1.tar.gz \
|
||||
&& sha512sum ncurses-6.1.tar.gz | grep -q e308af43f8b7e01e98a55f4f6c4ee4d1c39ce09d95399fa555b3f0cdf5fd0db0f4c4d820b4af78a63f6cf6d8627587114a40af48cfc066134b600520808a77ee \
|
||||
&& tar xzf ncurses-6.1.tar.gz \
|
||||
&& cd ncurses-build \
|
||||
&& source /opt/rh/devtoolset-6/enable \
|
||||
&& ../ncurses-6.1/configure \
|
||||
--prefix=/opt/ncurses \
|
||||
--with-terminfo-dirs=/etc/terminfo:/lib/terminfo:/usr/share/terminfo \
|
||||
--with-default-terminfo-dir=/usr/share/terminfo \
|
||||
--without-shared \
|
||||
&& make -j $(nproc) \
|
||||
&& make install.libs install.includes \
|
||||
&& cd /opt \
|
||||
&& rm -rf /opt/ncurses/src \
|
||||
&& :
|
||||
|
||||
# OpenSSL
|
||||
COPY openssl-source.patch /opt/openssl/src/
|
||||
RUN : \
|
||||
&& mkdir -p /opt/openssl/src \
|
||||
&& cd /opt/openssl/src \
|
||||
&& curl -O https://www.openssl.org/source/openssl-1.1.1c.tar.gz \
|
||||
&& sha512sum openssl-1.1.1c.tar.gz | grep -q 8e2c5cc11c120efbb7d7850980cb6eaa782d29b4996b3f3378d37613c1679f852d7cc08a90d62e78fcec3439f06bdbee70064579a8c2adaffd91532a97f646ff \
|
||||
&& tar xzf openssl-1.1.1c.tar.gz \
|
||||
&& cd openssl-1.1.1c \
|
||||
&& patch -p1 -i ../openssl-source.patch \
|
||||
&& source /opt/rh/devtoolset-6/enable \
|
||||
&& ./Configure --prefix=/opt/openssl linux-elf no-asm no-shared -D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1 \
|
||||
&& make install_dev -j $(nproc) \
|
||||
&& cd /opt \
|
||||
&& rm -rf /opt/openssl/src \
|
||||
&& :
|
12
Utilities/Release/linux/x86_64/deps/openssl-source.patch
Normal file
12
Utilities/Release/linux/x86_64/deps/openssl-source.patch
Normal file
@ -0,0 +1,12 @@
|
||||
# enable pthread APIs disabled by our _POSIX_SOURCE definitions
|
||||
--- openssl-source/crypto/threads_pthread.c.orig
|
||||
+++ openssl-source/crypto/threads_pthread.c
|
||||
@@ -6,6 +6,8 @@
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
+#undef _POSIX_C_SOURCE
|
||||
+#undef _POSIX_SOURCE
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include "internal/cryptlib.h"
|
24
Utilities/Release/linux/x86_64/deps/qt-install.patch
Normal file
24
Utilities/Release/linux/x86_64/deps/qt-install.patch
Normal file
@ -0,0 +1,24 @@
|
||||
# Add Qt Core dependencies missing from static Qt build.
|
||||
--- qt-install/lib/cmake/Qt5Core/Qt5CoreConfig.cmake.orig
|
||||
+++ qt-install/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
|
||||
@@ -111,7 +111,7 @@
|
||||
list(REMOVE_DUPLICATES Qt5Core_COMPILE_DEFINITIONS)
|
||||
list(REMOVE_DUPLICATES Qt5Core_EXECUTABLE_COMPILE_FLAGS)
|
||||
|
||||
- set(_Qt5Core_LIB_DEPENDENCIES "")
|
||||
+ set(_Qt5Core_LIB_DEPENDENCIES "${_qt5Core_install_prefix}/lib/libqtpcre2.a")
|
||||
|
||||
|
||||
add_library(Qt5::Core STATIC IMPORTED)
|
||||
# Add Qt Gui dependencies missing from static Qt build.
|
||||
--- qt-install/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake.orig
|
||||
+++ qt-install/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake
|
||||
@@ -111,7 +111,7 @@
|
||||
list(REMOVE_DUPLICATES Qt5Gui_COMPILE_DEFINITIONS)
|
||||
list(REMOVE_DUPLICATES Qt5Gui_EXECUTABLE_COMPILE_FLAGS)
|
||||
|
||||
- set(_Qt5Gui_LIB_DEPENDENCIES "Qt5::Core")
|
||||
+ set(_Qt5Gui_LIB_DEPENDENCIES "Qt5::Core;${_qt5Gui_install_prefix}/lib/libqtlibpng.a")
|
||||
|
||||
|
||||
add_library(Qt5::Gui STATIC IMPORTED)
|
26
Utilities/Release/linux/x86_64/test/Dockerfile
Normal file
26
Utilities/Release/linux/x86_64/test/Dockerfile
Normal file
@ -0,0 +1,26 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Produce a base image with a test environment for packaged CMake binaries.
|
||||
# Build using the directory containing this file as its own build context.
|
||||
|
||||
ARG FROM_IMAGE_NAME=debian:9
|
||||
ARG FROM_IMAGE_DIGEST=@sha256:397b2157a9ea8d7f16c613aded70284292106e8b813fb1ed5de8a8785310a26a
|
||||
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
|
||||
FROM $FROM_IMAGE
|
||||
|
||||
RUN : \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y \
|
||||
dpkg \
|
||||
file \
|
||||
gcc \
|
||||
g++ \
|
||||
gfortran \
|
||||
qt5-default \
|
||||
make \
|
||||
ninja-build \
|
||||
&& apt-get clean \
|
||||
&& :
|
||||
|
||||
COPY test-make.bash test-ninja.bash /
|
4
Utilities/Release/linux/x86_64/test/cache-ninja.txt
Normal file
4
Utilities/Release/linux/x86_64/test/cache-ninja.txt
Normal file
@ -0,0 +1,4 @@
|
||||
CMAKE_Fortran_COMPILER:STRING=
|
||||
CMake_TEST_IPO_WORKS_C:BOOL=ON
|
||||
CMake_TEST_IPO_WORKS_CXX:BOOL=ON
|
||||
CMake_TEST_Qt5:BOOL=ON
|
17
Utilities/Release/linux/x86_64/test/test-make.bash
Normal file
17
Utilities/Release/linux/x86_64/test/test-make.bash
Normal file
@ -0,0 +1,17 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
set -e
|
||||
set -x
|
||||
mkdir -p /opt/cmake/src/cmake-make
|
||||
cd /opt/cmake/src/cmake-make
|
||||
echo >CMakeCache.txt '
|
||||
CMake_TEST_IPO_WORKS_C:BOOL=ON
|
||||
CMake_TEST_IPO_WORKS_CXX:BOOL=ON
|
||||
CMake_TEST_IPO_WORKS_Fortran:BOOL=ON
|
||||
CMake_TEST_NO_NETWORK:BOOL=ON
|
||||
CMake_TEST_Qt5:BOOL=ON
|
||||
'
|
||||
cmake ../cmake -DCMake_TEST_HOST_CMAKE=1 -G "Unix Makefiles"
|
||||
make -j $(nproc)
|
||||
ctest --output-on-failure -j $(nproc)
|
17
Utilities/Release/linux/x86_64/test/test-ninja.bash
Normal file
17
Utilities/Release/linux/x86_64/test/test-ninja.bash
Normal file
@ -0,0 +1,17 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
set -e
|
||||
set -x
|
||||
mkdir -p /opt/cmake/src/cmake-ninja
|
||||
cd /opt/cmake/src/cmake-ninja
|
||||
echo >CMakeCache.txt '
|
||||
CMAKE_Fortran_COMPILER:STRING=
|
||||
CMake_TEST_IPO_WORKS_C:BOOL=ON
|
||||
CMake_TEST_IPO_WORKS_CXX:BOOL=ON
|
||||
CMake_TEST_NO_NETWORK:BOOL=ON
|
||||
CMake_TEST_Qt5:BOOL=ON
|
||||
'
|
||||
cmake ../cmake -DCMake_TEST_HOST_CMAKE=1 -G "Ninja"
|
||||
ninja
|
||||
ctest --output-on-failure -j $(nproc)
|
@ -1,53 +0,0 @@
|
||||
set(PROCESSORS 4)
|
||||
set(BOOTSTRAP_ARGS "--docdir=doc/cmake")
|
||||
set(HOST linux64)
|
||||
set(MAKE_PROGRAM "make")
|
||||
set(CPACK_BINARY_GENERATORS "STGZ TGZ")
|
||||
set(CC /opt/gcc-8.2.0/bin/gcc)
|
||||
set(CXX /opt/gcc-8.2.0/bin/g++)
|
||||
set(CFLAGS "")
|
||||
set(CXXFLAGS "")
|
||||
set(qt_prefix "/home/kitware/qt-5.7.0")
|
||||
set(qt_xcb_libs
|
||||
${qt_prefix}/plugins/platforms/libqxcb.a
|
||||
${qt_prefix}/lib/libQt5XcbQpa.a
|
||||
${qt_prefix}/lib/libQt5PlatformSupport.a
|
||||
${qt_prefix}/lib/libxcb-static.a
|
||||
-lX11-xcb
|
||||
-lX11
|
||||
-lxcb
|
||||
-lfontconfig
|
||||
-lfreetype
|
||||
)
|
||||
set(INITIAL_CACHE "
|
||||
CMAKE_BUILD_TYPE:STRING=Release
|
||||
CMAKE_C_STANDARD:STRING=11
|
||||
CMAKE_CXX_STANDARD:STRING=14
|
||||
CMAKE_C_FLAGS:STRING=-D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1
|
||||
CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc
|
||||
CURSES_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libncurses.a
|
||||
CURSES_INCLUDE_PATH:PATH=/home/kitware/ncurses-5.9/include
|
||||
FORM_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libform.a
|
||||
CMAKE_USE_OPENSSL:BOOL=ON
|
||||
OPENSSL_CRYPTO_LIBRARY:STRING=/home/kitware/openssl-1.1.1/lib/libcrypto.a;-pthread
|
||||
OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.1.1/include
|
||||
OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.1.1/lib/libssl.a
|
||||
PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3
|
||||
CPACK_SYSTEM_NAME:STRING=Linux-x86_64
|
||||
BUILD_CursesDialog:BOOL=ON
|
||||
BUILD_QtDialog:BOOL=TRUE
|
||||
CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE
|
||||
CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3
|
||||
CMAKE_PREFIX_PATH:STRING=${qt_prefix}
|
||||
CMake_QT_STATIC_QXcbIntegrationPlugin_LIBRARIES:STRING=${qt_xcb_libs}
|
||||
")
|
||||
set(ENV [[
|
||||
export CMAKE_PREFIX_PATH=/opt/binutils-2.31
|
||||
]])
|
||||
set(SIGN "")
|
||||
|
||||
# Exclude Qt5 tests because our Qt5 is static.
|
||||
set(EXTRA_CTEST_ARGS "-E Qt5")
|
||||
|
||||
get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
include(${path}/release_cmake.cmake)
|
@ -5,7 +5,7 @@ set(HOST dragnipur)
|
||||
set(MAKE_PROGRAM "make")
|
||||
set(MAKE "${MAKE_PROGRAM} -j5")
|
||||
set(CPACK_BINARY_GENERATORS "DragNDrop TGZ")
|
||||
set(CPACK_SOURCE_GENERATORS "TGZ TZ")
|
||||
set(CPACK_SOURCE_GENERATORS "")
|
||||
set(CPACK_DMG_FORMAT "UDBZ") #build using bzip2 for smaller package size
|
||||
set(CC clang)
|
||||
set(CXX clang++)
|
||||
|
@ -5,7 +5,7 @@ set(PROCESSORS 16)
|
||||
set(HOST win32)
|
||||
set(RUN_LAUNCHER ~/rel/run)
|
||||
set(CPACK_BINARY_GENERATORS "WIX ZIP")
|
||||
set(CPACK_SOURCE_GENERATORS "ZIP")
|
||||
set(CPACK_SOURCE_GENERATORS "")
|
||||
set(MAKE_PROGRAM "ninja")
|
||||
set(MAKE "${MAKE_PROGRAM} -j16")
|
||||
set(qt_prefix "c:/Qt/5.12.1/msvc2017-32-w7-mt")
|
||||
|
Loading…
x
Reference in New Issue
Block a user