Skip to content

JACC 1.3.0 doesn't precompile #367

@eschnett

Description

@eschnett

I am using

julia> versioninfo()
Julia Version 1.12.6
Commit 15346901f00 (2026-04-09 19:20 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: macOS (arm64-apple-darwin24.0.0)
  CPU: 12 × Apple M3 Pro
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, apple-m3)
  GC: Built with stock GC
Threads: 6 default, 1 interactive, 6 GC (on 6 virtual cores)

JACC 1.2 is working fine for me, JACC 1.3 is not:

Note that I'm running Pkg.update() which should subsume the suggested Pkg.instantiate().

$ julia --threads=auto
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.12.6 (2026-04-09)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org release
|__/                   |

(@v1.12) pkg> update
    Updating registry at `~/.julia/registries/General.toml`
     Project No packages added to or removed from `~/.julia/environments/v1.12/Project.toml`
    Manifest No packages added to or removed from `~/.julia/environments/v1.12/Manifest.toml`
  ✗ JACC
  ✗ JACC → MetalExt
  ✗ JACC → CUDAExt
Precompiling packages finished.
  0 dependencies successfully precompiled in 19 seconds. 499 already precompiled.
  3 dependencies errored.
  For a report of the errors see `julia> err`. To retry use `pkg> precompile`

julia> err
PkgPrecompileError: The following 3 direct dependencies failed to precompile:

JACC

Failed to precompile JACC [0979c8fe-16a4-4796-9b82-89a9f10403ea] to "/Users/eschnett/.julia/compiled/v1.12/JACC/jl_VfiPmY".
ERROR: LoadError: ArgumentError: Package JACC does not have Metal in its dependencies:
- You may have a partially installed environment. Try `Pkg.instantiate()`
  to ensure all packages in the environment are installed.
- Or, if you have JACC checked out for development and have
  added Metal as a dependency but haven't updated your primary
  environment's manifest file, try `Pkg.resolve()`.
- Otherwise you may need to report an issue with JACC
Stacktrace:
  [1] macro expansion
    @ ./loading.jl:2408 [inlined]
  [2] macro expansion
    @ ./lock.jl:376 [inlined]
  [3] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2388
  [4] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2364
  [5] top-level scope
    @ ~/.julia/packages/JACC/PLdGe/src/preferences.jl:111
  [6] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
  [7] 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, UInt128}}, source::Nothing)
    @ Base ./loading.jl:3028
  [8] top-level scope
    @ stdin:5
  [9] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [10] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2874
 [11] include_string
    @ ./loading.jl:2884 [inlined]
 [12] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [13] _start()
    @ Base ./client.jl:550
in expression starting at /Users/eschnett/.julia/packages/JACC/PLdGe/src/JACC.jl:2
in expression starting at stdin:5
JACC → MetalExt

Failed to precompile MetalExt [1f72fedd-02dd-535e-99c5-839e8d950d7a] to "/Users/eschnett/.julia/compiled/v1.12/MetalExt/jl_k6Mz9G".
ERROR: LoadError: ArgumentError: Package JACC does not have Metal in its dependencies:
- You may have a partially installed environment. Try `Pkg.instantiate()`
  to ensure all packages in the environment are installed.
- Or, if you have JACC checked out for development and have
  added Metal as a dependency but haven't updated your primary
  environment's manifest file, try `Pkg.resolve()`.
- Otherwise you may need to report an issue with JACC
Stacktrace:
  [1] macro expansion
    @ ./loading.jl:2408 [inlined]
  [2] macro expansion
    @ ./lock.jl:376 [inlined]
  [3] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2388
  [4] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2364
  [5] top-level scope
    @ ~/.julia/packages/JACC/PLdGe/src/preferences.jl:111
  [6] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
  [7] 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, UInt128}}, source::String)
    @ Base ./loading.jl:3028
  [8] top-level scope
    @ stdin:5
  [9] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [10] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2874
 [11] include_string
    @ ./loading.jl:2884 [inlined]
 [12] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [13] _start()
    @ Base ./client.jl:550
in expression starting at /Users/eschnett/.julia/packages/JACC/PLdGe/src/JACC.jl:2
in expression starting at stdin:5
ERROR: LoadError: Failed to precompile JACC [0979c8fe-16a4-4796-9b82-89a9f10403ea] to "/Users/eschnett/.julia/compiled/v1.12/JACC/jl_wRJHzM".
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:44
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool; flags::Cmd, cacheflags::Base.CacheFlags, reasons::Dict{String, Int64}, loadable_exts::Nothing)
    @ Base ./loading.jl:3315
  [3] (::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}})()
    @ Base ./loading.jl:2683
  [4] mkpidlock(f::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.12.6+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:96
  [5] #mkpidlock#7
    @ ~/.julia/juliaup/julia-1.12.6+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:91 [inlined]
  [6] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.12.6+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:117
  [7] #invokelatest_gr#232
    @ ./reflection.jl:1297 [inlined]
  [8] invokelatest_gr
    @ ./reflection.jl:1289 [inlined]
  [9] maybe_cachefile_lock(f::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}}, pkg::Base.PkgId, srcpath::String; stale_age::Int64)
    @ Base ./loading.jl:3886
 [10] maybe_cachefile_lock
    @ ./loading.jl:3883 [inlined]
 [11] __require_prelocked(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2669
 [12] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2495
 [13] macro expansion
    @ ./loading.jl:2423 [inlined]
 [14] macro expansion
    @ ./lock.jl:376 [inlined]
 [15] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2388
 [16] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2364
 [17] top-level scope
    @ ~/.julia/packages/JACC/PLdGe/ext/MetalExt/MetalExt.jl:3
 [18] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
 [19] 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, UInt128}}, source::Nothing)
    @ Base ./loading.jl:3028
 [20] top-level scope
    @ stdin:5
 [21] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [22] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2874
 [23] include_string
    @ ./loading.jl:2884 [inlined]
 [24] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [25] _start()
    @ Base ./client.jl:550
in expression starting at /Users/eschnett/.julia/packages/JACC/PLdGe/ext/MetalExt/MetalExt.jl:1
in expression starting at stdin:5

JACC → CUDAExt

Failed to precompile CUDAExt [8a406b1d-6dc5-5a08-b89d-a9dc6d856c9b] to "/Users/eschnett/.julia/compiled/v1.12/CUDAExt/jl_kNx6D2".
ERROR: LoadError: ArgumentError: Package JACC does not have Metal in its dependencies:
- You may have a partially installed environment. Try `Pkg.instantiate()`
  to ensure all packages in the environment are installed.
- Or, if you have JACC checked out for development and have
  added Metal as a dependency but haven't updated your primary
  environment's manifest file, try `Pkg.resolve()`.
- Otherwise you may need to report an issue with JACC
Stacktrace:
  [1] macro expansion
    @ ./loading.jl:2408 [inlined]
  [2] macro expansion
    @ ./lock.jl:376 [inlined]
  [3] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2388
  [4] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2364
  [5] top-level scope
    @ ~/.julia/packages/JACC/PLdGe/src/preferences.jl:111
  [6] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
  [7] 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, UInt128}}, source::String)
    @ Base ./loading.jl:3028
  [8] top-level scope
    @ stdin:5
  [9] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [10] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2874
 [11] include_string
    @ ./loading.jl:2884 [inlined]
 [12] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [13] _start()
    @ Base ./client.jl:550
in expression starting at /Users/eschnett/.julia/packages/JACC/PLdGe/src/JACC.jl:2
in expression starting at stdin:5
ERROR: LoadError: Failed to precompile JACC [0979c8fe-16a4-4796-9b82-89a9f10403ea] to "/Users/eschnett/.julia/compiled/v1.12/JACC/jl_Z3n2XN".
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:44
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool; flags::Cmd, cacheflags::Base.CacheFlags, reasons::Dict{String, Int64}, loadable_exts::Nothing)
    @ Base ./loading.jl:3315
  [3] (::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}})()
    @ Base ./loading.jl:2683
  [4] mkpidlock(f::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.12.6+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:96
  [5] #mkpidlock#7
    @ ~/.julia/juliaup/julia-1.12.6+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:91 [inlined]
  [6] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.12.6+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:117
  [7] #invokelatest_gr#232
    @ ./reflection.jl:1297 [inlined]
  [8] invokelatest_gr
    @ ./reflection.jl:1289 [inlined]
  [9] maybe_cachefile_lock(f::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}}, pkg::Base.PkgId, srcpath::String; stale_age::Int64)
    @ Base ./loading.jl:3886
 [10] maybe_cachefile_lock
    @ ./loading.jl:3883 [inlined]
 [11] __require_prelocked(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2669
 [12] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2495
 [13] macro expansion
    @ ./loading.jl:2423 [inlined]
 [14] macro expansion
    @ ./lock.jl:376 [inlined]
 [15] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2388
 [16] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2364
 [17] top-level scope
    @ ~/.julia/packages/JACC/PLdGe/ext/CUDAExt/CUDAExt.jl:3
 [18] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
 [19] 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, UInt128}}, source::Nothing)
    @ Base ./loading.jl:3028
 [20] top-level scope
    @ stdin:5
 [21] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [22] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2874
 [23] include_string
    @ ./loading.jl:2884 [inlined]
 [24] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [25] _start()
    @ Base ./client.jl:550
in expression starting at /Users/eschnett/.julia/packages/JACC/PLdGe/ext/CUDAExt/CUDAExt.jl:1
in expression starting at stdin:5

(@v1.12) pkg> status
Status `~/.julia/environments/v1.12/Project.toml`
  [6e4b80f9] BenchmarkTools v1.8.0
  [12aac903] BinaryBuilder v0.6.6
  [7f725544] BinaryBuilderBase v1.44.0
  [052768ef] CUDA v6.1.0
  [13f3f980] CairoMakie v0.15.11
  [e30172f5] Documenter v1.17.0
  [0c68f7d7] GPUArrays v11.5.4
  [61eb1bfa] GPUCompiler v1.16.1
  [51b4e782] H5Zbitshuffle v0.1.3
  [f67ccb44] HDF5 v0.17.3
  [0979c8fe] JACC v1.3.0
⌅ [682c06a0] JSON v0.21.4
  [98e50ef6] JuliaFormatter v2.5.6
  [7a12625a] LinearMaps v3.11.4
  [da04e1cc] MPI v0.20.26
  [3da0fdf6] MPIPreferences v0.1.12
  [dde4c033] Metal v1.9.3
  [bdf0d083] MultiFloats v3.2.6
  [08131aa3] OpenCL v0.10.9
  [295af30f] Revise v3.14.5
  [29c08b6a] RunBinary v0.1.3
  [efcf1570] Setfield v1.1.2
  [65edfddc] SixelTerm v1.3.0
  [90137ffa] StaticArrays v1.9.18
  [ebadf6b4] UnicodeGraphics v0.2.2
  [b8865327] UnicodePlots v3.8.3
  [627d6b7a] pocl_jll v7.1.1+0
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated`

Metadata

Metadata

Labels

bugSomething isn't working

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions