Subject: pkg/28634: firefox-gtk2 fails to build
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <jpmalkiewcz@acm.org>
List: pkgsrc-bugs
Date: 12/12/2004 15:09:00
>Number:         28634
>Category:       pkg
>Synopsis:       firefox-gtk2 fails to build
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 12 15:09:00 +0000 2004
>Originator:     Julius Malkiewicz
>Release:        NetBSD 2.0
>Organization:
>Environment:
System: NetBSD thingy 2.0 NetBSD 2.0 (INSPIRON) #0: Mon Dec 13 04:49:35 EST 2004
 julius@thingy:/home/julius/build/obj/sys/arch/i386/compile/INSPIRON i386
Architecture: i386
Machine: i386
>Description:
sys/statvfs.h and sys/statfs.h are both included in
xpcom/io/nsLocalFileUnix.h and xpcom/obsolete/nsFileSpecUnix.cpp
leading to redefinition of types and structures.
>How-To-Repeat:
attempt to build www/firefox-gtk2 in current pkgsrc tree (probably
affects other firefox -based browsers as well).
>Fix:
avoid including <sys/statvfs.h> and <sys/statfs.h> in the same file.
two proposals, each independent:

1. Perhaps change the system file to avoid the conflict (ie, allow
   sys/statfs.h know about sys/statvfs.h, and only allow one to be
   included using the usual #ifndef _SYS_STATVFS_H_ style.

2. only include <sys/statvfs.h> when HAVE_SYS_STATFS_H and 
   HAVE_STATVFS are defined. Two proposed patches follow: one changes 
   existing www/firefox/patches/patch-bq, the other is a proposed  
   new patch, prehaps www/firefox/patches/patch-cg 
   
---- patch-bq -----------------------------------------------------------------
--- ../Orig/mozilla/xpcom/io/nsLocalFileUnix.h  2004-12-13 12:23:01.000000000 +1
100
+++ ./xpcom/io/nsLocalFileUnix.h        2004-12-13 12:23:12.000000000 +1100
@@ -39,14 +39,14 @@
 /**
  *  we need these for statfs()
  */
-#ifdef HAVE_SYS_STATVFS_H
+#if defined(HAVE_SYS_STATVFS_H) && defined(HAVE_STATVFS)
     #if defined(__osf__) && defined(__DECCXX)
         extern "C" int statvfs(const char *, struct statvfs *);
     #endif
     #include <sys/statvfs.h>
 #endif

-#ifdef HAVE_SYS_STATFS_H
+#if defined(HAVE_SYS_STATFS_H) && defined(HAVE_STATVFS)
     #include <sys/statfs.h>
 #endif

@@ -57,7 +57,7 @@
 #endif

 // so we can statfs on freebsd
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || (defined(__NetBSD__) && !defined(HAVE_STATVFS))
     #define HAVE_SYS_STATFS_H
     #define STATFS statfs
     #include <sys/param.h>

---- patch-cg -----------------------------------------------------------------
--- ../Orig/mozilla/xpcom/obsolete/nsFileSpecUnix.cpp   2004-12-13 12:23:20.0000
00000 +1100
+++ ./xpcom/obsolete/nsFileSpecUnix.cpp 2004-12-13 12:23:37.000000000 +1100
@@ -54,7 +54,7 @@
 #define _SVID3  /* for statvfs.h */
 #endif

-#ifdef HAVE_SYS_STATVFS_H
+#if defined(HAVE_SYS_STATVFS_H) && defined(HAVE_STATVFS)
 #include <sys/statvfs.h>
 #endif