-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Explicit Module Builds] Prevent SerializedModuleLoader from running in Explicit Module Build mode. #32903
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
Conversation
a9910d6
to
7cefbf9
Compare
@swift-ci test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense to me! Only a minor suggestion.
7cefbf9
to
62286f4
Compare
@swift-ci test |
Build failed |
Build failed |
Build failed |
Build failed |
Please test with following PR: @swift-ci Please test |
Build failed |
Build failed |
62286f4
to
d54460d
Compare
Please test with following PR: @swift-ci Please test |
Build failed |
Build failed |
Please test with following PR: @swift-ci Please test |
Build failed |
Build failed |
3877689
to
5836a7a
Compare
Please test with following PR: @swift-ci Please test |
Build failed |
Build failed |
5836a7a
to
8cbba04
Compare
@swift-ci please test |
Build failed |
Build failed |
Please test with following PR: @swift-ci Please smoke test |
Build failed |
Build failed |
9c294fd
to
7fe842e
Compare
Please test with following PR: @swift-ci Please smoke test |
7fe842e
to
c1da91d
Compare
Please test with following PR: @swift-ci Please smoke test |
…in Explicit Module Build mode. In order to avoid accidentally implicitly loading modules that are expected but were not provided as explicit inputs. - Use either SerializedModuleLoader or ExplicitSwiftModuleLoader for loading of partial modules, depending on whether we are in Explicit Module Build or Implicit Module Build mode.
c1da91d
to
140fd73
Compare
Please test with following PR: @swift-ci Please smoke test |
This seems to have caused a regression on the Windows builder: Could you please take a look @artemcm? CC: @shahmishal - seems that the CI didn't trigger? |
@compnerd , what is the path structure for |
It is identical to Linux, just with |
Got it, I'll prepare a patch right away. |
Repair the Windows build after swiftlang#32903
In swiftlang#32903, a substitution pseudovariable was introduced to refer to the path containing Swift.swiftmodule. Since builds on Linux put this file in a path with a subdirectory named after the architecture name -- and presumably builds on mac OS do not, a conditional was required to distinguish these two cases. However, builds on OpenBSD for example also put Swift.swiftmodule in a similar subdirectory like Linux. Thus, invert the sense of this conditional to encompass both Linux, OpenBSD, and make mac OS the specific case, which it is here.
// [Note: ModuleInterfaceLoader-defer-to-SerializedModuleLoader]), which | ||
// [Note: ModuleInterfaceLoader-defer-to-ImplicitSerializedModuleLoader]), which | ||
// is interpreted by the overarching loader as a command to use the | ||
// SerializedModuleLoader. If we failed to find a .swiftmodule, this falls | ||
// ImplicitSerializedModuleLoader. If we failed to find a .swiftmodule, this falls |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please be careful about updating comments. There are a couple of issues here:
- This is exceeding the line length limit now.
- This broke a reference to the note, since the reference now has a new name but the note's name in
ModuleInterfaceLoader.cpp
is not changed in this PR.
I'm going to fix these two issues in an upcoming PR, it's not a big deal; just something to be careful about.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR with fix: #33124
In order to avoid accidentally implicitly loading modules that are expected but were not provided as explicit inputs.