* Re: [devel] I: illegal RPATH: relative paths
2011-12-12 13:47 [devel] I: illegal RPATH, introduction Dmitry V. Levin
@ 2011-12-12 14:12 ` Dmitry V. Levin
2011-12-12 18:01 ` Igor Vlasenko
` (2 more replies)
2011-12-12 14:33 ` [devel] I: illegal RPATH: out of standard library tree paths Dmitry V. Levin
2011-12-12 14:57 ` [devel] I: illegal RPATH: paths to standard libraries Dmitry V. Levin
2 siblings, 3 replies; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-12 14:12 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 4301 bytes --]
Hi,
On Mon, Dec 12, 2011 at 05:47:33PM +0400, Dmitry V. Levin wrote:
> Анализ логов тестовой пересборки показывает, что в Sisyphus-x86_64 очень много
> пакетов с ошибочными и/или некорректными RPATH.
[...]
> - относительные пути вместо абсолютных;
Относительные пути вместо абсолютных в RPATH - это беда.
Вот как это выглядит на простом примере.
Обычная простая программа без RPATH:
$ echo 'int main(void){return 0;}' |gcc -xc - -O2 -Wall -o a.out && strace -eopen ./a.out
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
+++ exited with 0 +++
Та же самая программа, но с RPATH, содержащим относительный путь:
$ echo 'int main(void){return 0;}' |gcc -xc - -O2 -Wall -o a.out -Wl,-rpath,foo && strace -eopen ./a.out
open("foo/tls/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("foo/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("foo/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("foo/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
+++ exited with 0 +++
Как видно, относительный путь в RPATH приводит к тому, что ld.so во время
запуска программы ищет все слинкованные библиотеки относительно текущего
каталога, т.е. в совершенно непредсказуемых местах.
Как правило, относительные пути в RPATH - это просто ошибки сборки.
Вот, например, самая распространенная из таких ошибок в Sisyphus-x86_64:
$ lftp -c 'cat http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/success/CoinSYMPHONY-5.4.1-alt1.svn20110903' | grep RPATH
verify-elf: WARNING: ./usr/bin/symphony: RPATH entry found: path=/usr/lib/openmpi/lib
verify-elf: WARNING: ./usr/lib64/libSymAppl.so.0.0.0: RPATH entry found: path=/usr/lib/openmpi/lib
verify-elf: WARNING: ./usr/lib64/libOsiSym.so.0.0.0: RPATH entry found: path=/usr/lib/openmpi/lib
verify-elf: WARNING: ./usr/lib64/libSym.so.0.0.0: RPATH entry found: path=/usr/lib/openmpi/lib
Скорее всего, мейнтейнер имел в виду "/usr/lib/openmpi/lib", а вовсе не
"path=/usr/lib/openmpi/lib", который у него получился.
Вот список исходных пакетов с относительными путями в RPATH на x86-64,
в формате ACL:
CoinBcp real @everybody
CoinBcps real @everybody
CoinBlis real @everybody
CoinBonmin real @everybody
CoinCgl real @everybody
CoinClp real @everybody
CoinDip real @everybody
CoinFlopCpp real @everybody
CoinMP real @everybody
CoinOS real @everybody
CoinSYMPHONY real @everybody
CoinSmi real @everybody
CoinVol real @everybody
GASNet real @qa @everybody
adios real @everybody
afepack-complex real @everybody
afepack-real real @everybody
arpack real @qa @everybody
blopex-complex real @everybody
blopex-real real @everybody
blzpack real @qa @everybody
ccaffeine real sin @python @qa @everybody
cheetah real @qa @everybody
chicken voins oddity
dsdp real @qa @everybody
exodusii real @everybody
gromacs mike @qa @everybody
h5part-mpi real @everybody
ibutils stanv inger real @qa
katrin zver @qa
libblacs real @qa @everybody
libhdf5-7-mpi real @everybody
libnetcdf7-mpi real @everybody
libproxy shaba aris @gnome
libscalapack real @qa @everybody
mISDN mithraen
mct real @qa @everybody
mpe2 real @qa @everybody
mpip real sin @python @qa @everybody
mpitests real @qa @everybody
mumps real @qa @everybody
p4est real @everybody
parmetis0 real @everybody
pastix real @qa @everybody
petscfem-complex real @everybody
petscfem-real real @everybody
primme real @qa @everybody
pswarm real @python @qa @everybody
pympi real @qa @python @everybody
python-module-boostmpi real @everybody
python-module-mpi4py real sin @python @qa @everybody
salsa-complex real @qa @everybody
salsa-real real @qa @everybody
scalasca real @qa @everybody
scotch real @qa @everybody
scribus manowar real @everybody @qa
silo real sin @python @qa @everybody
spooles real @qa @everybody
sprng real @qa @everybody
sprng1 real @everybody
squid-kerberos-ldap-helper manowar @qa
sundials real @qa @everybody
trlan real @qa @everybody
Я предлагаю считать относительные пути в RPATH грубыми ошибками,
приводящими к ошибке сборки даже в режиме проверки rpath=relaxed.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-12 14:12 ` [devel] I: illegal RPATH: relative paths Dmitry V. Levin
@ 2011-12-12 18:01 ` Igor Vlasenko
2011-12-13 3:40 ` REAL
2011-12-13 11:30 ` Dmitry V. Levin
2011-12-13 3:37 ` REAL
2011-12-21 10:55 ` Michael Shigorin
2 siblings, 2 replies; 33+ messages in thread
From: Igor Vlasenko @ 2011-12-12 18:01 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Mon, Dec 12, 2011 at 06:12:01PM +0400, Dmitry V. Levin wrote:
> Относительные пути вместо абсолютных в RPATH - это беда.
Хорошо бы на wiki занести.
> Я предлагаю считать относительные пути в RPATH грубыми ошибками,
> приводящими к ошибке сборки даже в режиме проверки rpath=relaxed.
Да, конечно, вопрос в том, что не сразу лучше включать эти проверки,
а дождаться реакции затронутых майнтайнеров, чтобы они спланировали
исправление и дали добро.
Чтобы было время морально подготовиться, как в случае внизу.
Без моральной подготовки будет перегрузка.
(to REAL@:
выглядит как стереотипная ошибка в скриптах сборки,
хорошая задача для использования робота -- посмотрите,
в чем проблема, я я помогу провести роботом массовое NMU с исправлением.)
> CoinBcp real @everybody
> CoinBcps real @everybody
> CoinBlis real @everybody
> CoinBonmin real @everybody
> CoinCgl real @everybody
> CoinClp real @everybody
> CoinDip real @everybody
> CoinFlopCpp real @everybody
> CoinMP real @everybody
> CoinOS real @everybody
> CoinSYMPHONY real @everybody
> CoinSmi real @everybody
> CoinVol real @everybody
> GASNet real @qa @everybody
> adios real @everybody
> afepack-complex real @everybody
> afepack-real real @everybody
> arpack real @qa @everybody
> blopex-complex real @everybody
> blopex-real real @everybody
> blzpack real @qa @everybody
> ccaffeine real sin @python @qa @everybody
> cheetah real @qa @everybody
> chicken voins oddity
> dsdp real @qa @everybody
> exodusii real @everybody
> gromacs mike @qa @everybody
> h5part-mpi real @everybody
> ibutils stanv inger real @qa
> katrin zver @qa
> libblacs real @qa @everybody
> libhdf5-7-mpi real @everybody
> libnetcdf7-mpi real @everybody
> libproxy shaba aris @gnome
> libscalapack real @qa @everybody
> mISDN mithraen
> mct real @qa @everybody
> mpe2 real @qa @everybody
> mpip real sin @python @qa @everybody
> mpitests real @qa @everybody
> mumps real @qa @everybody
> p4est real @everybody
> parmetis0 real @everybody
> pastix real @qa @everybody
> petscfem-complex real @everybody
> petscfem-real real @everybody
> primme real @qa @everybody
> pswarm real @python @qa @everybody
> pympi real @qa @python @everybody
> python-module-boostmpi real @everybody
> python-module-mpi4py real sin @python @qa @everybody
> salsa-complex real @qa @everybody
> salsa-real real @qa @everybody
> scalasca real @qa @everybody
> scotch real @qa @everybody
> scribus manowar real @everybody @qa
> silo real sin @python @qa @everybody
> spooles real @qa @everybody
> sprng real @qa @everybody
> sprng1 real @everybody
> squid-kerberos-ldap-helper manowar @qa
> sundials real @qa @everybody
> trlan real @qa @everybody
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-12 18:01 ` Igor Vlasenko
@ 2011-12-13 3:40 ` REAL
2011-12-13 4:18 ` Damir Shayhutdinov
2011-12-13 11:30 ` Dmitry V. Levin
1 sibling, 1 reply; 33+ messages in thread
From: REAL @ 2011-12-13 3:40 UTC (permalink / raw)
To: ALT Linux Team development discussions
13.12.2011 00:01, Igor Vlasenko пишет:
> (to REAL@:
> выглядит как стереотипная ошибка в скриптах сборки,
> хорошая задача для использования робота -- посмотрите,
> в чем проблема, я я помогу провести роботом массовое NMU с исправлением.)
Я не понимаю, в чём тут проблема. Почему path=/usr/lib/openmpi/lib
считается относительным путём? И вообще, какого лешего в путь
добавляется "path=" и кем именно. Подозрение падает на openmpi, но тут
уже нужен dans@, который в последнее время что-то затих.
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 3:40 ` REAL
@ 2011-12-13 4:18 ` Damir Shayhutdinov
2011-12-13 5:52 ` REAL
0 siblings, 1 reply; 33+ messages in thread
From: Damir Shayhutdinov @ 2011-12-13 4:18 UTC (permalink / raw)
To: ALT Linux Team development discussions
> Я не понимаю, в чём тут проблема. Почему path=/usr/lib/openmpi/lib считается
> относительным путём?
Потому, что не начинается с /
> И вообще, какого лешего в путь добавляется "path=" и
> кем именно. Подозрение падает на openmpi, но тут уже нужен dans@, который в
> последнее время что-то затих.
Достаточно посмотреть на строчку линковки, и найти ее соответствие в Makefile.
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 4:18 ` Damir Shayhutdinov
@ 2011-12-13 5:52 ` REAL
2011-12-13 6:50 ` Damir Shayhutdinov
0 siblings, 1 reply; 33+ messages in thread
From: REAL @ 2011-12-13 5:52 UTC (permalink / raw)
To: ALT Linux Team development discussions
13.12.2011 10:18, Damir Shayhutdinov пишет:
>> Я не понимаю, в чём тут проблема. Почему path=/usr/lib/openmpi/lib считается
>> относительным путём?
> Потому, что не начинается с /
>> И вообще, какого лешего в путь добавляется "path=" и
>> кем именно. Подозрение падает на openmpi, но тут уже нужен dans@, который в
>> последнее время что-то затих.
> Достаточно посмотреть на строчку линковки, и найти ее соответствие в Makefile.
Понятно. Вот не думал, что подцепленное где-то выражение
-Wl,-Rpath=/usr.e.t.c не является вменяемым :)
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 5:52 ` REAL
@ 2011-12-13 6:50 ` Damir Shayhutdinov
2011-12-13 7:56 ` REAL
0 siblings, 1 reply; 33+ messages in thread
From: Damir Shayhutdinov @ 2011-12-13 6:50 UTC (permalink / raw)
To: ALT Linux Team development discussions
> Понятно. Вот не думал, что подцепленное где-то выражение
> -Wl,-Rpath=/usr.e.t.c не является вменяемым :)
Гм, указать на ошибку, или сам догадаешься? Подсказка - ошибка в
регистре одной буквы.
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 6:50 ` Damir Shayhutdinov
@ 2011-12-13 7:56 ` REAL
2011-12-13 11:06 ` Dmitry V. Levin
2011-12-13 17:24 ` Michael Shigorin
0 siblings, 2 replies; 33+ messages in thread
From: REAL @ 2011-12-13 7:56 UTC (permalink / raw)
To: ALT Linux Team development discussions
13.12.2011 12:50, Damir Shayhutdinov пишет:
>> Понятно. Вот не думал, что подцепленное где-то выражение
>> -Wl,-Rpath=/usr.e.t.c не является вменяемым :)
>
> Гм, указать на ошибку, или сам догадаешься? Подсказка - ошибка в
> регистре одной буквы.
Это понятно, но я по своей привычке переделал: -Wl,-R,/путь ;)
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 7:56 ` REAL
@ 2011-12-13 11:06 ` Dmitry V. Levin
2011-12-13 12:11 ` REAL
2011-12-13 17:24 ` Michael Shigorin
1 sibling, 1 reply; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-13 11:06 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 584 bytes --]
On Tue, Dec 13, 2011 at 01:56:18PM +0600, REAL wrote:
> 13.12.2011 12:50, Damir Shayhutdinov пишет:
> >>Понятно. Вот не думал, что подцепленное
> >>где-то выражение
> >>-Wl,-Rpath=/usr.e.t.c не является вменяемым :)
> >
> >Гм, указать на ошибку, или сам
> >догадаешься? Подсказка - ошибка в
> >регистре одной буквы.
>
> Это понятно, но я по своей привычке
> переделал: -Wl,-R,/путь ;)
У -R основное значение другое, поэтому лучше использовать -rpath.
Иначе в том случае, когда /путь еще не существует на момент линковки,
могут возникнуть проблемы.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 11:06 ` Dmitry V. Levin
@ 2011-12-13 12:11 ` REAL
0 siblings, 0 replies; 33+ messages in thread
From: REAL @ 2011-12-13 12:11 UTC (permalink / raw)
To: ALT Linux Team development discussions
13.12.2011 17:06, Dmitry V. Levin пишет:
>> Это понятно, но я по своей привычке
>> переделал: -Wl,-R,/путь ;)
>
> У -R основное значение другое, поэтому лучше использовать -rpath.
> Иначе в том случае, когда /путь еще не существует на момент линковки,
> могут возникнуть проблемы.
Меня пока проносило (тьфу, тьфу, тьфу...) :)
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 7:56 ` REAL
2011-12-13 11:06 ` Dmitry V. Levin
@ 2011-12-13 17:24 ` Michael Shigorin
1 sibling, 0 replies; 33+ messages in thread
From: Michael Shigorin @ 2011-12-13 17:24 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Tue, Dec 13, 2011 at 01:56:18PM +0600, REAL wrote:
> >>Понятно. Вот не думал, что подцепленное где-то выражение
> >>-Wl,-Rpath=/usr.e.t.c не является вменяемым :)
> >Гм, указать на ошибку, или сам догадаешься? Подсказка - ошибка
> >в регистре одной буквы.
> Это понятно, но я по своей привычке переделал: -Wl,-R,/путь ;)
Перед заведением привычек помогает их проверять на осмысленность
-- в конце концов, здесь спросить. :)
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-12 18:01 ` Igor Vlasenko
2011-12-13 3:40 ` REAL
@ 2011-12-13 11:30 ` Dmitry V. Levin
2011-12-13 12:33 ` REAL
` (3 more replies)
1 sibling, 4 replies; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-13 11:30 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1421 bytes --]
On Mon, Dec 12, 2011 at 08:01:06PM +0200, Igor Vlasenko wrote:
> On Mon, Dec 12, 2011 at 06:12:01PM +0400, Dmitry V. Levin wrote:
> > Относительные пути вместо абсолютных в RPATH - это беда.
> Хорошо бы на wiki занести.
>
> > Я предлагаю считать относительные пути в RPATH грубыми ошибками,
> > приводящими к ошибке сборки даже в режиме проверки rpath=relaxed.
>
> Да, конечно, вопрос в том, что не сразу лучше включать эти проверки,
Можно сразу включить диагностику, чтобы в логе сборки было ясно написано,
что именно не так с RPATH, а не просто сказано, что RPATH присутствует.
Однако проблема в том, что мейнтейнеры логи сборки своих пакетов, как
правило, не смотрят. Соответственно, подняв уровень ошибки, можно
привлечь внимание мейнтейнеров и @qa.
Ошибки, о которых речь, у нас уже очень давно. Просто, пока я не взял в
руки grep, не было очевидно, что их так много.
> а дождаться реакции затронутых майнтайнеров, чтобы они спланировали
> исправление и дали добро.
> Чтобы было время морально подготовиться, как в случае внизу.
> Без моральной подготовки будет перегрузка.
По относительным путям самый затронутый мейнтейнер у нас один,
давайте его спросим.
> (to REAL@:
> выглядит как стереотипная ошибка в скриптах сборки,
> хорошая задача для использования робота -- посмотрите,
> в чем проблема, я я помогу провести роботом массовое NMU с исправлением.)
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 11:30 ` Dmitry V. Levin
@ 2011-12-13 12:33 ` REAL
2011-12-13 16:01 ` Dmitry V. Levin
` (2 subsequent siblings)
3 siblings, 0 replies; 33+ messages in thread
From: REAL @ 2011-12-13 12:33 UTC (permalink / raw)
To: ALT Linux Team development discussions
13.12.2011 17:30, Dmitry V. Levin пишет:
> По относительным путям самый затронутый мейнтейнер у нас один,
> давайте его спросим.
Я работаю над этим ;)
С моей колокольни, баги насчёт относительных путей можно врубать сразу
на максимум, в sisyphus_check.
>> (to REAL@:
>> выглядит как стереотипная ошибка в скриптах сборки,
>> хорошая задача для использования робота -- посмотрите,
>> в чем проблема, я я помогу провести роботом массовое NMU с исправлением.)
>
>
>
>
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 11:30 ` Dmitry V. Levin
2011-12-13 12:33 ` REAL
@ 2011-12-13 16:01 ` Dmitry V. Levin
2011-12-13 16:11 ` Денис Смирнов
2011-12-13 17:25 ` Michael Shigorin
2011-12-13 21:29 ` Dmitry V. Levin
3 siblings, 1 reply; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-13 16:01 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1221 bytes --]
On Tue, Dec 13, 2011 at 03:30:42PM +0400, Dmitry V. Levin wrote:
> On Mon, Dec 12, 2011 at 08:01:06PM +0200, Igor Vlasenko wrote:
> > On Mon, Dec 12, 2011 at 06:12:01PM +0400, Dmitry V. Levin wrote:
> > > Относительные пути вместо абсолютных в RPATH - это беда.
> > Хорошо бы на wiki занести.
> >
> > > Я предлагаю считать относительные пути в RPATH грубыми ошибками,
> > > приводящими к ошибке сборки даже в режиме проверки rpath=relaxed.
> >
> > Да, конечно, вопрос в том, что не сразу лучше включать эти проверки,
>
> Можно сразу включить диагностику, чтобы в логе сборки было ясно написано,
> что именно не так с RPATH, а не просто сказано, что RPATH присутствует.
>
> Однако проблема в том, что мейнтейнеры логи сборки своих пакетов, как
> правило, не смотрят. Соответственно, подняв уровень ошибки, можно
> привлечь внимание мейнтейнеров и @qa.
>
> Ошибки, о которых речь, у нас уже очень давно. Просто, пока я не взял в
> руки grep, не было очевидно, что их так много.
Альтернативным вариантом могло бы быть автоматическое удаление из RPATH
всего лишнего в районе verify-elf с помощью chrpath. Но в этом случае,
скорее всего, первопричину исправлять никто не станет.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 16:01 ` Dmitry V. Levin
@ 2011-12-13 16:11 ` Денис Смирнов
2011-12-13 16:46 ` Damir Shayhutdinov
0 siblings, 1 reply; 33+ messages in thread
From: Денис Смирнов @ 2011-12-13 16:11 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 507 bytes --]
On Tue, Dec 13, 2011 at 08:01:20PM +0400, Dmitry V. Levin wrote:
DVL> Альтернативным вариантом могло бы быть автоматическое удаление из RPATH
DVL> всего лишнего в районе verify-elf с помощью chrpath. Но в этом случае,
DVL> скорее всего, первопричину исправлять никто не станет.
Думаю что если речь идет о сборки чужих приложений, а не написании своих
-- это не важно.
--
С уважением, Денис
http://mithraen.ru/
----------------------------------------------------------------------------
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 16:11 ` Денис Смирнов
@ 2011-12-13 16:46 ` Damir Shayhutdinov
2011-12-14 6:44 ` Денис Смирнов
0 siblings, 1 reply; 33+ messages in thread
From: Damir Shayhutdinov @ 2011-12-13 16:46 UTC (permalink / raw)
To: ALT Linux Team development discussions
> DVL> Альтернативным вариантом могло бы быть автоматическое удаление из RPATH
> DVL> всего лишнего в районе verify-elf с помощью chrpath. Но в этом случае,
> DVL> скорее всего, первопричину исправлять никто не станет.
>
> Думаю что если речь идет о сборки чужих приложений, а не написании своих
> -- это не важно.
Аполитично рассуждаешь. Мы ж не только за то, чтобы у нас было все
хорошо, но и за то, чтобы и у других тоже было все в порядке. Чтобы
было что заапстримивать.
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 16:46 ` Damir Shayhutdinov
@ 2011-12-14 6:44 ` Денис Смирнов
2011-12-14 8:53 ` Sergey Y. Afonin
0 siblings, 1 reply; 33+ messages in thread
From: Денис Смирнов @ 2011-12-14 6:44 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 499 bytes --]
On Tue, Dec 13, 2011 at 08:46:10PM +0400, Damir Shayhutdinov wrote:
DS> Аполитично рассуждаешь. Мы ж не только за то, чтобы у нас было все
DS> хорошо, но и за то, чтобы и у других тоже было все в порядке. Чтобы
DS> было что заапстримивать.
Если это самоцель -- логично. Для меня куда более важная цель --
качественный дистрибутив с минимальными трудозатратами.
--
С уважением, Денис
http://mithraen.ru/
----------------------------------------------------------------------------
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-14 6:44 ` Денис Смирнов
@ 2011-12-14 8:53 ` Sergey Y. Afonin
2011-12-14 10:07 ` REAL
0 siblings, 1 reply; 33+ messages in thread
From: Sergey Y. Afonin @ 2011-12-14 8:53 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Wednesday, December 14, 2011, Денис Смирнов wrote:
> DS> Аполитично рассуждаешь. Мы ж не только за то, чтобы у нас было все
> DS> хорошо, но и за то, чтобы и у других тоже было все в порядке. Чтобы
> DS> было что заапстримивать.
>
> Если это самоцель -- логично. Для меня куда более важная цель --
> качественный дистрибутив с минимальными трудозатратами.
Как по мне, так минимальные трудозатраты - рассказать апстриму, ничего
не делать и собрать, потом, новую версию. :-)
--
С уважением, Сергей Афонин
asy@altlinux.ru
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-14 8:53 ` Sergey Y. Afonin
@ 2011-12-14 10:07 ` REAL
2011-12-14 11:09 ` Michael Shigorin
0 siblings, 1 reply; 33+ messages in thread
From: REAL @ 2011-12-14 10:07 UTC (permalink / raw)
To: ALT Linux Team development discussions
14.12.2011 14:53, Sergey Y. Afonin пишет:
> Как по мне, так минимальные трудозатраты - рассказать апстриму, ничего
> не делать и собрать, потом, новую версию. :-)
Нередко время общения с апстримами превышает время исправления у себя ;)
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-14 10:07 ` REAL
@ 2011-12-14 11:09 ` Michael Shigorin
2011-12-14 12:11 ` REAL
0 siblings, 1 reply; 33+ messages in thread
From: Michael Shigorin @ 2011-12-14 11:09 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Wed, Dec 14, 2011 at 04:07:09PM +0600, REAL wrote:
> >Как по мне, так минимальные трудозатраты - рассказать
> >апстриму, ничего не делать и собрать, потом, новую версию. :-)
> Нередко время общения с апстримами превышает время исправления у себя ;)
s/Нередко/Обычно/, но это стратегически более выгодный путь,
проверено.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-14 11:09 ` Michael Shigorin
@ 2011-12-14 12:11 ` REAL
0 siblings, 0 replies; 33+ messages in thread
From: REAL @ 2011-12-14 12:11 UTC (permalink / raw)
To: ALT Linux Team development discussions
14.12.2011 17:09, Michael Shigorin пишет:
>>> Как по мне, так минимальные трудозатраты - рассказать
>>> апстриму, ничего не делать и собрать, потом, новую версию. :-)
>> Нередко время общения с апстримами превышает время исправления у себя ;)
>
> s/Нередко/Обычно/, но это стратегически более выгодный путь,
> проверено.
Подчёркиваю, апстримы бывают очень разными. Иногда приходится возиться
с таким, что сборка ломается при каждом обновлении, что уж говорить о
таких мелочах...
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 11:30 ` Dmitry V. Levin
2011-12-13 12:33 ` REAL
2011-12-13 16:01 ` Dmitry V. Levin
@ 2011-12-13 17:25 ` Michael Shigorin
2011-12-13 17:32 ` Dmitry V. Levin
2011-12-13 21:29 ` Dmitry V. Levin
3 siblings, 1 reply; 33+ messages in thread
From: Michael Shigorin @ 2011-12-13 17:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Tue, Dec 13, 2011 at 03:30:42PM +0400, Dmitry V. Levin wrote:
> Соответственно, подняв уровень ошибки, можно привлечь внимание
> мейнтейнеров и @qa.
JFYI, у меня по сборочным отчётам, приходящим через qa@,
перегруз.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 17:25 ` Michael Shigorin
@ 2011-12-13 17:32 ` Dmitry V. Levin
2011-12-13 19:17 ` Michael Shigorin
0 siblings, 1 reply; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-13 17:32 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 357 bytes --]
On Tue, Dec 13, 2011 at 07:25:48PM +0200, Michael Shigorin wrote:
> On Tue, Dec 13, 2011 at 03:30:42PM +0400, Dmitry V. Levin wrote:
> > Соответственно, подняв уровень ошибки, можно привлечь внимание
> > мейнтейнеров и @qa.
>
> JFYI, у меня по сборочным отчётам, приходящим через qa@,
> перегруз.
В таком случае что ты предлагаешь?
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 17:32 ` Dmitry V. Levin
@ 2011-12-13 19:17 ` Michael Shigorin
0 siblings, 0 replies; 33+ messages in thread
From: Michael Shigorin @ 2011-12-13 19:17 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Tue, Dec 13, 2011 at 09:32:25PM +0400, Dmitry V. Levin wrote:
> > > Соответственно, подняв уровень ошибки, можно привлечь
> > > внимание мейнтейнеров и @qa.
> > JFYI, у меня по сборочным отчётам, приходящим через qa@,
> > перегруз.
> В таком случае что ты предлагаешь?
Не рассчитывать чрезмерно на привлечение вминания. :)
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-13 11:30 ` Dmitry V. Levin
` (2 preceding siblings ...)
2011-12-13 17:25 ` Michael Shigorin
@ 2011-12-13 21:29 ` Dmitry V. Levin
3 siblings, 0 replies; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-13 21:29 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 986 bytes --]
On Tue, Dec 13, 2011 at 03:30:42PM +0400, Dmitry V. Levin wrote:
> On Mon, Dec 12, 2011 at 08:01:06PM +0200, Igor Vlasenko wrote:
> > On Mon, Dec 12, 2011 at 06:12:01PM +0400, Dmitry V. Levin wrote:
> > > Относительные пути вместо абсолютных в RPATH - это беда.
> > Хорошо бы на wiki занести.
> >
> > > Я предлагаю считать относительные пути в RPATH грубыми ошибками,
> > > приводящими к ошибке сборки даже в режиме проверки rpath=relaxed.
> >
> > Да, конечно, вопрос в том, что не сразу лучше включать эти проверки,
>
> Можно сразу включить диагностику, чтобы в логе сборки было ясно написано,
> что именно не так с RPATH, а не просто сказано, что RPATH присутствует.
>
> Однако проблема в том, что мейнтейнеры логи сборки своих пакетов, как
> правило, не смотрят. Соответственно, подняв уровень ошибки, можно
> привлечь внимание мейнтейнеров и @qa.
И, что более важно, таким образом можно будет предотвратить появление
новых ошибок этого типа.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-12 14:12 ` [devel] I: illegal RPATH: relative paths Dmitry V. Levin
2011-12-12 18:01 ` Igor Vlasenko
@ 2011-12-13 3:37 ` REAL
2011-12-21 10:55 ` Michael Shigorin
2 siblings, 0 replies; 33+ messages in thread
From: REAL @ 2011-12-13 3:37 UTC (permalink / raw)
To: ALT Linux Team development discussions
12.12.2011 20:12, Dmitry V. Levin пишет:
> Как правило, относительные пути в RPATH - это просто ошибки сборки.
> Вот, например, самая распространенная из таких ошибок в Sisyphus-x86_64:
> $ lftp -c 'cat http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/success/CoinSYMPHONY-5.4.1-alt1.svn20110903' | grep RPATH
> verify-elf: WARNING: ./usr/bin/symphony: RPATH entry found: path=/usr/lib/openmpi/lib
> verify-elf: WARNING: ./usr/lib64/libSymAppl.so.0.0.0: RPATH entry found: path=/usr/lib/openmpi/lib
> verify-elf: WARNING: ./usr/lib64/libOsiSym.so.0.0.0: RPATH entry found: path=/usr/lib/openmpi/lib
> verify-elf: WARNING: ./usr/lib64/libSym.so.0.0.0: RPATH entry found: path=/usr/lib/openmpi/lib
> Скорее всего, мейнтейнер имел в виду "/usr/lib/openmpi/lib", а вовсе не
> "path=/usr/lib/openmpi/lib", который у него получился.
Я не вижу тут относительных путей. В принципе, это можно будет
поправить при обновлении использованием chrpath в конце блока
%install, ибо более вменяемого способа я не знаю, подозреваю, что это
openmpi-devel так чудит.
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-12 14:12 ` [devel] I: illegal RPATH: relative paths Dmitry V. Levin
2011-12-12 18:01 ` Igor Vlasenko
2011-12-13 3:37 ` REAL
@ 2011-12-21 10:55 ` Michael Shigorin
2011-12-31 15:43 ` Yuri N. Sedunov
2 siblings, 1 reply; 33+ messages in thread
From: Michael Shigorin @ 2011-12-21 10:55 UTC (permalink / raw)
To: ALT Devel discussion list
On Mon, Dec 12, 2011 at 06:12:01PM +0400, Dmitry V. Levin wrote:
> open("foo/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
>
> Как видно, относительный путь в RPATH приводит к тому, что
> ld.so во время запуска программы ищет все слинкованные
> библиотеки относительно текущего каталога, т.е. в совершенно
> непредсказуемых местах.
Хуже того -- в достаточной мере предсказуемых теми, кто может
быть заинтересован подложить библиотеку специального вида,
как понимаю.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: relative paths
2011-12-21 10:55 ` Michael Shigorin
@ 2011-12-31 15:43 ` Yuri N. Sedunov
0 siblings, 0 replies; 33+ messages in thread
From: Yuri N. Sedunov @ 2011-12-31 15:43 UTC (permalink / raw)
To: devel
В Срд, 21/12/2011 в 12:55 +0200, Michael Shigorin пишет:
> On Mon, Dec 12, 2011 at 06:12:01PM +0400, Dmitry V. Levin wrote:
> > open("foo/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> >
> > Как видно, относительный путь в RPATH приводит к тому, что
> > ld.so во время запуска программы ищет все слинкованные
> > библиотеки относительно текущего каталога, т.е. в совершенно
> > непредсказуемых местах.
>
> Хуже того -- в достаточной мере предсказуемых теми, кто может
> быть заинтересован подложить библиотеку специального вида,
> как понимаю.
Неужели, нельзя удавить. эти пути при сборке автоматически?
--
Yuri N. Sedunov
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: out of standard library tree paths
2011-12-12 13:47 [devel] I: illegal RPATH, introduction Dmitry V. Levin
2011-12-12 14:12 ` [devel] I: illegal RPATH: relative paths Dmitry V. Levin
@ 2011-12-12 14:33 ` Dmitry V. Levin
2011-12-13 3:43 ` REAL
2011-12-12 14:57 ` [devel] I: illegal RPATH: paths to standard libraries Dmitry V. Levin
2 siblings, 1 reply; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-12 14:33 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 2639 bytes --]
Hi,
On Mon, Dec 12, 2011 at 05:47:33PM +0400, Dmitry V. Levin wrote:
> Анализ логов тестовой пересборки показывает, что в Sisyphus-x86_64 очень много
> пакетов с ошибочными и/или некорректными RPATH.
[...]
> - пути за пределы разумного (/lib, lib64, /usr/lib, /usr/lib64);
Пути за пределами стандартного размещения библиотек и плагинов - это плохо.
Вот как это выглядит на простом примере.
Обычная простая программа без RPATH:
$ echo 'int main(void){return 0;}' |gcc -xc - -O2 -Wall -o a.out && strace -eopen ./a.out
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
+++ exited with 0 +++
Та же самая программа, но с RPATH, содержащим запредельный путь:
$ echo 'int main(void){return 0;}' |gcc -xc - -O2 -Wall -o a.out -Wl,-rpath,/usr/local/lib64 && strace -eopen ./a.out
open("/usr/local/lib64/tls/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib64/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib64/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
+++ exited with 0 +++
Как видно, запредельный путь в RPATH приводит к тому, что ld.so во время
запуска программы ищет все слинкованные библиотеки относительно этого
пути. В лучшем случае это приводит к замедлению запуска, в худшем случае
ld.so там чего-нибудь найдет и запустит.
Как правило, запредельные пути в RPATH - это либо простые ошибки сборки,
либо ошибки переноса софта на GNU/Linux. Вот, например, самая
распространенная из таких ошибок в Sisyphus-x86_64:
$ lftp -c 'cat http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/success/AriaMaestosa-1.3b4-alt1' | grep RPATH
verify-elf: WARNING: ./usr/bin/Aria: RPATH entry found: /usr/local/lib64/
Вот список исходных пакетов с запредельными путями в RPATH на x86-64,
в формате ACL:
AriaMaestosa karpov @everybody
caudium boris @everybody
cca-spec-babel real sin @python @qa @everybody
erlang hsv greycat @qa
fglrx_glx oddity @everybody @qa
libfreetype shrek
mixxx kaman @everybody
nxclient mike @everybody
ocaml-zip @nobody
php5-ffmpeg rider naf
php5-interbase rider @everybody
pike7.6 boris viy @everybody
python-module-cmemcache swi
rarpd @nobody
salsa-complex real @qa @everybody
salsa-real real @qa @everybody
Я предлагаю считать запредельные пути в RPATH ошибками,
приводящими к ошибке сборки в режиме проверки rpath=normal.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: out of standard library tree paths
2011-12-12 14:33 ` [devel] I: illegal RPATH: out of standard library tree paths Dmitry V. Levin
@ 2011-12-13 3:43 ` REAL
2011-12-13 11:17 ` Dmitry V. Levin
0 siblings, 1 reply; 33+ messages in thread
From: REAL @ 2011-12-13 3:43 UTC (permalink / raw)
To: ALT Linux Team development discussions
12.12.2011 20:33, Dmitry V. Levin пишет:
> Я предлагаю считать запредельные пути в RPATH ошибками,
> приводящими к ошибке сборки в режиме проверки rpath=normal.
> readelf -a /usr/lib/petsc-real/lib/libanamod.so.0 |grep RPATH
0x0000000f (RPATH) Library rpath:
[/usr/lib/petsc-real/lib:/usr/lib/openmpi/lib]
Не вижу тут ничего запредельного, именно такой RPATH у данной
библиотеки и должен быть. Считать это ошибкой считаю моветоном :)
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: out of standard library tree paths
2011-12-13 3:43 ` REAL
@ 2011-12-13 11:17 ` Dmitry V. Levin
2011-12-13 12:25 ` REAL
0 siblings, 1 reply; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-13 11:17 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1527 bytes --]
On Tue, Dec 13, 2011 at 09:43:19AM +0600, REAL wrote:
> 12.12.2011 20:33, Dmitry V. Levin пишет:
> >Я предлагаю считать запредельные пути в
> >RPATH ошибками,
> >приводящими к ошибке сборки в режиме
> >проверки rpath=normal.
>
> > readelf -a /usr/lib/petsc-real/lib/libanamod.so.0 |grep RPATH
> 0x0000000f (RPATH) Library rpath:
> [/usr/lib/petsc-real/lib:/usr/lib/openmpi/lib]
>
> Не вижу тут ничего запредельного, именно
> такой RPATH у данной библиотеки и должен
> быть. Считать это ошибкой считаю
> моветоном :)
Это, возможно, и не ошибка. По крайней мере, это не ошибка одного из трех
типов, о которых идет речь. Однако /usr/lib/petsc-real/lib/libanamod.so.0
не единственная библиотека в пакете libsalsa-real, собирающемся из
salsa-real, и там ошибки есть:
$ sed -n '/^verify-elf: WARNING: [^:]\+: RPATH entry contains ":": / s///p' salsa-real-2.01-alt2.svn20100714 |sort -u
/usr/lib/petsc-real/lib:/usr/lib/openmpi/lib
/usr/lib/petsc-real/lib:/usr/lib:/usr/lib/openmpi/lib:/usr:/usr/lib64/oski:/usr/lib64/gcc/x86_64-alt-linux/4.5.1:/usr/path=/usr/lib/openmpi/lib:/usr/lib64/oski:path=/usr/lib/openmpi/lib
Первая строка - это RPATH собранных библиотек, вроде libanamod.so.0.
Вторая строка - это RPATH собранных утилит, таких как
/usr/lib/petsc-real/testing/syspro/u4 из пакета salsa-real-tests,
и в этом RPATH чего только нет: и /usr, и
/usr/lib64/gcc/x86_64-alt-linux/4.5.1, и даже
/usr/path=/usr/lib/openmpi/lib с path=/usr/lib/openmpi/lib.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: out of standard library tree paths
2011-12-13 11:17 ` Dmitry V. Levin
@ 2011-12-13 12:25 ` REAL
0 siblings, 0 replies; 33+ messages in thread
From: REAL @ 2011-12-13 12:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
13.12.2011 17:17, Dmitry V. Levin пишет:
> Это, возможно, и не ошибка. По крайней мере, это не ошибка одного из трех
> типов, о которых идет речь. Однако /usr/lib/petsc-real/lib/libanamod.so.0
> не единственная библиотека в пакете libsalsa-real, собирающемся из
> salsa-real, и там ошибки есть:
Это я уже увидел, только пока не дошёл до этого конкретного пакета,
предпочитаю следовать алфавитному списку.
--
REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [devel] I: illegal RPATH: paths to standard libraries
2011-12-12 13:47 [devel] I: illegal RPATH, introduction Dmitry V. Levin
2011-12-12 14:12 ` [devel] I: illegal RPATH: relative paths Dmitry V. Levin
2011-12-12 14:33 ` [devel] I: illegal RPATH: out of standard library tree paths Dmitry V. Levin
@ 2011-12-12 14:57 ` Dmitry V. Levin
2 siblings, 0 replies; 33+ messages in thread
From: Dmitry V. Levin @ 2011-12-12 14:57 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 8427 bytes --]
Hi,
On Mon, Dec 12, 2011 at 05:47:33PM +0400, Dmitry V. Levin wrote:
> Анализ логов тестовой пересборки показывает, что в Sisyphus-x86_64 очень много
> пакетов с ошибочными и/или некорректными RPATH.
[...]
> - пути к стандартным библиотекам (/lib, lib64, /usr/lib, /usr/lib64)
Пути к стандартным библиотекам в RPATH - это плохо.
Вот как это выглядит на простом примере.
Обычная простая программа без RPATH:
$ echo 'int main(void){return 0;}' |gcc -xc - -O2 -Wall -o a.out && strace -eopen ./a.out
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
+++ exited with 0 +++
Та же самая программа, но с RPATH, содержащим /usr/lib64:
$ echo 'int main(void){return 0;}' |gcc -xc - -O2 -Wall -o a.out -Wl,-rpath,/usr/lib64 && strace -eopen ./a.out
open("/usr/lib64/tls/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
+++ exited with 0 +++
Как видно, наличие пути к стандартным библиотекам в RPATH приводит к тому,
что ld.so во время запуска программы ищет все слинкованные библиотеки
относительно этого пути. Это приводит, во-первых, к замедлению запуска,
и, во-вторых, к частичному отключению механизма LD_LIBRARY_PATH именно
тогда, когда он понадобится.
Пути к стандартным библиотекам в RPATH встречаются, преимущественно, на
x86_64, а самый распространенный из четырех стандартных путей -
это /usr/lib64. Наиболее частая причина появления /usr/lib64 в RPATH -
это ошибка сборки вследствие кривизны той версии libtool, которую
использовал апстрим. Традиционные методы борьбы с кривым libtool такие:
- %autoreconf (перегенерация всей камарильи включая libtool, возможны
нежелательные побочные эффекты);
- sed -ri 's/^(hardcode_libdir_flag_spec|runpath_var)=.*/\1=/' libtool
(исправление сгенеренного libtool, годится в случае если проект не
использует RPATH по существу);
- утилита chrpath(1) из одноименного пакета.
Вот список исходных пакетов с путями к стандартным библиотекам в RPATH
на x86-64, в формате ACL:
ORBit @nobody
Wcalc gab @everybody
Xdmf real @everybody
a2ps george @everybody
adolc real @qa @everybody
aiksaurus lav @qa
aqbanking cas
arpack real @qa @everybody
aspell damir
audiofile real @everybody
aview kurakin @everybody
babel real sin @python @qa @everybody
bb mike @qa
bind ldv
bogofilter oddity
bs2b drool
btanks oddity dans
c-ares force @everybody
cegui vitty
cfengine stanv @everybody
cherokee force @everybody
chicken voins oddity
cilk real @qa @everybody
clamav asy force
cvtool force @everybody
cyrus-sasl2 vvk @everybody
dakota real @everybody
dar lav @qa @everybody
devil redbaron @qa
dialog inger @qa @everybody
dirac oddity @everybody
ecore aris
edbus aris
eet aris blake
efreet aris
ejudge dk
elementary vitty @everybody
elmerfem real @everybody
embryo aris blake
emotion aris
enca mike force lav @qa
erlang hsv greycat @qa
ethumb aris
evas aris
exiv2 force @everybody
ffmpegthumbnailer shrek @everybody
fidogate @nobody
findlib bga avm @qa @everybody
flac7 @nobody
fluidsynth aris
fontforge pv real
freehdl mithraen
freetds real @everybody
gcc3.4 ldv
gdal dim boyarsh @qa @everybody
geda-gaf lav @everybody
gerbv lav @qa @everybody
gigabase boris @everybody
glade3 @gnome @everybody
gnash sbolshakov
gnome-libs @nobody
gnome-panel @gnome
gnumeric swi
google-gadgets zerg
gphoto2 jinn
gsasl zerg alexsid @qa
gsql boris @gnome @everybody
gtkhtml4 aris @gnome
hermesxd real @everybody
ibutils stanv inger real @qa
id3lib real @everybody
iksemel mithraen
inn vvk @everybody
juffed cas
kdeaccessibility zerg @qa @everybody
kdeaddons zerg @qa @everybody
kdeadmin zerg @qa @everybody
kdeartwork zerg @everybody
kdebase zerg @everybody
kdebindings zerg @qa @everybody
kdegraphics zerg @everybody
kdelibs zerg @everybody
kdemultimedia zerg @everybody
kdenetwork zerg @qa @everybody
kdepim zerg @everybody
kdesdk zerg @everybody
kdetoys zerg @everybody
kdeutils zerg @everybody
kdewebdev zerg @qa @everybody
kdirstat oddity
kesi zerg @everybody
kflickr oddity @qa
kmobiletools oddity @qa zerg @everybody
kmymoney2 cas
kraft cas
kssh zerg @everybody
ktoblzcheck cas
kturing george @everybody
labplot1.6 lav @qa
lesstif sin @qa @everybody snejok
lib2geom lav @qa
libchipcard cas
libchm force @everybody
libcommoncpp2 sbolshakov lav
libdmtx george @everybody
libdv ldv @everybody
libdynamite mike @mobile @qa
libextractor lav force @qa
libfolks aris
libfreetype shrek
libgc lav @qa
libgeotiff dd @everybody
libggi george @everybody
libgii george @qa
libglibmm aris lav @gnome
libgnomekbd @gnome
libgssdp aris
libgtkdatabox force @everybody
libgtkmm3 aris @gnome
libgxps aris
libhid prividen
libicns azol @everybody
libiec61883 lav @qa
libinfinity aris @gnome
liblo @nobody
libmathgl lav @qa
libmesh-complex real @qa @everybody
libmesh-real real @qa @everybody
libming crux @everybody
libnetfilter_log liks @everybody
libnetfilter_queue liks @everybody
libnova zerg
libofx migor cas @qa
liboggz @nobody
liboping mike @qa @everybody
liborange mike @mobile @qa
libossp-uuid misha @everybody
libotr zerg
libpeas aris @gnome
libproj slazav @everybody
libpuzzle force @everybody
libqof lav @qa
librarian lav @gnome @qa
librasqal lav @qa
libraw1394 lav @qa
libsamplerate aris
libsndfile shrek
libspf2 force @everybody
libstatgrab zhum @everybody
libtelepathy-farstream aris
libtlalli force @everybody
libtranslate lav @qa real
libunshield mike genix shaba @mobile @qa
libvncserver zerg @everybody
libwnck @gnome
libwpd shrek
libwpd9 shrek
libwpg lav @qa
libwpg2 shrek
libwps shrek
libxbsql lav @everybody
libxerces-c lav @qa
libxine zerg @everybody
libxspf lav @qa
link-grammar aris
lksctp-tools mithraen @everybody
lxc dans
mcpp sin @qa
minidjvu vkni @everybody
mjpegtools @nobody
mpg123 swi
mplayer ender real sbolshakov @qa
msynctool0 @mobile
multisync-gui shaba @mobile @qa @everybody
musescore lav @qa
mxml real @everybody
mysql-proxy force @everybody
net-snmp26 dubrsl @everybody
net-snmp30 dubrsl @everybody
ntfsprogs @nobody
ntrack zerg @everybody
obexftp week
ocaml bga avm @qa @everybody
ocaml-cryptokit boris @everybody
openbabel mike zerg @qa
opendbx boyarsh
openjade aris @everybody
owfs zver @python
p4est real @everybody
papi real @qa @everybody
pastix real @qa @everybody
perl-Text-BibTeX kirill @cpan @everybody
pgpool-II open @everybody
pgtcl mithraen
php5 rider
php5-ctpp mithraen @everybody
php5-magickwand rider naf
php5-pgsql rider @everybody
pike7.8 boris @everybody
plan9 peet @everybody
plotutils lav @qa
pstoedit oddity rider
python-module-pysvn gik @python
qhull manowar real
qrencode force @everybody
qutim nenderus @everybody
quvi aris @gnome
racket real @everybody
raptor real @everybody
rarpd @nobody
rasqal zerg @everybody
rawstudio force @everybody
recode mike @qa @everybody
reiser4progs seriv @everybody
runawfe kana @everybody
salsa-complex real @qa @everybody
salsa-real real @qa @everybody
sane-frontends lav @qa
serveez @nobody
silo real sin @python @qa @everybody
sim drool @qa
sks boris @everybody
slang2 gns @qa
slurm real @qa @everybody
smalltalk ildar
smpeg real @everybody
speex mithraen
sundials real @qa @everybody
sword lav azol @qa @everybody
t1lib mike @qa @everybody
tastymenu drool
tau real sin @python @qa @everybody
tcl-plugin sbolshakov
telepathy-logger aris
telepathy-mission-control aris
toxine @nobody
tre mike @qa avm
vips mike rom_as @qa force @everybody
wildmidi george @everybody
wimax-network-service @nobody
wxsvg dubrsl @qa
xar @nobody
xdrfile real @qa @everybody
xfdiff @nobody
xforms viy @everybody
xfprint @xfce oddity
xine-ui boyarsh @everybody
xmedcon anyr @everybody
xmms mike eugvv bp gns @qa real
xmorph george @qa
xsane lav @qa
zeromq crux @everybody
zziplib force @everybody
Я предлагаю считать наличие путей к стандартным библиотекам в RPATH
ошибками, приводящими к ошибке сборки в режиме проверки rpath=normal.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread