Skip to content

Cannot concretize Jupyter ecosystem, multiple versions of build deps with incompatible run deps #51134

@adamjstewart

Description

@adamjstewart

Steps to reproduce

Chasing down an issue trying to install py-geemap:

> spack spec py-geemap
==> Error: failed to concretize `py-geemap` for the following reasons:
     1. Cannot satisfy 'py-jupyterlab@3'
        required because py-plotly depends on py-jupyterlab@3 when @5: 
     2. Cannot satisfy 'py-jupyterlab@3'
        required because py-ipytree depends on py-jupyterlab@3 
     3. Cannot satisfy 'py-jupyterlab@3'
        required because py-ipyevents depends on py-jupyterlab@3 
     4. Cannot satisfy 'py-jupyterlab@3'
     5. Cannot satisfy 'py-jupyterlab@4' and 'py-jupyterlab@3
        required because py-jupyter-leaflet depends on py-jupyterlab@4 
          required because py-ipyleaflet depends on [email protected] 
            required because py-geemap depends on [email protected]: 
              required because py-geemap requested explicitly 
        required because py-plotly depends on py-jupyterlab@3 when @5: 
     6. Cannot satisfy 'py-jupyterlab@4' and 'py-jupyterlab@3
        required because py-jupyter-leaflet depends on py-jupyterlab@4 
          required because py-ipyleaflet depends on [email protected] 
            required because py-geemap depends on [email protected]: 
              required because py-geemap requested explicitly 
        required because py-ipytree depends on py-jupyterlab@3 
     7. Cannot satisfy 'py-jupyterlab@4' and 'py-jupyterlab@3
        required because py-jupyter-leaflet depends on py-jupyterlab@4 
          required because py-ipyleaflet depends on [email protected] 
            required because py-geemap depends on [email protected]: 
              required because py-geemap requested explicitly 
        required because py-ipyevents depends on py-jupyterlab@3 

Organizing this more legibly:

  1. Cannot satisfy 'py-jupyterlab@4' and 'py-jupyterlab@3
    • py-ipyevents depends on py-jupyterlab@3
    • py-ipytree depends on py-jupyterlab@3
    • py-jupyter-leaflet depends on py-jupyterlab@4
    • py-plotly depends on py-jupyterlab@3

However, all 4 of these packages have a build-only dependency on py-jupyterlab. Furthermore, py-jupyterlab has:

tags = ["build-tools"]

so I would expect the concretizer to allow multiple versions of py-jupyterlab.

My best guess is that another package in the DAG has a runtime dependency on py-jupyterlab and it isn't showing up in the error message. But I'm not sure how to debug this further. Pip doesn't have any issues with geemap/jupyterlab as each individual build environment is concretized separately from the overall run environment.

Error message

No response

Information on your system

Pinging @alalazo for the concretizer, @becker33 for the concretizer error messages, and @alecbcs because he reported this same issue in spack/spack-packages#1013

General information

  • I have run spack debug report and reported the version of Spack/Python/Platform
  • I have searched the issues of this repo and believe this is not a duplicate
  • I have run the failing commands in debug mode and reported the output

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingconcretizationconcretizer-use-caseinteresting dependency hierarchy that would challenge the current concretizerimpact-medium

Type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions