RPM Community Forums

Mailing List Message of <rpm-users>

Aw: Re: [RPM5.3.5] Compilation errros in Cygwin environment

From: Michael Baudisch <mi.hb.baudisch@arcor.de>
Date: Tue 31 Jan 2012 - 17:09:49 CET
Message-ID: <179231552.603041.1328026189765.JavaMail.ngmail@webmail18.arcor-online.net>
[DIR structure in Cygwin environment]

Hello Jeff,
please find attached file sys/dir.h and sys/dirent.h. Compiler switch for Cygwin is __CYGWIN__.

Best regards,
 Michael

----- Original Nachricht ----
Von:     Jeffrey Johnson <n3npq@me.com>
An:      rpm-users@rpm5.org
Datum:   27.01.2012 15:39
Betreff: Re: [RPM5.3.5] Compilation errros in Cygwin environment

> 
> On Jan 27, 2012, at 7:50 AM, Michael Baudisch wrote:
> 
> > Hello,
> > I try to compile Rpm535 in a Cygwin environment. In file rpmdir.c there
> are many errors in combination with DIR structure. I examined a litte
> further.  In rpmdir. h we include <dirent.h> with includes <sys/dirent.h>.
> There I find DIR defined as
> > 
> > typedef struct __DIR
> > {
> >   /* This is first to set alignment in non _COMPILING_NEWLIB case.  */
> >   unsigned long __d_cookie;
> >   struct dirent *__d_dirent;
> >   char *__d_dirname;			/* directory name with trailing '*' */
> >   long __d_position;			/* used by telldir/seekdir */
> >   int __d_fd;
> >   unsigned __d_internal;
> >   void *__handle;
> >   void *__fh;
> >   unsigned __flags;
> > } DIR;
> > 
> > This leed during compilation to
> > 
> > libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I. -I.. -I../build
> -I../lib -I../ [long command line]
> > rpmdir.c: In function 'avClosedir':
> > rpmdir.c:120: error: 'DIR' has no member named 'lock'
> > rpmdir.c: In function 'avOpendir':
> > rpmdir.c:158: error: 'DIR' has no member named 'fd'
> > rpmdir.c:160: error: 'DIR' has no member named 'data'
> > rpmdir.c:162: error: 'DIR' has no member named 'allocation'
> > rpmdir.c:163: error: 'DIR' has no member named 'size'
> > rpmdir.c:164: error: 'DIR' has no member named 'offset'
> > rpmdir.c:166: error: 'DIR' has no member named 'filepos'
> > rpmdir.c:170: error: 'DIR' has no member named 'lock'
> > [...]
> > 
> > Searching the WWW leads to many totally different headers with various
> different definitions. Which all do not match the necessarry structure
> layout. Any ideas how to get rid of the error?
> > 
> 
> Yes. The internals of a DIR structure differ on almost
> every platform.
> 
> RPM is emulating a DIR structure internally as well as
> passing through a pointer opaquely to whatever structure
> the operating system is using when necessary.
> 
> So this code "breaks" for every new platform (RPM on Cygwin hasn't
> been attempted for years afaik).
> 
> If you can send along a copy of <dir.h> and tell me what
> #define you are using to identify CYGWIN during build time,
> I can ;likely send you a patch.
> 
> What mostly needs doing is examining areas of the code like this:
> 
> #if !defined(__DragonFly__) && !defined(__CYGWIN__)
>     dp->d_reclen = 0;           /* W2DO? */
> #endif
> 
> #if !(defined(hpux) || defined(__hpux) || defined(sun) ||
> defined(RPM_OS_AIX) || defined(__CYGWIN__) || defined(__QNXNTO__))
> #if !defined(__APPLE__) && !defined(__FreeBSD_kernel__) &&
> !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__) &&
> !defined(__OpenBSD__)
>     dp->d_off = (off_t)i;
> #endif
>     dp->d_type = dt[i];
> #endif
> /*@=type@*/
> 
> and adding CYGWIN to the pile.
> 
> Note that rpmio/fts.[ch] has similar (but not quite as bad)
> portability breakage.
> 
> Could you also add a bug at
> 	http://launchpad.net/rpm
> please? I will then create a blueprint and attach the bug and
> then plan out milestones->implementations->releases for
> getting RPM to compile and "work" on cygwin.
> 
> Thanks!
> 
> 73 de Jeff
> > 
> > 
> > Best regards,
> > Michael
> > ______________________________________________________________________
> > RPM Package Manager                                    http://rpm5.org
> > User Communication List                             rpm-users@rpm5.org
> 
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> User Communication List                             rpm-users@rpm5.org
> 

Best regards,
 Michael


  • text/plain attachment: dir.h
Received on Tue Jan 31 17:09:52 2012
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.