ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Q: pkg-config: Requires.private == Requires?
  @ 2010-10-31 21:37 ` Dmitry V. Levin
  2010-11-01  8:10   ` Alexey I. Froloff
                     ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2010-10-31 21:37 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1124 bytes --]

On Sun, Oct 31, 2010 at 01:44:42PM +0300, Girar Builder robot wrote:
> http://git.altlinux.org/tasks/archive/done/_30/31696/task/log.2.2

В результате этого изменения (а именно, благодаря коммиту
libXft-2.1.14-16-g8751e34) у пакета libXft-devel пропали зависимости на
pkgconfig(fontconfig)
pkgconfig(freetype2)
pkgconfig(xrender)
и сломалась сборка более 70 пакетов в Сизифе.

Согласно документации в pkg-config(1)
(см. http://cgit.freedesktop.org/pkg-config/tree/pkg-config.1)
в Requires.private записываются только те зависимости, которые нужны
именно для статической линковки.

К сожалению, в fdo-пакетах это правило грубо нарушается.
Из-за массового переноса зависимостей у fdo-пакетов из Requires
в Requires.private происходит размывание разницы между Requires и
Requires.private.  У нас есть выбор из двух вариантов:
- исправить все fdo-пакеты, в которых зависимости для динамической
  линковки Requires неправильно указаны как зависимости для сатической
  линковки Requires.private;
- захакать pkg-config(1) с тем, чтобы приравнять Requires.private к
  Requires.

Что скажете?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-10-31 21:37 ` [devel] Q: pkg-config: Requires.private == Requires? Dmitry V. Levin
@ 2010-11-01  8:10   ` Alexey I. Froloff
  2010-11-01  8:57   ` Konstantin Pavlov
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Alexey I. Froloff @ 2010-11-01  8:10 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 324 bytes --]

On Mon, Nov 01, 2010 at 12:37:42AM +0300, Dmitry V. Levin wrote:
> - исправить все fdo-пакеты, в которых зависимости для динамической
>   линковки Requires неправильно указаны как зависимости для сатической
>   линковки Requires.private;
+1

-- 
Regards,    --
Sir Raorn.   --- http://thousandsofhate.blogspot.com/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-10-31 21:37 ` [devel] Q: pkg-config: Requires.private == Requires? Dmitry V. Levin
  2010-11-01  8:10   ` Alexey I. Froloff
@ 2010-11-01  8:57   ` Konstantin Pavlov
  2010-11-01  9:17   ` sbolshakov
  2010-11-01  9:32   ` Dmitry V. Levin
  3 siblings, 0 replies; 9+ messages in thread
From: Konstantin Pavlov @ 2010-11-01  8:57 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 281 bytes --]

On Mon, Nov 01, 2010 at 12:37:42AM +0300, Dmitry V. Levin wrote:
> - захакать pkg-config(1) с тем, чтобы приравнять Requires.private к
>   Requires.

Такое делать нельзя.

-- 
Ваша версия BTE устанавливает пакеты с правами root'а, что есть insecure.   
		-- ldv in devel@

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-10-31 21:37 ` [devel] Q: pkg-config: Requires.private == Requires? Dmitry V. Levin
  2010-11-01  8:10   ` Alexey I. Froloff
  2010-11-01  8:57   ` Konstantin Pavlov
@ 2010-11-01  9:17   ` sbolshakov
  2010-11-01  9:32   ` Dmitry V. Levin
  3 siblings, 0 replies; 9+ messages in thread
From: sbolshakov @ 2010-11-01  9:17 UTC (permalink / raw)
  To: devel

>>>>> "Dmitry" == Dmitry V Levin <ldv-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org> writes:
[skipped]

 > Из-за массового переноса зависимостей у fdo-пакетов из Requires
 > в Requires.private происходит размывание разницы между Requires и
 > Requires.private.  У нас есть выбор из двух вариантов:
 > - исправить все fdo-пакеты, в которых зависимости для динамической
 >   линковки Requires неправильно указаны как зависимости для сатической
 >   линковки Requires.private;
 > - захакать pkg-config(1) с тем, чтобы приравнять Requires.private к
 >   Requires.

Видимо первое, поскольку второе выглядит совсем, эээ, своеобразно.

-- 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-10-31 21:37 ` [devel] Q: pkg-config: Requires.private == Requires? Dmitry V. Levin
                     ` (2 preceding siblings ...)
  2010-11-01  9:17   ` sbolshakov
@ 2010-11-01  9:32   ` Dmitry V. Levin
  2010-11-01  9:51     ` Valery V. Inozemtsev
  3 siblings, 1 reply; 9+ messages in thread
From: Dmitry V. Levin @ 2010-11-01  9:32 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

On Mon, Nov 01, 2010 at 12:37:42AM +0300, Dmitry V. Levin wrote:
> У нас есть выбор из двух вариантов:
> - исправить все fdo-пакеты, в которых зависимости для динамической
>   линковки Requires неправильно указаны как зависимости для сатической
>   линковки Requires.private;
> - захакать pkg-config(1) с тем, чтобы приравнять Requires.private к
>   Requires.

После обсуждения с fdoшниками, которые не хотят идти по первому варианту,
склоняюсь ко второму.  Только pkg-config(1) я трогать не буду, даже
наоборот, откачу часть ALT-специфики в pkg-config с тем, чтобы
pkg-config --cflags использовал Requires.private, как у всех. :(

2shrek: Валера, готовься к слепой пересборке всей этой пачки пакетов
после того, как в Сизиф приедет новый rpm-build.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-11-01  9:32   ` Dmitry V. Levin
@ 2010-11-01  9:51     ` Valery V. Inozemtsev
  2010-11-02  0:14       ` Dmitry V. Levin
  0 siblings, 1 reply; 9+ messages in thread
From: Valery V. Inozemtsev @ 2010-11-01  9:51 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1372 bytes --]

В Пнд, 01/11/2010 в 12:32 +0300, Dmitry V. Levin пишет:
> On Mon, Nov 01, 2010 at 12:37:42AM +0300, Dmitry V. Levin wrote:
> > У нас есть выбор из двух вариантов:
> > - исправить все fdo-пакеты, в которых зависимости для динамической
> >   линковки Requires неправильно указаны как зависимости для сатической
> >   линковки Requires.private;
> > - захакать pkg-config(1) с тем, чтобы приравнять Requires.private к
> >   Requires.
> 
> После обсуждения с fdoшниками, которые не хотят идти по первому варианту,
> склоняюсь ко второму.  Только pkg-config(1) я трогать не буду, даже
> наоборот, откачу часть ALT-специфики в pkg-config с тем, чтобы
> pkg-config --cflags использовал Requires.private, как у всех. :(
> 
> 2shrek: Валера, готовься к слепой пересборке всей этой пачки пакетов
> после того, как в Сизиф приедет новый rpm-build.

а я уж собрался фиксить .pc файлы. ждем-с

-- 
Valery V. Inozemtsev

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-11-01  9:51     ` Valery V. Inozemtsev
@ 2010-11-02  0:14       ` Dmitry V. Levin
  2010-11-02 16:29         ` Michael Shigorin
  0 siblings, 1 reply; 9+ messages in thread
From: Dmitry V. Levin @ 2010-11-02  0:14 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 3048 bytes --]

On Mon, Nov 01, 2010 at 12:51:55PM +0300, Valery V. Inozemtsev wrote:
> а я уж собрался фиксить .pc файлы. ждем-с

В Сизифе обнаружилось 105 с нетривиальным Requires.private:

ORBit2-devel
libGConf-devel
libGL-devel
libGLUT-devel
libGLw-devel
libSM-devel
libX11-devel
libXScrnSaver-devel
libXaw-devel
libXcomposite-devel
libXcursor-devel
libXdamage-devel
libXevie-devel
libXext-devel
libXfixes-devel
libXfont-devel
libXft-devel
libXi-devel
libXinerama-devel
libXmu-devel
libXp-devel
libXrandr-devel
libXrender-devel
libXres-devel
libXt-devel
libXtst-devel
libXv-devel
libXvMC-devel
libXxf86dga-devel
libXxf86misc-devel
libXxf86vm-devel
libass-devel
libautotrace-devel
libavahi-gobject-devel
libavahi-qt3-devel
libavahi-qt4-devel
libavcodec-devel
libavcore-devel
libavdevice-devel
libavfilter-devel
libavformat-devel
libblkid-devel
libbonoboui-devel
libcairo-devel
libchamplain-devel
libcheese-devel
libdevhelp-devel
libdevmapper-devel
libdevmapper-event-devel
libdmx-devel
libdrm-devel
libdvdnav-devel
libe2fs-devel
libecore-devel
libedbus-devel
libedje-devel
libeet-devel
libeeze-devel
libefreet-devel
libelementary-devel
libesd-devel
libevas-devel
libftgl213-devel
libgnome-bluetooth-devel
libgnome-devel
libgnomecanvas-devel
libgnomeoffice-devel
libgnomeoffice-light-devel
libgnomeui-devel
libgssdp-devel
libgtksourceview-devel
libgucharmap-devel
libgupnp-devel
libgweather-devel
libldb-devel
liblvm2-devel
libmount-devel
libpcre-devel
libpoppler-cpp-devel
libpoppler-glib-devel
libpoppler-qt-devel
libpoppler-qt4-devel
libpowersave-devel
libredland-devel
libselinux-devel
libsemanage-devel
libslab-devel
libsoup-devel
libss-devel
libswscale-devel
libtelepathy-farsight-devel
libtelepathy-glib-devel
libtotem-pl-parser-devel
libupower-devel
libv4l-devel
libvdpau-devel
libwnck-devel
libxcb-devel
libxkbfile-devel
libxprintutil-devel
python-module-pygobject-devel
rhythmbox-devel
rygel-devel
tracker-devel
xorg-sdk

Все эти пакеты при очередной сборке получат больше зависимостей, чем они
имеют сейчас.  Многие из них не соберутся из-за того, что сейчас требуемых
зависимостей нет в сборочных средах этих пакетов.

К сожалению, из-за тупых fdoшников пострадают нормальные пакеты, которые
используют Requires.private именно для зависимостей статической линковки.

Например,
$ grep ^Req libselinux.pc
Requires.private: libsepol
Как известно, для компиляции и нестатической линковки с libselinux
никакой libsepol не нужен.

Мейнтейнерам придётся самим решать, что с этим делать.
Простых варианта два:
- выкинуть Requires.private, поскольку статическая линковка это экзотика;
- добавить мусор в сборочные зависимости, после чего этот мусор попадет в
  зависимости собранных devel-пакетов.

Есть и более сложные варианты.  На примере того же libselinux.pc,
можно заменить
Requires.private: libsepol
на
Libs.private: -lsepol

Тогда и зависимостей лишних не будет, и статическая линковка не сломается.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-11-02  0:14       ` Dmitry V. Levin
@ 2010-11-02 16:29         ` Michael Shigorin
  2010-11-02 16:41           ` Dmitry V. Levin
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Shigorin @ 2010-11-02 16:29 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, Nov 02, 2010 at 03:14:41AM +0300, Dmitry V. Levin wrote:
> К сожалению, из-за тупых fdoшников пострадают нормальные
> пакеты, которые используют Requires.private именно для
> зависимостей статической линковки.

Может, попытаться выпрямить fdo'шников?  Ну там, рулесы им
процитировать?  На #freedesktop сослались на pkg-config FAQ
и предложили для начала выяснить в pkg-config@l.fd.o:

<gvy> hi folks, does "broken Requires.private" bell any rings to
      anyone?  lots of fd.o software has broken pkgconfig files
      using that instead of Libs.private as our (ALT Linux)
      builsystem folks say
<nchauvet> gvy, Requires.private isn't a strict pkgconfig
	   equivalent of Libs.private IIRC, the thing is that
	   this option still might not be well documented still.
	   But for example Requires.private also affect CFLAGS of
	   shared libraries.
<gvy> nchauvet, thx, I'll forward
<gvy> nchauvet, btw it was further recommended for the packagers
      to contemplate options like replacing "Requires.private:
      libsepol" with "Libs.private: -lsepol" (for libselinux.pc)
<alanc> I know the alt Linux guys have been whining that the new
	Xorg releases follow the Requires.private recommendations
	from the pkg-config FAQ, because that's not the way they
	want to use them
<gvy> hm
<alanc> but I haven't seen them follow our suggestion to take it
	to the pkg-config mailing list so the maintainers like
	Mithrandir can respond
<jcristau> i haven't quite understood what their problem was in
           the first place
<gvy> well currently we have the choice of:
<alanc> changing Requires.private to Libs.private like that seems
	like going backwards though, since you lose the
	inheritance of the required -I & -L flags from the other
	.pc files
<gvy> - autoignoring Requires.private (thus breaking static builds);
<gvy> - pulling in extra junk for non-static builds (which would
        be !junk for static ones);
<gvy> - doing the replacement on a per package basis
<nchauvet> gvy, autoignoring requires.private also break shared
           build when private 'headers' are involved
* alanc is tempted to call "breaking static linking" a feature,
  but then I'm well past 1980 in my library linking usage
<nchauvet> private =/= static library
<gvy> :-)
<jcristau> pulling in possibly unnneeded stuff for builds doesn't
           seem all that terrible
<gvy> nchauvet, /me's not a toolchain expert by any means, rather
      trying to build up communication where it seems lacking
<nchauvet> gvy, you might fall into on my only contrib to the
           pkgconfig mailing list, then
<gvy> er? :)
<gvy> for a bit of context, ALT widely uses autogenerated package
      dependencies
<gvy> both build-time via stracing the build and then mapping
      fopens into package/soname buildrequires
<gvy> and runtime via builroot analysis
<gvy> there is also quite a notion that starting to pull in
      possibly unneeded stuff is a regression
<alanc> hah!   the complaint we got was because we moved unneeded
        stuff out of Requires
<alanc> or rather, libraries that applications didn't need to
        directly link against
<jcristau> it sounded like their pkg-config was broken and
           ignoring .private fields when it shouldn't have
<gvy> hm, could you please remember who (or where) was that so
      that I don't duplicate the effort (presumably poorly) and
      spend everyone's time?
<jcristau> https://bugs.freedesktop.org/show_bug.cgi?id=31267
<jcristau> but as was said there, this should be taken to the
           pkg-config mailing list, not on an xorg bug
<gvy> thx
<gvy> ah, so I was duplicating ldv@ himself (btw he's a gcc/glibc
      hacker iirc and not exactly prone to whining)
<gvy> thanks, guys

(и кстати, "с таким настроением ты слона не продашь" --
в смысле что все козлы и не понимают очевидных вещей)

> Мейнтейнерам придётся самим решать, что с этим делать.
> Простых варианта два:
> - выкинуть Requires.private, поскольку статическая линковка это экзотика;

Годится, если и так нет devel-static; вообще это менее экзотика,
чем кажется в аквариуме с сизифами.  Припомни, что каждый раз,
как порывались её закопать -- приходили грамотные люди вроде
morozov@ и терпеливо объясняли, почему это была плохая идея.

> - добавить мусор в сборочные зависимости, после чего этот мусор попадет в
>   зависимости собранных devel-пакетов.

BR?  Этот вариант зацепляет по большей части hasher'ы, так?

> Есть и более сложные варианты.  На примере того же
> libselinux.pc, можно заменить Requires.private: libsepol
> на Libs.private: -lsepol
> 
> Тогда и зависимостей лишних не будет, и статическая линковка не сломается.

PS: также стоило сослаться на соответствующий апстримный баг:
https://bugs.freedesktop.org/show_bug.cgi?id=31267

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Q: pkg-config: Requires.private == Requires?
  2010-11-02 16:29         ` Michael Shigorin
@ 2010-11-02 16:41           ` Dmitry V. Levin
  0 siblings, 0 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2010-11-02 16:41 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1480 bytes --]

On Tue, Nov 02, 2010 at 06:29:05PM +0200, Michael Shigorin wrote:
> On Tue, Nov 02, 2010 at 03:14:41AM +0300, Dmitry V. Levin wrote:
> > К сожалению, из-за тупых fdoшников пострадают нормальные
> > пакеты, которые используют Requires.private именно для
> > зависимостей статической линковки.
> 
> Может, попытаться выпрямить fdo'шников?  Ну там, рулесы им
> процитировать?  На #freedesktop сослались на pkg-config FAQ
> и предложили для начала выяснить в pkg-config@l.fd.o:
[...]
> (и кстати, "с таким настроением ты слона не продашь" --
> в смысле что все козлы и не понимают очевидных вещей)

К сожалению, нынешняя архитектура pkg-config не позволяет сделать так,
чтобы и волки были сыты, и овцы целы.

Сейчас pkg-config поддерживает два типа описания зависимостей (Requires
и Requires.private) для трех типов зависимостей: зависимости компиляции,
зависимости динамической линковки и зависимости статической линковки.

В случае, когда у пакета все три типа зависимостей разные, нынешний
pkg-config не годится для их описания, и один из типов зависимостей
приходится приносить в жертву, используя Requires.private либо для
указания зависимостей статической линковки (как было раньше), либо
для зависимостей компиляции (как сделали недавно в fdo).

Т.е. Requires.private нужно распилить на Requires.compile и
Requires.static, и с этим действительно нужно идти в pkg-config@l.fd.o,
но это дело долгое, и на это у меня сейчас нет времени.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-11-02 16:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-31 21:37 ` [devel] Q: pkg-config: Requires.private == Requires? Dmitry V. Levin
2010-11-01  8:10   ` Alexey I. Froloff
2010-11-01  8:57   ` Konstantin Pavlov
2010-11-01  9:17   ` sbolshakov
2010-11-01  9:32   ` Dmitry V. Levin
2010-11-01  9:51     ` Valery V. Inozemtsev
2010-11-02  0:14       ` Dmitry V. Levin
2010-11-02 16:29         ` Michael Shigorin
2010-11-02 16:41           ` Dmitry V. Levin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git