On 08/09/2012 01:43 AM, Nick Mathewson wrote:
On Wed, Aug 8, 2012 at 7:09 PM, Jordi Espasa Clofent jespasac@minibofh.org wrote:
Here is the log:
===> Installing for tor-0.2.2.37 ===> tor-0.2.2.37 depends on file: /usr/local/lib/libcrypto.so.7 - found ===> tor-0.2.2.37 depends on shared library: event-2.0 - found ===> tor-0.2.2.37 depends on shared library: tcmalloc - found
So here's the line that makes Tor:
cc -O2 -pipe -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -fstack-protector-all -fwrapv -fPIE -Wstack-protector --param ssp-buffer-size=1 -Wall -fno-strict-aliasing -L/usr/local/lib -L/usr/local/lib/event2 -rpath=/usr/local/lib -pie -Wl,-z,relro -Wl,-z,now -o tor tor_main.o ./libtor.a ../common/libor.a ../common/libor-crypto.a ../common/libor-event.a -lz -lm -levent-2.0 -lssl -lcrypto -pthread
and yeah, there's no tcmalloc there.
Nice. Maybe we're skipping something obvious, because I remember perfectly that google-perftools package was installed when I configure the port to use tcmalloc.
Still, it seems not using it at all.
This is a little strange; when I try it with Tor master, I get (removing my pile of warning options):
gcc -g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector -fwrapv -fPIE -Wall -fno-strict-aliasing -ltcmalloc -pie -z relro -z now -o tor tor_main.o ./libtor.a ../common/libor.a ../common/libor-crypto.a ../common/libor-event.a -lz -lm -levent -lssl -lcrypto -lpthread -lrt -ldl
[...]
Is plain to see the script is checking if the tcmalloc is there, but more than that... I cannot see the compiler itself is calling the mentioned library.
Can you see what arguments are being passed to configure, and what configure does with them? Is the freebsd build process passing --with-tcmalloc to the configure script?
Sure.
mb# pwd && make showconfig /usr/ports/security/tor ===> The following configuration options are available for tor-0.2.2.37: BUFFREELISTS=on: Freelists for buffer RAM GMAKE=off: Parallel build safety via GNU make INSTR_DOWNLOADS=off: Instrument downloads for analysis TCMALLOC=on: Use the tcmalloc memory allocation library THREADS=on: Threading support TRANSPARENT=on: Transparent proxy support ===> Use 'make config' to modify these settings
mb# cat Makefile # ports collection makefile for: tor-devel # Date created: 2005.10.20 # Whom: peter.thoenen@yahoo.com # # $FreeBSD: ports/security/tor/Makefile,v 1.83 2012/06/29 00:38:55 bf Exp $ #
PORTNAME= tor DISTVERSION= 0.2.2.37 CATEGORIES= security net ipv6 MASTER_SITES= https://www.torproject.org/dist/ \ ftp://ftp.bit.nl/mirror/tor/ \ http://cyberside.net.ee/tor/ \ http://ftp.bit.nl/mirror/tor/ \ http://mirror.hessmo.com/tor/dist/ \ http://mirror.host4site.co.il/torproject.org/dist/ \ http://mirror.open-networx.org/torproject.org/dist/ \ http://mirror.tor.hu/dist/ \ https://mirror.torland.me/torproject.org/dist/ \ http://mirrors.chaos-darmstadt.de/tor-mirror/dist/ \ http://onion.anonymo.us.org/dist/ \ http://theonionrouter.com/dist/ \ http://tor.amorphis.eu/dist/ \ http://tor.askapache.com/dist/ \ http://tor.beme-it.de/dist/ \ http://tor.blingblingsquad.net/dist/ \ http://tor.borgmann.tv/dist/ \ http://tor.ccc.de/dist/ \ http://tor.cyberarmy.at/dist/ \ http://tor.dont-know-me.at/dist/ \ http://tor.factor.cc/dist/ \ http://tor.homosu.net/dist/ \ http://tor.idnr.ws/dist/ \ http://tor.myrl.net/dist/ \ http://tor.kamagurka.org/dist/ \ http://tor.searchprivate.com/dist/ \ http://tor.spline.de/dist/ \ http://tor.taiga-san.net/dist/ \ http://tor.unregistered.eu/dist/ \ http://tor.vesta.nu/dist/ \ http://tordistua.reactor-xg.kiev.ua/ \ http://torproj.xpdm.us/dist/ \ https://torproject.antagonism.org/dist/ \ https://torproject.crypto.is/dist/ \ http://torproject.is/dist/ \ http://torproject.jcsh.it/dist/ \ http://torproject.nwlinux.us/dist/ \ http://torproject.ph3x.at/dist/ \ http://torua.reactor-xg.kiev.ua/dist/ \ https://www.coevoet.nl/tor/dist/ \ http://www.oignon.net/dist/ \ http://www.torproject.nl/dist/ \ http://www.torproject.org.in/dist/ \ http://www.torproject.org.nyud.net/dist/ \ http://www.torproject.us/dist/ \ http://www.torservers.net/mirrors/torproject.org/dist/
MAINTAINER= bf@FreeBSD.org COMMENT= An anonymizing overlay network for TCP
LICENSE= BSD LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= event-2.0:${PORTSDIR}/devel/libevent2
GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-openssl-dir="${OPENSSLBASE}" --disable-asciidoc \ --enable-linker-hardening CONFIGURE_ENV= TOR_CPPFLAGS_libevent="-I${LOCALBASE}/include/event2 -I${LOCALBASE}/include" \ TOR_LDFLAGS_libevent="-L${LOCALBASE}/lib/event2" \ TOR_LIBEVENT_LIBS="-levent-2.0"
OPTIONS_DEFINE= BUFFREELISTS GMAKE INSTR_DOWNLOADS TCMALLOC THREADS TRANSPARENT
BUFFREELISTS_DESC= Freelists for buffer RAM GMAKE_DESC= Parallel build safety via GNU make INSTR_DOWNLOADS_DESC= Instrument downloads for analysis TCMALLOC_DESC= Use the tcmalloc memory allocation library TRANSPARENT_DESC= Transparent proxy support
OPTIONS_DEFAULT= BUFFREELISTS THREADS TRANSPARENT
USE_OPENSSL= yes
USE_RC_SUBR= tor SUB_FILES= pkg-message
GROUPS = _tor USERS= _tor
CONFLICTS= tor-devel-[0-9]*
MANCOMPRESSED= no MAN1= tor.1 tor-resolve.1 torify.1 tor-gencert.1
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MGMAKE} USE_GMAKE= yes .else MAKE_JOBS_UNSAFE= yes .endif
.if ( (${OSVERSION} >= 703100 && ${OSVERSION} < 800000) || \ (${OSVERSION} >= 800500 && ${OSVERSION} < 900000) || \ (${OSVERSION} >= 900003) ) && !defined(USE_GCC) && empty(CC:T:M*gcc4*) CONFIGURE_ARGS+= --enable-gcc-hardening .endif
.if ( ${OSVERSION} < 704000 || \ (${OSVERSION} >= 800000 && ${OSVERSION} < 801500) || \ (${OSVERSION} >= 900000 && ${OSVERSION} < 900011) ) WITH_OPENSSL_PORT= yes .endif
.if ${PORT_OPTIONS:MBUFFREELISTS} CONFIGURE_ARGS+= --enable-buf-freelists .else CONFIGURE_ARGS+= --disable-buf-freelists .endif
.if ${PORT_OPTIONS:MINSTR_DOWNLOADS} CONFIGURE_ARGS+= --enable-instrument-downloads .else CONFIGURE_ARGS+= --disable-instrument-downloads .endif
.if ${PORT_OPTIONS:MTCMALLOC} CONFIGURE_ARGS+= --with-tcmalloc LIB_DEPENDS+= tcmalloc:${PORTSDIR}/devel/google-perftools .endif
.if ${PORT_OPTIONS:MTHREADS} CONFIGURE_ARGS+= --enable-threads CFLAGS+= ${PTHREAD_CFLAGS} .else CONFIGURE_ARGS+= --disable-threads .endif
.if ${PORT_OPTIONS:MTRANSPARENT} CONFIGURE_ARGS+= --enable-transparent .else CONFIGURE_ARGS+= --disable-transparent .endif
post-patch: @${MV} ${WRKSRC}/contrib/tor-tsocks.conf \ ${WRKSRC}/contrib/tor-tsocks.conf.sample @${REINPLACE_CMD} -e "s|tor-tsocks.conf|tor-tsocks.conf.sample|g" \ ${WRKSRC}/contrib/Makefile.in @${REINPLACE_CMD} -e '|^install-data-am:|s|install-docDATA||' \ ${WRKSRC}/doc/Makefile.in @${REINPLACE_CMD} -e "s|-ltcmalloc|${LOCALBASE}/lib/libtcmalloc.so|" \ ${WRKSRC}/configure
post-configure: @${FIND} -X ${WRKSRC} -type f -name Makefile | ${XARGS} ${REINPLACE_CMD} -e \ "s|-lpthread|${PTHREAD_LIBS}|g" @${REINPLACE_CMD} -e '|^nodist_man_MANS =|s|$$|${MAN1}|' \ ${WRKSRC}/doc/Makefile
post-install: ${MKDIR} /var/run/tor ${CHOWN} -R _tor:_tor /var/run/tor ${TOUCH} /var/log/tor ${CHOWN} _tor:_tor /var/log/tor ${MKDIR} /var/db/tor/data ${CHOWN} -R _tor:_tor /var/db/tor ${CHMOD} -R 700 /var/db/tor ${CAT} ${PKGMESSAGE}
check regression-test test: build @( cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} \ ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} check )
.include <bsd.port.mk>
BTW, I sent this thread to the supposed FreeBSD port mantainer and another guy (I found him using freshports.org). No answer at all (yet).