Illegal instruction in binary artifacts

It seems that I stumbled upon this issue:
https://github.com/JuliaGraphics/Gtk.jl/issues/494
when testing Makie on my config (it is Debian 10 on AMD A6-3600, not ssse3, so I had to build Julia 1.4.1 from the source). Julia itself (Core+Base) works well, but several official packages fail on testing with a message like this one:

Invalid instruction at 0x7f2a3a47d7fa: 0x66, 0x0f, 0x38, 0x1d, 0xc0, 0x5d, 0xc3, 0x55, 0x48, 0x89, 0xe5, 0x48, 0x83, 0xec, 0x18

I assume that building local versions of packages would fix the problem, but could not figure out how to deactivate the default choice of using binary artifacts.

https://julialang.github.io/Pkg.jl/v1/artifacts/#Overriding-artifact-locations-1

1 Like

The question is - what do I put into Overrides.toml? For instance, there is a problem with libjpeg.so, located at
~/.julia/artifacts/53a94d62826cdd7a6391670c8576acbabc80e17f/lib/libjpeg.so

There is a system library libjpeg.so at /usr/lib/x86_64-linux-gnu/libjpeg.so - should I put a line

53a94d62826cdd7a6391670c8576acbabc80e17f = "/usr/lib/x86_64-linux-gnu/"

or

53a94d62826cdd7a6391670c8576acbabc80e17f = "/usr/lib/x86_64-linux-gnu/libjpeg.so"

or something else?

The path to the “prefix”, inside which there is the same tree as your ~/.julia/artifacts/53a94d62826cdd7a6391670c8576acbabc80e17f. More precisely, these products should be there:

the libraries under lib/, the executables under bin/

As far as I understand, I have to build the artifact locally and then put its location in Overrides.toml. I tried to build libjpeg using the build recipes from Yggdrasil, but to no avail:

../julia-1.4.1/usr/bin/julia --color=yes generate_buildjl.jl J/JpegTurbo/build_tarballs.jl
[ Info: Build tarballs script: J/JpegTurbo/build_tarballs.jl
[ Info: Repo name: JuliaBinaryWrappers/JpegTurbo_jll.jl
   Updating registry at `~/.julia/registries/General`
   Updating git-repo `https://github.com/JuliaRegistries/General.git`
ERROR: LoadError: MethodError: no method matching registered_paths(::Pkg.Types.EnvCache, ::Base.UUID)
Closest candidates are:
  registered_paths(::Pkg.Types.Context, ::Base.UUID) at /home/kalugin/julia-1.4.1/usr/share/julia/stdlib/v1.4/Pkg/src/Types.jl:1194
Stacktrace:
 [1] top-level scope at /home/kalugin/Yggdrasil/generate_buildjl.jl:170
 [2] include(::Module, ::String) at ./Base.jl:377
 [3] exec_options(::Base.JLOptions) at ./client.jl:288
 [4] _start() at ./client.jl:484
in expression starting at /home/kalugin/Yggdrasil/generate_buildjl.jl:163

No no, you want to do a normal native compilation locally, don’t use BinaryBuilder