JuliaLang / IJulia.jl

Julia kernel for Jupyter
MIT License
2.78k stars 409 forks source link

cannot build IJulia without disabling Julia's startup.jl #1097

Closed matthias314 closed 10 months ago

matthias314 commented 10 months ago

I've just replaced Julia 1.10.0-beta3 with 1.10.0-rc1. Afterwards I wanted to build IJulia again. However, I always got the error message

(@v1.10) pkg> build IJulia
    Building Conda ─→ `/usr/local/julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/8c86e48c0db1564a1d49548d3515ced5d604c408/build.log`
ERROR: Error building `Conda`: 
ERROR: LoadError: ArgumentError: Package InteractiveUtils not found in current path.
- Run `import Pkg; Pkg.add("InteractiveUtils")` to install the InteractiveUtils package.
Stacktrace:
 [1] macro expansion
   @ Base ./loading.jl:1766 [inlined]
 [2] macro expansion
   @ Base ./lock.jl:267 [inlined]
 [3] __require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1747
 [4] #invoke_in_world#3
   @ Base ./essentials.jl:921 [inlined]
 [5] invoke_in_world
   @ Base ./essentials.jl:918 [inlined]
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1740
in expression starting at /usr/local/julia/config/startup.jl:3

Line 3 of my startup.jl is using InteractiveUtils. Saying add InteractiveUtils at the Pkg prompt doesn't change anything. However, if I start Julia with --startup-file=no, then it works without problems. I don't know if this is an issue with Julia, IJulia or Conda, or maybe none at all. If this is how it's supposed be, then maybe one could mention the necessary --startup-file=no option in the documentation.

Julia Version 1.10.0-rc1
Commit 5aaa9485436 (2023-11-03 07:44 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 4 × Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, skylake)
  Threads: 1 on 4 virtual cores
stevengj commented 10 months ago

Do any other packages work?

matthias314 commented 10 months ago

Building BenchmarkTools, OffsetArrays, MacroTools and BangBang works, but it seems to me that building them is a no-op. Can you suggest a package to try?

stevengj commented 10 months ago

PyCall, MathJaxRenderer, Gurobi, and WinRPM are examples of other packages that have build scripts.

(Note that the error here is from building Conda, not IJulia, by the way.)

matthias314 commented 10 months ago

I've tried PyCall and Gurobi (both on a different machine, but again with InteractiveUtils in startup.jl). The result is the same. For PyCall the error is again triggered by Conda, and in the other case it is Gurobi itself:

    Building Gurobi → `/usr/local/julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/1eeff1b016fae36fbd4524c40b6ebff44748c811/build.log`
ERROR: Error building `Gurobi`: 
ERROR: LoadError: ArgumentError: Package InteractiveUtils not found in current path.
- Run `import Pkg; Pkg.add("InteractiveUtils")` to install the InteractiveUtils package.
Stacktrace:
 [1] macro expansion
   @ Base ./loading.jl:1766 [inlined]
 [2] macro expansion
   @ Base ./lock.jl:267 [inlined]
 [3] __require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1747
 [4] #invoke_in_world#3
   @ Base ./essentials.jl:921 [inlined]
 [5] invoke_in_world
   @ Base ./essentials.jl:918 [inlined]
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:1740
in expression starting at /usr/local/julia/config/startup.jl:3

Building IJulia and Gurobi with Julia 1.9.3 work fine.

EDIT: Adding and building MathJaxRenderer works with Julia 1.10.0-rc1. However, build MathJaxRenderer does not produce any output, so I don't know if the build script is actually called.

stevengj commented 10 months ago

In this case, the problem is not specific to any of these packages, but is something else, maybe something weird in your package environment.

Since it's a general Julia question (not package-specific), I would start by asking on https://discourse.julialang.org/