* [devel] pkg-config Requires.private - полчища саранчи и враги народа @ 2011-02-27 14:38 Alexey Tourbin 2011-02-27 16:45 ` Damir Shayhutdinov 2011-03-02 5:50 ` Yuri N. Sedunov 0 siblings, 2 replies; 21+ messages in thread From: Alexey Tourbin @ 2011-02-27 14:38 UTC (permalink / raw) To: devel Некоторые пакеты из freedesktop.org испортили враги народа - они переместили pkgconfig зависимости из Requires в Requires.private. По их логике, если программа не линкуется напрямую с дополнительными библиотеками, то в Requires их указывать не надо. Но в то же время при компиляции могут включаться хедеры дополнительных библиотек. Так что сборка пакетов стала ломаться из-за отсутствия нужных хедеров, и в rpm 4.0.4-alt100.2 пришлось приравнять Requires.private к Requires. В результате многие пакеты обросли лишними pkgconfig зависимостями на *-devel пакеты. Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): 1) Оставлять в зависимостях только Requires, а Requires.private убрать. 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры включаются, чтобы появились дополнительные зависимости на *-devel пакеты с хедерами. Скрипт cpp.req был написан почти три года назад, но в нём не было необходимости, т.к. pkgconfig.req давал неплохой результат. Никогда не знаешь, чего придётся доставать из штанин. Вот примеры того, как изменятся зависимости. $ compare_packages -i -a -R libXft-devel-2.2.0-alt3.x86_64.rpm --- /tmp/.private/at/compare_packages.GHMfrhdqbY/1 2011-02-27 17:20:58.018880241 +0300 +++ /tmp/.private/at/compare_packages.GHMfrhdqbY/2 2011-02-27 17:20:58.006881010 +0300 @@ -1,7 +1,8 @@ /usr/lib64/pkgconfig +fontconfig-devel libXft = 2.2.0-alt3 -pkgconfig(fontconfig) -pkgconfig(freetype2) +libXrender-devel +libfreetype-devel pkgconfig(xproto) -pkgconfig(xrender) rpmlib(PayloadIsLzma) +xorg-xproto-devel $ Здесь зависимости, по сути, не изменились: убрались pkgconfig зависимости из Requires.private, но добавились сходные зависимости, полученные через cpp.req. Мы просто отыграли то, что испортили враги народа. $ compare_packages -i -a -R libcairo-devel-1.10.2-alt2.x86_64.rpm --- /tmp/.private/at/compare_packages.yWch2sMnSM/1 2011-02-27 17:24:39.507763649 +0300 +++ /tmp/.private/at/compare_packages.yWch2sMnSM/2 2011-02-27 17:24:39.491765038 +0300 @@ -1,14 +1,16 @@ /usr/lib64/pkgconfig +fontconfig-devel libGL-devel +libX11-devel +libXrender-devel libcairo = 1:1.10.2-alt2 +libfreetype-devel +libxcb-devel pkgconfig(fontconfig) >= 2.2.95 pkgconfig(freetype2) >= 9.7.3 pkgconfig(gl) -pkgconfig(glib-2.0) -pkgconfig(gobject-2.0) pkgconfig(libpng) pkgconfig(libudev) >= 136 -pkgconfig(pixman-1) >= 0.18.4 pkgconfig(x11) pkgconfig(xcb) >= 1.1.92 pkgconfig(xcb-render) >= 0.9.92 $ Тут более интересная картина. Зависимость на pkgconfig(pixman-1) удалилась, а сходной зависимости на libpixman-devel не появилось - т.е. pixman указан только в Requires.private, а в хедерах нигде не включается. Т.е. pixman является настоящей private зависимостью, которой и не должно быть в libcairo-devel. Обращает на себя зависимость pkgconfig(libpng) - сходной зависимости на libpng-devel не появилось. Это, скорее всего, означает, что pkgconfig зависимость ошибочно указана в Requires, тогда как должна быть указана в Requires.private. В связи с этими изменениями я пересоберу некоторые пакеты. ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-27 14:38 [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin @ 2011-02-27 16:45 ` Damir Shayhutdinov 2011-02-27 17:01 ` Dmitry V. Levin 2011-02-27 17:17 ` [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin 2011-03-02 5:50 ` Yuri N. Sedunov 1 sibling, 2 replies; 21+ messages in thread From: Damir Shayhutdinov @ 2011-02-27 16:45 UTC (permalink / raw) To: ALT Linux Team development discussions > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > включаются, чтобы появились дополнительные зависимости на *-devel > пакеты с хедерами. Скрипт cpp.req был написан почти три года назад, > но в нём не было необходимости, т.к. pkgconfig.req давал неплохой > результат. Никогда не знаешь, чего придётся доставать из штанин. Дядя Лёша, вопрос из зала - а как же быть с условными зависимостями? #ifdef USE_FOO_H #include <foo.h> #endif ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-27 16:45 ` Damir Shayhutdinov @ 2011-02-27 17:01 ` Dmitry V. Levin 2011-02-28 9:35 ` Damir Shayhutdinov 2011-02-27 17:17 ` [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin 1 sibling, 1 reply; 21+ messages in thread From: Dmitry V. Levin @ 2011-02-27 17:01 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1040 bytes --] On Sun, Feb 27, 2011 at 07:45:50PM +0300, Damir Shayhutdinov wrote: > > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > > включаются, чтобы появились дополнительные зависимости на *-devel > > пакеты с хедерами. Скрипт cpp.req был написан почти три года назад, > > но в нём не было необходимости, т.к. pkgconfig.req давал неплохой > > результат. Никогда не знаешь, чего придётся доставать из штанин. > > Дядя Лёша, вопрос из зала - а как же быть с условными зависимостями? > > #ifdef USE_FOO_H > > #include <foo.h> > > #endif Просьба уточнить, каким образом включается -DUSE_FOO_H. Если автоматически, например, из другого заголовка в этом пакете, или из pkg-config --cflags согласно .pc-файлу в этом пакете, то и зависимость, с высокой вероятностью, подцепится автоматически. А если вручную, то и зависимость можно прописать вручную. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-27 17:01 ` Dmitry V. Levin @ 2011-02-28 9:35 ` Damir Shayhutdinov 2011-02-28 12:30 ` Dmitry V. Levin 0 siblings, 1 reply; 21+ messages in thread From: Damir Shayhutdinov @ 2011-02-28 9:35 UTC (permalink / raw) To: ALT Linux Team development discussions >> Дядя Лёша, вопрос из зала - а как же быть с условными зависимостями? >> >> #ifdef USE_FOO_H >> >> #include <foo.h> >> >> #endif > > Просьба уточнить, каким образом включается -DUSE_FOO_H. > Если автоматически, например, из другого заголовка в этом пакете, > или из pkg-config --cflags согласно .pc-файлу в этом пакете, то и > зависимость, с высокой вероятностью, подцепится автоматически. > А если вручную, то и зависимость можно прописать вручную. Ага, вот про использование pkg-config --cflags в исходном письме было не понятно. А вообще это изменение применимо только к пакетам, заточенным под pkgconfig? ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-28 9:35 ` Damir Shayhutdinov @ 2011-02-28 12:30 ` Dmitry V. Levin 2011-03-08 16:47 ` [devel] cpp.req Dmitry V. Levin 0 siblings, 1 reply; 21+ messages in thread From: Dmitry V. Levin @ 2011-02-28 12:30 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 923 bytes --] On Mon, Feb 28, 2011 at 12:35:56PM +0300, Damir Shayhutdinov wrote: > >> Дядя Лёша, вопрос из зала - а как же быть с условными зависимостями? > >> > >> #ifdef USE_FOO_H > >> > >> #include <foo.h> > >> > >> #endif > > > > Просьба уточнить, каким образом включается -DUSE_FOO_H. > > Если автоматически, например, из другого заголовка в этом пакете, > > или из pkg-config --cflags согласно .pc-файлу в этом пакете, то и > > зависимость, с высокой вероятностью, подцепится автоматически. > > А если вручную, то и зависимость можно прописать вручную. > > Ага, вот про использование pkg-config --cflags в исходном письме было > не понятно. А вообще это изменение применимо только к пакетам, > заточенным под pkgconfig? Нет, отчего же. К сожалению, если у библиотеки CFLAGS формируются с помощью %_bindir/*-config, то они в cpp.req не подхватятся. Правда, таких библиотек осталось немного. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-02-28 12:30 ` Dmitry V. Levin @ 2011-03-08 16:47 ` Dmitry V. Levin 2011-03-08 22:57 ` Alexey Tourbin 2011-03-09 11:42 ` Sergey V Turchin 0 siblings, 2 replies; 21+ messages in thread From: Dmitry V. Levin @ 2011-03-08 16:47 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1101 bytes --] On Mon, Feb 28, 2011 at 03:30:59PM +0300, Dmitry V. Levin wrote: > Нет, отчего же. К сожалению, если у библиотеки CFLAGS формируются с > помощью %_bindir/*-config, то они в cpp.req не подхватятся. Правда, таких > библиотек осталось немного. Вот реальный пример: правильный gpgme.pc отсутствует, и cpp.req не справляется: http://git.altlinux.org/tasks/39999/build/100/i586/log /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error GPGME was compiled with _FILE_OFFSET_BITS = 64, please see the section "Largefile support (LFS)" in the GPGME manual. cpp.req: /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h: cpp failed, trying c++ mode /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error GPGME was compiled with _FILE_OFFSET_BITS = 64, please see the section "Largefile support (LFS)" in the GPGME manual. cpp.req: WARNING: /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h: cpp failed Впрочем, gpgme-config --cflags тоже не помог бы. P.S. Зависимости у libgpgme-devel-1.3.0-alt5.i586.rpm и все равно получились одинаковые. Повезло. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-08 16:47 ` [devel] cpp.req Dmitry V. Levin @ 2011-03-08 22:57 ` Alexey Tourbin 2011-03-09 11:42 ` Sergey V Turchin 1 sibling, 0 replies; 21+ messages in thread From: Alexey Tourbin @ 2011-03-08 22:57 UTC (permalink / raw) To: ALT Devel discussion list On Tue, Mar 08, 2011 at 07:47:43PM +0300, Dmitry V. Levin wrote: > On Mon, Feb 28, 2011 at 03:30:59PM +0300, Dmitry V. Levin wrote: > > Нет, отчего же. К сожалению, если у библиотеки CFLAGS формируются с > > помощью %_bindir/*-config, то они в cpp.req не подхватятся. Правда, таких > > библиотек осталось немного. > > Вот реальный пример: правильный gpgme.pc отсутствует, и cpp.req не справляется: > http://git.altlinux.org/tasks/39999/build/100/i586/log > > /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error GPGME was compiled with _FILE_OFFSET_BITS = 64, please see the section "Largefile support (LFS)" in the GPGME manual. > cpp.req: /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h: cpp failed, trying c++ mode > /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error GPGME was compiled with _FILE_OFFSET_BITS = 64, please see the section "Largefile support (LFS)" in the GPGME manual. > cpp.req: WARNING: /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h: cpp failed > > Впрочем, gpgme-config --cflags тоже не помог бы. > > P.S. Зависимости у libgpgme-devel-1.3.0-alt5.i586.rpm и все равно > получились одинаковые. Повезло. Зависимости получились одинаковые, потому что в пакете libgpgme-devel вручную уже добавлена зависимость на libgpg-error-devel. Если бы cpp.req отрабтал правильно, то зависимость можно было бы не добавлять/ удалить уже добавленную зависимость. Есть пакеты, в которых неправильно указаны такого рода *-devel зависимости. Например, в пакете libqt4-devel есть зависимость на xorg-devel, тогда как cpp.req генерирует "нормальную" зависимость только на libGL-devel, да и то это требуется только для поддержки OpenGL. То есть зависимость на xorg-devel ничем не обоснована, кроме фантазии мейнтейнера. Я исправил некоторые пакеты с такими зависимостями, но не все. Во-первых, не все мейнтейнеры довольны, когда я пересобираю их пакеты, и не хотелось бы создавать лишних конфликтов по такой простой причине. Во-вторых, воротилы от бизнеса форсируют создание нового "стабильного" бранча для Национальной ОС. Если убрать в libqt4-devel зависимость на xorg-devel, то сборка каких-то пакетов может сломаться из-за недостаточных зависимостей, что вызовет неудовольствие воротил от бизнеса, и они не подпустят к распилу государственных средств. Что конечно тоже нежелательно, тем более по такой простой причине. Получается, лучше всего самоустраниться из этого процесса.-( Случай с gpgme.h показывает, что не только cpp.req не справляется (например, по причине отсуствия нужных флагов -I/dir, как в некоторых других случаях), но и сам этот хедер не поддается включению в дефолтной конфигурации. Можно было бы попытаться каким-нибудь хитрым способом заменить #error на #warning. С другой стороны, существуют "частные" конфугации, не предназначенные для включения (например, файлы с winsock2.h исправлять не нужно, т.к. они предназначены для ненациональной ОС). Так что я думаю, что логику cpp.req нужно оставить прежней - анализировать завсимости только тех хедеров, которые удается "полностью" включить. С *-config файлами есть принципиальная проблема, которая препятствует их использованию в cpp.req: они предполагают, что всё ихнее добро уже установлено в хост-систему. Я помню (ещё три года назад это было), что в пакете wxGTK выполнялись какие-то файлтесты для libs, типа [ -f ${libdir}/... ]. Всё это не слишком тривиально адаптируется к RPM_BUILD_ROOT. Так что нежелание использовать *-config тоже сознательное. ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-08 16:47 ` [devel] cpp.req Dmitry V. Levin 2011-03-08 22:57 ` Alexey Tourbin @ 2011-03-09 11:42 ` Sergey V Turchin 2011-03-09 12:46 ` Dmitry V. Levin 1 sibling, 1 reply; 21+ messages in thread From: Sergey V Turchin @ 2011-03-09 11:42 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: Text/Plain, Size: 797 bytes --] On Tuesday 08 March 2011 19:47, Dmitry V. Levin wrote: > On Mon, Feb 28, 2011 at 03:30:59PM +0300, Dmitry V. Levin wrote: > > Нет, отчего же. К сожалению, если у библиотеки CFLAGS формируются с > > помощью %_bindir/*-config, то они в cpp.req не подхватятся. Правда, > > таких библиотек осталось немного. > > Вот реальный пример: правильный gpgme.pc отсутствует, и cpp.req не > справляется: http://git.altlinux.org/tasks/39999/build/100/i586/log > > /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error GPGME > was compiled with _FILE_OFFSET_BITS = 64, please see the section > "Largefile support (LFS)" in the GPGME manual Я по руководству так понял, что пользователь файла gpgme.h должен что-либо делать. [...] -- Regards, Sergey. ALT Linux, http://www.altlinux.ru/ [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-09 11:42 ` Sergey V Turchin @ 2011-03-09 12:46 ` Dmitry V. Levin 2011-03-09 13:13 ` Sergey V Turchin 0 siblings, 1 reply; 21+ messages in thread From: Dmitry V. Levin @ 2011-03-09 12:46 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1015 bytes --] On Wed, Mar 09, 2011 at 02:42:28PM +0300, Sergey V Turchin wrote: > On Tuesday 08 March 2011 19:47, Dmitry V. Levin wrote: > > On Mon, Feb 28, 2011 at 03:30:59PM +0300, Dmitry V. Levin wrote: > > > Нет, отчего же. К сожалению, если у библиотеки CFLAGS формируются с > > > помощью %_bindir/*-config, то они в cpp.req не подхватятся. Правда, > > > таких библиотек осталось немного. > > > > Вот реальный пример: правильный gpgme.pc отсутствует, и cpp.req не > > справляется: http://git.altlinux.org/tasks/39999/build/100/i586/log > > > > /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error GPGME > > was compiled with _FILE_OFFSET_BITS = 64, please see the section > > "Largefile support (LFS)" in the GPGME manual > Я по руководству так понял, что пользователь файла gpgme.h должен что-либо > делать. Только обычно такие действия сразу закладывают в pkg-config --cflags, а здесь авторы библиотеки решили отличиться и отправили пользователя читать документацию. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-09 12:46 ` Dmitry V. Levin @ 2011-03-09 13:13 ` Sergey V Turchin 2011-03-09 13:16 ` Dmitry V. Levin 0 siblings, 1 reply; 21+ messages in thread From: Sergey V Turchin @ 2011-03-09 13:13 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: Text/Plain, Size: 768 bytes --] On Wednesday 09 March 2011 15:46, Dmitry V. Levin wrote: [...] > > > /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error > > > GPGME was compiled with _FILE_OFFSET_BITS = 64, please see the section > > > "Largefile support (LFS)" in the GPGME manual > > > > Я по руководству так понял, что пользователь файла gpgme.h должен > > что-либо делать. > > Только обычно такие действия сразу закладывают в pkg-config --cflags, а > здесь авторы библиотеки решили отличиться и отправили пользователя читать > документацию. Ну да. Я хоть и прочел, толку мало :-) Что мне делать? Заменить в gpgme.h это место на #ifndef _FILE_OFFSET_BITS #define _FILE_OFFSET_BITS 64 #endif или вообще убрать его? -- Regards, Sergey. ALT Linux, http://www.altlinux.ru/ [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-09 13:13 ` Sergey V Turchin @ 2011-03-09 13:16 ` Dmitry V. Levin 2011-03-10 8:47 ` Michael Shigorin 0 siblings, 1 reply; 21+ messages in thread From: Dmitry V. Levin @ 2011-03-09 13:16 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 929 bytes --] On Wed, Mar 09, 2011 at 04:13:07PM +0300, Sergey V Turchin wrote: > On Wednesday 09 March 2011 15:46, Dmitry V. Levin wrote: > > [...] > > > > /usr/src/tmp/gpgme-buildroot/usr/include/gpgme.h:89:2: error: #error > > > > GPGME was compiled with _FILE_OFFSET_BITS = 64, please see the section > > > > "Largefile support (LFS)" in the GPGME manual > > > > > > Я по руководству так понял, что пользователь файла gpgme.h должен > > > что-либо делать. > > > > Только обычно такие действия сразу закладывают в pkg-config --cflags, а > > здесь авторы библиотеки решили отличиться и отправили пользователя читать > > документацию. > Ну да. Я хоть и прочел, толку мало :-) > Что мне делать? Заменить в gpgme.h это место на > #ifndef _FILE_OFFSET_BITS > #define _FILE_OFFSET_BITS 64 > #endif > или вообще убрать его? Ничего тебе с gpgme.h делать не надо, все пользователи gpgme.h уже все сделали. :) -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-09 13:16 ` Dmitry V. Levin @ 2011-03-10 8:47 ` Michael Shigorin 2011-03-10 13:10 ` Dmitry V. Levin 0 siblings, 1 reply; 21+ messages in thread From: Michael Shigorin @ 2011-03-10 8:47 UTC (permalink / raw) To: ALT Devel discussion list On Wed, Mar 09, 2011 at 04:16:58PM +0300, Dmitry V. Levin wrote: > Ничего тебе с gpgme.h делать не надо, все пользователи gpgme.h > уже все сделали. :) А мне с SimGear что-то надо делать? find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks) /usr/src/tmp/SimGear-buildroot/usr/include/simgear/constants.h:34:17: fatal error: cmath: No such file or directory compilation terminated. cpp.req: /usr/src/tmp/SimGear-buildroot/usr/include/simgear/constants.h: cpp failed, trying c++ mode Provides: SimGear = 2.0.0, SimGear-devel = 2.0.0 Requires: libOpenSceneGraph-devel, glibc-devel-static, libGL-devel, libX11-devel, plib-devel [...] (пакет собрался, он действительно boost'овый) -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] cpp.req 2011-03-10 8:47 ` Michael Shigorin @ 2011-03-10 13:10 ` Dmitry V. Levin 0 siblings, 0 replies; 21+ messages in thread From: Dmitry V. Levin @ 2011-03-10 13:10 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 937 bytes --] On Thu, Mar 10, 2011 at 10:47:46AM +0200, Michael Shigorin wrote: > On Wed, Mar 09, 2011 at 04:16:58PM +0300, Dmitry V. Levin wrote: > > Ничего тебе с gpgme.h делать не надо, все пользователи gpgme.h > > уже все сделали. :) > > А мне с SimGear что-то надо делать? > > find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks) > /usr/src/tmp/SimGear-buildroot/usr/include/simgear/constants.h:34:17: fatal error: cmath: No such file or directory > compilation terminated. > cpp.req: /usr/src/tmp/SimGear-buildroot/usr/include/simgear/constants.h: cpp failed, trying c++ mode > Provides: SimGear = 2.0.0, SimGear-devel = 2.0.0 > Requires: libOpenSceneGraph-devel, glibc-devel-static, libGL-devel, libX11-devel, plib-devel > [...] > > (пакет собрался, он действительно boost'овый) Судя по вышепроцитированному, cpp.req справился. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-27 16:45 ` Damir Shayhutdinov 2011-02-27 17:01 ` Dmitry V. Levin @ 2011-02-27 17:17 ` Alexey Tourbin 2011-03-02 23:29 ` Alexey Tourbin 1 sibling, 1 reply; 21+ messages in thread From: Alexey Tourbin @ 2011-02-27 17:17 UTC (permalink / raw) To: ALT Linux Team development discussions On Sun, Feb 27, 2011 at 07:45:50PM +0300, Damir Shayhutdinov wrote: > > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > > включаются, чтобы появились дополнительные зависимости на *-devel > > пакеты с хедерами. Скрипт cpp.req был написан почти три года назад, > > но в нём не было необходимости, т.к. pkgconfig.req давал неплохой > > результат. Никогда не знаешь, чего придётся доставать из штанин. > > Дядя Лёша, вопрос из зала - а как же быть с условными зависимостями? Учитываются только те файлы, которые реально включаются. Именно поэтому используется реальный /usr/bin/cpp. Идея реализации примерно такая: $ cpp `pkg-config --cflags xft` /usr/include/X11/Xft/Xft.h |grep ^# |head # 1 "/usr/include/X11/Xft/Xft.h" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/X11/Xft/Xft.h" # 38 "/usr/include/X11/Xft/Xft.h" # 1 "/usr/lib64/gcc/x86_64-alt-linux/4.5.1/include/stdarg.h" 1 3 4 # 40 "/usr/lib64/gcc/x86_64-alt-linux/4.5.1/include/stdarg.h" 3 4 # 102 "/usr/lib64/gcc/x86_64-alt-linux/4.5.1/include/stdarg.h" 3 4 # 39 "/usr/include/X11/Xft/Xft.h" 2 # 1 "/usr/include/ft2build.h" 1 3 4 Здесь показан стек включаемых файлов (см. info cpp "Preprocessor Output"). Соответственно, нам надо взять взять файлы на первом фрейме стека - это и будут реально включаемые файлы. > #ifdef USE_FOO_H > > #include <foo.h> > > #endif ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-27 17:17 ` [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin @ 2011-03-02 23:29 ` Alexey Tourbin 2011-03-02 23:49 ` Dmitry V. Levin 0 siblings, 1 reply; 21+ messages in thread From: Alexey Tourbin @ 2011-03-02 23:29 UTC (permalink / raw) To: ALT Linux Team development discussions On Sun, Feb 27, 2011 at 08:17:27PM +0300, Alexey Tourbin wrote: > $ cpp `pkg-config --cflags xft` /usr/include/X11/Xft/Xft.h |grep ^# |head > # 1 "/usr/include/X11/Xft/Xft.h" > # 1 "<built-in>" > # 1 "<command-line>" > # 1 "/usr/include/X11/Xft/Xft.h" > # 38 "/usr/include/X11/Xft/Xft.h" > # 1 "/usr/lib64/gcc/x86_64-alt-linux/4.5.1/include/stdarg.h" 1 3 4 > # 40 "/usr/lib64/gcc/x86_64-alt-linux/4.5.1/include/stdarg.h" 3 4 > # 102 "/usr/lib64/gcc/x86_64-alt-linux/4.5.1/include/stdarg.h" 3 4 > # 39 "/usr/include/X11/Xft/Xft.h" 2 > # 1 "/usr/include/ft2build.h" 1 3 4 > > Здесь показан стек включаемых файлов (см. info cpp "Preprocessor Output"). > Соответственно, нам надо взять взять файлы на первом фрейме стека - это > и будут реально включаемые файлы. Обнаружил интересную особенность: если файл уже включен, то он может не появиться на первом фрейме стека (в выводе cpp). Напр. /usr/lib64/R/library/Matrix/include/Matrix.h 3 #include <Rdefines.h> 4 #include <Rconfig.h> 5 #include "cholmod.h" cpp.req обнаружит только зависимость на Rdefines.h, т.к. Rdefines.h в свою очередь включает Rconfig.h. При повторном включении Rconfig.h даёт пустой вывод, и препроцессор его не аннотирует. Что в принципе не очень хорошо. Но я не знаю другого способа вклиниться в cpp, и судя по cpp(1) такого способа скорее всего просто нет. Проверил cpp -H, он обладает таким же дефектом. $ cpp -I/usr/include/R -H /usr/lib64/R/library/Matrix/include/Matrix.h 2>&1 >/dev/null |grep /R/ . /usr/include/R/Rdefines.h .. /usr/include/R/R_ext/Memory.h .. /usr/include/R/R_ext/RS.h ... /usr/include/R/Rconfig.h ... /usr/include/R/R_ext/Error.h .. /usr/include/R/Rinternals.h ... /usr/include/R/R_ext/Arith.h .... /usr/include/R/R_ext/libextern.h ... /usr/include/R/R_ext/Boolean.h ... /usr/include/R/R_ext/Complex.h ... /usr/include/R/R_ext/PrtUtil.h .... /usr/include/R/R_ext/Print.h ... /usr/include/R/R_ext/Utils.h ... /usr/include/R/R_ext/libextern.h . /usr/lib64/R/library/Matrix/include/cholmod.h $ ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-03-02 23:29 ` Alexey Tourbin @ 2011-03-02 23:49 ` Dmitry V. Levin 0 siblings, 0 replies; 21+ messages in thread From: Dmitry V. Levin @ 2011-03-02 23:49 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1162 bytes --] On Thu, Mar 03, 2011 at 02:29:38AM +0300, Alexey Tourbin wrote: [...] > Обнаружил интересную особенность: если файл уже включен, то он может > не появиться на первом фрейме стека (в выводе cpp). Напр. > > /usr/lib64/R/library/Matrix/include/Matrix.h > 3 #include <Rdefines.h> > 4 #include <Rconfig.h> > 5 #include "cholmod.h" > > cpp.req обнаружит только зависимость на Rdefines.h, т.к. Rdefines.h > в свою очередь включает Rconfig.h. При повторном включении Rconfig.h > даёт пустой вывод, и препроцессор его не аннотирует. > > Что в принципе не очень хорошо. Но я не знаю другого способа вклиниться > в cpp, и судя по cpp(1) такого способа скорее всего просто нет. Проверил > cpp -H, он обладает таким же дефектом. > > $ cpp -I/usr/include/R -H /usr/lib64/R/library/Matrix/include/Matrix.h 2>&1 >/dev/null |grep /R/ > . /usr/include/R/Rdefines.h > .. /usr/include/R/R_ext/Memory.h > .. /usr/include/R/R_ext/RS.h > ... /usr/include/R/Rconfig.h Можно сделать вывод, что ограничиваться первым фреймом недостаточно. Видимо, надежнее будет останавливаться на первых файлах за пределами %buildroot. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-02-27 14:38 [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin 2011-02-27 16:45 ` Damir Shayhutdinov @ 2011-03-02 5:50 ` Yuri N. Sedunov 2011-03-02 9:10 ` Dmitry V. Levin 2011-03-02 13:43 ` Alexey Tourbin 1 sibling, 2 replies; 21+ messages in thread From: Yuri N. Sedunov @ 2011-03-02 5:50 UTC (permalink / raw) To: devel; +Cc: Alexey M. Tourbin В Вск, 27/02/2011 в 17:38 +0300, Alexey Tourbin пишет: > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры Надуло: $ rpmq -R libgtk3vnc-devel libgtk3vnc = 0.4.3-alt2 libgvnc-devel = 0.4.3-alt2 /usr/include/gtk-vnc-1.0/vncgrabsequence.h libgtk+2-devel pkgconfig(gtk+-3.0) >= 3.0.0 -- Yuri N. Sedunov ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-03-02 5:50 ` Yuri N. Sedunov @ 2011-03-02 9:10 ` Dmitry V. Levin 2011-03-02 14:02 ` Alexey Tourbin 2011-03-02 13:43 ` Alexey Tourbin 1 sibling, 1 reply; 21+ messages in thread From: Dmitry V. Levin @ 2011-03-02 9:10 UTC (permalink / raw) To: ALT Devel discussion list; +Cc: Alexey M. Tourbin [-- Attachment #1: Type: text/plain, Size: 552 bytes --] On Wed, Mar 02, 2011 at 08:50:34AM +0300, Yuri N. Sedunov wrote: > В Вск, 27/02/2011 в 17:38 +0300, Alexey Tourbin пишет: > > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > > Надуло: > $ rpmq -R libgtk3vnc-devel > libgtk3vnc = 0.4.3-alt2 > libgvnc-devel = 0.4.3-alt2 > /usr/include/gtk-vnc-1.0/vncgrabsequence.h А почему этот .h не соптимизировался совсем? -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-03-02 9:10 ` Dmitry V. Levin @ 2011-03-02 14:02 ` Alexey Tourbin 0 siblings, 0 replies; 21+ messages in thread From: Alexey Tourbin @ 2011-03-02 14:02 UTC (permalink / raw) To: ALT Devel discussion list On Wed, Mar 02, 2011 at 12:10:58PM +0300, Dmitry V. Levin wrote: > On Wed, Mar 02, 2011 at 08:50:34AM +0300, Yuri N. Sedunov wrote: > > В Вск, 27/02/2011 в 17:38 +0300, Alexey Tourbin пишет: > > > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > > > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > > > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > > > > Надуло: > > $ rpmq -R libgtk3vnc-devel > > libgtk3vnc = 0.4.3-alt2 > > libgvnc-devel = 0.4.3-alt2 > > /usr/include/gtk-vnc-1.0/vncgrabsequence.h > > А почему этот .h не соптимизировался совсем? При сборке rpm говорит: warning: libgtk3vnc-devel: non-strict dependency on libgtkvnc-devel Этот хедер и даёт non-strict dependency on libgtkvnc-devel, которая не может быть соптимизирована. Видимо, это продолжение обсуждаемой ошибки: при более правильных cflags должен был подцепиться хедер /usr/include/gtk-vnc-2.0/vncgrabsequence.h который запакован в самом пакете. ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-03-02 5:50 ` Yuri N. Sedunov 2011-03-02 9:10 ` Dmitry V. Levin @ 2011-03-02 13:43 ` Alexey Tourbin 2011-03-02 13:50 ` Yuri N. Sedunov 1 sibling, 1 reply; 21+ messages in thread From: Alexey Tourbin @ 2011-03-02 13:43 UTC (permalink / raw) To: devel On Wed, Mar 02, 2011 at 08:50:34AM +0300, Yuri N. Sedunov wrote: > В Вск, 27/02/2011 в 17:38 +0300, Alexey Tourbin пишет: > > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > > Надуло: > $ rpmq -R libgtk3vnc-devel > libgtk3vnc = 0.4.3-alt2 > libgvnc-devel = 0.4.3-alt2 > /usr/include/gtk-vnc-1.0/vncgrabsequence.h > libgtk+2-devel > pkgconfig(gtk+-3.0) >= 3.0.0 Появилась неправильная зависимость на libgtk+2-devel? Тут непросто автоматически выбрать между libgtk+2-devel и libgtk+3-devel. Для получения cflags выполняется pkg-config %buildroot%_pkgconfigdir/*.pc, шелл сортирует глоб, и по-видимому в cflags сначала идут флаги для gtk2, а потом уже для gtk3. Этот случай можно исправить, если сначала обрабатывать запакованные .pc, а потом уже все остальные .pc в билруде по глобу (чтобы сначала шли "запакованные" cflags). Попробую сделать. Заметил ещё что зависимость на libgtk+3-devel появится в libavahi-ui-common-devel, не знаю правильно это или нет. http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/success/avahi-0.6.28-alt6 ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [devel] pkg-config Requires.private - полчища саранчи и враги народа 2011-03-02 13:43 ` Alexey Tourbin @ 2011-03-02 13:50 ` Yuri N. Sedunov 0 siblings, 0 replies; 21+ messages in thread From: Yuri N. Sedunov @ 2011-03-02 13:50 UTC (permalink / raw) To: devel В Срд, 02/03/2011 в 16:43 +0300, Alexey Tourbin пишет: > On Wed, Mar 02, 2011 at 08:50:34AM +0300, Yuri N. Sedunov wrote: > > В Вск, 27/02/2011 в 17:38 +0300, Alexey Tourbin пишет: > > > Новый план выхода из кризиса (реализован в 4.0.4-alt100.22): > > > 1) Оставлять в зависимостях только Requires, а Requires.private убрать. > > > 2) Продувать хедеры через /usr/bin/cpp и смотреть, какие ещё хедеры > > > > Надуло: > > $ rpmq -R libgtk3vnc-devel > > libgtk3vnc = 0.4.3-alt2 > > libgvnc-devel = 0.4.3-alt2 > > /usr/include/gtk-vnc-1.0/vncgrabsequence.h > > libgtk+2-devel > > pkgconfig(gtk+-3.0) >= 3.0.0 > > Появилась неправильная зависимость на libgtk+2-devel? Да. > Тут непросто автоматически выбрать между libgtk+2-devel и libgtk+3-devel. > Для получения cflags выполняется pkg-config %buildroot%_pkgconfigdir/*.pc, > шелл сортирует глоб, и по-видимому в cflags сначала идут флаги для gtk2, > а потом уже для gtk3. Этот случай можно исправить, если сначала > обрабатывать запакованные .pc, а потом уже все остальные .pc в билруде > по глобу (чтобы сначала шли "запакованные" cflags). Попробую сделать. > > Заметил ещё что зависимость на libgtk+3-devel появится в > libavahi-ui-common-devel, не знаю правильно это или нет. Нет, не правильно. -- Yuri N. Sedunov ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2011-03-10 13:10 UTC | newest] Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-02-27 14:38 [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin 2011-02-27 16:45 ` Damir Shayhutdinov 2011-02-27 17:01 ` Dmitry V. Levin 2011-02-28 9:35 ` Damir Shayhutdinov 2011-02-28 12:30 ` Dmitry V. Levin 2011-03-08 16:47 ` [devel] cpp.req Dmitry V. Levin 2011-03-08 22:57 ` Alexey Tourbin 2011-03-09 11:42 ` Sergey V Turchin 2011-03-09 12:46 ` Dmitry V. Levin 2011-03-09 13:13 ` Sergey V Turchin 2011-03-09 13:16 ` Dmitry V. Levin 2011-03-10 8:47 ` Michael Shigorin 2011-03-10 13:10 ` Dmitry V. Levin 2011-02-27 17:17 ` [devel] pkg-config Requires.private - полчища саранчи и враги народа Alexey Tourbin 2011-03-02 23:29 ` Alexey Tourbin 2011-03-02 23:49 ` Dmitry V. Levin 2011-03-02 5:50 ` Yuri N. Sedunov 2011-03-02 9:10 ` Dmitry V. Levin 2011-03-02 14:02 ` Alexey Tourbin 2011-03-02 13:43 ` Alexey Tourbin 2011-03-02 13:50 ` Yuri N. Sedunov
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