diff options
author | Jun He <jun.he@linaro.org> | 2017-03-24 09:10:15 +0000 |
---|---|---|
committer | Jun He <jun.he@linaro.org> | 2017-03-24 09:14:39 +0000 |
commit | 60732c133941e9584e275849f51139fa532297fb (patch) | |
tree | c51e15b3e0165d72c4564d892e258f5e2f3b068f | |
parent | 0c475987937456d4eebfdc9cf7e69c3b44088559 (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-build | 55 |
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 |