Pattern for managing swift compilation improvements #251
+396
−45
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.
This PR is a pattern to add required features to swift compilation like
AST dumping ( bazelbuild/rules_swift#623 ) and
Index While Building V2 (
bazelbuild/rules_swift#567 ) for rules_ios in a
maintainable way without ditching rules_swift altogether. It does this
in way where we can create our own toolchain and add our own features in
it, and integrate them or replace upstream features quite nicely.
It achieves this by providing:
swift_library
rule to override attributesof all attributes and most logic.
The benefit is that we can add add new action configs ( configurators ),
and run improved worker code without maintaining a fork. Longer term we
can propose features and gradually get them upstreamed.
For now, it bases a swift_library rule on the rules_swift rule, which is
Apache compatible. Longer term, we may consider calling
swift_common.compile directly and get rid of the extra rule in our
stack. I suspect if rules_swift uses register_toolchain idiom we may
also be able to get rid of this.