Commit 81f0f8b
committed
command plugins: Build command plugin dependencies for the host, not the target
Since #7164, dependencies of command plugins are once again being
built for the _target_ rather than the host. This causes problem
when cross compiling because the host needs to be able to run the
plugin dependencies, but finds target binaries instead.
This problem was fixed before in #6791 by forcing command plugin
dependencies to be built for the host by overriding the default
build parameters in swiftTool.createBuildSystem(). The same solution
still works in this commit, but a better long-term option would be
to rework BuildOperation.plan() to handle command plugin dependencies
specially, as it already does for build plugin dependencies.
At present, BuildOperation.plan calls graph.invokeBuildToolPlugins to
process sources. invokeBuildToolPlugins finds all build tool dependecies
and builds them separately, using a specially-created BuildOperation instance:
https://github.com/apple/swift-package-manager/blob/34efc0bfe9d40d9a019644ac8fcd0b852c491dfe/Sources/SPMBuildCore/Plugins/PluginInvocation.swift#L409
There is no equivalent step for command plugin dependencies, so
they are built for the host architecture. Ideally we should rework
BuildOperation.plan to build command and build plugin dependencies
in the same way.1 parent f313486 commit 81f0f8b
1 file changed
+2
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
319 | 319 | | |
320 | 320 | | |
321 | 321 | | |
322 | | - | |
| 322 | + | |
| 323 | + | |
323 | 324 | | |
324 | 325 | | |
325 | 326 | | |
| |||
0 commit comments