This is no longer used, preferring to stage the dependencies into the
toolchain image. The packaging step will simply ignore these files to
prevent shipping. This is important to support a multi-phase build as
well as a cross-compile for a host where the host binaries cannot run
on the build.
`-Clean` has generally been a psuedo-clean operation. It will clear out
the build trees excluding the costly compiler build. With the ability to
use caching now, make `-Clean` a fully clean build.
Teach build.ps1 to search for a pre-installed CMake and Ninja from the
PATH instead of only using one installed in Visual Studio. If one is not
installed or on the path, the script will attempt to use one installed
in Visual Studio. Preference is given to the executable found in the
path environment variable.
This feature never really was used in the CI systems as it was intended.
It was meant to allow doing partial builds for smoke testing. However,
we have a much better solution for that now: docker. Remove this feature
that is underutilized.
Ensure that we stage all the MSMs for the Windows Runtime distribution.
This enables us to consider online installers which would allow users to
select subsets of the installer to download when needed.
When the output is directly redirected, the output is re-encoded. This
is particularly important as `Write-PList` uses `Invoke-Program` to
invoke `python.exe` to write the plist. However, because it is writing
to a file, while the output from Python is in UTF-8, the redirection
re-encodes the output to UTF16LE (BOM). Adjust the invocation to use
PS7+ `2|` and pipe both stdout and stderr as appropriate into files with
UTF-8 encoding restoring the encoding for the file.
utils: adjust the emission of `SDKSettings.json`. Use lowercase spellings for the platform names to match SwiftBuild's expectations as pointed out by @jakepetroules.
Adjust the install path computation to support installation of ARM64 on
AMD64. This enables the isolation of the runtimes on all architectures
for Windows to allow building the isolated runtime distribution.
When we invoke the script block it could throw an exception so we should
wrap it in a try finally block to ensure that we can restore the old
environment variables, otherwise you can end up back in a shell that has
an incorrect set of variables set.
This is most noticable if an exception is thrown when entering the vs
dev shell since without resetting the old vars you will have invalid
Visual Studio env variables set meaning you need to manually reset your
shell environment.
EnableCaching should only configure cmake to allow for sccache usage, it
should not configure sccache itself in any way. Those configuration
options should be deferred into the environment variables that sccache
will look for when it starts up.
When setting up sccache we can choose between local disk caching or
remote caching via an S3-ish blob storage engine. To allow for backward
compatibility for anyone that might be using the existing option for
disk caching we leave it place and instead provide a new remote caching
option.
This option assumes you've read the sccache documentation for setting up
the correct environment variables for telling sccache where to find the
bucket and how to authenticate to it.
This creates a helper for building the SDK for a given OS/Architecture.
The building of the SDK should be uniform and this ensures that we can
maintain that uniformity.
This also highlights any structural changes that are being adjusted
manually. The desire is to bring this to zero by gaining control over
the install rules.
Enable the Concurrency runtime for the experimental runtime builds on
Windows. This is required to enable the use of the static runtime to
bootstrap the early swift-driver.
The timing data collection is now homed under `Invoke-BuildStep`.
`Build-SPMProject` is an implementation detail of the build step and is
timed at a higher level.