aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJun He <jun.he@linaro.org>2017-03-24 09:10:15 +0000
committerJun He <jun.he@linaro.org>2017-03-24 09:14:39 +0000
commit60732c133941e9584e275849f51139fa532297fb (patch)
treec51e15b3e0165d72c4564d892e258f5e2f3b068f
parent0c475987937456d4eebfdc9cf7e69c3b44088559 (diff)
Added aarch64 support in leveldbjni as upstream doesn't do this.ci-fixup
Corrected snappy library path reference for ubuntu-64bit system
-rw-r--r--bigtop-packages/src/common/hadoop/do-component-build55
1 files changed, 52 insertions, 3 deletions
diff --git a/bigtop-packages/src/common/hadoop/do-component-build b/bigtop-packages/src/common/hadoop/do-component-build
index f7b63086..6b7ddf93 100644
--- a/bigtop-packages/src/common/hadoop/do-component-build
+++ b/bigtop-packages/src/common/hadoop/do-component-build
@@ -18,20 +18,68 @@ set -ex
######################################################################
# BIGTOP-2288 Please remove this patch when maven repository is updated
# with version of leveldbjni-all library that is not x86 specific
-if [ $HOSTTYPE = "powerpc64le" ] ; then
+if [ $HOSTTYPE = "powerpc64le" ] || [ $HOSTTYPE = "aarch64" ] ; then
+ if [ $HOSTTYPE = "powerpc64le" ] ; then
#download the POWER version of leveldb
git clone git://github.com/ibmsoe/leveldb.git
git clone https://github.com/ibmsoe/leveldbjni.git
- export SNAPPY_HOME=/usr/lib
+ else
+ # download leveldbjni-1.8 from original repo
+ git clone https://github.com/chirino/leveldb.git
+ git clone https://github.com/fusesource/leveldbjni.git --branch leveldbjni-1.8 --single-branch
+ fi
+ # setup snappy library path
+ [ -f /usr/lib/libsnappy.so ] && export SNAPPY_HOME=/usr/lib
+ [ -f /usr/lib64/libsnappy.so ] && export SNAPPY_HOME=/usr/lib64
+ [ -f /usr/lib/${HOSTTYPE}-linux-gnu/libsnappy.so ] && export SNAPPY_HOME=/usr/lib/${HOSTTYPE}-linux-gnu
export LEVELDB_HOME=`cd leveldb; pwd`
export LEVELDBJNI_HOME=`cd leveldbjni; pwd`
export LIBRARY_PATH=${SNAPPY_HOME}
cd ${LEVELDB_HOME}
export C_INCLUDE_PATH=${LIBRARY_PATH}
export CPLUS_INCLUDE_PATH=${LIBRARY_PATH}
+ if [ $HOSTTYPE = "aarch64" ] ; then
+ # apply ARM64 specific patch
+ patch -p1 -E << 'EOF'
+diff a/port/atomic_pointer.h b/port/atomic_pointer.h
+--- a/port/atomic_pointer.h
++++ b/port/atomic_pointer.h
+@@ -36,6 +36,8 @@
+ #define ARCH_CPU_X86_FAMILY 1
+ #elif defined(__ARMEL__)
+ #define ARCH_CPU_ARM_FAMILY 1
++#elif defined(__aarch64__)
++#define ARCH_CPU_ARM64_FAMILY 1
+ #elif defined(__ppc__) || defined(__powerpc__) || defined(__powerpc64__)
+ #define ARCH_CPU_PPC_FAMILY 1
+ #endif
+@@ -93,6 +95,13 @@ inline void MemoryBarrier() {
+ }
+ #define LEVELDB_HAVE_MEMORY_BARRIER
+
++// ARM64
++#elif defined(ARCH_CPU_ARM64_FAMILY) && defined(__linux__)
++inline void MemoryBarrier() {
++ asm volatile("dmb sy" : : : "memory");
++}
++#define LEVELDB_HAVE_MEMORY_BARRIER
++
+ // PPC
+ #elif defined(ARCH_CPU_PPC_FAMILY) && defined(__GNUC__)
+ inline void MemoryBarrier() {
+@@ -216,6 +225,7 @@ class AtomicPointer {
+ #undef LEVELDB_HAVE_MEMORY_BARRIER
+ #undef ARCH_CPU_X86_FAMILY
+ #undef ARCH_CPU_ARM_FAMILY
++#undef ARCH_CPU_ARM64_FAMILY
+ #undef ARCH_CPU_PPC_FAMILY
+
+ } // namespace port
+EOF
+ fi
git apply ../leveldbjni/leveldb.patch
make libleveldb.a
- #Now use maven to build and update the local maven repository with ppc version of
+ #Now use maven to build and update the local maven repository with non-x86 version of
#leveldbjni.
cd ${LEVELDBJNI_HOME}
mvn clean install -DskipTests -P download -Plinux64,all
@@ -47,6 +95,7 @@ fi
if [ -z "$BUNDLE_SNAPPY" ] ; then
[ -f /usr/lib/libsnappy.so ] && BUNDLE_SNAPPY="-Dsnappy.prefix=x -Dbundle.snappy=true -Dsnappy.lib=/usr/lib"
[ -f /usr/lib64/libsnappy.so ] && BUNDLE_SNAPPY="-Dsnappy.prefix=x -Dbundle.snappy=true -Dsnappy.lib=/usr/lib64"
+ [ -f /usr/lib/${HOSTTYPE}-linux-gnu/libsnappy.so ] && BUNDLE_SNAPPY="-Dsnappy.prefix=x -Dbundle.snappy=true -Dsnappy.lib=/usr/lib/${HOSTTYPE}-linux-gnu"
fi
mkdir build