Open doddgray opened 2 years ago
That's surprising. Did it say Base.allequal
?
Sorry, I just looked a bit and I think I lost the error messages. The error definitely said that ChainRules failed to build and cited not recognizing allequal
, but that's about all I remember.
I also incorrectly wrote Base.allequal
naively assuming that allequal
had been added to Base
, adding unnecessary confusion. All around not a helpful post from me!
Maybe I caused ChainRules not to build myself by creating an inconsistent project environment or something like that. I'm happy to close this if it looks okay to you.
CI is 1.7.2, and I tried 1.7.0 and didn't see problems. Glad if it works now!
I can recreate this in 1.7.1:
julia> VERSION
v"1.7.1"
(@v1.7) pkg> activate --temp
Activating new project at `/var/folders/74/wcz8c9qs5dzc8wgkk7839k5c0000gn/T/jl_gugiKX`
(jl_gugiKX) pkg> add ChainRules
Updating registry at `~/.julia/registries/General.toml`
Resolving package versions...
Updating `/private/var/folders/74/wcz8c9qs5dzc8wgkk7839k5c0000gn/T/jl_gugiKX/Project.toml`
[082447d4] + ChainRules v1.28.0
Updating `/private/var/folders/74/wcz8c9qs5dzc8wgkk7839k5c0000gn/T/jl_gugiKX/Manifest.toml`
[082447d4] + ChainRules v1.28.0
[d360d2e6] + ChainRulesCore v1.13.0
[34da2185] + Compat v3.42.0
[92d709cd] + IrrationalConstants v0.1.1
[c1ae055f] + RealDot v0.1.0
[0dad84c5] + ArgTools
[56f22d72] + Artifacts
[2a0f44e3] + Base64
[ade2ca70] + Dates
[8bb1440f] + DelimitedFiles
[8ba89e20] + Distributed
[f43a241f] + Downloads
[b77e0a4c] + InteractiveUtils
[b27032c2] + LibCURL
[76f85450] + LibGit2
[8f399da3] + Libdl
[37e2e46d] + LinearAlgebra
[56ddb016] + Logging
[d6f4376e] + Markdown
[a63ad114] + Mmap
[ca575930] + NetworkOptions
[44cfe95a] + Pkg
[de0858da] + Printf
[3fa0cd96] + REPL
[9a3f8284] + Random
[ea8e919c] + SHA
[9e88b42a] + Serialization
[1a1011a3] + SharedArrays
[6462fe0b] + Sockets
[2f01184e] + SparseArrays
[10745b16] + Statistics
[fa267f1f] + TOML
[a4e569a6] + Tar
[8dfed614] + Test
[cf7118a7] + UUIDs
[4ec0a83e] + Unicode
[e66e0078] + CompilerSupportLibraries_jll
[deac9b47] + LibCURL_jll
[29816b5a] + LibSSH2_jll
[c8ffd9c3] + MbedTLS_jll
[14a3606d] + MozillaCACerts_jll
[4536629a] + OpenBLAS_jll
[83775a58] + Zlib_jll
[8e850b90] + libblastrampoline_jll
[8e850ede] + nghttp2_jll
[3f19e933] + p7zip_jll
julia> using ChainRules
[ Info: Precompiling ChainRules [082447d4-558c-5d27-93f4-14fc19e9eca2]
ERROR: LoadError: UndefVarError: allequal not defined
Stacktrace:
[1] top-level scope
@ ~/.julia/packages/ChainRulesCore/IzITE/src/rule_definition_tools.jl:383
[2] include(mod::Module, _path::String)
@ Base ./Base.jl:418
[3] include(x::String)
@ ChainRules ~/.julia/packages/ChainRules/0HWSq/src/ChainRules.jl:1
[4] top-level scope
@ ~/.julia/packages/ChainRules/0HWSq/src/ChainRules.jl:24
[5] include
@ ./Base.jl:418 [inlined]
[6] 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, UInt64}}, source::Nothing)
@ Base ./loading.jl:1318
[7] top-level scope
@ none:1
[8] eval
@ ./boot.jl:373 [inlined]
[9] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[10] top-level scope
@ none:1
in expression starting at /Users/funks/.julia/packages/ChainRules/0HWSq/src/rulesets/Base/nondiff.jl:99
in expression starting at /Users/funks/.julia/packages/ChainRules/0HWSq/src/ChainRules.jl:1
ERROR: Failed to precompile ChainRules [082447d4-558c-5d27-93f4-14fc19e9eca2] to /Users/funks/.julia/compiled/v1.7/ChainRules/jl_cFBACB.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:
This currently also breaks Flux.
Have you tried ] up
ing your env?
I can't reproduce the issue I'm afraid :(
Also happens to me on 1.7.2 on macOS. up
doesn't help.
Maybe this is due to my startup.jl?
➜ ~ cat ~/.julia/config/startup.jl
using Revise
using OhMyREPL
using JuliaFormatter
using BenchmarkTools
using TestEnv
Ok, this issue can stay closed. Somehow Compat 3.42
doesn't export allequal
on my machine. I'll open an issue there.
Thanks for the help! :)
Edit: This wasn't an issue with Compat either, but with an older version of JuliaFormatter in my startup.jl!
Building on @adrhill's comments, I'm beginning to encounter this on Julia v1.7.2 through juno
v0.8.4 with julia-client
v0.12.6. I presume that juno
/julia-client
is using the older JuliaFormater
? This undefined allequal
is frustrating as I now need to precompile zygote
v0.6.36 outside of the IDE available to me.
This is really strange. I wonder why it doesn't happen with anything else using Compat -- do any of these packages define their own allequal
which clashes somehow?
Does it still occur if with ] dev ChainRules
? If so, you could edit the file to have @non_diff Compat.allequal(...
instead, maybe that would change something?
I cannot reproduce the error after successfully precompiling outside of my IDE. So, I can't try your suggestions @mcabbott.
Below is the script of what I've tried within the IDE to reproduce the error.
cd(@__DIR__)
run(`rm Manifest.toml`)
run(`rm Project.toml`)
run(`rm -r $(homedir())/.julia/compiled/v1.7/Zygote`)
run(`rm -r $(homedir())/.julia/compiled/v1.7/ChainRules`)
run(`rm -r $(homedir())/.julia/compiled/v1.7/ChainRulesCore`)
import Pkg
Pkg.activate(@__DIR__)
Pkg.add("ChainRules")
# Pkg.develop("ChainRules")
Pkg.add("Zygote")
using Zygote
My more complex projects are now loading ChainRules
etc through the IDE since a successful precompile.
I also faced this issue. Here is my environment for reproducibility:
(DennisBachelorProject) pkg> st
Status `~/DennisBachelorProject/Project.toml`
[cbdf2221] AlgebraOfGraphics v0.6.4
[fbb218c0] BSON v0.3.5
[a80a1652] BenchmarkHistograms v0.2.0
[5d742f6a] CSVFiles v1.0.1
[052768ef] CUDA v3.8.3
[324d7699] CategoricalArrays v0.10.5
[a93c6f00] DataFrames v1.3.2
[31c24e10] Distributions v0.25.49
[634d3b9d] DrWatson v2.9.1
[587475ba] Flux v0.13.0
[e9467ef8] GLMakie v0.5.5
[93e5fe13] Hyperopt v0.5.5
[033835bb] JLD2 v0.4.22
[eb30cadb] MLDatasets v0.5.15
[20f20a25] MakieCore v0.2.1
[429524aa] Optim v1.6.2
[b98c9c47] Pipe v1.3.0
[27ebfcd6] Primes v0.5.1
[92933f4c] ProgressMeter v1.7.1
[295af30f] Revise v3.3.1
[35248bf2] SampledVectors v0.1.1
[22787eb5] Term v0.3.0
[a759f4b9] TimerOutputs v0.5.16
[75d8cae4] Tools v0.1.0 `https://github.com/KronosTheLate/Tools.jl#main`
[b8865327] UnicodePlots v2.10.3
[98cad3c8] ValueHistories v0.5.4
[e88e6eb3] Zygote v0.6.34
julia> using Pkg; pkg"instantiate"
julia> using Flux
[ Info: Precompiling Flux [587475ba-b771-5e3f-ad9e-33799f191a9c]
ERROR: LoadError: UndefVarError: allequal not defined
Stacktrace:
[1] top-level scope
@ ~/.julia/packages/ChainRulesCore/RbX5a/src/rule_definition_tools.jl:383
[2] include(mod::Module, _path::String)
@ Base ./Base.jl:418
[3] include(x::String)
@ ChainRules ~/.julia/packages/ChainRules/XWY2g/src/ChainRules.jl:1
[4] top-level scope
@ ~/.julia/packages/ChainRules/XWY2g/src/ChainRules.jl:24
[5] include
@ ./Base.jl:418 [inlined]
[6] 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, UInt64}}, source::String)
@ Base ./loading.jl:1318
[7] top-level scope
@ none:1
[8] eval
@ ./boot.jl:373 [inlined]
[9] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[10] top-level scope
@ none:1
in expression starting at /home/legolas/.julia/packages/ChainRules/XWY2g/src/rulesets/Base/nondiff.jl:99
in expression starting at /home/legolas/.julia/packages/ChainRules/XWY2g/src/ChainRules.jl:1
ERROR: LoadError: Failed to precompile ChainRules [082447d4-558c-5d27-93f4-14fc19e9eca2] to /home/legolas/.julia/compiled/v1.7/ChainRules/jl_GK0j38.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
[7] include
@ ./Base.jl:418 [inlined]
[8] 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, UInt64}}, source::String)
@ Base ./loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ ./boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[12] top-level scope
@ none:1
in expression starting at /home/legolas/.julia/packages/Zygote/FPUm3/src/Zygote.jl:1
ERROR: LoadError: Failed to precompile Zygote [e88e6eb3-aa80-5325-afca-941959d7151f] to /home/legolas/.julia/compiled/v1.7/Zygote/jl_U8Q3Un.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
[7] include
@ ./Base.jl:418 [inlined]
[8] 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, UInt64}}, source::Nothing)
@ Base ./loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ ./boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[12] top-level scope
@ none:1
in expression starting at /home/legolas/.julia/packages/Flux/18YZE/src/Flux.jl:1
ERROR: Failed to precompile Flux [587475ba-b771-5e3f-ad9e-33799f191a9c] to /home/legolas/.julia/compiled/v1.7/Flux/jl_SkU4Wn.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
julia> versioninfo()
Julia Version 1.7.2
Commit bf53498635 (2022-02-06 15:21 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, skylake)
Hi, I do have this issue, too, using Julia 1.7.2. Just wanted to add the specific info about when it breaks for me. The problem seems to be when I load any package before activating an environment, for example
using DrWatson
@quickactivate # or ] activate .
using ChainRules # or Flux
breaks and gives the error with allequal
not defined. I also tried it with first using UnicodePlots
and then activating environment and using Flux
. It is not a huge problem but an inconvenience, since I am using using DrWatson; @quickactivate
in most of my scripts.
When first activating environment, then loading Flux/ChainRules, everything works fine. I also not not know which package to update (as for others it was fixed by updating), my packages are updated as much as they can, I do need some lower versions because of dependencies.
My Project.toml
:
[deps]
ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63"
BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
ConditionalDists = "c648c4dd-c1e0-49a6-84b9-144ae7fd2468"
DataDeps = "124859b0-ceae-595e-8997-d05f6a7a8dfe"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
DistributionsAD = "ced4e74d-a319-5a8a-b0ac-84af2272839c"
DrWatson = "634d3b9d-ee7a-5ddf-bec9-22491ea816e1"
EvalMetrics = "251d5f9e-10c1-4699-ba24-e0ad168fa3e4"
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
Flux3D = "432009dd-59a1-4b72-8c93-6462ce9b220f"
HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
MLDataPattern = "9920b226-0b2a-5f5f-9153-9aa70a013f8b"
Mill = "1d0525e4-8992-11e8-313c-e310e1f6ddea"
Mmap = "a63ad114-7e13-5084-954f-fe012c677804"
NearestNeighbors = "b8a86587-4115-5ab1-83bc-aa920d37bbce"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd"
ValueHistories = "98cad3c8-aec3-5f06-8e41-884608649ab7"
[compat]
DrWatson = "2.9.1"
julia = "1.7.2"
This feels like a bug in julia itself. Because order of loading shouldn't have an effect on what is defined inside Base...
At least for me, ChainRules failed to build on Julia v1.7.1 after pulling the latest changes from #597 last night. The error messages (sorry I didn't copy) mentioned that the recently added
Base.allequal
(julia #43354) is unrecognized. Possibly an issue withCompat
controls, related to this comment in the PR? @mcabbott @niklasschmitz @mzgubicMaybe it's just me, sorry to bother if so. I took this as a sign I should build v1.7.2