Add API to query executable paths for runnable targets #482
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 change adds a public API to retrieve the absolute path of the built binary for a specified executable target, addressing issue #286. This functionality is intended to support tools like swift run, which need to locate and launch built targets.
The new asynchronous API, generateRunnableInfo, is implemented in SWBBuildServiceSession and returns a SWBRunnableInfo struct containing the resolved executable path. Targets are resolved using targetID, providing reliable and consistent identification across the build system.
Comprehensive error handling is included to cover cases where the target is missing or not executable. Unit tests validate both successful and failure scenarios to ensure correctness.
Note: This PR addresses only the functionality requested in issue #286. Any existing Swift 6 compatibility issues in the project are unrelated to these changes and should be tracked and resolved separately.
While running tests, the following Swift 6 compatibility errors were encountered:
error: cannot find type 'sendingValue' in scope
error: cannot infer contextual base in reference to member 'init'
error: contextual closure type '() -> sending ()' expects 0 arguments...
These errors stem from existing code in the SWBUtil module that is not yet compatible with Swift 6’s new ownership model (e.g., ~Copyable, sending).