Subject: Re: sysutils/fam build failure on Solaris 9/sparc
To: John D. Baker <tech-pkg@netbsd.org>
From: Sageev George <sageev@usc.edu>
List: tech-pkg
Date: 05/05/2004 18:38:13
On April 21, 2004, at 8:06 AM, John D. Baker wrote:
> Attempting to build sysutils/fam (a deeply-nested dependency of
> graphics/gimp) fails as shown below:
>
> [...]
> /bin/ksh ../libtool --mode=compile
g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../include -DFAM_CONF=\"/usr/pkg/etc/fam.
conf\"  -I/usr/pkg/include -DNDEBUG  -O -I/usr/pkg/include -c -o Client.lo
`test -f 'Client.c++' || echo './'`Client.c++
> mkdir .libs
>  g++ -DHAVE_CONFIG_H -I. -I.. -I../include
"-DFAM_CONF=\"/usr/pkg/etc/fam.conf\"" -I/usr/pkgsrc/sysutils/fam/work/.buil
dlink/include -DNDEBUG -O -c Client.c++ -MT Client.lo -MD -MP -MF
.deps/Client.TPlo  -fPIC -DPIC -o .libs/Client.o
> In file included from
/usr/pkg/gcc3/include/c++/3.3.3/backward/iostream.h:31,
>                  from Client.c++:37:
> /usr/pkg/gcc3/include/c++/3.3.3/backward/backward_warning.h:32:2: warning:
#warning This file includes at least one deprecated or antiquated header.
Please consider using one of the 32 headers found in section 17.4.1.2 of the
C++ standard. Examples include substituting the <X> header for the <X.h>
header for C++ includes, or <sstream> instead of the deprecated header
<strstream.h>. To disable this warning use -Wno-deprecated.
> Client.c++:42: error: type specifier omitted for parameter `u_int32_t'
> Client.c++:42: error: parse error before `*' token
[...]
> Client.c++:132: error: parse error before numeric constant
[...]
> gmake[2]: *** [Client.lo] Error 1
> gmake[2]: Leaving directory `/usr/pkgsrc/sysutils/fam/work/fam-2.7.0/lib'
> gmake[1]: *** [all-recursive] Error 1
> gmake[1]: Leaving directory `/usr/pkgsrc/sysutils/fam/work/fam-2.7.0'
> gmake: *** [all] Error 2
> *** Error code 2
>
> Stop.
> bmake: stopped in /usr/pkgsrc/sysutils/fam
> [...]
>
[...]

I ran into the same problem while trying to install gnome-terminal.
The errors seemed to stem from two main problems:
1. On line 42, a data type u_int32_t is used that Solaris does not
have in <sys/types.h>.  We do have uint32_t, and unsigned long,
however, the latter of which I used in a typedef statement
2. On line 132, what I assume is either a reserved work, and a
#define'd word, "sun", was used.  Replace that with dsun

By doing #1 and #2, Client.c++ compiled.

-Sageev