Split packaging on Windows into dedicated jobs that run with access to
an EV signing certificate.
Prior to commit 0929221ca3 (gitlab-ci: Simplify Windows packaging
pipeline, 2023-02-28, v3.26.0-rc5~3^2~3) we had separate packaging jobs,
but they did not run in release packaging pipelines. Restore them, and
run them in both nightly and release packaging pipelines.
Set options added by the update to curl 8.12.1.
In particular, now that upstream curl's CMake code depends on
OpenSSL via imported targets from FindOpenSSL, we can let it
handle the transitive dependency on posix threads.
If the PATH modification choice has not been saved persistently by an
existing installation of CMake, default to modifying the system PATH
environment variable to make our command-line tools available for all
users. This is a common expectation.
Fixes: #21465
Our Windows installer provides an interactive dialog to choose whether
the PATH should be modified. It may also be specified on the `msiexec`
command-line as an `ADD_CMAKE_TO_PATH={0,1}` property. Save the choice
persistently in the Windows Registry and use the same choice by default
in future installations.
Issue: #21465
Add explicit support for passing a `ADD_CMAKE_TO_PATH={0,1}` property to
`msiexec` command-line installations to control the checkbox. Also
preserve compatibility with the old `ADD_CMAKE_TO_PATH={None,System}`
property, which previously controlled the radio button group, by mapping
the values to the checkbox.
Remove the "Add CMake to the system PATH for the current user" option.
It actually added CMake to the installing user's PATH, not the system
PATH, even though CMake is installed to a system location.
Also revise the wording of the desktop shortcut checkbox to match
the style of the PATH checkbox wording.
Issue: #21465
Previously, installers displayed extra text on some Windows versions:
File: [1], Directory: [9], Size [6]
Add an option to our WiX templates to suppress that.
Fixes: #25634
Update the centos base image from centos 6 to centos 7. The latter is
the minimum version supported by libuv 1.45. The resulting binaries
require GLIBC 2.17.
Since commit 37e015d4a6 (Utilities/Sphinx: Refactor Sphinx reference
recording, 2023-03-08, v3.27.0-rc1~342^2~1) our documentation requires
Python 3.7 or higher. This is not available in the base images we use
to build Linux release binaries. These days our release packaging CI
pipeline builds the documentation in a separate job anyway.
Revise and simplify the script from commit d0c9225a7e
(Utilities/Release: Add script to build Qt 6.3.0 Windows binaries,
2022-06-10, v3.24.0-rc1~4^2~5). For `cmake-gui` we only need QtBase.
Also, convert to a `.cmake` script.
Issue: #21902
We previously defined `_POSIX_C_SOURCE` and friends while building
binary packages in order to minimize the version of glibc needed at
runtime. The definitions were added by commit facc240a45
(Utilities/Release: Add docker specs to build and test Linux binaries,
2019-08-23, v3.16.0-rc1~184^2~2), but came from older packaging scripts
that were removed by commit 689fdbfc61 (Utilities/Release: Drop linux64
script in favor of docker build, 2019-08-27, v3.16.0-rc1~184^2). Those
older scripts were meant for use in a hand-maintained environment. Now
that we use base images of old CentOS versions to establish the build
environment, our builds are already limited to older glibc versions
(glibc 2.12 from centos6 on x86_64, and 2.17 from centos7 on aarch64).
Our old system API definitions no longer affect the glibc version
required by the binaries. Drop them to avoid potential conflicts with
system API definitions added by changes like commit f034b0f663 (CMake
compilation: do not use compiler extensions, 2020-03-14, v3.18.0-rc1~494^2)
and commit c7c3e39e4f (Utilities: Activate POSIX APIs even without
compiler extensions, 2022-06-02).
Since commit 4c7c66dcf5 (gitlab-ci: Add jobs to make Windows x86_64 and
i386 packages, 2022-05-19), we use CI jobs to produce Windows binaries.
Revert commit ff929badb3 (Utilities/Release: Add docker specs to
build and test Windows binaries, 2020-05-05, v3.18.0-rc1~203^2~1).
The filesystem inside Windows containers is too slow to support
parallel builds efficiently.
Windows binaries for official releases on `cmake.org` are signed
manually by a maintainer with a suitable signing certificate.
Add a script to sign the binaries, run CPack, and sign the installer.
These may be used to build CMake binaries for Windows `x86_64` and `i386`.
Qt 5.12.1 supports Windows 7.
Port the logic from `Utilities/Release/win/x86/deps/Dockerfile` and its
helper scripts.
macOS 12 deprecates the tools needed to attach a SLA to a `.dmg`.
CMake 3.23 added `CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE` to
control whether `CPACK_RESOURCE_FILE_LICENSE` is used as the SLA.
CMake 3.24 will add policy CMP0133 to disable the SLA by default.
Explicitly turn off the SLA for CMake's official macOS binaries.
This will allow them to build on future macOS versions that have
no SLA tooling available.
Issue: #22978
Revise the spec added by commit ff929badb3 (Utilities/Release: Add
docker specs to build and test Windows binaries, 2020-05-05,
v3.18.0-rc1~203^2~1) to add a `source` stage that stops just after
copying the source tree into the image. This provides more granular
control to driving scripts.
Previously we used a complicated heuristic to decide whether or not to
run the MFC test, but it sometimes decided incorrectly to run the test.
Since that was first written, we have developed a convention for other
tests to enable them via undocumented cache entries that are added only
on machines known to meet the tests' requirements. Do that for MFC.
Since commit 4ef974e6cb (CPack: Remove undocumented deprecated OSXX11
generator, 2021-11-05), the `CPack.OSXScriptLauncher.in` binary is no
longer installed in the `CMake.app` bundle, so it does not need to be
signed.
We produce macOS binaries for `cmake.org` using GitLab CI jobs.
Binaries for official releases are additionally signed and notarized
manually by a maintainer with suitable signing certificates and Apple
developer account credentials. Add a script to drive these steps.