Tectonic.jl icon indicating copy to clipboard operation
Tectonic.jl copied to clipboard

Failed to compile on M1 Mac

Open plavin opened this issue 3 years ago • 12 comments

When installing TikzPictures.jl, this package fails to build. Below is the (slightly abridged) output from import Pkg; Pkg.precompile(). I'm on a 2020 M1 MacBook Air running macOS 11.4 Big Sur.

I was able to install tectonic separately using homebrew, so perhaps there is a way for this project to support it without too much effort.

ERROR: LoadError: Failed to precompile Tectonic [9ac5f52a-99c6-489f-af81-462ef484790f] to /Users/plavin3/.julia/compiled/v1.7/Tectonic/jl_hxNb1w.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
    @ Base ./loading.jl:1466
  [3] compilecache(pkg::Base.PkgId, path::String)
    @ Base ./loading.jl:1410
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1120
  [5] require(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1013
  [6] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:997
  [7] include
    @ ./Base.jl:418 [inlined]
  [8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1318
  [9] top-level scope
    @ none:1
 [10] eval
    @ ./boot.jl:373 [inlined]
 [11] eval(x::Expr)
    @ Base.MainInclude ./client.jl:453
 [12] top-level scope
    @ none:1
in expression starting at /Users/plavin3/.julia/packages/TikzPictures/Kichj/src/TikzPictures.jl:1

Tectonic [9ac5f52a-99c6-489f-af81-462ef484790f]

Failed to precompile Tectonic [9ac5f52a-99c6-489f-af81-462ef484790f] to /Users/plavin3/.julia/compiled/v1.7/Tectonic/jl_BmOu0i.
ERROR: LoadError: Cannot locate artifact 'tectonic_bin' for aarch64-apple-darwin-libgfortran5-cxx11-julia_version+1.7.1 in '/Users/plavin3/.julia/packages/Tectonic/IR51S/Artifacts.toml'
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] artifact_slash_lookup(name::String, artifact_dict::Dict{String, Any}, artifacts_toml::String, platform::Base.BinaryPlatforms.Platform)
    @ Artifacts /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Artifacts/src/Artifacts.jl:608
  [3] var"@artifact_str"(__source__::LineNumberNode, __module__::Module, name::Any, platform::Nothing)
    @ Artifacts /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Artifacts/src/Artifacts.jl:678
  [4] var"@artifact_str"(__source__::LineNumberNode, __module__::Module, name::Any)
    @ Artifacts /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Artifacts/src/Artifacts.jl:641
  [5] include
    @ ./Base.jl:418 [inlined]
  [6] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1318
  [7] top-level scope
    @ none:1
  [8] eval
    @ ./boot.jl:373 [inlined]
  [9] eval(x::Expr)
    @ Base.MainInclude ./client.jl:453
 [10] top-level scope
    @ none:1
in expression starting at /Users/plavin3/.julia/packages/Tectonic/IR51S/src/Tectonic.jl:35
in expression starting at /Users/plavin3/.julia/packages/Tectonic/IR51S/src/Tectonic.jl:1

Stacktrace:
 [1] pkgerror(msg::String)
   @ Pkg.Types /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Pkg/src/Types.jl:68
 [2] precompile(ctx::Pkg.Types.Context; internal_call::Bool, strict::Bool, warn_loaded::Bool, already_instantiated::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ Pkg.API /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Pkg/src/API.jl:1362
 [3] precompile
   @ /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Pkg/src/API.jl:1013 [inlined]
 [4] #precompile#220
   @ /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Pkg/src/API.jl:1011 [inlined]
 [5] precompile()
   @ Pkg.API /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/stdlib/v1.7/Pkg/src/API.jl:1011
 [6] top-level scope
   @ REPL[7]:1

plavin avatar Dec 27 '21 19:12 plavin

I have the same issue with a M1 Pro chip (2021 MacBook Pro) running macOS 12.1 Monterey.

Malte311 avatar Jan 24 '22 09:01 Malte311

I assume this is with the https://julialang-s3.julialang.org/bin/mac/aarch64/1.7/julia-1.7.1-macaarch64.dmg binary right? Until upstream starts building a native M1 binary for tectonic you'll need to be using the Intel/Rosetta julia binary unfortunately, which I'm pretty sure should work fine on an M1.

MichaelHatherly avatar Feb 03 '22 09:02 MichaelHatherly

This is still an issue on julia 1.8. What needs to get fixed upstream?

jpfairbanks avatar Aug 29 '22 12:08 jpfairbanks

I was also able to build tectonic on M1 via homebrew. Would it be possible to have Tectonic.jl use a homebrew installed version of Tectonic until upstream is fixed?

jpfairbanks avatar Aug 29 '22 12:08 jpfairbanks

There is a https://github.com/JuliaBinaryWrappers/tectonic_jll.jl now, which does have a macOS ARM build, so you may want to directly use that one for the time being.

Tectonic.jl also bundles a biber binary with it, which I've not yet got around to looking into apple silicon support, hence why I'm not yet just pulling in tectonic_jll for the tectonic binary.

MichaelHatherly avatar Aug 29 '22 13:08 MichaelHatherly

There is a biber universal binary download (on sourceforge though): https://sourceforge.net/projects/biblatex-biber/files/biblatex-biber/current/binaries/MacOS/biber-darwin_universal.tar.gz/download so it may be jll wrappable...

kleinschmidt avatar Oct 05 '22 19:10 kleinschmidt

It appears biber supports macOS ARM natively: https://github.com/plk/biber/blob/dev/dist/darwin_arm64/build.sh. The build scripts for the various platforms look simple enough if someone wanted to contribute biber to Yggdrasil. Could be worth opening an issue there.

ararslan avatar Oct 05 '22 19:10 ararslan

I'll do that! We'd love to be able to use Tectonic.jl on our M1 macs...

kleinschmidt avatar Oct 05 '22 19:10 kleinschmidt

Any progress on this issue?

iabraham avatar Mar 03 '23 12:03 iabraham

Just blocked on https://github.com/JuliaPackaging/Yggdrasil/issues/5633 and someone with the time/need for this on that arch.

MichaelHatherly avatar Mar 03 '23 12:03 MichaelHatherly

Hello, are there any updates on this issue? There's a plotting module I'd like to use that requires PGFPlots which calls out to Tectonic, but this dependency is blocking me. Thanks!

nskh avatar Jun 30 '23 20:06 nskh

If you don't need biber support then use the JLL version instead.

MichaelHatherly avatar Jun 30 '23 21:06 MichaelHatherly