Skip to content

Commit 654955e

Browse files
committed
Make rename_wrapper_prefixes work for HostToolsToolchain
Seems to fix the following error: ``` ERROR: MethodError: no method matching rename_wrapper_prefixes(::String, ::Set{Symbol}, ::BinaryBuilderToolchains.HostToolsToolchain) The function `rename_wrapper_prefixes` exists, but no method is defined for this combination of argument types. Closest candidates are: rename_wrapper_prefixes(::String, ::Set{Symbol}, ::BinaryBuilder2.PlatformlessWrapper{T}) where T @ BinaryBuilder2 ~/.julia/packages/BinaryBuilder2/xRv90/src/build_api/BuildTargetSpec.jl:64 Stacktrace: [1] (::BinaryBuilder2.var"#69#70"{String, BinaryBuilderPlatformExtensions.CrossPlatform, Set{Symbol}})(toolchain::BinaryBuilderToolchains.HostToolsToolchain) @ BinaryBuilder2 ~/.julia/packages/BinaryBuilder2/xRv90/src/build_api/BuildTargetSpec.jl:33 [2] iterate @ ./generator.jl:48 [inlined] [3] collect_to!(dest::Vector{BinaryBuilderToolchains.CToolchain}, itr::Base.Generator{Vector{Union{BinaryBuilderToolchains.AbstractToolchain, BinaryBuilder2.PlatformlessWrapper{<:BinaryBuilderToolchains.AbstractToolchain}}}, BinaryBuilder2.var"#69#70"{String, BinaryBuilderPlatformExtensions.CrossPlatform, Set{Symbol}}}, offs::Int64, st::Int64) @ Base ./array.jl:854 [4] collect_to_with_first!(dest::Vector{BinaryBuilderToolchains.CToolchain}, v1::BinaryBuilderToolchains.CToolchain, itr::Base.Generator{Vector{Union{BinaryBuilderToolchains.AbstractToolchain, BinaryBuilder2.PlatformlessWrapper{<:BinaryBuilderToolchains.AbstractToolchain}}}, BinaryBuilder2.var"#69#70"{String, BinaryBuilderPlatformExtensions.CrossPlatform, Set{Symbol}}}, st::Int64) @ Base ./array.jl:832 [5] _collect(c::Vector{Union{BinaryBuilderToolchains.AbstractToolchain, BinaryBuilder2.PlatformlessWrapper{<:BinaryBuilderToolchains.AbstractToolchain}}}, itr::Base.Generator{Vector{Union{BinaryBuilderToolchains.AbstractToolchain, BinaryBuilder2.PlatformlessWrapper{<:BinaryBuilderToolchains.AbstractToolchain}}}, BinaryBuilder2.var"#69#70"{String, BinaryBuilderPlatformExtensions.CrossPlatform, Set{Symbol}}}, ::Base.EltypeUnknown, isz::Base.HasShape{1}) @ Base ./array.jl:826 [6] collect_similar @ ./array.jl:738 [inlined] [7] map @ ./abstractarray.jl:3374 [inlined] [8] BinaryBuilder2.BuildTargetSpec(name::String, platform::BinaryBuilderPlatformExtensions.CrossPlatform, toolchains::Vector{Any}, dependencies::Vector{Any}, flags::Set{Symbol}) @ BinaryBuilder2 ~/.julia/packages/BinaryBuilder2/xRv90/src/build_api/BuildTargetSpec.jl:28 ``` I don't have a full enough view of the package to say that this is the correct fix though.
1 parent d704846 commit 654955e

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

BinaryBuilderSources.jl/src/JLLSource.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ function prepare(jlls::Vector{JLLSource};
159159
for (prefix, jlls_slice) in platform_jlls_by_prefix
160160
art_paths = collect_artifact_paths([jll.package for jll in jlls_slice]; platform, project_dir, pkg_depot=depot, verbose)
161161
for jll in jlls_slice
162-
pkg = only([pkg for (pkg, _) in art_paths if pkg.uuid == jll.package.uuid])
162+
pkgs = [pkg for (pkg, _) in art_paths if pkg.uuid == jll.package.uuid]
163+
isempty(pkgs) && error("No artifacts found for JLL $(jll.package.name)!")
164+
pkg = only(pkgs)
163165
# Update `jll.package` with things from `pkg`
164166
if pkg.version != Pkg.Types.VersionSpec()
165167
jll.package.version = pkg.version
@@ -219,7 +221,7 @@ end
219221
# JLLSources are in a directory together.
220222
function content_hash(jll::JLLSource)
221223
checkprepared!("content_hash", jll)
222-
224+
223225
entries = [(basename(apath), hex2bytes(basename(apath)), TreeArchival.mode_dir) for apath in jll.artifact_paths]
224226
return SHA1Hash(TreeArchival.tree_node_hash(SHA.SHA1_CTX, entries))
225227
end

src/build_api/BuildTargetSpec.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ function rename_wrapper_prefixes(name::String, flags::Set{Symbol}, pw::Platforml
6868
wrapper_prefixes = String[]
6969
# env_prefixes control the naming of environment variables that point to our wrappers
7070
env_prefixes = String[]
71-
71+
7272
# if `name` is "host", this makes a "host-x86_64-linux-gnu-gcc" wrapper.
7373
push!(wrapper_prefixes, string(name, "-\${triplet}-"))
7474
push!(wrapper_prefixes, "\${triplet}-")
@@ -89,6 +89,7 @@ function rename_wrapper_prefixes(name::String, flags::Set{Symbol}, pw::Platforml
8989
end
9090
return pw
9191
end
92+
rename_wrapper_prefixes(name::String, flags::Set{Symbol}, host::HostToolsToolchain) = host
9293

9394
function alter_toolchain(target_prefix::String, pw::PlatformlessWrapper{CToolchain})
9495
# Alter this object to contain extra flags, prefixes, etc...

0 commit comments

Comments
 (0)