accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [2/2] git commit: ACCUMULO-1964 Create a convenience script to build and install the native map code in the expected directory
Date Thu, 05 Dec 2013 03:52:40 GMT
ACCUMULO-1964 Create a convenience script to build and install the native map code in the expected


Branch: refs/heads/1.6.0-SNAPSHOT
Commit: ca98fe9a30a6413b984588926e6a463cd1e5bfee
Parents: bbe895d
Author: Josh Elser <>
Authored: Wed Dec 4 22:51:59 2013 -0500
Committer: Josh Elser <>
Committed: Wed Dec 4 22:51:59 2013 -0500

 README                      | 15 ++++++---
 bin/ | 73 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+), 4 deletions(-)
diff --git a/README b/README
index 3243bec..a232fdb 100644
--- a/README
+++ b/README
@@ -37,14 +37,21 @@ e.g. "-Dhadoop.profile=1.2 -Dhadoop.version=" or
 If you are running on another Unix-like operating system (OSX, etc) then
 you may wish to build the native libraries.  They are not strictly necessary
 but having them available suppresses a runtime warning and enables Accumulo
-to run faster. Unpack the accumulo-native tarball in the $ACCUMULO_HOME/lib 
-directory. Change to the accumulo-native directory in the current directory
-and issue `make`. Copy the resulting 'libaccumulo' library into the 
+to run faster. You can execute the following script to automatically unpack
+and install the native library. Be sure to have a JDK and a C++ compiler 
+installed with the JAVA_HOME environment variable set.
+  $ ./bin/
+Alternatively, you can manually unpack the accumulo-native tarball in the 
+$ACCUMULO_HOME/lib directory. Change to the accumulo-native directory in 
+the current directory and issue `make`. Then, copy the resulting 'libaccumulo' 
+library into the $ACCUMULO_HOME/lib/native/map.
   $ mkdir -p $ACCUMULO_HOME/lib/native/map
   $ cp libaccumulo.* $ACCUMULO_HOME/lib/native/map
 If you want to build the debian release, use the command "mvn package -Pdeb" to 
 generate the .deb files in the target/ directory. Please follow the steps at
diff --git a/bin/ b/bin/
new file mode 100755
index 0000000..b537a23
--- /dev/null
+++ b/bin/
@@ -0,0 +1,73 @@
+#!/usr/bin/env bash
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# Start: Resolve Script Directory
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+   bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+   SOURCE="$(readlink "$SOURCE")"
+   [[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE" # if $SOURCE was a relative symlink,
we need to resolve it relative to the path where the symlink file was located
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+script=$( basename "$SOURCE" )
+# Stop: Resolve Script Directory
+if [[ ! -f $native_tarball ]]; then
+    echo "Could not find native code artifact: ${native_tarball}";
+    exit 1
+# Make the destination for the native library
+mkdir -p "${final_native_target}"
+# Make a directory for us to unpack the native source into
+TMP_DIR=`mktemp -d /tmp/accumulo-native.XXXX` || exit 1
+# Unpack the tarball to our temp directory
+tar xf "${native_tarball}" -C "${TMP_DIR}"
+if [[ $? -ne 0 ]]; then
+    echo "Failed to unpack native tarball to ${TMP_DIR}"
+    exit 1
+# Move to the first (only) directory in our unpacked tarball
+native_dir=`find "${TMP_DIR}" -type d -depth 1`
+cd "${native_dir}"
+# Make the native library
+# Make sure it didn't fail
+if [[ $? -ne 0 ]]; then
+    echo "Make failed!"
+    exit 1
+# "install" the artifact
+cp libaccumulo.* "${final_native_target}"
+# Clean up our temp directory
+rm -rf "${TMP_DIR}"
+echo "Successfully installed native library"

View raw message