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