You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
// Build or bring up-to-date any executable host-side tools on which this plugin depends. Add them and any binary dependencies to the tool-names-to-path map.
0 commit comments