Trouble building Socket addon with Ubuntu 9.04:

View: New views
2 Messages — Rating Filter:   Alert me  

Trouble building Socket addon with Ubuntu 9.04:

by dennisf486 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

It seems to start with /usr/include/evhttp.h:111: error: expected specifier-qualifier-list before `TAILQ_ENTRY' and goes downhill from there.  (Maybe they changed something in the version of libevent-dev that I have?)

Socket actually completes the build (with errors) but doesn't work at runtime.  Here's the section of the output from "make test" (oddly Socket gets an exception but still is marked "PASSED"!):

Socket             -
  Exception: Error loading object '/usr/local/lib/io/addons/Socket/_build/dll/libIoSocket.so': '/usr/local/lib/io/addons/Socket/_build/dll/libIoSocket.so: undefined symbol: IoEvRequest_proto'
  ---------
  open                                AddonLoader.io 65
  Object Socket                        SocketTest.io 1
  TestSuite run                        run.io 2

PASSED

Here's the output from running "make Socket":

dennis@dennis-desktop:~/io$ make Socket
./_build/binaries/io_static build.io -a Socket
--- Socket --------------------------------------------------------------------
build.io: Entering directory `addons/Socket'
cp source/*.h _build/headers
cc -Os -g -Wall -pipe -fno-strict-aliasing -DSANE_POPEN -DIOBINDINGS   -I../../libs/garbagecollector/_build/headers -I../../libs/coroutine/_build/headers -I../../libs/basekit/_build/headers -I../../libs/iovm/_build/headers -I/usr/local/include -I/usr/include -I/usr/include/python2.6 -I/usr/include/cairo -I/usr/include/freetype2 -I. -fPIC -c -o _build/objs/IoEvent.o source/IoEvent.c
In file included from source/IoEventManager.h:16,
                 from source/IoEvent.c:75:
/usr/include/evhttp.h:111: error: expected specifier-qualifier-list before `TAILQ_ENTRY'
cc -Os -g -Wall -pipe -fno-strict-aliasing -DSANE_POPEN -DIOBINDINGS   -I../../libs/garbagecollector/_build/headers -I../../libs/coroutine/_build/headers -I../../libs/basekit/_build/headers -I../../libs/iovm/_build/headers -I/usr/local/include -I/usr/include -I/usr/include/python2.6 -I/usr/include/cairo -I/usr/include/freetype2 -I. -fPIC -c -o _build/objs/IoEventManager.o source/IoEventManager.c
In file included from source/IoEventManager.h:16,
                 from source/IoEventManager.c:9:
/usr/include/evhttp.h:111: error: expected specifier-qualifier-list before `TAILQ_ENTRY'
source/IoEventManager.c: In function `IoEventManager_proto':
source/IoEventManager.c:95: warning: implicit declaration of function `evhttp_new'
source/IoEventManager.c:95: warning: assignment makes pointer from integer without a cast
cc -Os -g -Wall -pipe -fno-strict-aliasing -DSANE_POPEN -DIOBINDINGS   -I../../libs/garbagecollector/_build/headers -I../../libs/coroutine/_build/headers -I../../libs/basekit/_build/headers -I../../libs/iovm/_build/headers -I/usr/local/include -I/usr/include -I/usr/include/python2.6 -I/usr/include/cairo -I/usr/include/freetype2 -I. -fPIC -c -o _build/objs/IoSocketInit.o source/IoSocketInit.c
cc -Os -g -Wall -pipe -fno-strict-aliasing -DSANE_POPEN -DIOBINDINGS   -I../../libs/garbagecollector/_build/headers -I../../libs/coroutine/_build/headers -I../../libs/basekit/_build/headers -I../../libs/iovm/_build/headers -I/usr/local/include -I/usr/include -I/usr/include/python2.6 -I/usr/include/cairo -I/usr/include/freetype2 -I. -fPIC -c -o _build/objs/IoEvRequest.o source/IoEvRequest.c
In file included from source/IoEvRequest.h:18,
                 from source/IoEvRequest.c:6:
/usr/include/evhttp.h:111: error: expected specifier-qualifier-list before `TAILQ_ENTRY'
source/IoEvRequest.c: In function `IoEvRequest_RequestDoneCallback':
source/IoEvRequest.c:104: error: `struct evhttp_request' has no member named `output_headers'
source/IoEvRequest.c:105: error: `struct evhttp_request' has no member named `input_buffer'
source/IoEvRequest.c:112: error: `struct evhttp_request' has no member named `response_code'
source/IoEvRequest.c: In function `IoEvRequest_send':
source/IoEvRequest.c:153: error: `struct evhttp_request' has no member named `output_buffer'
source/IoEvRequest.c:164: error: `struct evhttp_request' has no member named `output_headers'
cc -Os -g -Wall -pipe -fno-strict-aliasing -DSANE_POPEN -DIOBINDINGS   -I../../libs/garbagecollector/_build/headers -I../../libs/coroutine/_build/headers -I../../libs/basekit/_build/headers -I../../libs/iovm/_build/headers -I/usr/local/include -I/usr/include -I/usr/include/python2.6 -I/usr/include/cairo -I/usr/include/freetype2 -I. -fPIC -c -o _build/objs/IoEvConnection.o source/IoEvConnection.c
In file included from source/IoEvConnection.h:18,
                 from source/IoEvConnection.c:6:
/usr/include/evhttp.h:111: error: expected specifier-qualifier-list before `TAILQ_ENTRY'
source/IoEvConnection.c: In function `IoEvConnection_setLocalAddress_':
source/IoEvConnection.c:93: warning: implicit declaration of function `evhttp_connection_set_local_address'
source/IoEvConnection.c: In function `IoEvConnection_connect':
source/IoEvConnection.c:117: warning: implicit declaration of function `evhttp_connection_set_base'
ar rcu _build/lib/libIoSocket.a _build/objs/*.o
ranlib _build/lib/libIoSocket.a
cc  -shared  -o _build/dll/libIoSocket.so _build/objs/*.o -L/usr/local/lib -L/usr/lib -levent -L../../_build/dll -liovmall
build.io: Leaving directory `addons/Socket'

dennis@dennis-desktop:~/io$



Re: Trouble building Socket addon with Ubuntu 9.04:

by dennisf486 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Nevermind, fixed it.  For the benefit of others if they have this problem:

According to a Debian bug report, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=448165, this is an issue with the 1.3 version of libevent using a BSD-only macro.  It is fixed in version 1.4.11, which I downloaded from here:  http://monkey.org/~provos/libevent/.

That fixed the *build* problem with Socket, however, I still got the exception,

Socket             -
  Exception: Error loading object '/usr/local/lib/io/addons/Socket/_build/dll/libIoSocket.so': '/usr/local/lib/io/addons/Socket/_build/dll/libIoSocket.so: undefined symbol: IoEvRequest_proto'
  ---------
  open                                AddonLoader.io 65
  Object Socket                        SocketTest.io 1
  TestSuite run                        run.io 2

PASSED

I tried all of the following:

* Used apt-get to remove libevent-dev 1.3
* Then rebuilt and installed libevent 1.4 from source
* Changed libevent's install directory from /usr/local/lib to /usr/lib
* Ran ldconfig every which way
* Rebuilt libevent1.4 and Io multiple times (doing make clean first)

Nothing I did got rid of the 1.3 .so files in my /usr/lib, so in frustration I finally rm'ed all of the libevent.1.3* files from my system!  There was now no *possible* reference to them - except, if I did an ls -lah /usr/lib, there they freaking were, linked to from libevent.so.  Argh.  For some reason, running ldconfig one more time changed the link to point to 1.4 after this.

After that I ran make all && make test.  This time I got a different error:

Socket             -
  Exception: Error loading object '/usr/local/lib/io/addons/Socket/_build/dll/libIoSocket.so': 'libevent-1.3e.so.1: cannot open shared object file: No such file or directory'
  ---------
  open                                AddonLoader.io 65
  Object Socket                        SocketTest.io 1
  TestSuite run                        run.io 2

PASSED

But now I knew I was on the right track so I ran sudo make install on Io, and then when I ran make test again, Socket worked.