* [sisyphus] --as-needed && pkg-config/Libs.private
@ 2007-02-07 10:56 Mikhail Gusarov
2007-02-09 6:09 ` Alexey Rusakov
2007-02-09 6:31 ` Damir Shayhutdinov
0 siblings, 2 replies; 12+ messages in thread
From: Mikhail Gusarov @ 2007-02-07 10:56 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Приветствую.
Поскольку много upstream'ов отказываются включать --as-needed в сборку
(по-разному это мотивируя. некоторые мотивы достаточно существенны для
upstream'а, такие как странная работа ass-needed на не-x86
архитектурах), предлагаю обратить внимание, что в pkg-config, начиная
с версии 0.18 (аж от лета 2005 года), добавлена возможность деления
библиотек на два класса: необходимых для динамической линковки, и
дополнительных, для статической (Libs и Libs.private).
Соответственно, вместо лечения линковки лишних библиотек "по месту" в
каждом приложении, можно приложить патч, разделяющий библиотеки на
Libs и Libs.private на библиотеку, и пропихивать в upstream уже его. В
продавливании таких патчей Сизиф автоматически получает себе в
союзники Debian.
--
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-07 10:56 [sisyphus] --as-needed && pkg-config/Libs.private Mikhail Gusarov
@ 2007-02-09 6:09 ` Alexey Rusakov
2007-02-09 6:31 ` Damir Shayhutdinov
1 sibling, 0 replies; 12+ messages in thread
From: Alexey Rusakov @ 2007-02-09 6:09 UTC (permalink / raw)
To: sisyphus
On Wed, 07 Feb 2007 16:56:09 +0600
Mikhail Gusarov wrote:
> Приветствую.
>
> Поскольку много upstream'ов отказываются включать --as-needed в сборку
> (по-разному это мотивируя. некоторые мотивы достаточно существенны для
> upstream'а, такие как странная работа ass-needed на не-x86
> архитектурах), предлагаю обратить внимание, что в pkg-config, начиная
> с версии 0.18 (аж от лета 2005 года), добавлена возможность деления
> библиотек на два класса: необходимых для динамической линковки, и
> дополнительных, для статической (Libs и Libs.private).
>
> Соответственно, вместо лечения линковки лишних библиотек "по месту" в
> каждом приложении, можно приложить патч, разделяющий библиотеки на
> Libs и Libs.private на библиотеку, и пропихивать в upstream уже его. В
> продавливании таких патчей Сизиф автоматически получает себе в
> союзники Debian.
Добавлю от себя, что как раз на днях тема Libs.private была поднята в
одном из списков рассылки GNOME и обнаружилось достаточно
серьёзное отношение к корректно заполненному Libs.private.
--
Alexey "Ktirf" Rusakov
GNOME Project
ALT Linux Team
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-07 10:56 [sisyphus] --as-needed && pkg-config/Libs.private Mikhail Gusarov
2007-02-09 6:09 ` Alexey Rusakov
@ 2007-02-09 6:31 ` Damir Shayhutdinov
2007-02-09 6:43 ` Mikhail Gusarov
2007-02-09 6:45 ` Mikhail Gusarov
1 sibling, 2 replies; 12+ messages in thread
From: Damir Shayhutdinov @ 2007-02-09 6:31 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
> Поскольку много upstream'ов отказываются включать --as-needed в сборку
> (по-разному это мотивируя. некоторые мотивы достаточно существенны для
> upstream'а, такие как странная работа ass-needed на не-x86
> архитектурах), предлагаю обратить внимание, что в pkg-config, начиная
> с версии 0.18 (аж от лета 2005 года), добавлена возможность деления
> библиотек на два класса: необходимых для динамической линковки, и
> дополнительных, для статической (Libs и Libs.private).
К сожалению, лишь малая часть проблем с --as-needed связана с
pkgconfig. Точнее, из-за избыточности библиотек, которые представляет
pkg-config --libs, проблем вообще не бывает.
> Соответственно, вместо лечения линковки лишних библиотек "по месту" в
> каждом приложении, можно приложить патч, разделяющий библиотеки на
> Libs и Libs.private на библиотеку, и пропихивать в upstream уже его. В
> продавливании таких патчей Сизиф автоматически получает себе в
> союзники Debian.
Ты путаешь. Мы не лечим линковку "лишних" библиотек. Мы лечим линковку
недостаточных библиотек. pkg-config тут не причем.
У нормальных апстримов (особенно тех, кто поддерживает статические
сборки) проблем с --as-needed не бывает.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 6:31 ` Damir Shayhutdinov
@ 2007-02-09 6:43 ` Mikhail Gusarov
2007-02-09 6:50 ` Damir Shayhutdinov
2007-02-09 6:45 ` Mikhail Gusarov
1 sibling, 1 reply; 12+ messages in thread
From: Mikhail Gusarov @ 2007-02-09 6:43 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Twas brillig at 09:31:22 when Damir Shayhutdinov did gyre and gimble:
DS> Ты путаешь. Мы не лечим линковку "лишних" библиотек. Мы лечим
DS> линковку недостаточных библиотек. pkg-config тут не причем.
А как вообще --as-needed может лечить недолинковку?
-- ld(1) ---------------------------------------------------------------
Normally, the linker will add a DT_NEEDED tag for each dynamic library
mentioned on the command line, regardless of whether the library is
actually needed. --as-needed causes DT_NEEDED tags to only be emit‐
ted for libraries that satisfy some symbol reference from regular
objects which is undefined at the point that the library was linked.
------------------------------------------------------------------------
Тут ничего про новые библиотеки говорится. Только про откусывание
ненужных.
DS> У нормальных апстримов (особенно тех, кто поддерживает
DS> статические сборки) проблем с --as-needed не бывает.
Дело в том, что "нормальность" - понятие субъективное.
--
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 6:31 ` Damir Shayhutdinov
2007-02-09 6:43 ` Mikhail Gusarov
@ 2007-02-09 6:45 ` Mikhail Gusarov
2007-02-09 6:58 ` Damir Shayhutdinov
1 sibling, 1 reply; 12+ messages in thread
From: Mikhail Gusarov @ 2007-02-09 6:45 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Twas brillig at 09:31:22 when Damir Shayhutdinov did gyre and gimble:
DS> Точнее, из-за избыточности библиотек, которые представляет
DS> pkg-config --libs, проблем вообще не бывает.
Бывают. Вот, скажем:
http://lists.debian.org/debian-devel-announce/2005/11/msg00016.html
--
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 6:43 ` Mikhail Gusarov
@ 2007-02-09 6:50 ` Damir Shayhutdinov
2007-02-09 8:07 ` Mikhail Gusarov
0 siblings, 1 reply; 12+ messages in thread
From: Damir Shayhutdinov @ 2007-02-09 6:50 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
> DS> Ты путаешь. Мы не лечим линковку "лишних" библиотек. Мы лечим
> DS> линковку недостаточных библиотек. pkg-config тут не причем.
>
> А как вообще --as-needed может лечить недолинковку?
Очень просто. Недолинкованную библиотеку невозможно прилинковать
куда-либо, пока не отключишь --as-needed.
> Тут ничего про новые библиотеки говорится. Только про откусывание
> ненужных.
Реальность оказалась страшнее чем документация :)
> DS> У нормальных апстримов (особенно тех, кто поддерживает
> DS> статические сборки) проблем с --as-needed не бывает.
>
> Дело в том, что "нормальность" - понятие субъективное.
У нормальных = у тех, которые долинковывают все свои библиотеки.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 6:45 ` Mikhail Gusarov
@ 2007-02-09 6:58 ` Damir Shayhutdinov
0 siblings, 0 replies; 12+ messages in thread
From: Damir Shayhutdinov @ 2007-02-09 6:58 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
> DS> Точнее, из-за избыточности библиотек, которые представляет
> DS> pkg-config --libs, проблем вообще не бывает.
>
> Бывают. Вот, скажем:
> http://lists.debian.org/debian-devel-announce/2005/11/msg00016.html
С этим бывают проблемы только у тех дистрибутивов, которые не
используют --as-needed.
Если дебиан может себе позволить тратить ресурсы на тяжелое решение
(введение и проверку всех этих тысяч пакетов с pkgconfig и
Libs.private, а так же проверка всех остальных пакетов), то Альту
по-моему это не по плечу, тем более что у нас используется хоть и
менее переносимое, но зато более правильное решение, которые
исправляет все пакеты, а не только те которые зависят от pkg-config.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 6:50 ` Damir Shayhutdinov
@ 2007-02-09 8:07 ` Mikhail Gusarov
2007-02-09 9:23 ` Damir Shayhutdinov
0 siblings, 1 reply; 12+ messages in thread
From: Mikhail Gusarov @ 2007-02-09 8:07 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Twas brillig at 09:50:35 when Damir Shayhutdinov did gyre and gimble:
DS> Очень просто. Недолинкованную библиотеку невозможно прилинковать
DS> куда-либо, пока не отключишь --as-needed.
То есть использование --ass-needed вскрывает баги, скрытые её
неприменением. Тогда, как мне кажется, обращение к upstream вместо
идеи
"давайте --ass-needed добавим, и тут ещё вот это и вот это
прилинковать, чтобы работало",
на которую upstream спокойно ответит "Debian considers it as a hack"
или чем-нибудь подобным, может быть таков:
"мы тут собрали с --ass-needed вашу либу, и она не линкует вот это и
вот это. Хорошей практикой является линковать всё [[тут <ссылка на
хорошую практику>, у Дреппера, кажется, было]], и это заодно позволит
собирать вашу библиотеку статически, если потребуется. Вот патчи для
долинковки всего, а вот (сугубо на ваш вкус) патч на сборку с
--ass-needed, чтобы вы всегда могли проверить, правильно ли слинкована
ваша библиотека".
С упором не на --ass-needed (это, в конце-концов, лишь деталь), а на
правила сборки shared libraries.
>> Тут ничего про новые библиотеки говорится. Только про откусывание
>> ненужных.
DS> Реальность оказалась страшнее чем документация :)
Да и то, и другое не так уж и страшны, на поверку.
--
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 8:07 ` Mikhail Gusarov
@ 2007-02-09 9:23 ` Damir Shayhutdinov
2007-02-09 17:55 ` Dmitry V. Levin
0 siblings, 1 reply; 12+ messages in thread
From: Damir Shayhutdinov @ 2007-02-09 9:23 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
> DS> Очень просто. Недолинкованную библиотеку невозможно прилинковать
> DS> куда-либо, пока не отключишь --as-needed.
>
> То есть использование --ass-needed вскрывает баги, скрытые её
> неприменением. Тогда, как мне кажется, обращение к upstream вместо
> идеи.
> "давайте --ass-needed добавим, и тут ещё вот это и вот это
> прилинковать, чтобы работало",
Никто так не обращается, и от апстрима никто собирать с
-Wl,--as-needed не требует :)
> на которую upstream спокойно ответит "Debian considers it as a hack"
> или чем-нибудь подобным, может быть таков:
>
> "мы тут собрали с --ass-needed вашу либу, и она не линкует вот это и
> вот это. Хорошей практикой является линковать всё [[тут <ссылка на
> хорошую практику>, у Дреппера, кажется, было]], и это заодно позволит
> собирать вашу библиотеку статически, если потребуется. Вот патчи для
> долинковки всего, а вот (сугубо на ваш вкус) патч на сборку с
> --ass-needed, чтобы вы всегда могли проверить, правильно ли слинкована
> ваша библиотека".
Я всегда так и говорил. Часть ведутся. Часть нет - говорят "мы сами
умные, и знаем как правильно линковать, а Дреппер просто нефтеме".
А что при долинковке появляются не только зависимости на soname, но и
на versioned symbols - многих просто не волнует.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 9:23 ` Damir Shayhutdinov
@ 2007-02-09 17:55 ` Dmitry V. Levin
2007-02-09 18:42 ` Damir Shayhutdinov
2007-02-12 16:33 ` Mikhail Gusarov
0 siblings, 2 replies; 12+ messages in thread
From: Dmitry V. Levin @ 2007-02-09 17:55 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
[-- Attachment #1: Type: text/plain, Size: 2769 bytes --]
On Fri, Feb 09, 2007 at 12:23:36PM +0300, Damir Shayhutdinov wrote:
> > DS> Очень просто. Недолинкованную библиотеку невозможно прилинковать
> > DS> куда-либо, пока не отключишь --as-needed.
> >
> > То есть использование --ass-needed вскрывает баги, скрытые её
> > неприменением. Тогда, как мне кажется, обращение к upstream вместо
> > идеи.
> > "давайте --ass-needed добавим, и тут ещё вот это и вот это
> > прилинковать, чтобы работало",
> Никто так не обращается, и от апстрима никто собирать с
> -Wl,--as-needed не требует :)
Обычно речь идёт о том, чтобы исправить сборку таким образом, чтобы
собиралось правильно как с --as-needed, так и с --no-as-needed.
> > на которую upstream спокойно ответит "Debian considers it as a hack"
> > или чем-нибудь подобным, может быть таков:
> >
> > "мы тут собрали с --ass-needed вашу либу, и она не линкует вот это и
> > вот это. Хорошей практикой является линковать всё [[тут <ссылка на
> > хорошую практику>, у Дреппера, кажется, было]], и это заодно позволит
> > собирать вашу библиотеку статически, если потребуется. Вот патчи для
> > долинковки всего, а вот (сугубо на ваш вкус) патч на сборку с
> > --ass-needed, чтобы вы всегда могли проверить, правильно ли слинкована
> > ваша библиотека".
>
> Я всегда так и говорил. Часть ведутся. Часть нет - говорят "мы сами
> умные, и знаем как правильно линковать, а Дреппер просто нефтеме".
>
> А что при долинковке появляются не только зависимости на soname, но и
> на versioned symbols - многих просто не волнует.
Я не уверен что всем понятно, почему это происходит.
Давайте попробуем перечислить все возможные недостатки недолинкованных и
перелинкованных ELFов.
Недолинковка (ELF object не слинкован со всеми необходимыми библиотеками):
- Отсутствие необходимых зависимостей на soname делает бесполезным soname
versioning в используемых библиотеках.
В худшем случае это может привести к ошибкам времени выполнения.
- Аналогично, отсутствие необходимых зависимостей на символы с версиями
сводит на нет symbol versioning в используемых библиотеках.
В худшем случае это может привести к ошибкам времени выполнения.
- С недолинкованными библиотеками невозможно линковаться в режиме
--as-needed.
- К недолинкованным объектам неприменим prelink.
Перелинковка (ELF object слинкован с ненужными библиотеками):
- Ненужные библиотеки замедляют работу dynamic linker'а, и, как следствие,
замедляют загрузку ELF object'а.
- Ненужные библиотеки увеличивают объём памяти, занимаемой процессом.
- Ненужные библиотеки приводят к избыточным зависимостям между пакетами,
что в свою очередь приводит к лишней работе мантейнеров пакетов при
изменении интерфейсов в этих библиотеках.
Что я упустил?
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 17:55 ` Dmitry V. Levin
@ 2007-02-09 18:42 ` Damir Shayhutdinov
2007-02-12 16:33 ` Mikhail Gusarov
1 sibling, 0 replies; 12+ messages in thread
From: Damir Shayhutdinov @ 2007-02-09 18:42 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
> > Я всегда так и говорил. Часть ведутся. Часть нет - говорят "мы сами
> > умные, и знаем как правильно линковать, а Дреппер просто нефтеме".
> >
> > А что при долинковке появляются не только зависимости на soname, но и
> > на versioned symbols - многих просто не волнует.
>
> Я не уверен что всем понятно, почему это происходит.
>
> Давайте попробуем перечислить все возможные недостатки недолинкованных и
> перелинкованных ELFов.
>
> Недолинковка (ELF object не слинкован со всеми необходимыми библиотеками):
> - Отсутствие необходимых зависимостей на soname делает бесполезным soname
> versioning в используемых библиотеках.
> В худшем случае это может привести к ошибкам времени выполнения.
> - Аналогично, отсутствие необходимых зависимостей на символы с версиями
> сводит на нет symbol versioning в используемых библиотеках.
> В худшем случае это может привести к ошибкам времени выполнения.
> - С недолинкованными библиотеками невозможно линковаться в режиме
> --as-needed.
> - К недолинкованным объектам неприменим prelink.
>
> Перелинковка (ELF object слинкован с ненужными библиотеками):
> - Ненужные библиотеки замедляют работу dynamic linker'а, и, как следствие,
> замедляют загрузку ELF object'а.
> - Ненужные библиотеки увеличивают объём памяти, занимаемой процессом.
> - Ненужные библиотеки приводят к избыточным зависимостям между пакетами,
> что в свою очередь приводит к лишней работе мантейнеров пакетов при
> изменении интерфейсов в этих библиотеках.
Плюс это в принципе может привести к нахождению в одном адресном
пространстве двух версий библиотек с разными soname = ошибки времени
выполнения в период "переезда" - когда часть пакетов слинкована со
старой библиотекой, а часть - с новой.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [sisyphus] --as-needed && pkg-config/Libs.private
2007-02-09 17:55 ` Dmitry V. Levin
2007-02-09 18:42 ` Damir Shayhutdinov
@ 2007-02-12 16:33 ` Mikhail Gusarov
1 sibling, 0 replies; 12+ messages in thread
From: Mikhail Gusarov @ 2007-02-12 16:33 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Перенёс в wiki. Предлагаю эту страницу дописывать до состояния, когда
можно будет upstream'ам прямо давать ссылку на неё, и они, прочитав,
побегут, высунув язык, фиксить overlinking и underlinking ;)
http://wiki.sisyphus.ru/devel/UpStream/UnderOverLinkProblems
--
JID: dottedmag@jabber.dottedmag.net
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2007-02-12 16:33 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-07 10:56 [sisyphus] --as-needed && pkg-config/Libs.private Mikhail Gusarov
2007-02-09 6:09 ` Alexey Rusakov
2007-02-09 6:31 ` Damir Shayhutdinov
2007-02-09 6:43 ` Mikhail Gusarov
2007-02-09 6:50 ` Damir Shayhutdinov
2007-02-09 8:07 ` Mikhail Gusarov
2007-02-09 9:23 ` Damir Shayhutdinov
2007-02-09 17:55 ` Dmitry V. Levin
2007-02-09 18:42 ` Damir Shayhutdinov
2007-02-12 16:33 ` Mikhail Gusarov
2007-02-09 6:45 ` Mikhail Gusarov
2007-02-09 6:58 ` Damir Shayhutdinov
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git