From 4b8a864d52fa7501af915b3f94dfbd55fe9065b8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 22 Aug 2019 15:20:33 -0400 Subject: Add option to test CMake itself against its hosting CMake --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e3d39d..3daebee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,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 -- cgit v0.12 From ed294c1664cafe573c813f2a95ebec3159e0d21e Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 22 Aug 2019 15:21:06 -0400 Subject: Add option to skip CMake tests that need network access --- CMakeLists.txt | 2 +- Tests/CMakeLists.txt | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3daebee..d6e7278 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -677,7 +677,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() diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 34858b8..7098c75 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2619,16 +2619,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" -- cgit v0.12 From ab153f17bf7c87a6ee14a94c19fc1dbd01849f05 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 23 Aug 2019 13:16:04 -0400 Subject: Utilities/Release: Drop machine-specific README --- Utilities/Release/README | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 Utilities/Release/README diff --git a/Utilities/Release/README b/Utilities/Release/README deleted file mode 100644 index 11de1c3..0000000 --- a/Utilities/Release/README +++ /dev/null @@ -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 -- cgit v0.12 From bf832ccf01894bf605c17a89f2bc3babd24df108 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 23 Aug 2019 13:27:22 -0400 Subject: Utilities/Release: Add README.rst describing directory content --- Help/dev/source.rst | 2 ++ Utilities/Release/README.rst | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 Utilities/Release/README.rst diff --git a/Help/dev/source.rst b/Help/dev/source.rst index 47baff4..0f7488b 100644 --- a/Help/dev/source.rst +++ b/Help/dev/source.rst @@ -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 diff --git a/Utilities/Release/README.rst b/Utilities/Release/README.rst new file mode 100644 index 0000000..3752e06 --- /dev/null +++ b/Utilities/Release/README.rst @@ -0,0 +1,27 @@ +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 + +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. -- cgit v0.12 From facc240a45cb81f4437c7c41cf97ecb8d5b0ce55 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 23 Aug 2019 14:27:14 -0400 Subject: Utilities/Release: Add docker specs to build and test Linux binaries These will allow anyone to produce portable binaries like those published on `cmake.org`. --- Utilities/Release/README.rst | 57 +++++++++ Utilities/Release/linux/x86_64/Dockerfile | 35 +++++ Utilities/Release/linux/x86_64/base/Dockerfile | 30 +++++ Utilities/Release/linux/x86_64/cache.txt | 44 +++++++ Utilities/Release/linux/x86_64/deps/Dockerfile | 142 +++++++++++++++++++++ .../Release/linux/x86_64/deps/openssl-source.patch | 12 ++ .../Release/linux/x86_64/deps/qt-install.patch | 24 ++++ Utilities/Release/linux/x86_64/test/Dockerfile | 26 ++++ .../Release/linux/x86_64/test/cache-ninja.txt | 4 + Utilities/Release/linux/x86_64/test/test-make.bash | 17 +++ .../Release/linux/x86_64/test/test-ninja.bash | 17 +++ 11 files changed, 408 insertions(+) create mode 100644 Utilities/Release/linux/x86_64/Dockerfile create mode 100644 Utilities/Release/linux/x86_64/base/Dockerfile create mode 100644 Utilities/Release/linux/x86_64/cache.txt create mode 100644 Utilities/Release/linux/x86_64/deps/Dockerfile create mode 100644 Utilities/Release/linux/x86_64/deps/openssl-source.patch create mode 100644 Utilities/Release/linux/x86_64/deps/qt-install.patch create mode 100644 Utilities/Release/linux/x86_64/test/Dockerfile create mode 100644 Utilities/Release/linux/x86_64/test/cache-ninja.txt create mode 100644 Utilities/Release/linux/x86_64/test/test-make.bash create mode 100644 Utilities/Release/linux/x86_64/test/test-ninja.bash diff --git a/Utilities/Release/README.rst b/Utilities/Release/README.rst index 3752e06..e7f0eb3 100644 --- a/Utilities/Release/README.rst +++ b/Utilities/Release/README.rst @@ -6,6 +6,63 @@ on ``cmake.org``. See also the `CMake Source Code Guide`_. .. _`CMake Source Code Guide`: ../../Help/dev/source.rst +Docker +------ + +The ``linux//`` directories contain Docker specifications that anyone +may use to produce Linux binaries for CMake: + +* ``linux//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--base-``. + +* ``linux//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--deps-``. + +* ``linux//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//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--Linux-.tar.gz /opt/ + ENV PATH=/opt/cmake--Linux-/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 ------------------- diff --git a/Utilities/Release/linux/x86_64/Dockerfile b/Utilities/Release/linux/x86_64/Dockerfile new file mode 100644 index 0000000..f3ba69c --- /dev/null +++ b/Utilities/Release/linux/x86_64/Dockerfile @@ -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 \ + && : diff --git a/Utilities/Release/linux/x86_64/base/Dockerfile b/Utilities/Release/linux/x86_64/base/Dockerfile new file mode 100644 index 0000000..dfc7df8 --- /dev/null +++ b/Utilities/Release/linux/x86_64/base/Dockerfile @@ -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 \ + && : diff --git a/Utilities/Release/linux/x86_64/cache.txt b/Utilities/Release/linux/x86_64/cache.txt new file mode 100644 index 0000000..a2864e9 --- /dev/null +++ b/Utilities/Release/linux/x86_64/cache.txt @@ -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 diff --git a/Utilities/Release/linux/x86_64/deps/Dockerfile b/Utilities/Release/linux/x86_64/deps/Dockerfile new file mode 100644 index 0000000..db5551c --- /dev/null +++ b/Utilities/Release/linux/x86_64/deps/Dockerfile @@ -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 \ + && : diff --git a/Utilities/Release/linux/x86_64/deps/openssl-source.patch b/Utilities/Release/linux/x86_64/deps/openssl-source.patch new file mode 100644 index 0000000..c81fe2f --- /dev/null +++ b/Utilities/Release/linux/x86_64/deps/openssl-source.patch @@ -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 + #include "internal/cryptlib.h" diff --git a/Utilities/Release/linux/x86_64/deps/qt-install.patch b/Utilities/Release/linux/x86_64/deps/qt-install.patch new file mode 100644 index 0000000..792aefd --- /dev/null +++ b/Utilities/Release/linux/x86_64/deps/qt-install.patch @@ -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) diff --git a/Utilities/Release/linux/x86_64/test/Dockerfile b/Utilities/Release/linux/x86_64/test/Dockerfile new file mode 100644 index 0000000..6629156 --- /dev/null +++ b/Utilities/Release/linux/x86_64/test/Dockerfile @@ -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 / diff --git a/Utilities/Release/linux/x86_64/test/cache-ninja.txt b/Utilities/Release/linux/x86_64/test/cache-ninja.txt new file mode 100644 index 0000000..b00370e --- /dev/null +++ b/Utilities/Release/linux/x86_64/test/cache-ninja.txt @@ -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 diff --git a/Utilities/Release/linux/x86_64/test/test-make.bash b/Utilities/Release/linux/x86_64/test/test-make.bash new file mode 100644 index 0000000..10d30c3 --- /dev/null +++ b/Utilities/Release/linux/x86_64/test/test-make.bash @@ -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) diff --git a/Utilities/Release/linux/x86_64/test/test-ninja.bash b/Utilities/Release/linux/x86_64/test/test-ninja.bash new file mode 100644 index 0000000..fe39e2e --- /dev/null +++ b/Utilities/Release/linux/x86_64/test/test-ninja.bash @@ -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) -- cgit v0.12 From 2d7cfd30ac459800e23e00a53e886d3dc0e62a66 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 27 Aug 2019 11:07:07 -0400 Subject: Utilities/Release: Drop source archive generation in scripts We will generate the `.tar.gz` and `.zip` source archives using `git archive` in the scripts that drive the Linux build with Docker. --- Utilities/Release/linux64_release.cmake | 1 + Utilities/Release/osx_release.cmake | 2 +- Utilities/Release/win32_release.cmake | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index 958ed25..cabb1a5 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -3,6 +3,7 @@ set(BOOTSTRAP_ARGS "--docdir=doc/cmake") set(HOST linux64) set(MAKE_PROGRAM "make") set(CPACK_BINARY_GENERATORS "STGZ TGZ") +set(CPACK_SOURCE_GENERATORS "") set(CC /opt/gcc-8.2.0/bin/gcc) set(CXX /opt/gcc-8.2.0/bin/g++) set(CFLAGS "") diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake index ac35872..5ef3003 100644 --- a/Utilities/Release/osx_release.cmake +++ b/Utilities/Release/osx_release.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++) diff --git a/Utilities/Release/win32_release.cmake b/Utilities/Release/win32_release.cmake index 468e5f4..cd58981 100644 --- a/Utilities/Release/win32_release.cmake +++ b/Utilities/Release/win32_release.cmake @@ -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") -- cgit v0.12 From 689fdbfc610057b2ddb6a19d589292bf7d26fcdd Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 27 Aug 2019 11:09:42 -0400 Subject: Utilities/Release: Drop linux64 script in favor of docker build Drop also drop the CMakeNightlyLinux64 test that uses the script. --- Tests/CMakeLists.txt | 2 -- Utilities/Release/create-cmake-release.cmake | 2 -- Utilities/Release/linux64_release.cmake | 54 ---------------------------- 3 files changed, 58 deletions(-) delete mode 100644 Utilities/Release/linux64_release.cmake diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 7098c75..02e28d4 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -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() diff --git a/Utilities/Release/create-cmake-release.cmake b/Utilities/Release/create-cmake-release.cmake index 0622ad8..17a2151 100644 --- a/Utilities/Release/create-cmake-release.cmake +++ b/Utilities/Release/create-cmake-release.cmake @@ -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 && diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake deleted file mode 100644 index cabb1a5..0000000 --- a/Utilities/Release/linux64_release.cmake +++ /dev/null @@ -1,54 +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(CPACK_SOURCE_GENERATORS "") -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) -- cgit v0.12