Hi,
I just checked out the python bindings for broccoli and tried building it against Bro 1.3.2 using the suggested "python setup.py install". I am using python 2.4.3 and gcc 4.1.2 on CentOS 5
Unfortunately the build just results in a few screens of compilation errors and warnings. Looking at the Makefile, I decided to try regenerating the swing bindings and running setup.pu again. This cut down the number of errors to only a single screenful. Here's what I'm getting:
[sychan@panopticon python]$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib.linux-i686-2.4
copying broccoli.py -> build/lib.linux-i686-2.4
running build_ext
building '_broccoli_intern' extension
creating build/temp.linux-i686-2.4
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fPIC -I/usr/include/python2.4 -c broccoli_intern_wrap.c -o build/temp.linux-i686-2.4/broccoli_intern_wrap.o
broccoli_intern_wrap.c:2504: warning: useless storage class specifier in empty declaration
broccoli_intern_wrap.c: In function ‘valToPyObj’:
broccoli_intern_wrap.c:2595: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness
broccoli_intern_wrap.c: In function ‘pyObjToVal’:
broccoli_intern_wrap.c:2681: warning: pointer targets in assignment differ in signedness
broccoli_intern_wrap.c: At top level:
broccoli_intern_wrap.c:2762: error: expected declaration specifiers or ‘...’ before ‘BroEvMeta’
broccoli_intern_wrap.c: In function ‘event_callback’:
broccoli_intern_wrap.c:2767: error: ‘meta’ undeclared (first use in this function)
broccoli_intern_wrap.c:2767: error: (Each undeclared identifier is reported only once
broccoli_intern_wrap.c:2767: error: for each function it appears in.)
broccoli_intern_wrap.c: In function ‘_wrap_bro_event_add_val’:
broccoli_intern_wrap.c:4716: warning: assignment discards qualifiers from pointer target type
broccoli_intern_wrap.c: In function ‘_wrap_bro_event_set_val’:
broccoli_intern_wrap.c:4786: warning: assignment discards qualifiers from pointer target type
broccoli_intern_wrap.c: In function ‘_wrap_bro_event_registry_add_compact’:
broccoli_intern_wrap.c:4988: warning: assignment from incompatible pointer type
broccoli_intern_wrap.c: In function ‘_wrap_bro_record_add_val’:
broccoli_intern_wrap.c:5849: warning: assignment discards qualifiers from pointer target type
broccoli_intern_wrap.c: In function ‘_wrap_bro_record_set_nth_val’:
broccoli_intern_wrap.c:6004: warning: assignment discards qualifiers from pointer target type
broccoli_intern_wrap.c: In function ‘_wrap_bro_record_set_named_val’:
broccoli_intern_wrap.c:6075: warning: assignment discards qualifiers from pointer target type
error: command 'gcc' failed with exit status 1
[sychan@panopticon python]$
The first error "broccoli_intern_wrap.c:2762: error: expected declaration specifiers or ‘...’ before ‘BroEvMeta’" references this:
// C-level event handler for events. We register all events with this callback,
// passing the target Python function in via data.
void event_callback(BroConn *bc, void *data, BroEvMeta *meta)
{
...
I don't see any declaration for the BroEvMeta type anywhere. There's a reference to this type in http://svn.icir.org/bro/trunk/bro/aux/broccoli/test/broping.c in the bro_pong_compact() declaration:
static void bro_pong_compact(BroConn *conn, void *data, BroEvMeta *meta)
However signature in my version of the broping is:
static void bro_pong_compact(BroConn *conn, void *data, int num_args, BroEvArg *args)
I'm guessing that things have changed since the 1.3.2 release and that the python bindings are against the current code base. Is that true?
Do I need to download the latest bro source tree via subversion to use the pythong bindings?
Steve