Skip to content

[windows] add a parameter to skip building experimental SDKs in build.ps1 #83455

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

charles-zablit
Copy link
Contributor

This patch adds a parameter to skip building the experimentalSDKs in build.ps1.

We are deploying a bot to build and test Swift features of lldb on Windows. The total run time is currently 2h15. Removing the experimentalSDK build would bring that run time to 1h50, which is a 20% speedup.

@charles-zablit charles-zablit requested a review from compnerd as a code owner July 31, 2025 13:46
@charles-zablit charles-zablit self-assigned this Jul 31, 2025
@charles-zablit charles-zablit added Windows Platform: Windows lldb labels Jul 31, 2025
@charles-zablit
Copy link
Contributor Author

@swift-ci please test

Copy link
Member

@compnerd compnerd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should also consider disabling the static libraries for Linux if we are doing this - they are building static and dynamic libraries AFAIK.

If set, skips building the msi's and installer
If set, skips building the msi's and installer.

.PARAMETER SkipExperimentalSDK
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that this should be another parameter. Perhaps we can handle this uniformly with -SDK; this does however make testing harder.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking a bit about this - it would actually be helpful to have this functionality more generically: we should be able to disable the non-experimental SDK bits more than the experimental SDK bits. The experimental SDK is what will become the default. That would also help with testing; perhaps we can have something clever as the specifier in the -WindowsSDKs and -AndroidSDKs to control which SDK and architectures we support. I would be open to renaming the options btw, they currently control the architectures in the SDK, not the SDKs. If we can simplify the logic for the handling, perhaps something like:

-AndroidSDKs experimental -AndroidSDKArchitectures aarch64 -WindowsSDKs default,experimental -WindowsSDKArchitectures arm64,x64

@@ -81,6 +86,7 @@ powershell.exe -ExecutionPolicy RemoteSigned -File %~dp0build.ps1 ^
-BinaryCache %BuildRoot% ^
-ImageRoot %BuildRoot% ^
%SkipPackagingArg% ^
%SkipExperimentalSDKArg% ^
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, we cannot skip these in this test. This is used for the PR testing and we want to maintain that these are tested - they build differently and are very easy to regress because they are building static libraries.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify: we would only deactivate this when running the lldb specific bots. The current Swift PR bots would still run those tests. Nothing would change for the current bots, it would only affect the new bots.

@compnerd
Copy link
Member

compnerd commented Aug 1, 2025

BTW, this is an older idea: #81790 was an initial attempt to do part of what this wants. I think I can possibly put up a partial PoC that you can help drive and use for the purposes of tweaking the LLDB tests.

@compnerd
Copy link
Member

compnerd commented Aug 1, 2025

#83496 is something that I am playing around with - I think that is a better approach than this. It allows us to disable the default SDK and only build the experimental SDK instead! It will need a little bit more work before it can be merged, but it should be a good starting point.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lldb Windows Platform: Windows
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants