Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Try to resolve for latest versions of "explicit" jobs vs dependencies #497

Open
wolfv opened this issue May 10, 2022 · 3 comments
Open

Try to resolve for latest versions of "explicit" jobs vs dependencies #497

wolfv opened this issue May 10, 2022 · 3 comments

Comments

@wolfv
Copy link
Contributor

wolfv commented May 10, 2022

We have an issue in the conda / mamba world where libsolv sometimes resolves to outdated versions because of some conflicting dependencies.

Specifically, we have the following situation: we try to resolve for two packages, python and jupyterlab.

There are two python package variants, one built against openssl 3.0 and one against openssl 1.1.1o. libsolv correctly prefers the version that is built against openssl 3.0.
However, when trying to find a matching jupyterlab version, a dependency of jupyterlab (cryptography) isn't available for openssl 3.0. This leads to libsolv finding a solution with a much older jupyterlab 2.x.

Instead, it would be good if we'd take the other python variant that is built against openssl 1.1.1 which would also work with the latest jupyterlab.

We can easily force this by asking for a jupyterlab >=3.0.

In mamba, I was planning to workaround this by adding a solver loop where we check for the latest available packages for every explicitly asked for package and try to resolve with those versions. If that fails, resolve as usual.

But now I was wondering if you think this could also be fixed or mitigated in libsolv?

@mlschroe
Copy link
Member

Do you have a testcase available so that I know exactly why this is happening?

@banjiuqingshan
Copy link
Contributor

Do you mean that libsolv prefers to change the version of the package to be installed rather than the package dependent version

@wolfv
Copy link
Contributor Author

wolfv commented Jun 20, 2022

Hi @mlschroe sorry for the late reply. Unfortunately I don't exactly know how the test system works but I can describe a testcase that shoudl do the trick:

If you create two variants of python with the same version number:

python 3 openssl3
-> depend on openssl 3
python 3 openssl1
-> depend on openssl 1

And two different versions of jupyterlab:

jupyterlab 2
-> depend on openssl 1
jupyterlab 1
-> NO dependency on openssl

And you just make 2 versions of openssl 1 and openssl 3.

Now if you try to install python and jupyterlab, libsolv would select python -> openssl 3 + jupyterlab 1.

Does that make sense?

In mamba / libsolv we do prioritize the python that maximizes the dependency versions (in this case openssl 3). However, for this reason it will also choose an older jupyterlab version.

@banjiuqingshan does the explanation make sense for you as well?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants