44ad025aaa
Skip pip and just use apt-get install for configshell and pexpect. While here, don't try to install these on older Ubuntu systems, since they aren't available there. We know they're available on 16.04, so skip it for anything older than that. Fixes issue #532. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I40c1659333cd80b54fb3e01ed036294aa5bf6ca3 Reviewed-on: https://review.gerrithub.io/436231 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Seth Howell <seth.howell5141@gmail.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
139 lines
4.7 KiB
Bash
Executable File
139 lines
4.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Please run this script as root.
|
|
|
|
set -e
|
|
|
|
function usage()
|
|
{
|
|
echo ""
|
|
echo "This script is intended to automate the installation of package dependencies to build SPDK."
|
|
echo "Please run this script as root user."
|
|
echo ""
|
|
echo "$0"
|
|
echo " -h --help"
|
|
echo " -i --install-crypto Install ipsec dependencies"
|
|
echo ""
|
|
exit 0
|
|
}
|
|
|
|
INSTALL_CRYPTO=false
|
|
|
|
while getopts 'hi-:' optchar; do
|
|
case "$optchar" in
|
|
-)
|
|
case "$OPTARG" in
|
|
help) usage;;
|
|
install-crypto) INSTALL_CRYPTO=true;;
|
|
*) echo "Invalid argument '$OPTARG'"
|
|
usage;;
|
|
esac
|
|
;;
|
|
h) usage;;
|
|
i) INSTALL_CRYPTO=true;;
|
|
*) echo "Invalid argument '$OPTARG'"
|
|
usage;;
|
|
esac
|
|
done
|
|
|
|
trap 'set +e; trap - ERR; echo "Error!"; exit 1;' ERR
|
|
|
|
scriptsdir=$(readlink -f $(dirname $0))
|
|
rootdir=$(readlink -f $scriptsdir/..)
|
|
|
|
if [ -s /etc/redhat-release ]; then
|
|
. /etc/os-release
|
|
|
|
# Includes Fedora, CentOS 7, RHEL 7
|
|
# Add EPEL repository for CUnit-devel and libunwind-devel
|
|
if echo "$ID $VERSION_ID" | egrep -q 'rhel 7|centos 7'; then
|
|
if ! rpm --quiet -q epel-release; then
|
|
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
|
fi
|
|
|
|
if [ $ID = 'rhel' ]; then
|
|
subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
|
|
elif [ $ID = 'centos' ]; then
|
|
yum --enablerepo=extras install -y epel-release
|
|
fi
|
|
fi
|
|
|
|
yum install -y gcc gcc-c++ make CUnit-devel libaio-devel openssl-devel \
|
|
git astyle python-pep8 lcov python clang-analyzer libuuid-devel \
|
|
sg3_utils libiscsi-devel pciutils
|
|
# Additional (optional) dependencies for showing backtrace in logs
|
|
yum install -y libunwind-devel || true
|
|
# Additional dependencies for NVMe over Fabrics
|
|
yum install -y libibverbs-devel librdmacm-devel
|
|
# Additional dependencies for DPDK
|
|
yum install -y numactl-devel nasm
|
|
# Additional dependencies for building docs
|
|
yum install -y doxygen mscgen graphviz
|
|
# Additional dependencies for building pmem based backends
|
|
yum install -y libpmemblk-devel || true
|
|
# Additional dependencies for SPDK CLI - not available in rhel and centos
|
|
if ! echo "$ID $VERSION_ID" | egrep -q 'rhel 7|centos 7'; then
|
|
yum install -y python3-configshell python3-pexpect
|
|
fi
|
|
elif [ -f /etc/debian_version ]; then
|
|
# Includes Ubuntu, Debian
|
|
apt-get install -y gcc g++ make libcunit1-dev libaio-dev libssl-dev \
|
|
git astyle pep8 lcov clang uuid-dev sg3-utils libiscsi-dev pciutils
|
|
# Additional (optional) dependencies for showing backtrace in logs
|
|
apt-get install -y libunwind-dev || true
|
|
# Additional dependencies for NVMe over Fabrics
|
|
apt-get install -y libibverbs-dev librdmacm-dev
|
|
# Additional dependencies for DPDK
|
|
apt-get install -y libnuma-dev nasm
|
|
# Additional dependencies for building docs
|
|
apt-get install -y doxygen mscgen graphviz
|
|
# Additional dependencies for SPDK CLI - not available on older Ubuntus
|
|
if [[ $(lsb_release -rs) > "16.01" ]]; then
|
|
apt-get install -y python3-configshell-fb python3-pexpect
|
|
fi
|
|
elif [ -f /etc/SuSE-release ]; then
|
|
zypper install -y gcc gcc-c++ make cunit-devel libaio-devel libopenssl-devel \
|
|
git-core lcov python-base python-pep8 libuuid-devel sg3_utils pciutils
|
|
# Additional (optional) dependencies for showing backtrace in logs
|
|
zypper install libunwind-devel || true
|
|
# Additional dependencies for NVMe over Fabrics
|
|
zypper install -y rdma-core-devel
|
|
# Additional dependencies for DPDK
|
|
zypper install -y libnuma-devel nasm
|
|
# Additional dependencies for building pmem based backends
|
|
zypper install -y libpmemblk-devel
|
|
# Additional dependencies for building docs
|
|
zypper install -y doxygen mscgen graphviz
|
|
elif [ $(uname -s) = "FreeBSD" ] ; then
|
|
pkg install -y gmake cunit openssl git devel/astyle bash py27-pycodestyle \
|
|
python misc/e2fsprogs-libuuid sysutils/sg3_utils nasm
|
|
# Additional dependencies for building docs
|
|
pkg install -y doxygen mscgen graphviz
|
|
else
|
|
echo "pkgdep: unknown system type."
|
|
exit 1
|
|
fi
|
|
|
|
# Only crypto needs nasm and this lib but because the lib requires root to
|
|
# install we do it here - when asked.
|
|
|
|
if $INSTALL_CRYPTO; then
|
|
|
|
nasm_ver=$(nasm -v | sed 's/[^0-9]*//g' | awk '{print substr ($0, 0, 5)}')
|
|
if [ $nasm_ver -lt "21202" ]; then
|
|
echo Crypto requires NASM version 2.12.02 or newer. Please install
|
|
echo or upgrade and re-run this script if you are going to use Crypto.
|
|
else
|
|
ipsec="$(find /usr -xdev -name intel-ipsec-mb.h 2>/dev/null)"
|
|
if [ "$ipsec" == "" ]; then
|
|
ipsec_submodule_cloned="$(find $rootdir/intel-ipsec-mb -name intel-ipsec-mb.h 2>/dev/null)"
|
|
if [ "$ipsec_submodule_cloned" != "" ]; then
|
|
su - $SUDO_USER -c "make -C $rootdir/intel-ipsec-mb"
|
|
make -C $rootdir/intel-ipsec-mb install
|
|
else
|
|
echo "The intel-ipsec-mb submodule has not been cloned and will not be installed."
|
|
echo "To enable crypto, run 'git submodule update --init' and then run this script again."
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|