|
#!/bin/bash |
|
|
|
# Build Configuration |
|
MECAB_VERSION="mecab-0.996-ko-0.9.2" |
|
MECAB_KO_DIC_VERSION="mecab-ko-dic-2.1.1-20180720" |
|
MECAB_SOURCE_URL="https://bitbucket.org/eunjeon/mecab-ko/downloads/${MECAB_VERSION}.tar.gz" |
|
MECAB_KO_DIC_SOURCE_URL="https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/${MECAB_KO_DIC_VERSION}.tar.gz" |
|
|
|
# Variables |
|
DIRNAME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
|
NUM_CPU_CORES="$(cat /proc/cpuinfo | grep processor | wc -l)" |
|
WORKSPACE_DIR="/tmp/workspace" |
|
# DIST_DIR="${DIRNAME}/dist/${MECAB_VERSION}_with_${MECAB_KO_DIC_VERSION}_amazonlinux_x86_64" |
|
DIST_DIR="${DIRNAME}/dist/" |
|
MECAB_WORKSPACE_DIR="${WORKSPACE_DIR}/mecab-ko" |
|
|
|
echo "${NUM_CPU_CORES} cores detected." |
|
|
|
# Setup compilation flags |
|
export MAKEFLAGS="-j${NUM_CPU_CORES}" |
|
|
|
# Prepare mecab Workspace |
|
MECAB_SOURCE_DIR="${MECAB_WORKSPACE_DIR}/mecab_sources" |
|
MECAB_BUILD_DIR="${MECAB_WORKSPACE_DIR}/mecab_build" |
|
MECAB_BIN_DIR="${MECAB_BUILD_DIR}/bin" |
|
|
|
# If any command exited without code 0, Fire ERR signal and stop executing remaining lines |
|
set -e |
|
|
|
# Setup signal traps |
|
trap 'echo "Line ${BASH_LINENO}: ${BASH_COMMAND} failed with exit code $?"; cleanup failed; exit 1' ERR |
|
trap 'echo "received signal to stop"; cleanup interrupted; exit 1' SIGQUIT SIGTERM SIGINT |
|
function cleanup() { |
|
rm -rf ${WORKSPACE_DIR} |
|
rm -rf ${DIST_DIR} |
|
} |
|
|
|
echo "Cleaning workspace" |
|
cleanup |
|
|
|
echo "Creating mecab-ko workspace directory" |
|
|
|
mkdir -p ${MECAB_SOURCE_DIR} ${MECAB_BUILD_DIR} ${MECAB_BIN_DIR} |
|
|
|
echo "Created mecab-ko workspace directories." |
|
|
|
cd ${WORKSPACE_DIR} |
|
|
|
|
|
# Build mecab-ko |
|
pushd ${MECAB_SOURCE_DIR} |
|
echo "Fetching mecab-ko source code..." |
|
curl -O -L ${MECAB_SOURCE_URL} |
|
tar xvfz $(basename ${MECAB_SOURCE_URL}) |
|
echo "Building mecab-ko..." |
|
cd ${MECAB_VERSION} |
|
./configure --prefix="${MECAB_BUILD_DIR}" --bindir="${MECAB_BUILD_DIR}/bin" |
|
make |
|
make install |
|
echo "Successfully built mecab-ko" |
|
popd |
|
|
|
|
|
# Update PATH |
|
export PATH="${MECAB_BIN_DIR}:${PATH}" |
|
echo "PATH: $PATH" |
|
|
|
|
|
# Build mecab-ko-dic |
|
pushd ${MECAB_SOURCE_DIR} |
|
curl -O -L ${MECAB_KO_DIC_SOURCE_URL} |
|
tar xvfz $(basename ${MECAB_KO_DIC_SOURCE_URL}) |
|
cd ${MECAB_KO_DIC_VERSION} |
|
./autogen.sh |
|
./configure --prefix="${MECAB_BUILD_DIR}" --bindir="${MECAB_BUILD_DIR}/bin" |
|
make |
|
make install |
|
popd |
|
|
|
hash -r |
|
|
|
# Package built library |
|
mkdir -p ${DIST_DIR} |
|
pushd ${MECAB_BUILD_DIR} |
|
tar cvfz ${DIST_DIR}/${MECAB_VERSION}_with_${MECAB_KO_DIC_VERSION}_amazonlinux_x86_64.tar.gz . |
|
popd |
|
|
|
echo "Done!" |
|
|