Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Mar 2004 01:40:04 -0600
From:      "Jeff Mitchell" <jam6@cec.wustl.edu>
To:        <freebsd-ports@freebsd.org>
Subject:   devel/commoncpp problems
Message-ID:  <000801c41497$e696db80$0300a8c0@scales>

next in thread | raw e-mail | index | archive | help
I think devel/commoncpp is broken (okay, or something on my computer =
is).  It's one of many ports that fail during portupgrade, and I think =
several of the other ports are depending upon it, so that might be part =
of the problem I'm having.  There are a couple things here of note with =
devel/commoncpp that I wanted to ask about.

First, the stuff I could fix.  I was getting some errors during =
configuration.  The relevant lines in config.log are:

/usr/include/pthread_np.h:46: error: syntax error before '*' token
/usr/include/pthread_np.h:47: error: syntax error before '*' token
/usr/include/pthread_np.h:51: error: syntax error before '*' token
/usr/include/pthread_np.h:54: error: syntax error before "const"


/usr/include/sys/sched.h: In function `sched_pin':
/usr/include/sys/sched.h:106: error: `curthread' undeclared (first use =
in this function)
/usr/include/sys/sched.h:106: error: (Each undeclared identifier is =
reported only once
/usr/include/sys/sched.h:106: error: for each function it appears in.)
/usr/include/sys/sched.h: In function `sched_unpin':
/usr/include/sys/sched.h:112: error: `curthread' undeclared (first use =
in this function)

/usr/include/netinet/ip.h:71: error: field `ip_src' has incomplete type
/usr/include/netinet/ip.h:71: error: field `ip_dst' has incomplete type
/usr/include/netinet/ip.h:164: error: syntax error before "n_long"
/usr/include/netinet/ip.h:166: error: field `ipt_addr' has incomplete =
type
/usr/include/netinet/ip.h:167: error: syntax error before "n_long"

I fixed these problems (at least, the configure script no longer asked =
me to notify someone of the bugs) by doing the following.  What I did =
may or may not have been bad, so if someone has a better idea, please =
let me know:
Adding the line
#include "/usr/include/pthread.h"=20
to /usr/include/pthread_np.h fixed the first one.
Similarly, adding
#include "/usr/include/sys/pcpu.h"
and
#include "usr/include/netinet/in.h"

fixed the second and third issues respectively.

Now, what I can't fix.  I'm still getting the same errors during the =
build that I was getting before (when the configure script was giving me =
angry warnings).  The errors are as follows:

poprocks# make
=3D=3D=3D>  Building for commoncpp2-1.1.0,1
Making all in include
gmake[1]: Entering directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include'
gmake  all-recursive
gmake[2]: Entering directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include'
Making all in cc++
gmake[3]: Entering directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include/cc++'
gmake[3]: Nothing to be done for `all'.
gmake[3]: Leaving directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include/cc++'
gmake[3]: Entering directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include'
gmake[3]: Nothing to be done for `all-am'.
gmake[3]: Leaving directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include'
gmake[2]: Leaving directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include'
gmake[1]: Leaving directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include'
Making all in src
gmake[1]: Entering directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/src'
if /bin/sh ../libtool --mode=3Dcompile c++ -DHAVE_CONFIG_H -I. -I. =
-I../include   -I/usr/local/include -I../src -DCCXX_EXPORT_LIBRARY =
-D_THREAD_SAFE -I/usr/local/include/libxml2 -I/usr/local/include =
-I../include -O -pipe -mcpu=3Dpentiumpro -I/usr/local/include =
-D_GNU_SOURCE -MT thread.lo -MD -MP -MF ".deps/thread.Tpo" \
  -c -o thread.lo `test -f 'thread.cpp' || echo './'`thread.cpp; \
then mv -f ".deps/thread.Tpo" ".deps/thread.Plo"; \
else rm -f ".deps/thread.Tpo"; exit 1; \
fi
 c++ -DHAVE_CONFIG_H -I. -I. -I../include -I/usr/local/include -I../src =
-DCCXX_EXPORT_LIBRARY -D_THREAD_SAFE -I/usr/local/include/libxml2 =
-I/usr/local/include -I../include -O -pipe -mcpu=3Dpentiumpro =
-I/usr/local/include -D_GNU_SOURCE -MT thread.lo -MD -MP -MF =
.deps/thread.Tpo -c thread.cpp  -fPIC -DPIC -o .libs/thread.o
thread.cpp: In static member function `static void =
ost::Thread::yield()':
thread.cpp:1081: error: `pthread_yield' undeclared (first use this =
function)
thread.cpp:1081: error: (Each undeclared identifier is reported only =
once for=20
   each function it appears in.)
gmake[1]: *** [thread.lo] Error 1
gmake[1]: Leaving directory =
`/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/src'
gmake: *** [all-recursive] Error 1
*** Error code 2

Stop in /usr/ports/devel/commoncpp.

I have no idea, after poking around for two hours, why it thinks =
pthread_yield is not declared.  =
/usr/ports/devel/commoncpp/work/commoncpp2-1.1.0/include/cc++/config.h =
has the following:

/* has yield */
#define HAVE_PTHREAD_YIELD 1

so it's not redefining pthread_yield to sched_yield.  This, I think, is =
fine, because obviously the configure script found pthread_yield.

Also, the command above that actually compiles thread.cpp includes the =
/usr/local/include directory.  The pthread.h in there only defines =
pthread_yield if _POSIX_BACKCOMPAT is defined, so maybe that is the =
problem, except if I try including (in thread.h in the commoncpp work)

#include "/usr/include/pthread.h"

which defines pthread_yield no matter what (at least I think), it still =
doesn't work.  Possibly it's bad to do that anyways, but I honestly =
don't know what the difference is between /usr/include and =
/usr/local/include, and why there are files in the two with the same =
names that are very different.

Anyways, any help would be much appreciated.

Thanks,
Jeff

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000801c41497$e696db80$0300a8c0>