#!/bin/bash
BUILD_TEST=${1:-OFF}
set -e
readonly BASH_PATH=$(dirname $(readlink -f "$0"))
CURRENT_DIR=$(pwd)
PROJECT_DIR=${BASH_PATH}/../..
cd "${BASH_PATH}"
GIT_COMMIT=`git rev-parse HEAD` || true
if [ $( uname -m | grep -c -i "x86_64" ) -ne 0 ]; then
echo "it is system of x86_64"
ARCH="x86_64"
elif [ $( uname -m | grep -c -i "aarch64" ) -ne 0 ]; then
echo "it is system of aarch64"
ARCH="aarch64"
else
echo "it is not system of x86_64 or aarch64"
exit 1
fi
OS_NAME=$(uname -s | awk '{print tolower($0)}')
ARCH_OS=${ARCH}-${OS_NAME}
PKG_DIR="memcache_hybrid"
VERSION="$(cat ${PROJECT_DIR}/VERSION | tr -d '[:space:]')"
OUTPUT_DIR=${BASH_PATH}/../../output
rm -rf ${PKG_DIR}
mkdir -p ${PKG_DIR}/"${ARCH_OS}"
mkdir ${PKG_DIR}/"${ARCH_OS}"/bin
mkdir ${PKG_DIR}/"${ARCH_OS}"/include
mkdir ${PKG_DIR}/"${ARCH_OS}"/lib64
mkdir ${PKG_DIR}/"${ARCH_OS}"/wheel
mkdir ${PKG_DIR}/config
cp -r "${OUTPUT_DIR}"/memcache/include/cpp ${PKG_DIR}/"${ARCH_OS}"/include/
cp "${OUTPUT_DIR}"/memcache/include/mmc.h ${PKG_DIR}/"${ARCH_OS}"/include/
cp "${OUTPUT_DIR}"/memcache/include/mmc_def.h ${PKG_DIR}/"${ARCH_OS}"/include/
cp "${OUTPUT_DIR}"/memcache/lib64/lib* ${PKG_DIR}/"${ARCH_OS}"/lib64/
if compgen -G "${OUTPUT_DIR}/memcache/bin/*" > /dev/null; then
cp "${OUTPUT_DIR}"/memcache/bin/* ${PKG_DIR}/"${ARCH_OS}"/bin/
else
echo "[WARN] skip packaging memcache bin: ${OUTPUT_DIR}/memcache/bin is empty"
fi
cp "${OUTPUT_DIR}"/memcache/wheel/*.whl ${PKG_DIR}/"${ARCH_OS}"/wheel/
cp "${PROJECT_DIR}"/config/* ${PKG_DIR}/config
if [ "$BUILD_TEST" = "ON" ]; then
mkdir -p ${PKG_DIR}/"${ARCH_OS}"/script/mock_server
cp "${PROJECT_DIR}"/test/python/memcache/mock_server/server.py ${PKG_DIR}/"${ARCH_OS}"/script/mock_server
mkdir -p ${PKG_DIR}/"${ARCH_OS}"/script/benchmark
cp "${PROJECT_DIR}"/example/benchmark/* ${PKG_DIR}/"${ARCH_OS}"/script/benchmark
fi
mkdir -p ${PKG_DIR}/script
cp "${BASH_PATH}"/install.sh ${PKG_DIR}/script/
cp "${BASH_PATH}"/uninstall.sh ${PKG_DIR}/script/
touch ${PKG_DIR}/version.info
cat>>${PKG_DIR}/version.info<<EOF
Version:${VERSION}
Platform:${ARCH}
Kernel:${OS_NAME}
CommitId:${GIT_COMMIT}
EOF
FILE_NAME=${PKG_DIR}-${VERSION}_${OS_NAME}_${ARCH}
tar -cvf "${FILE_NAME}".tar.gz ${PKG_DIR}/
cat run_header.sh "${FILE_NAME}".tar.gz > "${FILE_NAME}".run
mv "${FILE_NAME}".run "${OUTPUT_DIR}"
rm -rf ${PKG_DIR}
rm -rf "${FILE_NAME}".tar.gz
cd "${CURRENT_DIR}"