Bug 642796 - curl update breaks yum
Summary: curl update breaks yum
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: curl
Version: rawhide
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Kamil Dudka
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 741935
TreeView+ depends on / blocked
 
Reported: 2010-10-13 20:29 UTC by Michal Jaegermann
Modified: 2011-09-28 14:24 UTC (History)
3 users (show)

Fixed In Version: curl-7.21.0-6.fc14
Clone Of:
: 741935 (view as bug list)
Environment:
Last Closed: 2010-11-28 20:41:54 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Enforce versioned libssh2 dependency for libcurl (927 bytes, patch)
2010-10-14 12:23 UTC, Paul Howarth
kdudka: review+
Details | Diff

Description Michal Jaegermann 2010-10-13 20:29:11 UTC
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

Comment 1 Kamil Dudka 2010-10-13 20:39:02 UTC
Thanks for reporting it here.  What's your version of libssh2?

Comment 2 Michal Jaegermann 2010-10-13 20:44:56 UTC
(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

Comment 3 Kamil Dudka 2010-10-13 20:46:42 UTC
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.

Comment 4 Matthias Clasen 2010-10-13 21:04:08 UTC
(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 ?

Comment 5 Michal Jaegermann 2010-10-13 21:14:26 UTC
(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.

Comment 6 Kamil Dudka 2010-10-13 21:19:21 UTC
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

Comment 7 Michal Jaegermann 2010-10-13 23:59:20 UTC
(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.

Comment 8 Kamil Dudka 2010-10-14 11:00:03 UTC
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?

Comment 9 Paul Howarth 2010-10-14 12:23:50 UTC
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 10 Kamil Dudka 2010-10-14 14:18:45 UTC
Comment on attachment 453445 [details]
Enforce versioned libssh2 dependency for libcurl

Looks good to me.  You're welcome to push.

Comment 11 Paul Howarth 2010-10-14 15:30:44 UTC
Should be fixed in curl-7.21.2-2.fc15

Comment 12 Fedora Update System 2010-11-26 14:31:56 UTC
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

Comment 13 Fedora Update System 2010-11-26 21:05:12 UTC
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

Comment 14 Fedora Update System 2010-11-28 20:41:29 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.