Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 292081 - dev-libs/glib-2.22.2 fails to compile on IRIX (and any UNIX with sa_len macro?)
Summary: dev-libs/glib-2.22.2 fails to compile on IRIX (and any UNIX with sa_len macro?)
Status: RESOLVED FIXED
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All IRIX
: High normal (vote)
Assignee: Gentoo Prefix
URL: https://bugzilla.gnome.org/show_bug.c...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-11-06 11:54 UTC by Stuart Shelton
Modified: 2010-06-13 15:23 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stuart Shelton 2009-11-06 11:54:11 UTC
Are there problems with the latest glib on other UNIXen - Solaris et al.?

On IRIX, compilation fails with:

libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"GLib-GIO\" -I.. -I.. -I../glib -I../gmodule -DG_DISABLE_CAST_CHECKS -DG_DISABLE_DEPRECATED -DGIO_COMPILATION -DGIO_MODULE_DIR=\"/opt/gentoo/usr/lib32/gio/modules\" -I/opt/gentoo/usr/include -DG_DISABLE_SINGLE_INCLUDES -D_REENTRANT -c99 -O2 -n32 -mips4 -r14000 -float_const -use_readonly_const -TARG:isa=mips4:platform=ip30:processor=r14000 -TENV:zeroinit_in_bss=ON -OPT:fast_io=ON:Olimit=8192:reorg_common=ON:swp=ON -LNO:auto_dist=ON:fusion_peeling_limit=8:gather_scatter=2 -diag_error 1035,1999,3333 -woff 1174,1183,1185,1552,3968,3970 -c ginetaddress.c -Wp,-MD,.deps/ginetaddress.TPlo  -DPIC -o .libs/ginetaddress.o
cc-1047 cc: WARNING File = /usr/include/sys/param.h, Line = 371                    
  Macro "MIN" (declared at line 194 of "../glib/gmacros.h") has an incompatible    
          redefinition.                                                            
                                                                                   
  #define MIN(a,b) (((a)<(b))?(a):(b))                                             
          ^                                                                        
                                                                                   
cc-1047 cc: WARNING File = /usr/include/sys/param.h, Line = 372                    
  Macro "MAX" (declared at line 191 of "../glib/gmacros.h") has an incompatible    
          redefinition.                                                            
                                                                                   
  #define MAX(a,b) (((a)>(b))?(a):(b))                                             
          ^                                                                        
                                                                                   
cc-1018 cc: ERROR File = gnetworkingprivate.h, Line = 76                           
  An unmatched left parentheses "(" appears in an expression.                      
                                                                                   
                                            gsize                   *sa_len);      
                                                                     ^             
                                                                                   
1 error detected in the compilation of "ginetaddress.c".                           
make[4]: *** [ginetaddress.lo] Error 1                                             
make[4]: Leaving directory `/usr/opt/gentoo/var/tmp/portage/dev-libs/glib-2.22.2/work/glib-2.22.2/gio'
make[3]: *** [all-recursive] Error 1                                               
make[3]: Leaving directory `/usr/opt/gentoo/var/tmp/portage/dev-libs/glib-2.22.2/work/glib-2.22.2/gio'
make[2]: *** [all] Error 2                                                         
make[2]: Leaving directory `/usr/opt/gentoo/var/tmp/portage/dev-libs/glib-2.22.2/work/glib-2.22.2/gio'
make[1]: *** [all-recursive] Error 1                                               
make[1]: Leaving directory `/usr/opt/gentoo/var/tmp/portage/dev-libs/glib-2.22.2/work/glib-2.22.2'
make: *** [all] Error 2                                                            
 * ERROR: dev-libs/glib-2.22.2 failed:                                             
 *   emake failed                                                                  
 *                                                                                 
 * Call stack:                                                                     
 *     ebuild.sh, line   51:  Called call-ebuildshell 'src_compile'                
 *   environment, line  612:  Called src_compile                                   
 *   environment, line 3227:  Called _eapi2_src_compile                            
 *     ebuild.sh, line  678:  Called die                                           
 * The specific snippet of code:                                                   
 *              emake || die "emake failed"


... which I *think* is because sa_len is a macro.  <sys/socket.h> declares:

struct sockaddr {
  union {
    struct {
#undef _HAVE_SA_LEN                     /* marker for some places to change */
#ifdef _HAVE_SA_LEN                     /* when we have sin_len */
        u_char  sa_len2;                /* total length */
        u_char  sa_family2;             /* address family */
#else  
        sa_family_t sa_family2;         /* address family */
#endif 
        char    sa_data2[14];           /* up to 14 bytes of direct address */
      } sa_generic;
    int sa_align;
  } sa_union;
};
#define sa_len          sa_union.sa_generic.sa_len2
#define sa_family       sa_union.sa_generic.sa_family2
#define sa_data         sa_union.sa_generic.sa_data2

... and I'm not sure that *sa_union.sa_generic.sa_len2 is what was intended - or whether it even exists with the _HAVE_SA_LEN under a couple of lines above.  In any case, how does the compiler read an opening round bracket??

There don't seem to be any conditional checks for the presence or absence of sa_len, and sa_len doesn't even seem to exist under Linux.  At the same time, gio/gnetworkingprivate.h and ginetaddress.c don't seem to be auto-generated, yet they don't exist in previous glib versions in portage, so I can't compare this version to the last-known-good version.

I'm confused...
Comment 1 Stuart Shelton 2010-01-19 16:06:24 UTC
Mentioned here: https://bugzilla.gnome.org/show_bug.cgi?id=604875 - might be fixed in glib-2.22.4?
Comment 2 Pacho Ramos gentoo-dev 2010-06-13 15:23:55 UTC
Should be fixed in 2.24.1