[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-dev] Fwd: [tor-relays] tcmalloc in FreeBSD
On 08/09/2012 01:43 AM, Nick Mathewson wrote:
On Wed, Aug 8, 2012 at 7:09 PM, Jordi Espasa Clofent
<jespasac@xxxxxxxxxxxx> 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@xxxxxxxxx
#
# $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@xxxxxxxxxxx
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).
_______________________________________________
tor-dev mailing list
tor-dev@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev