Subject: pkg/31888: converters/wv build fails on MacOS X 10.4.2 w/GCC-4.0.0
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <jdbaker@mylinuxisp.com>
List: pkgsrc-bugs
Date: 10/22/2005 16:10:00
>Number:         31888
>Category:       pkg
>Synopsis:       converters/wv build fails on MacOS X 10.4.2 w/GCC-4.0.0
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Oct 22 16:10:00 +0000 2005
>Originator:     John D. Baker
>Release:        MacOS X 10.4.2
>Organization:
>Environment:
Darwin pm8500.technoskunk.fur 8.2.0 Darwin Kernel Version 8.2.0: Fri Jun 24 17:46:54 PDT 2005; root:xnu-792.2.4.obj~3/RELEASE_PPC Power Macintosh powerpc
>Description:
Building converters/wv with GCC 4.0.0 fails when compiling:

    work/wv-1.0.3/wvConfig.c

The complaints are that static declarations of the functions:

    startElement()
    endElement()

follow non-static delarations of identically-named function prototypes
found in:

    /usr/pkg/include/libxml2/libxml/SAX.h

(as referenced via .buildlink, etc.)

>How-To-Repeat:
On MacOS X 10.4.x with gcc 4.0.0 as the default compiler:

cd .../pkgsrc/converters/wv
bmake
>Fix:
GCC 4 is very strict about lexical scope and external linkage.

If an external identifier is truly static, and thus private to the
source file in which it appears, its name should not conflict with
identifiers or prototypes with global scope in header files.

Workaround:

rename startElement() and endElement() and all references thereto so as
not to conflict with the non-static prototype in SAX.h.  E.g.,

    startElement() -> wvstartElement()
      endElement() ->   wvendElement()