You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2013/12/05 05:53:28 UTC

[2/7] git commit: ACCUMULO-1964 Create a convenience script to build and install the native map code in the expected directory

ACCUMULO-1964 Create a convenience script to build and install the native map code in the expected directory


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/ca98fe9a
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/ca98fe9a
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/ca98fe9a

Branch: refs/heads/master
Commit: ca98fe9a30a6413b984588926e6a463cd1e5bfee
Parents: bbe895d
Author: Josh Elser <el...@apache.org>
Authored: Wed Dec 4 22:51:59 2013 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Wed Dec 4 22:51:59 2013 -0500

----------------------------------------------------------------------
 README                      | 15 ++++++---
 bin/build_native_library.sh | 73 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca98fe9a/README
----------------------------------------------------------------------
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=0.20.205.0" 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 
-$ACCUMULO_HOME/lib/native/map.
+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/build_native_library.sh
+
+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 
 https://cwiki.apache.org/BIGTOP/how-to-install-hadoop-distribution-from-bigtop.html

http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca98fe9a/bin/build_native_library.sh
----------------------------------------------------------------------
diff --git a/bin/build_native_library.sh b/bin/build_native_library.sh
new file mode 100755
index 0000000..b537a23
--- /dev/null
+++ b/bin/build_native_library.sh
@@ -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
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Start: Resolve Script Directory
+SOURCE="${BASH_SOURCE[0]}"
+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
+done
+bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+script=$( basename "$SOURCE" )
+# Stop: Resolve Script Directory
+
+
+lib="${bin}/../lib"
+native_tarball="${lib}/accumulo-native.tar.gz"
+final_native_target="${lib}/native/map"
+
+if [[ ! -f $native_tarball ]]; then
+    echo "Could not find native code artifact: ${native_tarball}";
+    exit 1
+fi
+
+# 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
+fi
+
+# 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
+
+# Make sure it didn't fail
+if [[ $? -ne 0 ]]; then
+    echo "Make failed!"
+    exit 1
+fi
+
+# "install" the artifact
+cp libaccumulo.* "${final_native_target}"
+
+# Clean up our temp directory
+rm -rf "${TMP_DIR}"
+
+echo "Successfully installed native library"