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)