Genie.jl ERROR: Unsatisfiable requirements detected for package WebSockets

Good morning @essenciary,
I am new to programming and Julia and am very interested in Genie.jl. I followed the instructions on the website but got the following error:
“ERROR: Unsatisfiable requirements detected for package WebSockets”

I tried a few things without any success. Can you help me please?

@Rohan Sure - what were you trying to do, more exactly?

Also, can you please provide the output of julia> versioninfo() and pkg> st?

If you want to learn a bit about Genie, please use the README:

Many things have changed recently and other sources have not been updated yet.

Let me know how it goes.

I tried adding WebSockets, adding HTTP again and tried updating everything, but I guess I am doing it wrong :wink:

julia> versioninfo()
Julia Version 1.0.1
Commit 0d713926f8 (2018-09-29 19:05 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.0 (ORCJIT, skylake)
Environment:
  JULIA_EDITOR = "C:\Users\username\AppData\Local\JuliaPro\app-1.29.0\atom.exe" -a
  JULIA_NUM_THREADS = 4
  JULIA_PKG_SERVER = https://pkg.juliacomputing.com/
  JULIA_PKG_TOKEN_PATH = C:\Users\username\.julia\token.toml
(JuliaPro_v1.0.1.1) pkg> st
    Status `C:\Users\username\AppData\Local\JuliaPro\pkgs-1.0.1.1\environments\JuliaPro_v1.0.1.1\Project.toml`
  [c52e3926] Atom v0.7.6
  [6e4b80f9] BenchmarkTools v0.4.1
  [336ed68f] CSV v0.4.1
  [aaaa29a8] Clustering v0.12.1
  [a93c6f00] DataFrames v0.14.1
  [7806a523] DecisionTree v0.8.1
  [c41d0e25] Flax v0.0.0 [`C:\Users\username\.julia\dev\Flax`]
  [f7f18e0c] GLFW v2.2.0
  [28b8d3ca] GR v0.34.1
  [4c0ca9eb] Gtk v0.16.4
  [682c06a0] JSON v0.19.0
  [e5e0dc1b] Juno v0.5.3
  [ee78f7c6] Makie v0.9.0
  [9b87118b] PackageCompiler v0.5.0
  [91a5bcdd] Plots v0.20.2
  [3646fa90] ScikitLearn v0.5.0
  [340e8cb6] SearchLight v0.1.0 [`C:\Users\username\.julia\dev\SearchLight`]
  [60ddc479] StatPlots v0.8.1
  [a2db99b7] TextAnalysis v0.5.0
  [cd3eb016] HTTP
  [de0858da] Printf

Thanks for your reply!

Ok, yes, you don’t need to do that. Julia/Pkg is much smarter now when it comes to managing dependencies. You can just go ahead and remove everything Genie related which you added – then please follow the README.

Basically pkg> add https://github.com/essenciary/Genie.jl is all it takes – plus the same for SearchLight if you want the ORM (it’s optional really). But like I said, it’s all in the README, with a lot more details.

Lmk how it goes.

Cool, will try that tonight. I did follow the README but I guess I must have done something wrong. I only tried the other stuff after the README did not work. I will remove every thing and try again.

Thanks for your patience!

It looks like it requires HTTP which requires Julia 0.7.0
I ran into a similer problem installing Escher.
You can probably add the package if you downgrade to Julia 0.7.0

For Linux you can look in ~/.julia/registries/General/H/HTTP/Compat.toml to see the dependency,
I don’t know where it is in windows or mac.

There are probably more issues like this with 1.0, I’m guessing most will be fixed sooner than later.

@essenciary, I removed everything Genie.jl related and followed the README but got the same error.

(JuliaPro_v1.0.1.1) pkg> add https://github.com/essenciary/Genie.jl
   Cloning git-repo `https://github.com/essenciary/Genie.jl`
  Updating git-repo `https://github.com/essenciary/Genie.jl`
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package WebSockets [104b5d7c]:
 WebSockets [104b5d7c] log:
 ├─possible versions are: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3] or uninstalled
 ├─restricted to versions * by Genie [c43c736e], leaving only versions [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3]
 │ └─Genie [c43c736e] log:
 │   ├─possible versions are: 0.1.0 or uninstalled
 │   └─Genie [c43c736e] is fixed to version 0.1.0
 ├─restricted by julia compatibility requirements to versions: 1.0.0-1.0.3 or uninstalled, leaving only versions: 1.0.0-1.0.3
 └─restricted by compatibility requirements with HTTP [cd3eb016] to versions: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0] or uninstalled — no versions left
   └─HTTP [cd3eb016] log:
     ├─possible versions are: 0.7.0 or uninstalled
     └─restricted to versions * by Genie [c43c736e], leaving only versions 0.7.0
       └─Genie [c43c736e] log: see above

Sorry for the stupid question @lkadgrjh, but do I have to wait for the HTTP.jl package to be compatible with 1.0 before trying again?

Thanks for your replies guys! Appreciate!

Seems your registry is out of date (and is not updating). Could you try delete .julia/registries/General and try again.

Sorry, I analyzed that wrong.
The problem is not HTTP, it has an entry: julia = “0.7-1.1”.
I think that means 1.0.2 is good because it is in the range.

It says Genie needs WebSockets
And WebSockets needs HTTP [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0]
But Genie is restricting HTTP to version 0.7.0

HTTP 0.7.0 is not in the range of [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0]

I’m new to this and am probably missing something,
but I don’t see how this would work with any version of Julia.

@Rohan Can you please show the output of pkg> st again?

Also, can you try setting this up, as instructed in its README:
https://github.com/essenciary/Genie-Searchlight-example-app

@essenciary, I uninstalled JuliaPro and Julia and reinstalled it. Then run pkg"add GitHub - GenieFramework/Genie.jl: 🧞The highly productive Julia web framework" as per README. I got:

julia> pkg"add https://github.com/essenciary/Genie.jl"
  Updating git-repo `https://github.com/essenciary/Genie.jl`
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package WebSockets [104b5d7c]:
 WebSockets [104b5d7c] log:
 ├─possible versions are: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3] or uninstalled
 ├─restricted to versions * by Genie [c43c736e], leaving only versions [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3]
 │ └─Genie [c43c736e] log:
 │   ├─possible versions are: 0.1.0 or uninstalled
 │   └─Genie [c43c736e] is fixed to version 0.1.0
 ├─restricted by julia compatibility requirements to versions: 1.0.0-1.0.3 or uninstalled, leaving only versions: 1.0.0-1.0.3
 └─restricted by compatibility requirements with HTTP [cd3eb016] to versions: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0] or uninstalled — no versions left
   └─HTTP [cd3eb016] log:
     ├─possible versions are: 0.7.0 or uninstalled
     └─restricted to versions * by Genie [c43c736e], leaving only versions 0.7.0
       └─Genie [c43c736e] log: see above
Stacktrace:
 [1] #propagate_constraints!#61(::Bool, ::Function, ::Pkg.GraphType.Graph, ::Set{Int64}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:1005
 [2] propagate_constraints! at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:946 [inlined]
 [3] #simplify_graph!#121(::Bool, ::Function, ::Pkg.GraphType.Graph, ::Set{Int64}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:1460
 [4] simplify_graph! at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:1460 [inlined]
 [5] macro expansion at .\logging.jl:319 [inlined]
 [6] resolve_versions!(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}, ::Nothing) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:343
 [7] resolve_versions! at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:306 [inlined]
 [8] #add_or_develop#60(::Array{Base.UUID,1}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:1205
 [9] #add_or_develop at .\none:0 [inlined]
 [10] #add_or_develop#13(::Symbol, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at C:\Users\julia\AppData\Local\Julia-1.0.1\shaare\julia\stdlib\v1.0\Pkg\src\API.jl:64
 [11] (::getfield(Pkg.API, Symbol("#kw##add_or_develop")))(::NamedTuple{(:mode,),Tuple{Symbol}}, ::typeof(Pkg.API.add_or_develop), ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at .\none:0
 [12] do_add!(::Dict{Symbol,Any}, ::Array{Pkg.Types.PackageSpec,1}, ::Dict{Symbol,Any}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\REPLMode.jl:708
 [13] #invokelatest#1(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Any, ::Any, ::Vararg{Any,N} where N) at .\essentials.jl:697
 [14] invokelatest(::Any, ::Any, ::Vararg{Any,N} where N) at .\essentials.jl:696
 [15] do_cmd!(::Pkg.REPLMode.PkgCommand, ::Pkg.REPLMode.MiniREPL) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\REPLMode.jl:602
 [16] #do_cmd#33(::Bool, ::Function, ::Pkg.REPLMode.MiniREPL, ::String) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\REPLMode.jl:576
 [17] (::getfield(Pkg.REPLMode, Symbol("#kw##do_cmd")))(::NamedTuple{(:do_rethrow,),Tuple{Bool}}, ::typeof(Pkg.REPLMode.do_cmd), ::Pkg.REPLMode.MiniREPL, ::String) at .\none:0
 [18] top-level scope at none:0

@kristoffer.carlsson, sorry for the stupid question, but how do I do that? (I saw there were some issues with dirty registries (Registry dirty), but can’t find Registries under C:/Users/username/.julia. Only dev, logs and token.toml.

Hehe, thanx @lkadgrjh, I am also very new to this, I appreciate everybody’s input.

The pkg> st with fresh JuliaPro:

(JuliaPro_v1.0.1.1) pkg> st
    Status `C:\JuliaPro-1.0.1.1\pkgs-1.0.1.1\environments\JuliaPro_v1.0.1.1\Project.toml`
  [c52e3926] Atom v0.7.6
  [336ed68f] CSV v0.4.1
  [a93c6f00] DataFrames v0.14.1
  [7806a523] DecisionTree v0.8.1
  [682c06a0] JSON v0.19.0
  [e5e0dc1b] Juno v0.5.3

I have no idea what leads to conflicts, it’s the first time I see this.

Per my above comment, can you please try setting up the example genie app, as described in its readme:
https://github.com/essenciary/Genie-Searchlight-example-app

This will create a separate package environment for the app alone.

1 Like

@Rohan
I used the instructions essenciary recomended & it worked.

dad@dads tmp git clone https://github.com/essenciary/Genie-Searchlight-example-app.git
dad@dads tmp julia102

julia> ]

(v1.0) pkg> activate .

(tmp) pkg> instantiate
Updating registry at ~/.julia/registries/General
Updating git-repo https://github.com/JuliaRegistries/General.git
Resolving package versions…

I’m don’t know how cloaning, activating & instantiating differs from adding, but I’ve got something new to study :slight_smile:

1 Like

@kristoffer.carlsson has complete knowledge of how these things work. But basically activate . and instantiate created a new Pkg environment, local to this app, like a clean slate separate from the packages you previously added in the global environment (v1.0).

1 Like

@Rohan, I missed a crucial step when I cloned Genie, you need to change directory to the directory created by git clone.

After getting it to work properly with the clone I blew away everything in my .julia directory & tried it with an add. That worked also.

The fact that you can’t find a .julia/registries/General directory is strange.
When I blow away everything under .julia, the first time I do an add. that directory is created and populated. I’m thinking you might have another .julia directory somewhere but I don’t know enough about windows to be much help. I’ve been using Linux since 2005.

@lkadgrjh, Last night I also tried the instructions @essenciary recommended and it also worked! But it feels like a hollow victory, because now I can’t add any packages. I tried adding 4 or 5 more new packages and all gave errors. So I still have the dirty directory thing. I don’t have a Genie.jl problem, but rather a package manager that stopped working problem (it worked the last month)?? My .julia only has dev and logs in. @lkadgrjh, do you use JuliaPro and Juno? I even got hold of another laptop yesterday, installed JuliaPro and the same thing happen when I added packages.

Sorry about that, @kristoffer.carlsson is the best person to ask about these. Maybe open an issue with Pkg on Github?

I think so too, since this is not a Genie.jl problem. @essenciary, @lkadgrjh, thanks for all your help! I have learned a lot. Now I have to google how to open an issue :slight_smile:

@Rohan I did a manual install, on linux it’s really easy

  1. download Generic Linux Binaries for x86 (julia-1.0.2-linux-x86_64.tar.gz)
  2. uncompress it, that created the directory julia-1.0.2
  3. put a symbolic link to julia-1.0.2/bin/julia in my local bin
  4. the first time i ran it, it made a .julia directory in my user directory and populated it
  5. the first time I added a package it populated .julia/registries/General