Skip to content

nightly: Cannot load Pkg and REPL in module on LOAD_PATH if REPLExt is in no environment #53365

Closed
@pfitzseb

Description

@pfitzseb

Repro:

  • Make sure your global env is empty.
  • Create a new package that depends on Pkg and REPL
  • Put that package on LOAD_PATH and try to using it:
❯ tree
.
└── Foo
    ├── Project.toml
    └── src
        └── Foo.jl

3 directories, 2 files

❯ cat Foo/Project.toml
name="Foo"

[deps]
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"

❯ cat Foo/src/Foo.jl
module Foo

using REPL, Pkg

end

❯ ~/Documents/Git/julia/usr/bin/julia -e 'pushfirst!(LOAD_PATH, pwd()); using Foo'
┌ Error: Error during loading of extension REPLExt of Pkg, use `Base.retry_load_extensions()` to retry.
│   exception =
│    1-element ExceptionStack:
│    ArgumentError: Package REPLExt [e5eb5ef1-03cf-53a7-ae1d-5a66b08e832b] is required but does not seem to be installed:
│     - Run `Pkg.instantiate()` to install all recorded dependencies.
│
│    Stacktrace:
│      [1] _require(pkg::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:2152
│      [2] __require_prelocked(uuidkey::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:2033
│      [3] #invoke_in_world#3
│        @ ./essentials.jl:1064 [inlined]
│      [4] invoke_in_world
│        @ ./essentials.jl:1061 [inlined]
│      [5] _require_prelocked
│        @ ./loading.jl:2024 [inlined]
...
│     [25] _start()
│        @ Base ./client.jl:525
└ @ Base loading.jl:1426
┌ Warning: The call to compilecache failed to create a usable precompiled cache file for Foo [a0f744ce-4535-5630-8809-367301d68e22]
│   exception = nothing
└ @ Base loading.jl:2222

In a way this direct LOAD_PATH manipulation is pretty unidiomatic, but it still feels like this shouldn't fail to me.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions