-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[5.9 🍒] Miscellaneous Dependency Scanner and Explicit Modules Improvements #66936
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
artemcm
merged 2 commits into
swiftlang:release/5.9
from
artemcm:ExplicitModule59CherrySeason
Jun 27, 2023
Merged
[5.9 🍒] Miscellaneous Dependency Scanner and Explicit Modules Improvements #66936
artemcm
merged 2 commits into
swiftlang:release/5.9
from
artemcm:ExplicitModule59CherrySeason
Jun 27, 2023
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…uilt modules This will mean that '-disable-implicit-swift-modules' also automatically implies two things: 1. Clang modules must also be explicit, and the importer's clang instance will get '-fno-implicit-modules' and '-fno-implicit-module-maps' 2. The importer's clang instance will no longer get a '-fmodules-cache-path=', since it is not needed in explicit builds
@swift-ci test |
nkcsgexi
approved these changes
Jun 26, 2023
…ate output category Instead of being a part of 'directDependencies' on a module dependency info, make them a separate array of dependency IDs for Swift Source and Textual modules. This will allow clients to still distinguish direct module dependencies imported from a given module, versus dependencies added because direct/transitive Clang module dependencies have Swift overlays. This change does *not* remove overlay dependencies from 'directDependencies' yet, just adds them as a separate field on the module details info. A followup change will remove overlay and bridging header dependencies from 'directDependencies' once the clients have had a chance to adopt to this change.
46abaa8
to
112d6c4
Compare
@swift-ci test |
drodriguez
added a commit
to drodriguez/swift
that referenced
this pull request
Jul 12, 2023
The code of `ScanDependencies.cpp` was creating invalid JSON since swiftlang#66031 because in the case of having `extraPcmArgs` and `swiftOverlayDependencies`, but not `bridgingHeader`, a comma will not be added at the end of `extraPcmArgs`, creating an invalid JSON file. Additionally that same PR added a trailing comma at the end of the `swiftOverlayDependencies`, which valid JSON does not allow, but that bug was removed in swiftlang#66366. Both problems are, however, present in the 5.9 branch, because swiftlang#66936 included swiftlang#66031, but not swiftlang#66366. Besides fixing the problem in `ScanDependencies.cpp` I modified every test that uses `--scan-dependencies` to pass the produced JSON through Python's `json.tool` in order to validate proper JSON is produced. In most cases I was able to pipe the output of the tool into `FileCheck`, but in some cases the validation is done by itself because the checks depend on the exact format generated by `--scan-dependencies`. In a couple of tests I added a call to `FileCheck` that seemed to be missing. Without these changes, two tests seems to be generating invalid JSON in my machine: - `ScanDependencies/local_cache_consistency.swift` (which outputs `Expecting ',' delimiter: line 525 column 11 (char 22799)`) - `ScanDependencies/placholder_overlay_deps.swift`
drodriguez
added a commit
that referenced
this pull request
Jul 12, 2023
…67246) The code of `ScanDependencies.cpp` was creating invalid JSON since #66031 because in the case of having `extraPcmArgs` and `swiftOverlayDependencies`, but not `bridgingHeader`, a comma will not be added at the end of `extraPcmArgs`, creating an invalid JSON file. Additionally that same PR added a trailing comma at the end of the `swiftOverlayDependencies`, which valid JSON does not allow, but that bug was removed in #66366. Both problems are, however, present in the 5.9 branch, because #66936 included #66031, but not #66366. Besides fixing the problem in `ScanDependencies.cpp` I modified every test that uses `--scan-dependencies` to pass the produced JSON through Python's `json.tool` in order to validate proper JSON is produced. In most cases I was able to pipe the output of the tool into `FileCheck`, but in some cases the validation is done by itself because the checks depend on the exact format generated by `--scan-dependencies`. In a couple of tests I added a call to `FileCheck` that seemed to be missing. Without these changes, two tests seems to be generating invalid JSON in my machine: - `ScanDependencies/local_cache_consistency.swift` (which outputs `Expecting ',' delimiter: line 525 column 11 (char 22799)`) - `ScanDependencies/placholder_overlay_deps.swift`
drodriguez
added a commit
that referenced
this pull request
Jul 14, 2023
…es. (#67265) The code of `ScanDependencies.cpp` was creating invalid JSON since #66031 because in the case of having `extraPcmArgs` and `swiftOverlayDependencies`, but not `bridgingHeader`, a comma will not be added at the end of `extraPcmArgs`, creating an invalid JSON file. Additionally that same PR added a trailing comma at the end of the `swiftOverlayDependencies`, which valid JSON does not allow, but that bug was removed in #66366. Both problems are, however, present in the 5.9 branch, because #66936 included #66031, but not #66366. Besides fixing the problem in `ScanDependencies.cpp` I modified every test that uses `--scan-dependencies` to pass the produced JSON through Python's `json.tool` in order to validate proper JSON is produced. In most cases I was able to pipe the output of the tool into `FileCheck`, but in some cases the validation is done by itself because the checks depend on the exact format generated by `--scan-dependencies`. In a couple of tests I added a call to `FileCheck` that seemed to be missing. Without these changes, two tests seems to be generating invalid JSON in my machine: - `ScanDependencies/local_cache_consistency.swift` (which outputs `Expecting ',' delimiter: line 525 column 11 (char 22799)`) - `ScanDependencies/placholder_overlay_deps.swift` Additional changes for the cherry-pick: - Removed some changes in some CAS tests that are not present in release/5.9. - Switch `trailingComma` from `true` to `false` for `swiftOverlayDependencies` similar to what #66366 did in `main`. - Remove the new `RUN` line in `optional_deps_of_testable_imports.swift` because it fails in 5.9 if the `CHECK` is performed. (cherry picked from commit 7de1089)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-pick of #65869 and #66031
• Release: Swift 5.9
• Explanation: Cherry-picks of a handful of changes to the dependency scanner, in order to facilitate early experimental adoption of explicit module loading in release compilers.
• Scope of Issue: This issue impacts only users who opt-in to Explicit Module Builds with the driver's -experimental-explicit-module-build.
• Origination: Development of Explicit Module loading
• Risk: The risk of this change is low, affected code-paths are not triggered during Implicit Module builds (default)
• Reviewed By: @nkcsgexi, @cachemeifyoucan