JuliaPackaging / BinaryBuilder.jl

Binary Dependency Builder for Julia
https://binarybuilder.org
Other
384 stars 99 forks source link

Auditor: Error processing dylib #1331

Open maleadt opened 2 weeks ago

maleadt commented 2 weeks ago

While adding a JLL for the Metal Shader Converter library, built and provided by Apple, I ran into the following warning:

┌ Warning: Could not probe /home/tim/Julia/src/Yggdrasil/M/Metal_Shader_Converter/build/x86_64-apple-darwin14/2rqS2FNg/x86_64-apple-darwin14-libgfortran3-cxx03/destdir/lib/libmetalirconverter.dylib for an SONAME!
│   exception =
│    MethodError: Cannot `convert` an object of type
│      ObjectFile.MachO.MachOHandle{IOStream} to an object of type
│      ObjectFile.MachO.MachOLoadCmdRef
│    Closest candidates are:
│      convert(::Type{T}, ::T) where T at ~/Julia/depot/juliaup/julia-1.7.3+0.x64.linux.gnu/share/julia/base/essentials.jl:218
│    Stacktrace:
│      [1] setindex!(A::Vector{ObjectFile.MachO.MachOLoadCmdRef}, x::ObjectFile.MachO.MachOHandle{IOStream}, i1::Int64)
│        @ Base ./array.jl:903
│      [2] copyto!
│        @ ./abstractarray.jl:893 [inlined]
│      [3] _collect
│        @ ./array.jl:655 [inlined]
│      [4] collect
│        @ ./array.jl:649 [inlined]
│      [5] broadcastable
│        @ ./broadcast.jl:704 [inlined]
│      [6] broadcasted
│        @ ./broadcast.jl:1295 [inlined]
│      [7] (::BinaryBuilder.Auditor.var"#79#80")(ns::ObjectFile.MachO.FatMachOHandle{IOStream})
│        @ BinaryBuilder.Auditor ~/.julia/packages/BinaryBuilder/fV5qK/src/auditor/soname_matching.jl:7
│      [8] readmeta(f::BinaryBuilder.Auditor.var"#79#80", file::String)
│        @ ObjectFile ~/.julia/packages/ObjectFile/2udxC/src/Abstract/ObjectHandle.jl:159
│      [9] get_soname(path::String)
│        @ BinaryBuilder.Auditor ~/.julia/packages/BinaryBuilder/fV5qK/src/auditor/soname_matching.jl:7
│     [10] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, dont_dlopen::Bool, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
│        @ BinaryBuilder ~/.julia/packages/BinaryBuilder/fV5qK/src/AutoBuild.jl:960
│     [11] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
│        @ BinaryBuilder ~/.julia/packages/BinaryBuilder/fV5qK/src/AutoBuild.jl:363
│     [12] top-level scope
│        @ ~/Julia/src/Yggdrasil/M/Metal_Shader_Converter/build_tarballs.jl:45
│     [13] include(mod::Module, _path::String)
│        @ Base ./Base.jl:418
│     [14] exec_options(opts::Base.JLOptions)
│        @ Base ./client.jl:292
│     [15] _start()
│        @ Base ./client.jl:495
└ @ BinaryBuilder.Auditor ~/.julia/packages/BinaryBuilder/fV5qK/src/auditor/soname_matching.jl:9

I haven't dug into this, so it isn't clear whether this is an issue with ObjectFile.jl, or with the Auditor here.