updated most things to work on Wheezy

I haven't done the new opencv packages yet, so I just didn't test
compiling that stuff.

Almost all of the changes were related to user-defined string literals
breaking things like "%"PRIu32" (in our code and other people's).
diff --git a/aos/build/download_externals.sh b/aos/build/download_externals.sh
index 4f999b2..f671ac3 100755
--- a/aos/build/download_externals.sh
+++ b/aos/build/download_externals.sh
@@ -1,4 +1,6 @@
-#!/bin/bash -e
+#!/bin/bash
+
+set -e
 
 AOS=`dirname $0`/..
 EXTERNALS=${AOS}/externals
@@ -9,7 +11,7 @@
 [ -d ${GCCDIST} ] || ( cd ${EXTERNALS} && unzip -q ${GCCDIST}.zip )
 
 # get eigen
-EIGEN_VERSION=3.0.5
+EIGEN_VERSION=3.1.3
 EIGEN_DIR=${EXTERNALS}/eigen-${EIGEN_VERSION}
 [ -f ${EIGEN_DIR}.tar.bz2 ] || wget http://bitbucket.org/eigen/eigen/get/${EIGEN_VERSION}.tar.bz2 -O ${EIGEN_DIR}.tar.bz2
 [ -d ${EIGEN_DIR} ] || ( mkdir ${EIGEN_DIR} && tar --strip-components=1 -C ${EIGEN_DIR} -xf ${EIGEN_DIR}.tar.bz2 )
@@ -46,16 +48,24 @@
 [ -d ${GTEST_DIR} ] || ( unzip ${GTEST_ZIP} -d ${TMPDIR} && mv ${TMPDIR}/gtest-${GTEST_VERSION} ${GTEST_DIR} && cd ${GTEST_DIR} && patch -p1 < ../gtest.patch )
 
 # get and build ctemplate
-CTEMPLATE_VERSION=2.2
+# This is the next revision after the 2.2 release and it only adds spaces to
+# make gcc 4.7 with --std=c++11 happy (user-defined string literals...).
+CTEMPLATE_VERSION=129
 CTEMPLATE_DIR=${EXTERNALS}/ctemplate-${CTEMPLATE_VERSION}
 CTEMPLATE_PREFIX=${CTEMPLATE_DIR}-prefix
 CTEMPLATE_LIB=${CTEMPLATE_PREFIX}/lib/libctemplate.a
-CTEMPLATE_URL=http://ctemplate.googlecode.com/files
-CTEMPLATE_URL=${CTEMPLATE_URL}/ctemplate-${CTEMPLATE_VERSION}.tar.gz
-[ -f ${CTEMPLATE_DIR}.tar.gz ] || \
-	wget ${CTEMPLATE_URL} -O ${CTEMPLATE_DIR}.tar.gz
-[ -d ${CTEMPLATE_DIR} ] || ( mkdir ${CTEMPLATE_DIR} && tar \
-	--strip-components=1 -C ${CTEMPLATE_DIR} -xf ${CTEMPLATE_DIR}.tar.gz )
+CTEMPLATE_URL=http://ctemplate.googlecode.com
+if [[ "${CTEMPLATE_VERSION}" =~ /\./ ]]; then
+	CTEMPLATE_URL=${CTEMPLATE_URL}/files/ctemplate-${CTEMPLATE_VERSION}.tar.gz
+	[ -f ${CTEMPLATE_DIR}.tar.gz ] || \
+		wget ${CTEMPLATE_URL} -O ${CTEMPLATE_DIR}.tar.gz
+	[ -d ${CTEMPLATE_DIR} ] || ( mkdir ${CTEMPLATE_DIR} && tar \
+		--strip-components=1 -C ${CTEMPLATE_DIR} -xf ${CTEMPLATE_DIR}.tar.gz )
+else
+	CTEMPLATE_URL=${CTEMPLATE_URL}/svn/trunk
+	[ -d ${CTEMPLATE_DIR} ] || \
+		svn checkout ${CTEMPLATE_URL} -r ${CTEMPLATE_VERSION} ${CTEMPLATE_DIR}
+fi
 [ -f ${CTEMPLATE_LIB} ] || env -i PATH="${PATH}" \
 	CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32' \
 	bash -c "cd ${CTEMPLATE_DIR} && ./configure --disable-shared \
@@ -96,3 +106,18 @@
 COMPILER_RT_DIR=${EXTERNALS}/compiler-rt-${COMPILER_RT_VERSION}
 COMPILER_RT_URL=http://llvm.org/svn/llvm-project/compiler-rt/tags/${COMPILER_RT_TAG}
 [ -d ${COMPILER_RT_DIR} ] || svn checkout ${COMPILER_RT_URL} ${COMPILER_RT_DIR}
+
+# get and build libevent
+LIBEVENT_VERSION=2.0.21
+LIBEVENT_DIR=${EXTERNALS}/libevent-${LIBEVENT_VERSION}
+LIBEVENT_PREFIX=${LIBEVENT_DIR}-prefix
+LIBEVENT_LIB=${LIBEVENT_PREFIX}/lib/libevent.a
+LIBEVENT_URL=https://github.com/downloads/libevent/libevent
+LIBEVENT_URL=${LIBEVENT_URL}/libevent-${LIBEVENT_VERSION}-stable.tar.gz
+[ -f ${LIBEVENT_DIR}.tar.gz ] || wget ${LIBEVENT_URL} -O ${LIBEVENT_DIR}.tar.gz
+[ -d ${LIBEVENT_DIR} ] || ( mkdir ${LIBEVENT_DIR} && tar \
+  --strip-components=1 -C ${LIBEVENT_DIR} -xf ${LIBEVENT_DIR}.tar.gz )
+[ -f ${LIBEVENT_LIB} ] || env -i PATH="${PATH}" \
+  CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32' \
+  bash -c "cd ${LIBEVENT_DIR} && ./configure \
+  --prefix=`readlink -f ${LIBEVENT_PREFIX}` && make && make install"
diff --git a/aos/build/externals.gyp b/aos/build/externals.gyp
index 06bd225..0dcabf2 100644
--- a/aos/build/externals.gyp
+++ b/aos/build/externals.gyp
@@ -6,14 +6,15 @@
     'externals_abs': '<!(readlink -f ../externals)',
 
 # These versions have to be kept in sync with the ones in download_externals.sh.
-    'eigen_version': '3.0.5',
+    'eigen_version': '3.1.3',
     'gtest_version': '1.6.0-p1',
     'onejar_version': '0.97',
-    'ctemplate_version': '2.2',
+    'ctemplate_version': '129',
     'gflags_version': '2.0',
     'libusb_version': '1.0.9',
     'libusb_apiversion': '1.0',
     'compiler_rt_version': 'RELEASE_32_final',
+    'libevent_version': '2.0.21',
   },
   'targets': [
     {
@@ -97,11 +98,13 @@
       },
     },
     {
-# TODO(brians) convert this to downloading + building
       'target_name': 'libevent',
       'type': 'none',
       'link_settings': {
-        'libraries': ['-levent'],
+        'libraries': ['<(externals_abs)/libevent-<(libevent_version)-prefix/lib/libevent.a'],
+      },
+      'direct_dependent_settings': {
+        'include_dirs': ['<(externals)/libevent-<(libevent_version)-prefix/include'],
       },
     },
     {
diff --git a/aos/build/queues/objects/queue.rb b/aos/build/queues/objects/queue.rb
index 5693486..e993eb9 100644
--- a/aos/build/queues/objects/queue.rb
+++ b/aos/build/queues/objects/queue.rb
@@ -38,14 +38,14 @@
                        "float" => "%f",
                        "char" => "%c",
                        "double" => "%f",
-                       "uint8_t" => "%\"PRIu8\"",
-                       "uint16_t" => "%\"PRIu16\"",
-                       "uint32_t" => "%\"PRIu32\"",
-                       "uint64_t" => "%\"PRIu64\"",
-                       "int8_t" => "%\"PRId8\"",
-                       "int16_t" => "%\"PRId16\"",
-                       "int32_t" => "%\"PRId32\"",
-                       "int64_t" => "%\"PRId64\""}
+                       "uint8_t" => "%\" PRIu8 \"",
+                       "uint16_t" => "%\" PRIu16 \"",
+                       "uint32_t" => "%\" PRIu32 \"",
+                       "uint64_t" => "%\" PRIu64 \"",
+                       "int8_t" => "%\" PRId8 \"",
+                       "int16_t" => "%\" PRId16 \"",
+                       "int32_t" => "%\" PRId32 \"",
+                       "int64_t" => "%\" PRId64 \""}
         def toPrintFormat()
 		if(format = PrintFormat[@type])
 			return format;
diff --git a/aos/build/queues/output/message_dec.rb b/aos/build/queues/output/message_dec.rb
index 0e957be..a643392 100644
--- a/aos/build/queues/output/message_dec.rb
+++ b/aos/build/queues/output/message_dec.rb
@@ -1,4 +1,9 @@
-require "sha1"
+begin
+  require "sha1"
+rescue LoadError
+  require "digest/sha1"
+end
+
 class Target::MessageDec < Target::Node
 	attr_accessor :name,:loc,:parent,:msg_hash
 	def initialize(name)
@@ -118,7 +123,7 @@
 		ts = (@members.collect { |elem|
 			elem.type + " " + elem.name
 		}).join(";")
-		self.msg_hash = "0x#{SHA1.hexdigest(ts)[-8..-1]}"
+		self.msg_hash = "0x#{Digest::SHA1.hexdigest(ts)[-8..-1]}"
 		type_class.add_member("enum {kQueueLength = 1234, kHash = #{self.msg_hash}}")
 		@members.each do |elem|
 			type_class.add_member(elem.create_usage(cpp_tree))
diff --git a/aos/build/queues/output/q_file.rb b/aos/build/queues/output/q_file.rb
index af76ee1..5e016c0 100644
--- a/aos/build/queues/output/q_file.rb
+++ b/aos/build/queues/output/q_file.rb
@@ -1,4 +1,9 @@
-require "sha1"
+begin
+  require "sha1"
+rescue LoadError
+  require "digest/sha1"
+end
+
 module Target
 end
 class Target::Node
@@ -76,7 +81,7 @@
 		ts = (@queues.collect { |queue|
 			queue.msg_hash()
 		}).join("") + name
-		return "0x#{SHA1.hexdigest(ts)[-8..-1]}"
+		return "0x#{Digest::SHA1.hexdigest(ts)[-8..-1]}"
 	end
 	def create(cpp_tree)
 		return if(@extern)