[devel] pkg-config Requires.private - полчища саранчи и враги народа

Alexey Tourbin at на altlinux.ru
Вс Фев 27 17:17:27 UTC 2011


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


Подробная информация о списке рассылки Devel