ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [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