[tor-commits] [orbot/master] new build instructions

n8fr8 at torproject.org n8fr8 at torproject.org
Fri May 4 22:17:06 UTC 2012


commit de50258abf4660b07077048e721d02a948cc9f85
Author: n8fr8 <nathan at freitas.net>
Date:   Thu May 3 19:40:21 2012 -0400

    new build instructions
---
 BUILD |  136 ++++++++++-------------------------------------------------------
 1 files changed, 21 insertions(+), 115 deletions(-)

diff --git a/BUILD b/BUILD
index 87971c3..a2d6056 100644
--- a/BUILD
+++ b/BUILD
@@ -1,109 +1,31 @@
 
-// 2012/02/13 will be adding information on how to build OBFSPROXY binary 
+This document explains how to properly build an Android package of Orbot from source.
 
-// 2011/04/15 this document is a bit out of date. We will be updating to use
-// the standalone cross-compiler that is offered by the Android NDK soon
+Orbot includes, in the external directory, git repo submodules of:
+	- Tor
+	- OpenSSL (statically built and patched for Android)
+	- LibEvent
+	- JTorControl: The Tor Control Library for Java
 
-This document explains how to properly build an Android package of Orbot from
-source. It covers building on Debian Lenny (5.0.3).
+The Orbot repo also includes the Privoxy source code of a recent stable release.
 
 Please install the following prerequisites (instructions for each follows):
 	ant: http://ant.apache.org/
-	Android OS SDK: http://source.android.com/download
-	droid-wrapper: http://github.com/tmurakam/droid-wrapper
-	libevent source (1.4.12-stable from svn)
-	Tor source (most recent git master branch)
-	Privoxy source (http://sourceforge.net/projects/ijbswa/)
-
-Install and prepare the Android OS SDK ( http://source.android.com/download )
-on Debian Lenny:
-
-	sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf \
-		libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip \
-		curl libncurses5-dev zlib1g-dev valgrind libtool automake \
-		ruby subversion
-	update-java-alternatives -s java-1.5.0-sun
-
-	mkdir ~/bin
-	PATH=~/bin:$PATH
-	curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
-	chmod a+x ~/bin/repo
-
-	mkdir ~/mydroid
-	cd ~/mydroid
-
-	repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.7_r1
-	repo sync
-
-	# Paste in key from http://source.android.com/download next...
-	gpg --import
-
-	cd ~/mydroid
-
-	# This takes a long while...
-	make
-
-Install droid-wrapper:
-
-	cd /tmp
-	git clone git://github.com/tmurakam/droid-wrapper.git
-	cd droid-wrapper
-	sudo make install
-
-zlib and OpenSSL are included with the Android OS SDK. You'll need to build
-libevent, Privoxy and finally Tor. We'll create an externals directory for this code:
-
-	mkdir -p ~/mydroid/external/{libevent,tor,privoxy}
-
-We need to set to environment variables for droid-gcc:
-	export DROID_ROOT=~/mydroid/
-	export DROID_TARGET=generic
-
-Fetch and build Privoxy:c
-	cd ~/mydroid/external/privoxy
-	wget http://sourceforge.net/projects/ijbswa/files/Sources/3.0.12%20%28stable%29/privoxy-3.0.12-stable-src.tar.gz/download
-	tar xzvf privoxy-3.0.12-stable-src.tar.gz
-	cd privoxy-3.0.12-stable
-	autoheader
-	autoconf
-	#need to disable setpgrp check in configure
-	export ac_cv_func_setpgrp_void=yes
-	CC=droid-gcc LD=droid-ld CPPFLAGS="-I$DROID_ROOT/external/zlib/" ./configure --host=arm-none-linux-gnueabi
-	#don't mind the "unrecognized option '-pthread'" error message that you'll see when you run make
-	make
-	
-Fetch and build libevent:
-
-	cd ~/mydroid/external/libevent
-	svn co https://levent.svn.sourceforge.net/svnroot/levent/tags/release-1.4.13-stable/libevent/ .
-	export LIBEVENTDIR=`cd $DROID_ROOT/external/libevent && pwd`
-	./autogen.sh
-	# Put the contents of http://pastebin.ca/1577207 in /tmp/libevent-patch
-	# path no longer needed: patch < /tmp/libevent-patch
-	CC=droid-gcc LD=droid-ld ./configure --host=arm-none-linux-gnueabi
-	make
-
-Copy over the libevent library:
-	cp .libs/libevent.a $DROID_ROOT/out/target/product/generic/obj/lib
-
-Fetch and build Tor:
-
-	export OPENSSLDIR=`cd $DROID_ROOT/external/openssl/include/ && pwd`
-	export ZLIBDIR=`cd $DROID_ROOT/external/zlib && pwd`
-
-	cd $DROID_ROOT/external/tor
-	git clone git://git.torproject.org/git/tor.git
-	cd tor/
-	./autogen.sh
-	CC=droid-gcc LD=droid-ld ./configure --host=arm-none-linux-gnueabi \
-	--with-libevent-dir=$LIBEVENTDIR --with-openssl-dir=$OPENSSLDIR \
-	--with-zlib-dir=$ZLIBDIR --disable-asciidoc
-	make
-
-At this point, you'll have a Tor binary that can be run on an Android handset.
+	Android Native Dev Kit or NDK (for C/C++ code): http://developer.android.com/sdk/ndk/index.html
+	Android Software Dev Kit or SDK (for Java code): http://developer.android.com/sdk/index.html
+
+You will need to run the 'android' command in the SDK to install the necessary Android platform supports (ICS 4.x or android-15)
+
+To begin building, from the Orbot root directory, you first need to build all external C/native dependencies:
+
+	export NDK_BASE={PATH TO YOUR NDK INSTALL}
+	make -C external
+
+At this point, you'll have Tor and Privoxy binaries that can be run on an Android handset.
 You can verify the ARM binary was properly built using the following command:
 
-file src/or/tor
+	file res/raw/tor
+	file res/raw/privoxy
 	
 You should see something like:
 src/or/tor: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
@@ -111,30 +33,14 @@ src/or/tor: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked
 This isn't enough though and we'll now sew up the binary into a small package
 that will handle basic Tor controlling features.
 
-We need to get the TorControl library for Java:
-(see also https://svn.torproject.org/svn/torctl/trunk/doc/howto.txt)
+	android update project --name Orbot --target android-15 --path .
 
-	git clone git://git.torproject.org/git/jtorctl
-	cd jtorctl
-	mkdir bin
-	javac net/freehaven/tor/control/TorControlConnection.java -d bin
-	cd bin
-	jar cvf jtorctrl.jar *
-	cp jtorctrl.jar {Orbot Home}/libs
-	
-Finally, we'll make a proper Android package with ant and the Android App SDK:
-
-	export APP_SDK=~/Documents/projects/android/android-sdk-linux_x86-1.5_r3/tools
-	cd ../Orbot/
-	cp $DROID_ROOT/external/privoxy/privoxy-3.0.12-stable/privoxy assets/privoxy
-
-Now you need to split and copy the tor binary into res/raw. We split it into < 1M chunks
-because some Android devices don't like resources larger than 1M.
-
-	split --bytes=1m $DROID_ROOT/external/tor/tor/src/or/tor res/raw/tor
+#Now you need to split and copy the tor binary into res/raw. We split it into < 1M chunks
+#because some Android devices don't like resources larger than 1M.
+#split --bytes=1m $DROID_ROOT/external/tor/tor/src/or/tor res/raw/tor
 
 Now build the Android app
-	$APP_SDK/android update project --name Orbot --target 3 --path .
+
 	ant release
 
 This will produce an unsigned Tor package in ./bin/Orbot-unsigned.apk!





More information about the tor-commits mailing list