Use `linux_release` in names associated with building or testing
release-style binaries. Add a `.linux_package` helper to adjust
the release binary build behavior for package-specific jobs.
In order to support modern macOS features like Dark Mode, we need to use
Qt 5.15, which requires macOS 10.13. However, we still want to support
macOS 10.10 as well, for which we need to use Qt 5.9. Build separate
macOS packages for these use cases.
Fixes: #21606
Issue: #20825
Also add comments for sections to make it easier to figure out what's
going on.
Also rename the `cmake_test_unix_package` to be Linux-specific since it
actually is.
On macOS and Windows, our jobs use a `GIT_CLONE_PATH` that does not
contain `$CI_CONCURRENCY_ID` so that the build and test jobs always use
the same path. Since we use shell runners for these platforms, all
concurrent jobs would use the same path and conflict. Therefore we can
only use runners with a concurrency level of 1 for jobs in the `build`
and `test` stages. However, jobs in the `test-ext` stage configure a
new build tree for the tests and therefore can use `$CI_CONCURRENCY_ID`
and support shell runners with higher concurrency levels.
Prepare to make that distinction in the future by pinning all jobs to
runners with a `nonconcurrent` tag.
The toolsets available on machines hosting shell runners will evolve
over time. Require the runners to have tags indicating that they have
specific toolsets available. When toolsets are eventually removed from
a runner, its tags can then be updated accordingly to prevent pipelines
created for old commits from ever running on them.
When the sccache executable is in the build directory, it can fail to be
removed if the daemon is still running when another job starts. It
continues to run when a job is canceled or fails and then is "in use"
and cannot be deleted.