Description of problem: After an update of libcurl to version 7.21.2-1.fc15 any attempt to run yum fails as follows: There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: /usr/lib64/libcurl.so.4: undefined symbol: libssh2_scp_send64 Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: 2.7 (r27:82500, Sep 29 2010, 23:01:31) [GCC 4.5.1 20100924 (Red Hat 4.5.1-4)] Reversing updates of curl and libcurl to the previous 7.21.2-1.fc15 makes yum to work again. Version-Release number of selected component (if applicable): curl-7.21.2-1.fc15 How reproducible: always
Thanks for reporting it here. What's your version of libssh2?
(In reply to comment #1) > What's your version of libssh2? libssh2-1.2.4-1.fc14. This is rawhide with 20101013 updates. Oops! I see that I copied a wrong log line. A working version of libcurl is libcurl-7.21.1-6.fc15
You need to update libssh2 first. If it does not solve the problem, please reopen this bug. Otherwise, there is nothing to fix in (lib)curl packages.
(In reply to comment #3) > You need to update libssh2 first. If it does not solve the problem, please > reopen this bug. Otherwise, there is nothing to fix in (lib)curl packages. How about adding proper dependencies on the libssh2 version that you depend on ?
(In reply to comment #3) > You need to update libssh2 first. So how about ensuring that this "first" really happens? Otherwise you have a situation like now when curl packages are already updated and one need to fish in koji to repair the damage.
I am just following the packaging guidelines [1]: "Packages must not contain explicit Requires on libraries except when absolutely necessary." Do you consider it "absolutely necessary" in this case? From my point of view, it's just a regular rawhide breakage, which is expected to happen. It does not affect the build system, neither fresh installations of rawhide Fedora. [1] http://fedoraproject.org/wiki/Packaging/Guidelines#Explicit_Requires
(In reply to comment #6) > I am just following the packaging guidelines [1]: "Packages must not contain > explicit Requires on libraries except when absolutely necessary." Do they have to be explicit in this case? It seems to me that there were some ABI changes, or otherwise you would not complain about "undefined symbol" which apparently is provided elsewhere, but soname was not touched. I am possibly missing something. > From my point of view, it's just a regular rawhide breakage, A rawhide is rawhide. Agreed. Only if something of that sort would happen during release updates (not unthinkable with a little help from bodhi even if you had all updates in 'testing') then you would end up with a crowd of quite unhappy users most quite baffled with how to recover.
ABI changes means a symbol was added only in this case. That's not enough reason to bump SONAME. The configure script of curl detects the new function is available during build of curl and starts to use it. 1) We can require libssh2 >= 1.2.6 that introduced the symbol (or 1.2.7 as 1.2.6 has never been built for Fedora). Then we can no more build the rawhide curl package against stable Fedora releases. 2) We can bump the libssh2 SONAME in Fedora packages and let rpmbuild to do its job and introduce the dependency automatically. That may sooner or later clash with the upstream SO versioning. 3) We can leave the package as is, since rawhide users are skilled enough to get over the problem. 4) We can introduce some rpm magic that adds the explicit requires only when really necessary (only when libssh2_scp_send64 is used by libcurl). I am not sure if this is ever possible. Paul, what's your position on the issue?
Created attachment 453445 [details] Enforce versioned libssh2 dependency for libcurl This is not the first time this problem has occurred (see also Bug #525002), so I prefer a more generic solution to prevent it happening again. I propose adding a versioned dependency in libcurl for the version of libssh2 that it was built against. This ensures that any symbols available at build-time will also be available at run-time. It also allows the Rawhide SRPM to be usefully rebuilt on older releases, as the resulting package will have a dependency reflecting the version of libssh2 available in the release it was built for. In fact, this could be further improved by using libssh2%{?_isa} rather than plain libssh2 so we ensure we get the right-arch version of libssh2.
Comment on attachment 453445 [details] Enforce versioned libssh2 dependency for libcurl Looks good to me. You're welcome to push.
Should be fixed in curl-7.21.2-2.fc15
curl-7.21.0-6.fc14 has been submitted as an update for Fedora 14. https://admin.fedoraproject.org/updates/curl-7.21.0-6.fc14
curl-7.21.0-6.fc14 has been pushed to the Fedora 14 testing repository. If problems still persist, please make note of it in this bug report. If you want to test the update, you can install it with su -c 'yum --enablerepo=updates-testing update curl'. You can provide feedback for this update here: https://admin.fedoraproject.org/updates/curl-7.21.0-6.fc14
curl-7.21.0-6.fc14 has been pushed to the Fedora 14 stable repository. If problems still persist, please make note of it in this bug report.