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
Different soname versions when built using autotools and cmake #1857
Comments
On more testing, building using |
To be honest, I could never figure out how autotools computes soversions. (I believe that in the past, different autotools distributions computed it differently.) |
In the autotools toolchain, soversion is via libtool's |
I am trying to make two build platforms generate the same SONAME, but one of the uses CMake and the other one autotools, so we are hitting this. Given Given a Lines 34 to 49 in 67a20ce
In other words:
As per @dmacks above, the SONAME is However, in CMake we have that SOVERSION is set to: Lines 72 to 82 in 67a20ce
In other words, So, in practice, |
<!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes sagemath#1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> Mamba currently has problems with dependencies installed from other channels (libarchive/libarchive#1857, conda-incubator/setup-miniconda#292, conda-forge/libarchive-feedstock#69), see eg h ttps://github.com/sagemath/sage/actions/runs/6525067702/job/17717363515. As workaround we use miniforge now (which comes with a preinstalled mamba from conda-forge) ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [ ] The title is concise, informative, and self-explanatory. - [ ] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - sagemath#12345: short description why this is a dependency - sagemath#34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: sagemath#36468 Reported by: Tobias Diez Reviewer(s): Isuru Fernando, Matthias Köppe
cc @ppentchev since this will impact Debian packaging. There is some discussion on #1976 about whether the preferred thing to do is to increase the SONAME used with Autotools from libarchive.so.13 to match CMake's libarchive.so.19, or to reduce the SONAME used with CMake from libarchive.so.19 to match Autotools' libarchive.so.13. If the SONAME used with Autotools is bumped from libarchive.so.13 to match CMake's libarchive.so.19, it might be tempting for downstream packagers who are using Autotools to patch the build system to revert to .so.13 to avoid rebuilds, but I would advise against that: a similar thing was done in the past for Debian's libcurl, and that divergence from the upstream ABI continues to cause weirdness more than a decade later. |
Thanks, @smcv, for the ping. Yeah, if the SONAME is bumped to .19, the Debian packaging will follow that, even if it means a trip through the Debian archive's NEW queue; the other way is indeed not worth the future headaches. |
Great news, thanks gents. Also hello fellow countryman o/ |
Following https://github.com/libarchive/libarchive/wiki/BuildInstructions#building-libarchive-from-the-github-source-code, when v3.6.2 is built from distribution tarball (https://www.libarchive.org/downloads/libarchive-3.6.2.tar.gz) and by checking out the git tag (https://github.com/libarchive/libarchive/releases/tag/v3.6.2), the generated files seems different. These are the results I got (target directory names should be self-explanatory)
By print-debugging, I confirmed that both the methods compute interface version to be
19
, but for some reason the build from tarball creates.so.13.6.2
file while the one from git tag creates.so.19
file. Any idea why it is so?The text was updated successfully, but these errors were encountered: