[GRASS-dev] [GRASS GIS] #1131: Global LFS for wingrass

GRASS GIS trac at osgeo.org
Fri Jun 14 13:12:31 PDT 2013


#1131: Global LFS for wingrass
--------------------------+-------------------------------------------------
 Reporter:  mmetz         |       Owner:  grass-dev@…              
     Type:  defect        |      Status:  new                      
 Priority:  critical      |   Milestone:  7.0.0                    
Component:  LibGIS        |     Version:  svn-trunk                
 Keywords:  LFS,wingrass  |    Platform:  MSWindows 7              
      Cpu:  All           |  
--------------------------+-------------------------------------------------

Comment(by mmetz):

 Replying to [comment:19 glynn]:
 > Replying to [comment:18 mmetz]:
 >
 > > I have modified the configure tests such that any switches needed for
 LFS are stored as LFS_CFLAGS. Tests show that on Linux 64 bit, nothing is
 needed.
 >
 > That's probably correct; fseeko and ftello are guarded by:
 {{{
 #if defined __USE_LARGEFILE || defined __USE_XOPEN2K
 }}}
 > !__USE_LARGEFILE is implied by _XOPEN_SOURCE >= 500, while
 !__USE_XOPEN2K is implied by _POSIX_C_SOURCE >= 200112. If you don't have
 one of those two, you'll probably have other issues besides fseeko/ftello
 (e.g. M_PI, SA_RESTART).

 From the autoconf comments, same in our aclocal.m4:
 "We used to try defining _XOPEN_SOURCE=500 too, to work around a bug in
 glibc 2.1.3, but that breaks too many other things. If you want fseeko and
 ftello with glibc, upgrade to a fixed glibc."
 >
 > Aside: if you're testing for compatibility, start by adding -ansi or
 -std=c89 to CFLAGS, then add the minimum set of feature macros. The
 default is -std=gnu89, which enables practically all of the extensions
 (POSIX, X/Open, SUS, SVID, BSD, GNU).
 >
 > About the only feature which isn't enabled by default is _BSD_SOURCE,
 which not only enables BSD extensions but favours them over the SysV
 versions (e.g. both BSD and SysV define getpgrp() and setpgrp(), but the
 BSD versions take arguments while the SysV versions don't).

 So far everything is working fine for me on the systems available to me
 (Redhat-based Linux 32 and 64 bit, Solaris 10, 11 32 bit, *BSD 32 and 64
 bit), therefore I would not add new features unless they are required. For
 example, if you define _BSD_SOURCE, "you must give the option ‘-lbsd-
 compat’ to the compiler or linker when linking the program, to tell it to
 find functions in this special compatibility library before looking for
 them in the normal C library", says the glibc documentation.

 AIX is a problem, also with regard to 64 bit AIX, it insists on using a 32
 bit off_t and corresponding functions. Setting -D_LARGE_FILES is
 apparently not enough, even though the official documentation says it
 should suffice. I need to analyse the errors in more detail before I can
 give useful information on the particulars for LFS on AIX.

-- 
Ticket URL: <https://trac.osgeo.org/grass/ticket/1131#comment:20>
GRASS GIS <http://grass.osgeo.org>



More information about the grass-dev mailing list