How to resolve "Error: Could not parse entry for `deps`" for an old 1.5 Julia project

Hello,

about 3-4 years ago we published a textbook that utilized Julia and had code snippets integrated into the book pages. In addition, we associated with this textbook a GitHub repository in which we provide all the code to generate all the figures in the book and some other stuff. We utilized Julia’s Pkg manager and saved the Project.toml and Manifest.toml files, hoping that this will be enough to establish reproducibility for at least some number of years.

The problem is, the codebase is not installable anymore. My approach is to download the Project.toml and Manifest.toml files from this folder:

(note the choice of a particular tag)

then, install Julia 1.5 version (the version we used at that time, and the version associated with the Manifest generation). Then, I do Pkg.activate("path to downloaded Project+Manifest"). But already I am faced with an error:


(@v1.5) pkg> activate C:\Users\gd419\Downloads\NonlinearDynamicsTextbook-1.0
┌ Error: Could not parse entry for `deps`
└ @ Pkg.Types C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\manifest.jl:146
ERROR: MethodError: no method matching get(::Pair{String,Any}, ::String, ::Nothing)
Closest candidates are:
  get(::REPL.Terminals.TTYTerminal, ::Any, ::Any) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\Terminals.jl:161
  get(::Base.EnvDict, ::AbstractString, ::Any) at env.jl:80
  get(::IdDict{K,V}, ::Any, ::Any) where {K, V} at iddict.jl:86
  ...
Stacktrace:
 [1] Dict{Base.UUID,Pkg.Types.PackageEntry}(::Dict{String,Any}) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\manifest.jl:135
 [2] read_manifest(::String) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\manifest.jl:177
 [3] Pkg.Types.EnvCache(::Nothing) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Types.jl:299
 [4] EnvCache at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Types.jl:279 [inlined]
 [5] Pkg.Types.Context() at .\util.jl:438
 [6] activate(::String; shared::Bool, temp::Bool) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:955
 [7] activate(::String) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\API.jl:920
 [8] do_cmd!(::Pkg.REPLMode.Command, ::REPL.LineEditREPL) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\REPLMode\REPLMode.jl:401
 [9] do_cmd(::REPL.LineEditREPL, ::String; do_rethrow::Bool) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\REPLMode\REPLMode.jl:382
 [10] do_cmd at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\REPLMode\REPLMode.jl:377 [inlined]
 [11] (::Pkg.REPLMode.var"#24#27"{REPL.LineEditREPL,REPL.LineEdit.Prompt})(::REPL.LineEdit.MIState, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Bool) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\REPLMode\REPLMode.jl:546
 [12] #invokelatest#1 at .\essentials.jl:710 [inlined]
 [13] invokelatest at .\essentials.jl:709 [inlined]
 [14] run_interface(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\LineEdit.jl:2355
 [15] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:1144
 [16] (::REPL.var"#38#42"{REPL.LineEditREPL,REPL.REPLBackendRef})() at .\task.jl:356

searching online for this error people here on discourse seem to associate it with being solved at Julia 1.6.2, but the problem is, I cannot use this old Manifest.toml file with Julia 1.6. Indeed, trying the same steps with Julia 1.6 makes the Pkg.activate(...) command succeed, but unfortunately the subsequent Pkg.instantiate(...) command, which I also must run to ensure same environment, fails at Julia 1.6 with:


(NonlinearDynamicsTextbook) pkg> instantiate
┌ Warning: The active manifest file has dependencies that were resolved with a different julia version (1.7.0). Unexpected behavior may occur.
└ @ C:\Users\gd419\Downloads\NonlinearDynamicsTextbook-1.0\Manifest.toml:0
ERROR: Error collecting information for dependency libblastrampoline_jll [8e850b90-86db-534c-a0d3-1478176c7d93].

This error can occur if the manifest file you are using was generated by a different version of Julia and as a result is not compatible with this Julia version (1.6.7)

(and the error message is totally expected to be fair)

Is there anything I can do to make this archived Project+Manifest files installable and runnable? Any help would be appreciated as the textbook has now succeeded in attracting a readership of meaningful size.

Are you sure about that?

1 Like

oh god yes yes yeeeeees you saved me!!! Just to give you an idea of how dumb I was, I obtained the julia version from the Project.toml file

and after I tried all these stuff I believed I obtained it from the Manifest!!! Thanks, indeed installation works as expected and code also runs as expected!

1 Like