Skip to content

make Plots relocatable again#5200

Merged
BeastyBlacksmith merged 2 commits intoJuliaPlots:masterfrom
KristofferC:kc/relocatable
Dec 11, 2025
Merged

make Plots relocatable again#5200
BeastyBlacksmith merged 2 commits intoJuliaPlots:masterfrom
KristofferC:kc/relocatable

Conversation

@KristofferC
Copy link
Contributor

The @path command needs to execute during precompilation for RelocatableFolders to work. This was changed in a1ad4c9#diff-4bd462497f5ac8631d218b72f21cf9d5f383e7a1500f0fee0b8cb776b9a4dac4.

Co-authored-by: Simon Christ <SimonChrist@gmx.de>
@KristofferC
Copy link
Contributor Author

I have no idea what the state of CI is on this repo. Are the test failures something I should look into or are they expected etc?

@BeastyBlacksmith
Copy link
Member

I am trying to figure that out too.. I think they are unrelated to this PR. The GraphRecipes failures are due to a recent update in GR and PyCall failing to precompile is definitely new, but also unrelated.
I don't really understand what is up with the benchmarks. But those were running without failure the last time (https://github.com/JuliaPlots/Plots.jl/actions/runs/17916688037?pr=5174).

@BeastyBlacksmith
Copy link
Member

I don't have time at the moment. Do you have an idea where that error might come from?

ERROR: MethodError: no method matching print(::Dict{Symbol, Any})
You may have intended to import Base.print
The applicable method may be too new: running in world age 38674, while current world is 38684.

Closest candidates are:
  print(::Any, !Matched::Any) (method too new to be called from this world context.)
   @ JSON ~/.julia/packages/JSON/93Ea8/src/Writer.jl:385
  print(::Any) (method too new to be called from this world context.)
   @ JSON ~/.julia/packages/JSON/93Ea8/src/Writer.jl:386
  print(!Matched::IO, !Matched::Any) (method too new to be called from this world context.)
   @ JSON ~/.julia/packages/JSON/93Ea8/src/Writer.jl:383
  ...

Stacktrace:
 [1] top-level scope
   @ none:11
 [2] eval(m::Module, e::Any)
   @ Core ./boot.jl:489
 [3] exec_options(opts::Base.JLOptions)
   @ Base ./client.jl:283
 [4] _start()
   @ Base ./client.jl:550
ERROR: Unexpected end of input
 ...when parsing byte with value '0'
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:44
  [2] _error(message::String, ps::JSON.Parser.StreamingParserState{Base.Process})
    @ JSON.Parser ~/.julia/packages/JSON/93Ea8/src/Parser.jl:148
  [3] byteat(ps::JSON.Parser.StreamingParserState{Base.Process})
    @ JSON.Parser ~/.julia/packages/JSON/93Ea8/src/Parser.jl:57
  [4] current
    @ ~/.julia/packages/JSON/93Ea8/src/Parser.jl:70 [inlined]
  [5] chomp_space!
    @ ~/.julia/packages/JSON/93Ea8/src/Parser.jl:115 [inlined]
  [6] parse_value(pc::JSON.Parser.ParserContext{Dict{String, Any}, Int64, true, nothing}, ps::JSON.Parser.StreamingParserState{Base.Process})
    @ JSON.Parser ~/.julia/packages/JSON/93Ea8/src/Parser.jl:158
  [7] parse(io::Base.Process; dicttype::Type, inttype::Type{Int64}, allownan::Bool, null::Nothing)
    @ JSON.Parser ~/.julia/packages/JSON/93Ea8/src/Parser.jl:481
  [8] parse
    @ ~/.julia/packages/JSON/93Ea8/src/Parser.jl:474 [inlined]
  [9] open(::typeof(JSON.Parser.parse), ::Cmd; kwargs::@Kwargs{})
    @ Base ./process.jl:447
 [10] open
    @ ./process.jl:428 [inlined]
 [11] julia_info
    @ ~/.julia/packages/BenchmarkCI/jAAT2/src/BenchmarkCI.jl:150 [inlined]
 [12] metadata_from(; target::PkgBenchmark.BenchmarkConfig, baseline::PkgBenchmark.BenchmarkConfig, pkgdir::String, script::String, project::String)
    @ BenchmarkCI ~/.julia/packages/BenchmarkCI/jAAT2/src/BenchmarkCI.jl:154
 [13] judge(target::Nothing, baseline::String; workspace::String, pkgdir::String, script::String, project::String, logger_factory::Type, kwargs::@Kwargs{})
    @ BenchmarkCI ~/.julia/packages/BenchmarkCI/jAAT2/src/BenchmarkCI.jl:312
 [14] judge(target::Nothing, baseline::String)
    @ BenchmarkCI ~/.julia/packages/BenchmarkCI/jAAT2/src/BenchmarkCI.jl:290
 [15] judge()
    @ BenchmarkCI ~/.julia/packages/BenchmarkCI/jAAT2/src/BenchmarkCI.jl:287
 [16] top-level scope
    @ none:1
 [17] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [18] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:283
 [19] _start()
    @ Base ./client.jl:550

@KristofferC
Copy link
Contributor Author

KristofferC commented Dec 10, 2025

Comes from https://github.com/tkf/BenchmarkCI.jl/blob/bca191f70d7fe54bb1c6ecc58e4c9b9d0ee8e4c6/src/BenchmarkCI.jl#L127-L151.

That doesn't work anymore. Either needs an @invokelatest or be written so that the JSON loading is a separate global statement vs the JSON.print.

I can fix it but tkf is no longer around so unclear what to do. We could disable it for now or move to some fork with the fix.

@BeastyBlacksmith
Copy link
Member

I see. Thanks for the investigation. I think for now, I can merge this and disable the benchmark action.

@BeastyBlacksmith BeastyBlacksmith merged commit 2f2a5f4 into JuliaPlots:master Dec 11, 2025
4 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants