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

Incompatibility between latest julia=1.7.1 and latest openlibm=0.8.0 on conda-forge #169

Closed
valeriupredoi opened this issue Jan 5, 2022 · 39 comments

Comments

@valeriupredoi
Copy link

Hey guys, Happy New Year! Just a heads up that the latest Julia can not be installed in a conda env with deps from conda-forge unless one pins openlibm=0.7.0 (presumably a pin like openlibm<0.8 should work too) since the latest openlibm is now 0.8.0 as of 12 hours ago; see our issue on this matter ESMValGroup/ESMValTool#2450 Cheers 🍺

@ngam
Copy link
Contributor

ngam commented Jan 5, 2022

Thanks. I was the one who pushed the 0.8.0 openlibm (and added arches there too). Should've paid attention. Should we do this pin more systematically somehow? I will make a quick fix for now.

@ngam ngam mentioned this issue Jan 5, 2022
5 tasks
@isuruf
Copy link
Member

isuruf commented Jan 5, 2022

What's the actual error?

@ngam
Copy link
Contributor

ngam commented Jan 5, 2022

What's the actual error?

Looks like failed env solving: https://github.com/ESMValGroup/ESMValTool/runs/4715592816?check_suite_focus=true

@ngam
Copy link
Contributor

ngam commented Jan 5, 2022

  LinkError: post-link script failed for package conda-forge::julia-1.7.1-h989b2f6_1
1768
  location of failed script: /usr/share/miniconda3/envs/esmvaltool/bin/.julia-post-link.sh
1769
  ==> script messages <==
1770
  ERROR: Unable to load dependent library /usr/share/miniconda3/envs/esmvaltool/bin/../lib/julia/libopenlibm.so
1771
  Message:/usr/share/miniconda3/envs/esmvaltool/bin/../lib/julia/libopenlibm.so: cannot open shared object file: No such file or directory
1772

@isuruf
Copy link
Member

isuruf commented Jan 5, 2022

Ah, yes, the ABI version changed in openlibm from 3 to 4.

@ngam
Copy link
Contributor

ngam commented Jan 5, 2022

Ah, yes, the ABI version changed in openlibm from 3 to 4.

Is this something we should pursue more systematically, a la libunwind? Or should the quickfix suffice for now?

@ngam
Copy link
Contributor

ngam commented Jan 5, 2022

Ah, yes, the ABI version changed in openlibm from 3 to 4.

Funny thing is... JuliaMath/openlibm#248 (comment)

@ngam
Copy link
Contributor

ngam commented Jan 5, 2022

CC @mkitti

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

@valeriupredoi this should be fixed. I will leave this open for now because we should pursue a more systematic solution with global pinning. However, it seems julia will drop openlibm pretty soon-ish.

@valeriupredoi
Copy link
Author

@ngam brilliant, great many thanks! It indeed passes our tests no problemo. I noticed now openlibm=0.7.5 👍 🍺

@valeriupredoi
Copy link
Author

cheeers muchly for your work, guys! Please close when you think it's ready to be closed, I am happy on our side of things 🍺

@mkitti
Copy link
Contributor

mkitti commented Jan 6, 2022

I think @ngam is working on the global pinning now. I suppose we'll keep this open until that is complete.

@valeriupredoi
Copy link
Author

whatever works for you guys, I'm a happy camper now that our envs get sorted 😁

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

@valeriupredoi I am still concerned about this. I suppose it passed your tests because it's making a new environment. In my older environment, it is still broken even if I update --all. I am not sure why it is not taking the latest julia build...

You should perhaps keep a strict pin on your end if you want to ensure your package works as expected for all users.

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

new env:

$ mamba create -n test julia

                  __    __    __    __
                 /  \  /  \  /  \  /  \
                /    \/    \/    \/    \
███████████████/  /██/  /██/  /██/  /████████████████████████
              /  / \   / \   / \   / \  \____
             /  /   \_/   \_/   \_/   \    o \__,
            / _/                       \_____/  `
            |/
        ███╗   ███╗ █████╗ ███╗   ███╗██████╗  █████╗
        ████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
        ██╔████╔██║███████║██╔████╔██║██████╔╝███████║
        ██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
        ██║ ╚═╝ ██║██║  ██║██║ ╚═╝ ██║██████╔╝██║  ██║
        ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝

        mamba (0.19.1) supported by @QuantStack

        GitHub:  https://github.com/mamba-org/mamba
        Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████


Looking for: ['julia']

conda-forge/linux-64     Using cache
conda-forge/noarch       Using cache
Transaction

  Prefix: /home/ngam/.Mambaforge-Linux-x86_64/envs/test

  Updating specs:

   - julia


  Package                   Version  Build                Channel                    Size
───────────────────────────────────────────────────────────────────────────────────────────
  Install:
───────────────────────────────────────────────────────────────────────────────────────────

  + _libgcc_mutex               0.1  conda_forge          conda-forge/linux-64       3 KB
  + _openmp_mutex               4.5  1_gnu                conda-forge/linux-64      22 KB
  + arpack                    3.7.0  hdefa2d7_2           conda-forge/linux-64     Cached
  + bzip2                     1.0.8  h7f98852_4           conda-forge/linux-64     Cached
  + c-ares                   1.18.1  h7f98852_0           conda-forge/linux-64     Cached
  + ca-certificates       2021.10.8  ha878542_0           conda-forge/linux-64     Cached
  + curl                     7.80.0  h494985f_1           conda-forge/linux-64      90 KB
  + expat                     2.4.2  h9c3ff4c_0           conda-forge/linux-64     Cached
  + gettext                0.19.8.1  h73d1719_1008        conda-forge/linux-64     Cached
  + git                      2.34.1  pl5321hf874766_0     conda-forge/linux-64      13 MB
  + gmp                       6.2.1  h58526e2_0           conda-forge/linux-64     Cached
  + julia                     1.7.1  h989b2f6_2           conda-forge/linux-64     105 MB
  + krb5                     1.19.2  h48eae69_3           conda-forge/linux-64       1 MB
  + libblas                   3.9.0  12_linux64_openblas  conda-forge/linux-64      12 KB
  + libcblas                  3.9.0  12_linux64_openblas  conda-forge/linux-64      12 KB
  + libcurl                  7.80.0  h494985f_1           conda-forge/linux-64     339 KB
  + libedit            3.1.20191231  he28a2e2_2           conda-forge/linux-64     Cached
  + libev                      4.33  h516909a_1           conda-forge/linux-64     Cached
  + libffi                    3.4.2  h7f98852_5           conda-forge/linux-64     Cached
  + libgcc-ng                11.2.0  h1d223b6_11          conda-forge/linux-64     Cached
  + libgfortran-ng           11.2.0  h69a702a_11          conda-forge/linux-64      19 KB
  + libgfortran5             11.2.0  h5c6108e_11          conda-forge/linux-64     Cached
  + libgit2                   1.3.0  haabb1ae_1           conda-forge/linux-64     721 KB
  + libgomp                  11.2.0  h1d223b6_11          conda-forge/linux-64     Cached
  + libiconv                   1.16  h516909a_0           conda-forge/linux-64     Cached
  + liblapack                 3.9.0  12_linux64_openblas  conda-forge/linux-64      12 KB
  + libnghttp2               1.43.0  ha19adfc_1           conda-forge/linux-64     790 KB
  + libopenblas              0.3.18  pthreads_h8fe5266_0  conda-forge/linux-64      10 MB
  + libopenblas-ilp64        0.3.18  pthreads_h0aa5bea_0  conda-forge/linux-64     Cached
  + libssh2                  1.10.0  ha35d2d1_2           conda-forge/linux-64     233 KB
  + libstdcxx-ng             11.2.0  he4da1e4_11          conda-forge/linux-64     Cached
  + libunwind                 1.5.0  h9c3ff4c_1           conda-forge/linux-64     Cached
  + libutf8proc               2.7.0  h7f98852_0           conda-forge/linux-64     Cached
  + libzlib                  1.2.11  h36c2ea0_1013        conda-forge/linux-64     Cached
  + mbedtls                   3.1.0  h9c3ff4c_0           conda-forge/linux-64     Cached
  + metis                     5.1.0  h58526e2_1006        conda-forge/linux-64     Cached
  + mpfr                      4.1.0  h9202a9a_1           conda-forge/linux-64     Cached
  + ncurses                     6.2  h58526e2_4           conda-forge/linux-64     Cached
  + openblas-ilp64           0.3.18  pthreads_h3d04fff_0  conda-forge/linux-64     Cached
  + openlibm                  0.7.5  h7f98852_0           conda-forge/linux-64     208 KB
  + openssl                   3.0.0  h7f98852_2           conda-forge/linux-64       3 MB
  + p7zip                     16.02  he1b5a44_1000        conda-forge/linux-64     Cached
  + pcre2                     10.37  h032f7d1_0           conda-forge/linux-64     Cached
  + perl                     5.32.1  1_h7f98852_perl5     conda-forge/linux-64     Cached
  + suitesparse              5.10.1  h9e50725_1           conda-forge/linux-64     Cached
  + tbb                    2021.5.0  h4bd325d_0           conda-forge/linux-64     Cached
  + tk                       8.6.11  h27826a3_1           conda-forge/linux-64     Cached
  + zlib                     1.2.11  h36c2ea0_1013        conda-forge/linux-64     Cached

  Summary:

  Install: 48 packages

  Total download: 135 MB

───────────────────────────────────────────────────────────────────────────────────────────

Confirm changes: [Y/n] n
Aborted.

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

old env even after update --all multiple times:

julia                     1.7.1                h989b2f6_1    conda-forge
openlibm                  0.8.0                h7f98852_0    conda-forge

It basically taking this as more of a stable position for the current env.

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

This is why we urgently need global pinning, I suppose...

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

@wolfv @isuruf @jakirkham quick question about how mamba/conda resolves update --all calls vis-a-vis global pinning:

We had an issue yesterday where one dep (openlibm) slyly changed its abi number when it moved to 0.8.0 and thus it ended up breaking julia. We pinned openlibm in julia (here) to avoid that bad openlibm as an interim solution while we work on global pinning for openlibm. In a new env (see above), this works fine, but with old env (via update --all call) this doesn't seem to fix the issue. I suppose this calls for global pinning asap? Or is this an underlying bug that should be fixed elsewhere?

cc @conda-forge/core

@jaimergp
Copy link
Member

jaimergp commented Jan 6, 2022

Can you target the desired version directly? conda install julia openlibm<0.8? The older Julia builds might need a repodata patch too, because right now they are less constrained and conda likes maximizing the versions, so the solver might be choosing that (more recent version for openlibm wins over more recent build for julia?). It also minimises the number of changes, by the way, so one more reason to choose the "simpler" solution, even if it's not technically correct anymore.

TLDR: repodata patch might be needed.

@mkitti
Copy link
Contributor

mkitti commented Jan 6, 2022

Is it possible to just pull openlibm 0.8 for the moment? Is there anything that is actually using it?

@jaimergp
Copy link
Member

jaimergp commented Jan 6, 2022

Can't really say, but with the CDN sync delays it will take a bit to show up for users. It might be as fast to just patch Julia packages here.

@beckermr
Copy link
Member

beckermr commented Jan 6, 2022

This needs a repodata patch. We should avoid pulling deps and builds of big packages like these.

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

Can you target the desired version directly? conda install julia openlibm<0.8? The older Julia builds might need a repodata patch too, because right now they are less constrained and conda likes maximizing the versions, so the solver might be choosing that (more recent version for openlibm wins over more recent build for julia?). It also minimises the number of changes, by the way, so one more reason to choose the "simpler" solution, even if it's not technically correct anymore.

TLDR: repodata patch might be needed.

Makes sense, thanks!

Yes, the direct solution works.

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

This needs a repodata patch. We should avoid pulling deps and builds of big packages like these.

Thanks @beckermr, see pr:
conda-forge/conda-forge-repodata-patches-feedstock#208

@valeriupredoi
Copy link
Author

as @jaimergp points out conda (mamba) likes to go up in version numbers - that's why when you do an update it will try and maximize the deps' versions, as long as there are no conflicts and the env gets solved: note that in that case julia stays at the slightly older build h989b2f6_1 but openlibm goes to 0.8.0. AFAIK update --all is coming packed with less checks than a full blown env build and solve, that's why updating an env is not what we recommend to users since it may result in an otherwise fit environment to break after the update. At our end, as users of the julia conda package, we should be fine since we always ask the users to create envs from scratch, and the CI tests we do either use pre-built containers (with release point environments, which are inherently old, but stable) or the test suites create new envs every night. It may be a problem for actual active Julia users that decide to do an env update when they bring in some third party package they need in their environment, that's why I was trying to tell that Julia developer about this incompatibility in the issue I opened yesterday in the main Julia GH repo, but they said it's all fine and closed it 🤷‍♂️

@isuruf
Copy link
Member

isuruf commented Jan 6, 2022

Given that JuliaMath/openlibm#248 says that the SONAME bump was a mistake, we can just make a symlink

@ngam
Copy link
Contributor

ngam commented Jan 6, 2022

Given that JuliaMath/openlibm#248 says that the SONAME bump was a mistake, we can just make a symlink

Definitely, but... like they did and decided it was the lesser of two evils to just go ahead with the mistake, we might as well follow their suit, otherwise, we will forget to disable the symlink, etc.

@valeriupredoi
Copy link
Author

hey guys, heads up that now Julia installation from conda-forge (the updated _2 build) results in a segfault - see the GA test I just ran, look under third step/Updating 'esmvaltool' env from conda env update... even though openlibm is now at the same version as yesterday (openlibm 0.7.5 h7f98852_0 conda-forge/linux-64 208 KB) - must be something else that changed overnight? Cheers 🍺

@mkitti
Copy link
Contributor

mkitti commented Jan 7, 2022

@SylvainCorlay just reported the same thing
#159 (comment)

The errors all point to a segfault in curl, and curl 7.81 was released.

@ngam
Copy link
Contributor

ngam commented Jan 7, 2022

@ngam
Copy link
Contributor

ngam commented Jan 7, 2022

Okay, gonna add curl <7.81 to repo patch now: conda-forge/conda-forge-repodata-patches-feedstock#208

@ngam
Copy link
Contributor

ngam commented Jan 7, 2022

More reports of same issue, from archlinux: JuliaLang/julia#43682

@valeriupredoi
Copy link
Author

valeriupredoi commented Jan 7, 2022

cheers muchly @ngam - apologies I didn't pick up on the version upping of curl myself so I can report it to you, got distracted with other stuffs. I am a bit bewildered by the approach from core Julia people brushing all this under the carpet by saying the conda package is not official distribution, but heyho, not my place to comment, you guys are doing a great job! 🍺

@ngam
Copy link
Contributor

ngam commented Jan 7, 2022

I am a bit bewildered by the approach from core Julia people

LOL it's okay. They've been somewhat unfriendly (we discussed this a little bit here: conda-forge/mbedtls-feedstock#1), but we will figure things out soon. We are (in conda-forge/julia-feedstock) serious about having this work flawlessly. For now, we are playing catchup with issues emerging (libunwind, openlibm, curl, who know what's next tomorrow!), but hopefully soon we will figure out a more systematic approach.

The ultimate problem isn't the people upstream per se, it is more their design choices of how julia is built and shipped. They ship julia with exact pins (and vendoring everything). I am quite outspoken and I don't mind speaking up repeatedly about this. This is really a losing strategy for julia and the open-source community at large: We all want julia to succeed and become a model for open-source collaboration; we don't want julia to become the next Matlab

@ngam
Copy link
Contributor

ngam commented Jan 7, 2022

cheers muchly @ngam - apologies I didn't pick up on the version upping of curl myself so I can report it to you, got distracted with other stuffs.

Hey, you've been extremely helpful. Please keep them coming and as @mkitti mentioned, we are going to be proactive about ensuring your work is tested by us before updating/merging.

@valeriupredoi
Copy link
Author

the next Matlab

🤣

Keep up the good work, I'll try help as much as I can, even though that might just be poking you and complaining things are broken again 😁

@ngam
Copy link
Contributor

ngam commented Jan 9, 2022

Status update:

@valeriupredoi
Copy link
Author

Morning guys, heads up that your latest fix in the _3 build works nicely and we have green CI tests again - with curl=7.81 and _3 Julia build, see the env - many thanks for the quick response! 🍺

@mkitti
Copy link
Contributor

mkitti commented Feb 9, 2022

@valeriupredoi and @ngam , I believe this issue can be closed since the above pull requests have been merged. Feel free to reopen if that is not the case.

@mkitti mkitti closed this as completed Feb 9, 2022
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

6 participants