blob: 1b4249b48ba98b8ab6eafb0ad2c1d1f007461a8b [file] [log] [blame]
#!/bin/bash -x
# 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.
set -ex
usage() {
echo "
usage: $0 <options>
Required not-so-options:
--prefix=PREFIX path to install into
--source-dir=DIR path to package shared files dir
--qfs-version=VERSION version of qfs we are installing
--python=PYTHON the path to python
Optional options:
--bin-dir=DIR path to install binaries (default: /usr/bin)
--lib-dir=DIR path to install libraries (default: /usr/lib)
--etc-dir=DIR path to install configuration (default: /etc/qfs)
--include-dir=DIR path to install devel headers (default: /usr/include)
--data-dir=DIR path to install various data (default: /usr/share/qfs)
--var-dir=DIR path to keep variable data (default: /var/qfs)
--hadoop-home=DIR path where hadoop lives (default: /usr/lib/hadoop)
--python3=PYTHON3 path to python 3
--python-extra=PYTHON_EXTRA extra arguments to pass to python when installing
Note: you will have to change the init scripts with the new paths you use
above if you deviate from the defaults.
"
exit 1
}
OPTS=$(getopt \
-n $0 \
-o '' \
-l 'source-dir:' \
-l 'prefix:' \
-l 'bin-dir:' \
-l 'lib-dir:' \
-l 'etc-dir:' \
-l 'include-dir:' \
-l 'data-dir:' \
-l 'var-dir:' \
-l 'hadoop-home:' \
-l 'qfs-version:' \
-l 'python:' \
-l 'python3:' \
-l 'python-extra:' \
-- "$@")
if [ $? != 0 ] ; then
usage
fi
eval set -- "$OPTS"
while true ; do
case "$1" in
--source-dir)
SOURCE_DIR=$2 ; shift 2
;;
--prefix)
PREFIX=$2 ; shift 2
;;
--bin-dir)
BIN_DIR=$2 ; shift 2
;;
--lib-dir)
LIB_DIR=$2 ; shift 2
;;
--etc-dir)
ETC_DIR=$2 ; shift 2
;;
--include-dir)
INCLUDE_DIR=$2 ; shift 2
;;
--data-dir)
DATA_DIR=$2 ; shift 2
;;
--var-dir)
VAR_DIR=$2 ; shift 2
;;
--hadoop-home)
HADOOP_HOME=$2 ; shift 2
;;
--qfs-version)
QFS_VERSION=$2 ; shift 2
;;
--python)
PYTHON_PATH=$2 ; shift 2
;;
--python3)
PYTHON3_PATH=$2 ; shift 2
;;
--python-extra)
PYTHON_EXTRA=$2 ; shift 2
;;
--)
shift ; break
;;
*)
echo "Unknown option: $1"
usage
exit 1
;;
esac
done
for var in SOURCE_DIR PREFIX QFS_VERSION PYTHON_PATH ; do
if [ -z "$(eval "echo \$$var")" ]; then
echo Missing required param: $var
usage
fi
done
if [ -f "$SOURCE_DIR/bigtop.bom" ]; then
. $SOURCE_DIR/bigtop.bom
fi
PREFIX=$(readlink -f $PREFIX)
BIN_DIR=$PREFIX/${BIN_DIR:-/usr/bin/qfs}
LIB_DIR=$PREFIX/${LIB_DIR:-/usr/lib/qfs}
ETC_DIR=$PREFIX/${ETC_DIR:-/etc/qfs}
INCLUDE_DIR=$PREFIX/${INCLUDE_DIR:-/usr/include}
DATA_DIR=$PREFIX/${DATA_DIR:-/usr/share/qfs}
VAR_DIR=$PREFIX/${VAR_DIR:-/var/qfs}
HADOOP_HOME=$PREFIX/${HADOOP_HOME:-/usr/lib/hadoop}
PYTHON_EXTRA=${PYTHON_EXTRA:-}
mkdir -p $BIN_DIR
install -m 755 build/release/bin/filelister $BIN_DIR
install -m 755 build/release/bin/logcompactor $BIN_DIR
install -m 755 build/release/bin/metaserver $BIN_DIR
install -m 755 build/release/bin/qfsfsck $BIN_DIR
install -m 755 build/release/bin/qfs_fuse $BIN_DIR
install -m 755 build/release/bin/chunkserver $BIN_DIR
install -m 755 build/release/bin/chunkscrubber $BIN_DIR
install -m 755 build/release/bin/devtools/checksum $BIN_DIR
install -m 755 build/release/bin/devtools/dirtree_creator $BIN_DIR
install -m 755 build/release/bin/devtools/dtokentest $BIN_DIR
install -m 755 build/release/bin/devtools/logger $BIN_DIR/qfslogger
install -m 755 build/release/bin/devtools/rand-sfmt $BIN_DIR
install -m 755 build/release/bin/devtools/requestparser $BIN_DIR
install -m 755 build/release/bin/devtools/sortedhash $BIN_DIR
install -m 755 build/release/bin/devtools/sslfiltertest $BIN_DIR
install -m 755 build/release/bin/devtools/stlset $BIN_DIR
install -m 755 build/release/bin/emulator/rebalanceexecutor $BIN_DIR
install -m 755 build/release/bin/emulator/rebalanceplanner $BIN_DIR
install -m 755 build/release/bin/emulator/replicachecker $BIN_DIR
install -m 755 build/release/bin/examples/qfssample $BIN_DIR
install -m 755 build/release/bin/tools/cpfromqfs $BIN_DIR
install -m 755 build/release/bin/tools/cptoqfs $BIN_DIR
install -m 755 build/release/bin/tools/qfs $BIN_DIR
install -m 755 build/release/bin/tools/qfsadmin $BIN_DIR
install -m 755 build/release/bin/tools/qfscat $BIN_DIR
install -m 755 build/release/bin/tools/qfsdataverify $BIN_DIR
install -m 755 build/release/bin/tools/qfsfileenum $BIN_DIR
install -m 755 build/release/bin/tools/qfshibernate $BIN_DIR
install -m 755 build/release/bin/tools/qfsping $BIN_DIR
install -m 755 build/release/bin/tools/qfsput $BIN_DIR
install -m 755 build/release/bin/tools/qfsshell $BIN_DIR
install -m 755 build/release/bin/tools/qfsstats $BIN_DIR
install -m 755 build/release/bin/tools/qfstoggleworm $BIN_DIR
install -m 755 scripts/qfs_backup $BIN_DIR
mkdir -p $LIB_DIR
install -m 644 build/release/lib/libgf_complete.so $LIB_DIR
install -m 644 build/release/lib/libgf_complete.so.1 $LIB_DIR
install -m 644 build/release/lib/libgf_complete.so.1.0.0 $LIB_DIR
install -m 644 build/release/lib/libJerasure.so $LIB_DIR
install -m 644 build/release/lib/libJerasure.so.2 $LIB_DIR
install -m 644 build/release/lib/libJerasure.so.2.0.0 $LIB_DIR
install -m 644 build/release/lib/libqfs_access.so $LIB_DIR
install -m 644 build/release/lib/libqfs_client.so $LIB_DIR
install -m 644 build/release/lib/libqfs_common.so $LIB_DIR
install -m 644 build/release/lib/libqfsc.so $LIB_DIR
install -m 644 build/release/lib/libqfs_io.so $LIB_DIR
install -m 644 build/release/lib/libqfskrb.so $LIB_DIR
install -m 644 build/release/lib/libqfs_qcdio.so $LIB_DIR
install -m 644 build/release/lib/libqfs_qcrs.so $LIB_DIR
install -m 644 build/release/lib/static/libgf_complete.a $LIB_DIR
install -m 644 build/release/lib/static/libJerasure.a $LIB_DIR
install -m 644 build/release/lib/static/libqfsc.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_client.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_common.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_emulator.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_io.a $LIB_DIR
install -m 644 build/release/lib/static/libqfskrb.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_meta.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_qcdio.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_qcrs.a $LIB_DIR
install -m 644 build/release/lib/static/libqfs_tools.a $LIB_DIR
mkdir -p $ETC_DIR/logrotate.d
cp $SOURCE_DIR/qfs-chunkserver.cfg $ETC_DIR/logrotate.d/qfs-chunkserver
cp $SOURCE_DIR/qfs-metaserver.cfg $ETC_DIR/logrotate.d/qfs-metaserver
cp $SOURCE_DIR/qfs-webui.cfg $ETC_DIR/logrotate.d/qfs-webui
mkdir -p $INCLUDE_DIR
cp -a build/release/include/* $INCLUDE_DIR
mkdir -p $DATA_DIR/webui
cp -rp webui/* $DATA_DIR/webui
mkdir -p $DATA_DIR/java
install -m 644 build/java/qfs-access/qfs-access-${QFS_VERSION}.jar $DATA_DIR/java
mkdir -p $HADOOP_HOME/lib
install -m 644 build/java/hadoop-qfs/hadoop-${HADOOP_VERSION}-qfs-${QFS_VERSION}.jar ${HADOOP_HOME}/lib
cd build/release
$PYTHON_PATH ../../src/cc/access/kfs_setup.py install --skip-build --root=$PREFIX --prefix=/usr $PYTHON_EXTRA
if [ ! -z "$PYTHON3_PATH" ]; then
$PYTHON3_PATH ../../src/cc/access/kfs_setup.py install --skip-build --root=$PREFIX --prefix=/usr $PYTHON_EXTRA
fi
cd ..
mkdir -p $VAR_DIR/metaserver/checkpoint
mkdir -p $VAR_DIR/log/qfs
mkdir -p $VAR_DIR/lib/qfs