[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