[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: Building Tor with libevent 1.2 (or higher) on Windows fails



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi again,

thanks for your replies, Christopher and Nick! I had problems with both
suggestions, but a (quite weird) combination of both works. :)

> Libevent 1.3 should work fine under mingw; the sample application
> doesn't build, but that's safe to ignore.

So, I removed the sample application from the build and libevent
compiled fine.

However, the problem only has moved: Tor does not compile any
more---with a similar error message when compiling log.c. I attached it
below (see 1).

> libevent should probably be using uint8_t, etc. here. These
> are all BSD typesdefs.

I tried this, too. I edited event.h and replaced all "u_int*_t" by
"uint*_t".

But then, compilation of libevent lead to a similar error with event.c
(see 2).


The combination of both solutions looks like this: I compiled libevent
without samples, but did not install it. Then, I edited event.h and
installed libevent. Fortunately, this change does not require
recompilation. Afterwards, I was able to compile and run Tor successfully.

However, I am not so sure if it is advisable to change a header file and
not clean up and recompile the sources. (Did I mention, that C is still
a foreign language for me?) Maybe someone knows a better solution?

I also attached the modified section from tor-win32-mingw-creation.txt,
so that you can better understand what I did.

Kind regards,
Karsten

- ---

Log (1)

$ make
make  all-recursive
make[1]: Entering directory `/t/tor-mingw/trunk'
Making all in src
make[2]: Entering directory `/t/tor-mingw/trunk/src'
Making all in common
make[3]: Entering directory `/t/tor-mingw/trunk/src/common'
if gcc -DHAVE_CONFIG_H -I. -I. -I../..   -I/usr/local/ssl/include
- -I/usr/local/include   -g -O2 -Wall -g -O2 -MT log.o -MD -MP -MF
".deps/log.Tpo" \
  -c -o log.o `test -f 'log.c' || echo './'`log.c; \
then mv ".deps/log.Tpo" ".deps/log.Po"; \
else rm -f ".deps/log.Tpo"; exit 1; \
fi
In file included from log.c:29:
C:/msys/1.0/local/include/event.h:302: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:305: error: syntax error before
"u_int32_t"
C:/msys/1.0/local/include/event.h:307: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:310: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:313: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:318: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:320: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:321: error: syntax error before
"u_int32_t"
C:/msys/1.0/local/include/event.h:322: error: syntax error before
"u_int32_t"
C:/msys/1.0/local/include/event.h:325: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:328: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:331: error: syntax error before "u_int8_t"
C:/msys/1.0/local/include/event.h:334: error: syntax error before "u_int8_t"
make[3]: *** [log.o] Error 1
make[3]: Leaving directory `/t/tor-mingw/trunk/src/common'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/t/tor-mingw/trunk/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/t/tor-mingw/trunk'
make: *** [all] Error 2

- ---

Log (2)

$ make
make  all-recursive
make[1]: Entering directory `/t/tor-mingw/libevent-1.3a'
Making all in .
make[2]: Entering directory `/t/tor-mingw/libevent-1.3a'
/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.
- -Icompat -IWIN32-Code    -g -O2 -Wall -c -o event.lo `test -f 'event.c'
|| echo './'`event.c
 gcc -DHAVE_CONFIG_H -I. -I. -I. -Icompat -IWIN32-Code -g -O2 -Wall -c
event.c -o event.o
In file included from event.c:55:
event.h:302: error: syntax error before "uint8_t"
event.h:305: error: syntax error before "uint32_t"
event.h:307: error: syntax error before "uint8_t"
event.h:310: error: syntax error before "uint8_t"
event.h:313: error: syntax error before "uint8_t"
event.h:318: error: syntax error before "uint8_t"
event.h:320: error: syntax error before "uint8_t"
event.h:321: error: syntax error before "uint32_t"
event.h:322: error: syntax error before "uint32_t"
event.h:325: error: syntax error before "uint8_t"
event.h:328: error: syntax error before "uint8_t"
event.h:331: error: syntax error before "uint8_t"
event.h:334: error: syntax error before "uint8_t"
make[2]: *** [event.lo] Error 1
make[2]: Leaving directory `/t/tor-mingw/libevent-1.3a'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/t/tor-mingw/libevent-1.3a'
make: *** [all] Error 2

- ---

Modified section from tor-win32-mingw-creation.txt:

Stage Four: Download, extract, and patch libevent-1.3a.
- -------------------------------------------------------

Download libevent-1.3a:
http://www.monkey.org/~provos/libevent/

Copy the libevent tarball into the "tor-mingw" directory.
Type "cd tor-mingw"

Extract libevent:
Type "tar zxf libevent-1.3a.tar.gz"

Patch #1: Remove samples from build
Type "cd tor-mingw/libevent-1.3a/"
Remove all occurrences of "sample" from Makefile.am: 5 x in EXTRA_DIST
and 2 x in SUBDIRS
(if and else).
Remove all occurrences of "sample" from Makefile.in: 1 x DIST_SUBDIRS, 5
x in EXTRA_DIST,
1 x in @BUILD_WIN32_FALSE@SUBDIRS, 1 x in @BUILD_WIN32_TRUE@SUBDIRS, 1 x
in distdir
Remove subfolder "tor-mingw/libevent-1.3a/sample/"

Build libevent:
Type "aclocal && autoheader && automake && autoconf".
There may be WARNING messages.  There will be no output if all runs
successfuly.

Type "./configure --enable-static --disable-shared"
Type "make"
Don't type "make install" yet!

Patch #2: Make u_int*_t typedefs Windows-compatible
Edit "tor-mingw/libevent-1.3a/event.h" and replace all occurences of
"u_int" by
"uint", e.g. by using the following vi command (without quotes):
":%s/u_int/uint/g"

Type "make"
Type "make install"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF3YJfq8q8gkGfGakRAssLAKCf5pWtVI+0k11BChFfihpPY3jfawCdEYN5
0j9nzb2xRDaTb9/nvXfdiBA=
=1gQx
-----END PGP SIGNATURE-----