Skip to content

Base.require leads to ERROR: LoadError: UndefVarError: UUID not defined in Main #53381

Closed
@mortenpi

Description

@mortenpi

This popped up in DataSets.jl nightly tests, and appears to be some weird regression in Base.require. The tarball (mwe.tar.gz) has the MWE environment (which basically consists of a trivial empty package):

$ julia +nightly --project

julia> using UUIDs: UUID

julia> Base.require(Base.PkgId(UUID("89b7a33a-382e-4698-a931-421b088d35a2"), "DummyStorageBackends"))
┌ Info: Precompiling DummyStorageBackends [89b7a33a-382e-4698-a931-421b088d35a2]
└ @ Base loading.jl:2647
ERROR: LoadError: UndefVarError: `UUID` not defined in `Main`
Stacktrace:
 [1] top-level scope
   @ stdin:2
in expression starting at stdin:2
ERROR: Failed to precompile DummyStorageBackends [89b7a33a-382e-4698-a931-421b088d35a2] to "/home/mortenpi/.julia/compiled/v1.12/DummyStorageBackends/jl_TtujDq".
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool; flags::Cmd, reasons::Dict{…})
    @ Base ./loading.jl:2762
  [3] (::Base.var"#1069#1070"{Base.PkgId})()
    @ Base ./loading.jl:2204
  [4] mkpidlock(f::Base.var"#1069#1070"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:95
  [5] #mkpidlock#6
    @ ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:90 [inlined]
  [6] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:116
  [7] #invokelatest#2
    @ ./essentials.jl:1032 [inlined]
  [8] invokelatest
    @ ./essentials.jl:1027 [inlined]
  [9] maybe_cachefile_lock(f::Base.var"#1069#1070"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64)
    @ Base ./loading.jl:3348
 [10] maybe_cachefile_lock
    @ ./loading.jl:3345 [inlined]
 [11] _require(pkg::Base.PkgId, env::Nothing)
    @ Base ./loading.jl:2200
 [12] __require_prelocked(uuidkey::Base.PkgId, env::Nothing)
    @ Base ./loading.jl:2033
 [13] #invoke_in_world#3
    @ ./essentials.jl:1064 [inlined]
 [14] invoke_in_world
    @ ./essentials.jl:1061 [inlined]
 [15] _require_prelocked
    @ ./loading.jl:2024 [inlined]
 [16] _require_prelocked
    @ ./loading.jl:2023 [inlined]
 [17] macro expansion
    @ ./lock.jl:273 [inlined]
 [18] require(uuidkey::Base.PkgId)
    @ Base ./loading.jl:2018
 [19] top-level scope
    @ REPL[2]:1
Some type information was truncated. Use `show(err)` to see complete types.

Works file on 1.10 and earlier. Looking at the PkgEval results for DataSets.jl, it looks like it started failing about 1-2 weeks ago. I'll see if I can bisect it to a commit.

julia> versioninfo()
Julia Version 1.12.0-DEV.15
Commit 1c25d93ca8a (2024-02-19 01:35 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 16 × 12th Gen Intel(R) Core(TM) i7-1260P
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, alderlake)
Threads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions