[tor-dev] Fwd: [tor-relays] tcmalloc in FreeBSD
Jordi Espasa Clofent
jespasac at minibofh.org
Thu Aug 9 10:04:11 UTC 2012
On 08/09/2012 01:43 AM, Nick Mathewson wrote:
> On Wed, Aug 8, 2012 at 7:09 PM, Jordi Espasa Clofent
> <jespasac at 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 at 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 at 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).
More information about the tor-dev
mailing list