rpm-build/scripts
Alexey Tourbin 8af14dd777 cpp.req: track included files down to the first external file
Some header files have protection against being included into user
code directly.  This means that, when processing such files, cpp
is going to fail, and some dependencies probably will be missing.

/usr/include/gtk-2.0/gtk/gtkaccessible.h:
    20  #if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
    21  #error "Only <gtk/gtk.h> can be included directly."
    22  #endif
    23
    24  #ifndef __GTK_ACCESSIBLE_H__
    25  #define __GTK_ACCESSIBLE_H__
    26
    27  #include <atk/atk.h>
    28  #include <gtk/gtkwidget.h>

To remedy the problem, we should, as per the above example, process
gtk/gtk.h dependencies recursively.  Dependencies which we now attribute
to gtk/gtk.h are: 1) files which are packaged within the same subpackage
- these dependencies will be optimized out later by rpm; 2) the first
file not packaged into this subpackage, which is atk/atk.h.  Files below
atk/atk.h are not processed.

    Packaged?     Stack
                +---------------------+
        +       | gtk/gtk.h           |
                +---------------------+
        +       | gtk/gtkaccessible.h | <- SPmark
                +---------------------+
        -       | atk/atk.h           |
                +---------------------+
                | ...                 |

Also note that packaged files in cpp output should not be identified by
filenames, since filenames in the output will be possibly non-canonical.
Therefore I use standard unix technique to identify files by (dev,ino).

/usr/include/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp:
     9  #include "../size_t.hpp"
2011-09-22 03:08:14 +04:00
..
.provides.sh find-package: renamed FindByPath -> FindByFile 2010-04-08 11:24:55 +04:00
0common-files.req.list 0common-files.req.list: add /lib64/udev and /lib64/udev/rules.d 2010-09-24 10:46:36 +00:00
0ldconfig.filetrigger 0ldconfig.filetrigger: simplified system library check 2008-11-12 05:10:51 +03:00
brp-adjust_libraries.in Removed cvsid tags. 2006-05-14 17:05:34 +04:00
brp-alt.in brp-debuginfo: intial revision, replaces brp-strip 2011-01-30 03:10:15 +03:00
brp-bytecompile_python.in brp-bytecompile_python: updated copyright statement 2009-12-21 03:43:28 +03:00
brp-cleanup.in brp-cleanup: updated for /usr/lib64/perl5 and /usr/share/perl5 2010-09-19 09:58:12 +04:00
brp-compress.in scripts/brp-compress.in: Avoid non-standard info directories (ALT#19993) 2009-05-20 21:51:11 +00:00
brp-debuginfo.in brp-debuginfo: pass LD_ORIGIN_PATH=/usr/bin to eu-strip 2011-02-05 23:34:11 +03:00
brp-fix-perms.in scripts: use 'chmod -c' 2008-05-05 02:36:14 +04:00
brp-fixup.in fixup-desktop: new file that does trivial fixes in desktop files 2011-05-13 21:43:39 +00:00
brp-strip.in brp-strip: select ELF files and .a archives with single file(1) invocation 2010-03-27 00:00:28 +03:00
brp-verify_elf.in verify-elf: do not descend into /usr/lib/debug 2011-01-30 03:11:30 +03:00
brp-verify-info.in Implement info files verification 2009-05-20 23:25:58 +00:00
compress_files.in scripts: Replace paths to basic programs with their names 2008-02-29 12:30:29 +00:00
cpp.req.files cpp.req: new dependency generator for header files 2011-02-27 03:51:26 +03:00
cpp.req.in cpp.req: track included files down to the first external file 2011-09-22 03:08:14 +04:00
debuginfo.prov.files implemented debuginfo.req and debuginfo.prov 2011-02-04 02:55:25 +03:00
debuginfo.prov.in implemented debuginfo.req and debuginfo.prov 2011-02-04 02:55:25 +03:00
debuginfo.req.files implemented debuginfo.req and debuginfo.prov 2011-02-04 02:55:25 +03:00
debuginfo.req.in debuginfo.req: fix handling of exotic sonames written as pathnames (ALT#26247) 2011-09-07 23:28:18 +00:00
files.req.files.in files.req: reserve second field in *-files.req.list for owner package name 2008-06-17 08:05:10 +04:00
files.req.in files.req: added description and copyright 2008-06-22 11:52:53 +04:00
find-debuginfo-files.in brp-debuginfo: recognize $RPM_BRP_STRIP_DEBUG and $RPM_BRP_STRIP_NONE 2011-02-03 11:30:45 +03:00
find-lang.in find-lang (FIND_MAN): support man page paths with more than one symbol after dot (ALT#24466) 2010-11-01 22:36:09 +00:00
find-package.in find-package: prune generic devel deps like gcc4.x in HOST_PKG mode 2011-02-27 06:29:15 +03:00
find-scriptlet-requires.in find-requires, find-scriptlet-requires: enabled FINDPACKAGE-COMMANDS output 2010-04-08 11:24:58 +04:00
fixup-binconfig.in scripts: introduced tmpdir.sh 2011-09-22 02:58:59 +04:00
fixup-desktop.awk fixup-desktop: new file that does trivial fixes in desktop files 2011-05-13 21:43:39 +00:00
fixup-desktop.in scripts: introduced tmpdir.sh 2011-09-22 02:58:59 +04:00
fixup-libraries fixup-libraries: Enhance recognition of ELF executables 2008-10-19 23:56:49 +00:00
fixup-libtool.in fixup-libtool, fixup-pkgconfig: Quote substitution text (ALT#11437) 2008-07-07 22:07:40 +00:00
fixup-pkgconfig.in scripts: introduced tmpdir.sh 2011-09-22 02:58:59 +04:00
functions scripts/functions: invoke av_action with </dev/null 2010-10-04 02:13:53 +04:00
ldd.in ldd.in: added --bindings option 2010-10-01 01:57:35 +04:00
lib.prov.files scripts/*.files: Use single quotes for constant strings 2007-11-10 20:47:01 +00:00
lib.prov.in lib.req, lib.prov: simplify leading number check in ProvidedSymbols 2011-02-06 03:42:15 +03:00
lib.req.files lib.req.files: check "uses shared libs" as well as "dynamically linked", for klibc binaries 2008-02-19 00:22:23 +03:00
lib.req.in scripts: introduced tmpdir.sh 2011-09-22 02:58:59 +04:00
Makefile.am scripts: introduced tmpdir.sh 2011-09-22 02:58:59 +04:00
pam.prov.files scripts/pam.*.files: Optimize filename check 2007-11-10 20:47:03 +00:00
pam.prov.in adapted pam.req and pam.prov 2007-03-12 15:06:07 +03:00
pam.req.files scripts/pam.*.files: Optimize filename check 2007-11-10 20:47:03 +00:00
pam.req.in pam.req.in: Handle lines with conditional controls 2009-06-26 00:17:19 +00:00
pkgconfig.req.files scripts/*.files: Use single quotes for constant strings 2007-11-10 20:47:01 +00:00
pkgconfig.req.in Revert "pkgconfig.req: pass --print-requires-private to pkg-config" 2011-02-27 03:39:08 +03:00
pkgconfiglib.req.in cpp.req: disable for gcc 2011-02-27 07:17:15 +03:00
posttrans-filetriggers.in posttrans-filetriggers: minor changes 2008-11-12 05:10:51 +03:00
rpm2cpio.sh rpm2cpio.sh: output raw/compressed cpio stream 2009-09-24 12:35:42 +04:00
rpmlib.req.files.in Revert "rpmlib.req: generate rpmlib(PosttransFiletriggers) dependency for /usr/lib/rpm/*.filetrigger" 2008-11-25 15:37:14 +00:00
rpmlib.req.in Revert "rpmlib.req: generate rpmlib(PosttransFiletriggers) dependency for /usr/lib/rpm/*.filetrigger" 2008-11-25 15:37:14 +00:00
shebang.req.files scripts/*.req.files: Fix "not executable" wording 2007-11-10 20:47:02 +00:00
shebang.req.in shebang.req (ShebangReq): fix the check for absolute pathname (ALT#23716) 2010-07-03 00:23:03 +00:00
shell.prov.files adapted shell.req and shell.prov 2007-03-11 15:00:23 +03:00
shell.prov.in adapted shell.req and shell.prov 2007-03-11 15:00:23 +03:00
shell.req.files shell.req.files: adjusted /bin/ash pattern 2009-06-21 00:20:31 +04:00
shell.req.in shell.req: avoid 'type -t' call for paths 2011-02-09 06:31:40 +03:00
shlib.req.awk Add shlib.req.awk 2006-01-11 00:39:39 +00:00
static.req.files factored static.req 2007-03-11 15:00:35 +03:00
static.req.in factored static.req 2007-03-11 15:00:35 +03:00
strip_files.in brp-strip: select ELF files and .a archives with single file(1) invocation 2010-03-27 00:00:28 +03:00
symlinks.req.files symlinks.req.files: do all symbolic links (will emit file-level dependencies for targets under RPM_BUILD_ROOT) 2007-12-03 14:22:54 +03:00
symlinks.req.in symlinks.req: do only one single step of symlink resolution 2007-11-17 10:52:57 +03:00
tmpdir.sh scripts: introduced tmpdir.sh 2011-09-22 02:58:59 +04:00
verify-elf.in verify-elf: Add /lib/../lib64 to the list of prohibited RPATH elements 2011-09-07 21:44:34 +00:00