* [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: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: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
* 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: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
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