From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 9 Mar 2011 01:57:18 +0300 From: Alexey Tourbin To: ALT Devel discussion list Message-ID: <20110308225718.GB30094@altlinux.org> References: <20110227143806.GD22224@altlinux.org> <20110227170149.GA30541@altlinux.org> <20110228123059.GB19486@altlinux.org> <20110308164742.GB22446@altlinux.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110308164742.GB22446@altlinux.org> Subject: Re: [devel] cpp.req X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Mar 2011 22:57:19 -0000 Archived-At: List-Archive: List-Post: 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 тоже сознательное.