Skip to content

generator: Do not attempt to download toolchain if it is not needed #177

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 29, 2025

Conversation

euanh
Copy link
Contributor

@euanh euanh commented Jan 29, 2025

SDKs now do not include the host toolchain by default, but the generator still checks for host toolchains before deciding it does not need to download them.

Skipping this check when a host toolchain is not requested removes the
unnecessary network request. This saves a couple of seconds but also
makes it possible to run the generator offline, if building from a container
image which is already available locally.

SDKs now do not include the host toolchain by default, but the generator
still checks for host toolchains before deciding it does not need to
download them.

Skipping this check when a host toolchain is not requested removes the
unnecessary  network request.    This saves a couple of seconds but also
makes it possible to run the generator offline, if building from a container
image which is already available locally.
@euanh euanh added enhancement New feature or request performance Speeding up SDK generation labels Jan 29, 2025
@euanh euanh requested a review from MaxDesiatov as a code owner January 29, 2025 10:29
@euanh
Copy link
Contributor Author

euanh commented Jan 29, 2025

@swift-ci test

@euanh euanh merged commit f75817c into swiftlang:main Jan 29, 2025
3 checks passed
@euanh euanh deleted the skip-unnecessary-host-toolchain-checks branch January 29, 2025 11:33
euanh added a commit to euanh/swift-sdk-generator that referenced this pull request Feb 13, 2025
…sed SDK

PR swiftlang#177 was intended to skip unnecessary toolchain downloads, making it
possible to build a container-based SDK offline if all its requirements
had already been dowloaded.  The change was too broad and also broke
building package-based SDKs.

PR swiftlang#177 skips calling generator.downloadArtifacts() when building
an SDK without an embedded host toolchain (the default).   In
addition to downloading the host toolchain (and LLVM, if needed),
generator.downloadArtifacts() is also responsible for downloading
the target toolchain.  This is not needed when building a container-based
SDK but is required when building a package-based SDK, which combines
an SDK from swift.org with supporting libraries extracted from
Debian packages.

In fact, generator.downloadArtifacts() already avoids downloading
toolchains when building a container-based SDK without an embedded
toolchain.   The only network call which caused offline builds to
fail was an unconditional check for a suitable LLVM binary from
GitHub.

This PR restores the call to generator.downloadArtifacts() and only
makes the LLVM check if LLVM is in the list of required downloads.
This allows the EndToEnd tests to pass again (with PR swiftlang#170 temporarily
reverted because of issue swiftlang#181).
euanh added a commit that referenced this pull request Feb 14, 2025
…sed SDK (#182)

PR #177 was intended to skip unnecessary toolchain downloads, making it
possible to build a container-based SDK offline if all its requirements
had already been dowloaded.  The change was too broad and also broke
building package-based SDKs.

PR #177 skips calling generator.downloadArtifacts() when building
an SDK without an embedded host toolchain (the default).   In
addition to downloading the host toolchain (and LLVM, if needed),
generator.downloadArtifacts() is also responsible for downloading
the target toolchain.  This is not needed when building a container-based
SDK but is required when building a package-based SDK, which combines
an SDK from swift.org with supporting libraries extracted from
Debian packages.

In fact, generator.downloadArtifacts() already avoids downloading
toolchains when building a container-based SDK without an embedded
toolchain.   The only network call which caused offline builds to
fail was an unconditional check for a suitable LLVM binary from
GitHub.

This PR restores the call to generator.downloadArtifacts() and only
makes the LLVM check if LLVM is in the list of required downloads.
This allows the EndToEnd tests to pass again (with PR #170 temporarily
reverted because of issue #181).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request performance Speeding up SDK generation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants