* [devel] rpm-requires in headers
@ 2008-09-01 13:21 Led
2008-09-01 14:25 ` Ivan A. Melnikov
2008-09-01 17:30 ` Alexey Tourbin
0 siblings, 2 replies; 6+ messages in thread
From: Led @ 2008-09-01 13:21 UTC (permalink / raw)
To: ALT Linux Team development discussions
У нас зависимости в *.h файлах не ищутся? Может имеет смысл парсить хэдеры на
предмет
^#[[:blank:]]*include[[:blank:]]+\<[^>]\>
и проставлять зависимости на соответствующие *-devel?
--
Led
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] rpm-requires in headers
2008-09-01 13:21 [devel] rpm-requires in headers Led
@ 2008-09-01 14:25 ` Ivan A. Melnikov
2008-09-01 14:30 ` Mikhail Gusarov
2008-09-01 17:30 ` Alexey Tourbin
1 sibling, 1 reply; 6+ messages in thread
From: Ivan A. Melnikov @ 2008-09-01 14:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
В сообщении от Monday 01 September 2008 17:21:38 Led написал(а):
> У нас зависимости в *.h файлах не ищутся? Может имеет смысл парсить хэдеры
> на предмет
> ^#[[:blank:]]*include[[:blank:]]+\<[^>]\>
> и проставлять зависимости на соответствующие *-devel?
Может и имеет, но что делать с -I?
--
Best Regards,
Ivan A. Melnikov <iv@altlinux.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] rpm-requires in headers
2008-09-01 14:25 ` Ivan A. Melnikov
@ 2008-09-01 14:30 ` Mikhail Gusarov
2008-09-01 14:42 ` Anton Farygin
2008-09-01 15:00 ` Led
0 siblings, 2 replies; 6+ messages in thread
From: Mikhail Gusarov @ 2008-09-01 14:30 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 632 bytes --]
Twas brillig at 18:25:12 01.09.2008 UTC+04 when iv@altlinux.org did gyre and gimble:
>> У нас зависимости в *.h файлах не ищутся? Может имеет смысл парсить
>> хэдеры на предмет ^#[[:blank:]]*include[[:blank:]]+\<[^>]\> и
>> проставлять зависимости на соответствующие *-devel?
IAM> Может и имеет, но что делать с -I?
А также #ifdef и -D в мейкфайлах :)
Впрочем, можно по аналогии с buildreq трассировать работу gcc :)
--
[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] rpm-requires in headers
2008-09-01 14:30 ` Mikhail Gusarov
@ 2008-09-01 14:42 ` Anton Farygin
2008-09-01 15:00 ` Led
1 sibling, 0 replies; 6+ messages in thread
From: Anton Farygin @ 2008-09-01 14:42 UTC (permalink / raw)
To: ALT Linux Team development discussions
Mikhail Gusarov пишет:
> Twas brillig at 18:25:12 01.09.2008 UTC+04 when iv@altlinux.org did gyre and gimble:
>
> >> У нас зависимости в *.h файлах не ищутся? Может имеет смысл парсить
> >> хэдеры на предмет ^#[[:blank:]]*include[[:blank:]]+\<[^>]\> и
> >> проставлять зависимости на соответствующие *-devel?
>
> IAM> Может и имеет, но что делать с -I?
>
> А также #ifdef и -D в мейкфайлах :)
>
> Впрочем, можно по аналогии с buildreq трассировать работу gcc :)
IMHO плохая идея.. слишком много будет мусора и это не решит проблему с
зависимостями в devel пакетах.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] rpm-requires in headers
2008-09-01 14:30 ` Mikhail Gusarov
2008-09-01 14:42 ` Anton Farygin
@ 2008-09-01 15:00 ` Led
1 sibling, 0 replies; 6+ messages in thread
From: Led @ 2008-09-01 15:00 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Monday 01 September 2008 17:30:00 Mikhail Gusarov wrote:
> Twas brillig at 18:25:12 01.09.2008 UTC+04 when iv@altlinux.org did gyre and
gimble:
> >> У нас зависимости в *.h файлах не ищутся? Может имеет смысл парсить
> >> хэдеры на предмет ^#[[:blank:]]*include[[:blank:]]+\<[^>]\> и
> >> проставлять зависимости на соответствующие *-devel?
>
> IAM> Может и имеет, но что делать с -I?
Ничего.
>
> А также #ifdef и -D в мейкфайлах :)
Тоже ничего. Не найденные в /usr/include файлы игнорировать, зависимости на
них не проставлять, можно вывести WARNING. Наиболее "одиозные" (windows.h и
т.п.) прописать в список "молча игнорируемых"
>
> Впрочем, можно по аналогии с buildreq трассировать работу gcc :)
Скорее - cpp:)
--
Led
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] rpm-requires in headers
2008-09-01 13:21 [devel] rpm-requires in headers Led
2008-09-01 14:25 ` Ivan A. Melnikov
@ 2008-09-01 17:30 ` Alexey Tourbin
1 sibling, 0 replies; 6+ messages in thread
From: Alexey Tourbin @ 2008-09-01 17:30 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1.1: Type: text/plain, Size: 307 bytes --]
On Mon, Sep 01, 2008 at 04:21:38PM +0300, Led wrote:
> У нас зависимости в *.h файлах не ищутся? Может имеет смысл парсить хэдеры на
> предмет
> ^#[[:blank:]]*include[[:blank:]]+\<[^>]\>
> и проставлять зависимости на соответствующие *-devel?
Есть рабочий протоип, который использует препроцессор.
[-- Attachment #1.2: cpp.req --]
[-- Type: text/plain, Size: 2885 bytes --]
#!/bin/sh -efu
#
# Copyright (C) 2008 Alexey Tourbin <at@altlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
. /usr/lib/rpm/functions
. /usr/lib/rpm/find-package
[ -n "${RPM_LIBDIR-}" ] || RPM_LIBDIR=`rpm --eval %_libdir`
PKG_CONFIG_PATH=$RPM_LIBDIR/pkgconfig:/usr/share/pkgconfig
[ -z "${RPM_BUILD_ROOT-}" ] ||
PKG_CONFIG_PATH=$RPM_BUILD_ROOT$RPM_LIBDIR/pkgconfig:$RPM_BUILD_ROOT/usr/share/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH
PkgconfigCflags()
{
local f="$1"; shift
local pc_files
if [ -n "${RPM_BUILD_ROOT-}" ]; then
pc_files=$(set +f; ls "$RPM_BUILD_ROOT$RPM_LIBDIR/pkgconfig"/*.pc 2>/dev/null ||:)
else
pc_files=$(rpmquery -f "$f" --list 2>/dev/null |
egrep "^$RPM_LIBDIR/pkgconfig/[^/]+[.]pc\$" || [ $? = 1 ])
fi
[ -n "$pc_files" ] || return 0
local pc
for pc in $pc_files; do
pkg-config --enable-recursion --cflags "$pc" ||
Fatal "$pc: pkg-config failed"
done
}
Cflags()
{
local f="$1"; shift
local cflags
cflags=$(PkgconfigCflags "$f")
set -- $cflags -I/usr/include -I${f%/*} -I${f%/*/*} -I${f%/*/*/*}
local cf
for cf; do
case $cf in
-D?*) echo $cf ;;
esac
done
for cf; do
[ -n "${RPM_BUILD_ROOT-}" ] || continue
case $cf in
-I/*) echo -I$RPM_BUILD_ROOT${cf#-I} ;;
esac
done
for cf; do
case $cf in
-I/*) echo $cf ;;
esac
done
}
cpp=
IncludedFiles()
{
local f="$1"; shift
if [ -z "$cpp" ]; then
cpp=/usr/bin/${RPM_ARCH:-noarch}-alt-linux-cpp
[ -x "$cpp" ] || cpp=/usr/bin/cpp
[ -z "${GCC_VERSION-}" ] || cpp=$cpp-$GCC_VERSION
Debug "cpp=$cpp"
fi
cflags=$(Cflags "$f")
Debug "$f: cflags:" $cflags
if ! out=$("$cpp" -w -x c++ $cflags "$f"); then
Warning "$f: cpp failed"
return 0
fi
echo "$out" |grep '^#' |awk -v prog="$PROG" -v hdr="$f" '
# info cpp "Preprocessor Output"
BEGIN {
SP = 0
Stack[SP] = hdr
}
function filename(f) {
if (!sub(/^"\//, "/", f) ||
!sub(/"$/, "", f))
printf "%s: %s: bad path %s\n",
prog, hdr, f >"/dev/stderr"
return f
}
function Push(f) {
f=filename(f)
Stack[++SP]=f
if (SP==1)
print f
}
function Pop(f) {
f=filename(f)
if (f != Stack[--SP])
printf "%s: %s: expected pop %s, got pop %s\n",
prog, hdr, Stack[SP], f >"/dev/stderr"
}
$4==1 { Push($3) }
$4==2 { Pop($3) }
END {
if (SP > 0)
printf "%s: %s: non-empty stack, top %s\n",
prog, hdr, Stack[SP] >"/dev/stderr"
}'
}
CppReq()
{
local f="$1"; shift
local files
files=$(IncludedFiles "$f")
[ -n "$files" ] || return 0
local RPM_FINDPACKAGE_HOST_PKG_NAMES=1
local inc
echo "$files" |while read -r inc; do
FindPackage "$f" "${inc#${RPM_BUILD_ROOT-}}"
done
}
ArgvFileAction CppReq "$@"
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-09-01 17:30 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-01 13:21 [devel] rpm-requires in headers Led
2008-09-01 14:25 ` Ivan A. Melnikov
2008-09-01 14:30 ` Mikhail Gusarov
2008-09-01 14:42 ` Anton Farygin
2008-09-01 15:00 ` Led
2008-09-01 17:30 ` Alexey Tourbin
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