Skip to content

Julia 1.12.0 issues due to OpenSSL constraints #682

Closed
JuliaPy/pyjuliapkg
#74

Description

@MilesCranmer

Affects: Both

Describe the bug
It seems like the just-released Julia 1.12.0 is causing OpenSSL compatibility issues.

Here is a CI run output for PySR this morning: https://github.com/MilesCranmer/PySR/actions/runs/18336878040/job/52222871083

ERROR: Unsatisfiable requirements detected for package OpenSSL_jll [458c3c95]:
 OpenSSL_jll [458c3c95] log:
 ├─possible versions are: 3.5.1 or uninstalled
 └─restricted to versions 3.0 by project [8c1aadeb] — no versions left
   └─project [8c1aadeb] log:
     ├─possible versions are: 0.0.0 or uninstalled
     └─project [8c1aadeb] is fixed to version 0.0.0
Stacktrace:
  [1] check_constraints(graph::Pkg.Resolve.Graph)
    @ Pkg.Resolve ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Resolve/graphtype.jl:1046
  [2] Pkg.Resolve.Graph(compat::Dict{Base.UUID, Dict{VersionNumber, Dict{Base.UUID, Pkg.Versions.VersionSpec}}}, compat_weak::Dict{Base.UUID, Dict{VersionNumber, Set{Base.UUID}}}, uuid_to_name::Dict{Base.UUID, String}, reqs::Dict{Base.UUID, Pkg.Versions.VersionSpec}, fixed::Dict{Base.UUID, Pkg.Resolve.Fixed}, verbose::Bool, julia_version::VersionNumber)
    @ Pkg.Resolve ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Resolve/graphtype.jl:350
  [3] deps_graph(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, uuid_to_name::Dict{Base.UUID, String}, reqs::Dict{Base.UUID, Pkg.Versions.VersionSpec}, fixed::Dict{Base.UUID, Pkg.Resolve.Fixed}, julia_version::VersionNumber, installed_only::Bool)
    @ Pkg.Operations ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:705
  [4] resolve_versions!(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}, julia_version::VersionNumber, installed_only::Bool)
    @ Pkg.Operations ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:525
  [5] targeted_resolve
    @ ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1669 [inlined]
  [6] tiered_resolve(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}, julia_version::VersionNumber, try_all_installed::Bool)
    @ Pkg.Operations ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1658
  [7] _resolve(io::IOContext{IO}, env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}, preserve::Pkg.Types.PreserveLevel, julia_version::VersionNumber)
    @ Pkg.Operations ~/hostedtoolcache/julia/1.12.0/aarch64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1679
  [8] add(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, new_git::Set{Base.UUID}; allow_autoprecomp::Bool, preserve::Pkg.Types.PreserveLevel, platform::Base.BinaryPlatforms.Platform, target::Symbol)
    ...<7 lines>...
        env=env,
        ^^^^^^^^
    )
    ^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/subprocess.py", line 577, in run
    raise CalledProcessError(retcode, process.args,
                             output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['/Users/runner/hostedtoolcache/julia/1.12.0/aarch64/bin/julia', '--project=/Users/runner/.julia/environments/pyjuliapkg', '--startup-file=no', '-e', 'import Pkg\nPkg.Registry.update()\nPkg.add([\n  Pkg.PackageSpec(name="PythonCall", uuid="6099a3de-0909-46bc-b1f4-468b9a2dfc0d"),\n  Pkg.PackageSpec(name="OpenSSL_jll", uuid="458c3c95-2e84-50aa-8efc-19380b2a3a95"),\n  Pkg.PackageSpec(name="SymbolicRegression", uuid="8254be44-1295-4e6a-a16d-46603ac705cb", url=raw"https://github.com/MilesCranmer/SymbolicRegression.jl", rev=raw"v2.0.0-alpha.8"),\n  Pkg.PackageSpec(name="Serialization", uuid="9e88b42a-f829-5b0c-bbe9-9e923198166b"),\n])\nPkg.resolve()\nPkg.precompile()']' returned non-zero exit status 1.
[juliapkg] Found dependencies: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/juliacall/juliapkg.json
[juliapkg] Found dependencies: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/pysr/juliapkg.json
[juliapkg] Found dependencies: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/juliapkg/juliapkg.json
[juliapkg] Found dependencies: /Users/runner/work/PySR/PySR/pysr/juliapkg.json
[juliapkg] Locating Julia ^1.10.3
[juliapkg] Using Julia 1.12.0 at /Users/runner/hostedtoolcache/julia/1.12.0/aarch64/bin/julia
[juliapkg] Using Julia project at /Users/runner/.julia/environments/pyjuliapkg
[juliapkg] Writing Project.toml:
           | [deps]
           | PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d"
           | OpenSSL_jll = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
           | SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
           | Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
           | 
           | [compat]
           | PythonCall = "=0.9.28"
           | OpenSSL_jll = "~3.0"
           | Serialization = "^1"
[juliapkg] Installing packages:
           | import Pkg
           | Pkg.Registry.update()
           | Pkg.add([
           |   Pkg.PackageSpec(name="PythonCall", uuid="6099a3de-0909-46bc-b1f4-468b9a2dfc0d"),
           |   Pkg.PackageSpec(name="OpenSSL_jll", uuid="458c3c95-2e84-50aa-8efc-19380b2a3a95"),
           |   Pkg.PackageSpec(name="SymbolicRegression", uuid="8254be44-1295-4e6a-a16d-46603ac705cb", url=raw"https://github.com/MilesCranmer/SymbolicRegression.jl", rev=raw"v2.0.0-alpha.8"),
           |   Pkg.PackageSpec(name="Serialization", uuid="9e88b42a-f829-5b0c-bbe9-9e923198166b"),
           | ])
           | Pkg.resolve()
           | Pkg.precompile()
Error: Process completed with exit code 1.

@cjdoris any guesses what this is from? Is the OpenSSL_jll constraint required?

Activity

  1. MilesCranmer commented on Oct 8, 2025

    @MilesCranmer
    ContributorAuthor

    Related to #613?

  2. cjdoris commented on Oct 8, 2025

    @cjdoris
    Member

    Argh yes this is making all the tests fail.

    Indeed #613 introduced this feature. It is to ensure that Julia does not expect a version of libopenssl newer than what is actually provided by Python.

    Looks like the GitHub runners have Python with libopenssl 3.0 (the previous LTS for openssl) whereas Julia 1.12 has upgraded to use 3.5 (the new LTS). I think that if you install Python from conda-forge instead then you'll get a newer openssl and all will be fine.

    The underlying issue is that juliapkg selects the Julia version and THEN resolves Julia packages. But in this case we need to restrict the Julia version to <1.12 based on the package deps. Should be a simple fix, I'll do that now.

  3. MilesCranmer commented on Oct 8, 2025

    @MilesCranmer
    ContributorAuthor

    Thanks for the quick fix!

  4. cjdoris commented on Oct 8, 2025

    @cjdoris
    Member

    Just doing some upstream testing now but hopefully it's OK now.

  5. cjdoris commented on Oct 8, 2025

    @cjdoris
    Member

    OK yes this appears to be working as intended.

  6. RomeoV commented on Oct 15, 2025

    @RomeoV

    Is Julia 1.12 support planned?

    EDIT: Okay it seems to work fine with something like
    juliapkg.json

    {
        "julia": "1.12",
        "packages": {
            "MyLib": {
                "uuid": "...",
                "path": "../..",
                "dev": true
            },
            "OpenSSL_jll": {
                "uuid": "458c3c95-2e84-50aa-8efc-19380b2a3a95",
                "version": "3.5"
            }
        }
    }

    and pyproject.toml (using uv)

    [project]
    name = "runwaylib-python-test"
    version = "0.1.0"
    requires-python = ">=3.14"
    dependencies = [
        "juliacall",
        "numpy",
        "pyopenssl>=24.0.0",
    ]
  7. moble commented on Nov 25, 2025

    @moble

    I had such a headache with this. @RomeoV's comment above helped a lot. For me, I didn't need to install pyopenssl or specify OpenSSL_jll in juliapkg.json; the only necessary change was just installing with uv. It comes with v3.5... at least on linux and macos runners... 🙄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions