From 28f1da4b251f9bab977d1a1af3625d3f4906f5a3 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 13 Feb 2025 14:09:05 -0500 Subject: ci: Add jobs to build sunos-{i386,sparc} binaries --- .gitlab-ci.yml | 40 +++++++++++++++++++++ .gitlab/artifacts.yml | 2 ++ .gitlab/os-linux.yml | 45 ++++++++++++++++++++++++ Help/release/4.0.rst | 5 +++ Tests/RunCMake/CMakeRelease/FileTable-stdout.txt | 6 ++++ Tests/RunCMake/CMakeRelease/FileTable.cmake | 1 + Utilities/Release/files-v1.json.in | 24 +++++++++++++ Utilities/Release/files-v1.rst | 4 +++ 8 files changed, 127 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 82d0968..c8c5bfd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -830,6 +830,46 @@ u:linux-aarch64-package: needs: - b:linux-aarch64-package +b:sunos-i386-package: + extends: + - .sunos_package + - .sunos_release_i386 + - .cmake_build_sunos_release + - .cmake_release_artifacts + - .linux_x86_64_tags + - .run_only_for_package + needs: + - p:doc-package + variables: + CMAKE_CI_ARTIFACTS_NAME: "artifacts-sunos-i386" + +u:sunos-i386-package: + extends: + - .rsync_upload_package + - .run_only_for_package + needs: + - b:sunos-i386-package + +b:sunos-sparc-package: + extends: + - .sunos_package + - .sunos_release_sparc + - .cmake_build_sunos_release + - .cmake_release_artifacts + - .linux_x86_64_tags + - .run_only_for_package + needs: + - p:doc-package + variables: + CMAKE_CI_ARTIFACTS_NAME: "artifacts-sunos-sparc" + +u:sunos-sparc-package: + extends: + - .rsync_upload_package + - .run_only_for_package + needs: + - b:sunos-sparc-package + ## Sanitizer builds b:fedora41-asan: diff --git a/.gitlab/artifacts.yml b/.gitlab/artifacts.yml index 95a0a26..0750634 100644 --- a/.gitlab/artifacts.yml +++ b/.gitlab/artifacts.yml @@ -78,6 +78,8 @@ - ${CMAKE_CI_BUILD_DIR}/cmake-*-linux-x86_64.* - ${CMAKE_CI_BUILD_DIR}/cmake-*-linux-aarch64.* - ${CMAKE_CI_BUILD_DIR}/cmake-*-macos*-universal.* + - ${CMAKE_CI_BUILD_DIR}/cmake-*-sunos-i386.* + - ${CMAKE_CI_BUILD_DIR}/cmake-*-sunos-sparc.* - ${CMAKE_CI_BUILD_DIR}/cmake-*-windows-x86_64.* - ${CMAKE_CI_BUILD_DIR}/cmake-*-windows-i386.* - ${CMAKE_CI_BUILD_DIR}/cmake-*-windows-arm64.* diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 461b34e..93223bb 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -30,6 +30,24 @@ variables: BOOTSTRAP_ARGS: '-- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"' +.sunos_release_i386: + image: "kitware/cmake:build-sunos-i386-deps-2025-02-14" + + variables: + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" + CMAKE_ARCH: i386 + +.sunos_release_sparc: + image: "kitware/cmake:build-sunos-sparc-deps-2025-02-14" + + variables: + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" + CMAKE_ARCH: sparc + +.sunos_package: + variables: + CMake_DOC_ARTIFACT_PREFIX: "$CI_PROJECT_DIR/build/install-doc" + .needs_centos7_x86_64: needs: - b:centos7-x86_64 @@ -741,6 +759,33 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" +.cmake_build_sunos_release: + stage: build + + script: + - *before_script_linux + # SunOS sysroot + - Utilities/Release/sunos/docker/sysroot.bash $CMAKE_ARCH + # Initial cache + - mkdir -p build/ + - cp Utilities/Release/sunos/$CMAKE_ARCH/cache.txt build/CMakeCache.txt + # Make sccache available. + - source .gitlab/ci/sccache-env.sh + - echo "CMAKE_C_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt + - echo "CMAKE_CXX_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt + # Build + - cd build/ + - cmake .. -GNinja + -DCMAKE_DOC_DIR=doc/cmake + -DCMake_DOC_ARTIFACT_PREFIX="$CMake_DOC_ARTIFACT_PREFIX" + -DCMAKE_TOOLCHAIN_FILE="$CI_PROJECT_DIR/Utilities/Release/sunos/$CMAKE_ARCH/toolchain.cmake" + - ninja + # Package + - cpack -G "TGZ;STGZ" + - sccache --show-stats + + interruptible: true + ### Documentation .cmake_org_help: diff --git a/Help/release/4.0.rst b/Help/release/4.0.rst index b1102d5..0228402 100644 --- a/Help/release/4.0.rst +++ b/Help/release/4.0.rst @@ -236,3 +236,8 @@ Other Changes now only shown when the message log level is set to ``VERBOSE``, ``DEBUG``, or ``TRACE`` via the :option:`cmake --log-level` option or the :variable:`CMAKE_MESSAGE_LOG_LEVEL` cache variable. + +* Precompiled SunOS ``sparc`` and ``i386`` binaries are now provided + on `cmake.org`_. + +.. _`cmake.org`: https://cmake.org/download/ diff --git a/Tests/RunCMake/CMakeRelease/FileTable-stdout.txt b/Tests/RunCMake/CMakeRelease/FileTable-stdout.txt index 2960eeb..b8e2639 100644 --- a/Tests/RunCMake/CMakeRelease/FileTable-stdout.txt +++ b/Tests/RunCMake/CMakeRelease/FileTable-stdout.txt @@ -13,6 +13,10 @@ "cmake-@version@-macos-universal\.tar\.gz" "cmake-@version@-macos10\.10-universal\.dmg" "cmake-@version@-macos10\.10-universal\.tar\.gz" +"cmake-@version@-sunos-i386\.sh" +"cmake-@version@-sunos-i386\.tar\.gz" +"cmake-@version@-sunos-sparc\.sh" +"cmake-@version@-sunos-sparc\.tar\.gz" "cmake-@version@-windows-i386\.msi" "cmake-@version@-windows-i386\.zip" "cmake-@version@-windows-x86_64\.msi" @@ -28,6 +32,8 @@ "cmake-@version@-macos-universal\.dmg" -- query: \.files\[\] \| select\(\(\.os\[\] \| \. == "macos10\.10"\) and \(\.class == "archive"\)\) \| \.name "cmake-@version@-macos10\.10-universal\.tar\.gz" +-- query: \.files\[\] \| select\(\(\.os\[\] \| \. == "sunos"\) and \(\.architecture\[\] \| \. == "sparc"\) and \(\.class == "archive"\)\) \| \.name +"cmake-@version@-sunos-sparc\.tar\.gz" -- query: \.files\[\] \| select\(\(\.os\[\] \| \. == "windows"\) and \(\.architecture\[\] \| \. == "i386"\) and \(\.class == "installer"\)\) \| \.name "cmake-@version@-windows-i386\.msi" -- query: \.files\[\] \| select\(\.architecture\[\] \| \. == "x86_64"\) \| \.name diff --git a/Tests/RunCMake/CMakeRelease/FileTable.cmake b/Tests/RunCMake/CMakeRelease/FileTable.cmake index f46535c..a579457 100644 --- a/Tests/RunCMake/CMakeRelease/FileTable.cmake +++ b/Tests/RunCMake/CMakeRelease/FileTable.cmake @@ -11,6 +11,7 @@ foreach(query ".files[] | select(.os[] | . == \"source\") | .name" ".files[] | select((.os[] | . == \"macOS\") and (.class == \"volume\")) | .name" ".files[] | select((.os[] | . == \"macos10.10\") and (.class == \"archive\")) | .name" + ".files[] | select((.os[] | . == \"sunos\") and (.architecture[] | . == \"sparc\") and (.class == \"archive\")) | .name" ".files[] | select((.os[] | . == \"windows\") and (.architecture[] | . == \"i386\") and (.class == \"installer\")) | .name" ".files[] | select(.architecture[] | . == \"x86_64\") | .name" ".files[] | select([.macOSmin] | inside([\"10.10\", \"10.11\", \"10.12\"])) | .name" diff --git a/Utilities/Release/files-v1.json.in b/Utilities/Release/files-v1.json.in index 2f860d2..05561c7 100644 --- a/Utilities/Release/files-v1.json.in +++ b/Utilities/Release/files-v1.json.in @@ -60,6 +60,30 @@ "macOSmin": "10.10" }, { + "os": ["sunos", "SunOS"], + "architecture": ["i386"], + "class": "installer", + "name": "cmake-@version@-sunos-i386.sh" + }, + { + "os": ["sunos", "SunOS"], + "architecture": ["i386"], + "class": "archive", + "name": "cmake-@version@-sunos-i386.tar.gz" + }, + { + "os": ["sunos", "SunOS"], + "architecture": ["sparc"], + "class": "installer", + "name": "cmake-@version@-sunos-sparc.sh" + }, + { + "os": ["sunos", "SunOS"], + "architecture": ["sparc"], + "class": "archive", + "name": "cmake-@version@-sunos-sparc.tar.gz" + }, + { "os": ["windows", "Windows"], "architecture": ["i386"], "class": "installer", diff --git a/Utilities/Release/files-v1.rst b/Utilities/Release/files-v1.rst index f0064e8..b8dbe6f 100644 --- a/Utilities/Release/files-v1.rst +++ b/Utilities/Release/files-v1.rst @@ -70,6 +70,9 @@ The members are: ``Windows``, ``windows`` Windows packages. + ``SunOS``, ``sunos`` + SunOS packages. + ``architecture`` A JSON array of strings naming the architecture(s) for which the package file is built, possibly using multiple alternative spellings. @@ -79,6 +82,7 @@ The members are: On Windows, architecture names include ``x86_64``, ``i386``, and ``arm64``. On macOS, universal binary packages list all architectures, e.g. ``["arm64","x86_64"]``. + On SunOS, architecture names include ``i386`` and ``sparc``. ``class`` A JSON string naming the class of package. The value is one of: -- cgit v0.12