Summary: | net-libs/serf-1.3.5: RUNPATH broken | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Michał Górny <mgorny> |
Component: | Current packages | Assignee: | Arfrever Frehtes Taifersar Arahesis <arfrever.fta> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | graaff, proxy-maint, realnc |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | http://code.google.com/p/serf/issues/detail?id=151 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
Build log
Patch fixing the issue and possibly more |
Description
Michał Górny
2014-05-01 08:56:09 UTC
I cannot reproduce it. RUNPATH is "/usr/lib64:/usr/lib" for me. (I will think about how to delete "/usr/lib" from it.) There were no changes in SConstruct between 1.3.4 and 1.3.5. Which version of dev-util/scons do you use? (In reply to Arfrever Frehtes Taifersar Arahesis from comment #1) > I cannot reproduce it. > RUNPATH is "/usr/lib64:/usr/lib" for me. (I will think about how to delete > "/usr/lib" from it.) > There were no changes in SConstruct between 1.3.4 and 1.3.5. > Which version of dev-util/scons do you use? 2.3.1-r1 Created attachment 382718 [details, diff]
Patch fixing the issue and possibly more
Long story short, upstream is using strings and lists interchangeably in env.Append() and then expecting list to magically come out of it.
And it does, unless you hit a code path with strings only -- then you get a string, possibly including random concatenated flags like '/usr/lib64/usr/lib64'... then the string is passed to function expecting list, iterator gets it per-character and you get what I get.
The attached patch makes sure that lists are appended consistently everywhere. I left only RPATH since it seemed to really want to be a string instead.
I get a big, fat, yellow warning during emerge. No one else gets that? I don't need to use readelf to see it. scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='O:P:E:N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='P:E:N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='E:N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='O:P:E:N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='P:E:N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='E:N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='N:S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='S:L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='L:/:l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='l:i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='i:b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 scanelf: rpath_security_checks(): Maybe? sec problem with DT_RUNPATH='b' in /var/tmp/portage/net-libs/serf-1.3.7/image/usr/lib64/libserf-1.so.1.3.0 (In reply to Nikos Chantziaras from comment #4) > I get a big, fat, yellow warning during emerge. No one else gets that? I > don't need to use readelf to see it. I see this too with serf 1.3.7. Upstream has applied my patch and it will be in 1.4.0. Fix backported to net-libs/serf-1.3.8. |