On Wednesday 30 July 2008, Jeff Johnson wrote:
> On Jul 30, 2008, at 5:50 AM, Ralf S. Engelschall wrote:
> > On Wed, Jul 30, 2008, Jeff Johnson wrote:
> >> This "band-aid" prevents installing argv.h in /usr/include/rpm w/o
> >> messy
> >> AutoFu.
> >
> > Really? If no Autoconf #defines are present, _nothing_ happens. The
> > stuff degrades gracefully to just no #include at all. So, this should
> > not cause any problems.
>
> And the degradation was the problem that arekm set out to solve.

The problem is that public rpm headers are not self contained. They use stuff 
like
different types but don't include required headers. Example:

[EMAIL PROTECTED] ~]$ cat a.c
#include <rpm/rpmlib.h>
int main() {return 0;}
[EMAIL PROTECTED] ~]$ gcc a.c -I/usr/include/rpm
In file included from /usr/include/rpm/rpmtag.h:8,
                 from /usr/include/rpm/rpmlib.h:11,
                 from a.c:1:
/usr/include/rpm/rpmsw.h:24: error: field ‘tv’ has incomplete type
/usr/include/rpm/rpmsw.h:36: error: expected specifier-qualifier-list before 
‘size_t’
/usr/include/rpm/rpmsw.h:111: error: expected declaration specifiers or ‘...’ 
before ‘ssize_t’
/usr/include/rpm/rpmsw.h:121: error: expected declaration specifiers or ‘...’ 
before ‘ssize_t’
In file included from /usr/include/rpm/rpmtag.h:9,
                 from /usr/include/rpm/rpmlib.h:11,
                 from a.c:1:
/usr/include/rpm/stringbuf.h:52: error: expected declaration specifiers or 
‘...’ before ‘size_t’
In file included from /usr/include/rpm/rpmlib.h:11,
                 from a.c:1:
/usr/include/rpm/rpmtag.h:54: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘rpmTagCount’
/usr/include/rpm/rpmtag.h:67: error: expected specifier-qualifier-list before 
‘uint8_t’
/usr/include/rpm/rpmtag.h:468: error: expected specifier-qualifier-list before 
‘rpmTagCount’
/usr/include/rpm/rpmtag.h:629: error: expected declaration specifiers or ‘...’ 
before ‘size_t’
/usr/include/rpm/rpmtag.h:700: error: expected ‘)’ before ‘*’ token
/usr/include/rpm/rpmtag.h:838: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerSizeof’
/usr/include/rpm/rpmtag.h:848: error: expected declaration specifiers or ‘...’ 
before ‘size_t’
/usr/include/rpm/rpmtag.h:939: error: expected declaration specifiers or ‘...’ 
before ‘size_t’
/usr/include/rpm/rpmtag.h:949: error: expected declaration specifiers or ‘...’ 
before ‘size_t’
/usr/include/rpm/rpmtag.h:1028: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerGetInstance’
/usr/include/rpm/rpmtag.h:1037: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerSetInstance’
/usr/include/rpm/rpmtag.h:1045: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerGetStartOff’
/usr/include/rpm/rpmtag.h:1054: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerSetStartOff’
/usr/include/rpm/rpmtag.h:1062: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerGetEndOff’
/usr/include/rpm/rpmtag.h:1071: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘headerSetEndOff’
/usr/include/rpm/rpmtag.h:1125: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘hGetColor’
In file included from /usr/include/rpm/rpmlib.h:12,
                 from a.c:1:
/usr/include/rpm/rpmversion.h:61: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘rpmlibVersion’
/usr/include/rpm/rpmversion.h:63: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘rpmlibTimestamp’
/usr/include/rpm/rpmversion.h:65: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘rpmlibVendor’
zsh: exit 1     gcc a.c -I/usr/include/rpm


Try to do the same with for example glibc headers. These are well written and 
self-consistent.

> The AutoFu imposes conventions on using rpm include files.
>
> Imposing conventions is no different than asking applications to do
>      #include <stdint.h>
> or whatever else is necessary to supply typedefs.



> 73 de Jeff

-- 
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to