Skip to content

Instantly share code, notes, and snippets.

@mooyoul
Created November 20, 2018 09:21
Show Gist options
  • Save mooyoul/e9bb7074a88521f417651dd15945e1e9 to your computer and use it in GitHub Desktop.
Save mooyoul/e9bb7074a88521f417651dd15945e1e9 to your computer and use it in GitHub Desktop.
mecab-ko-lambda

Building

$ docker run --rm -v $PWD:/remote-workspace -it my-lambda-build-image /remote-workspace/build.sh

Testing

$ docker run --rm -v $PWD:/var/task --entrypoint=bash -it lambci/lambda:nodejs8.10
#!/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!"
FROM amazonlinux:2017.03.1.20170812
MAINTAINER MooYeol Lee "mooyoul.lee@vingle.net"
# Pin Openssl Version for Lambda runtime comaptiblity
RUN yum localinstall -y http://packages.us-east-1.amazonaws.com/2016.09/updates/15aa5a441a1b/x86_64/Packages/openssl-devel-1.0.1k-15.99.amzn1.x86_64.rpm && \
yum localinstall -y http://packages.us-east-1.amazonaws.com/2016.09/updates/15aa5a441a1b/x86_64/Packages/openssh-6.6.1p1-33.66.amzn1.x86_64.rpm && \
yum localinstall -y http://packages.us-east-1.amazonaws.com/2016.09/updates/15aa5a441a1b/x86_64/Packages/openssh-clients-6.6.1p1-33.66.amzn1.x86_64.rpm && \
yum install -y yum-plugin-versionlock && \
yum versionlock openssl* openssh* python* && \
yum clean all
# Prepare build envrionment
RUN yum -y update && \
yum -y -x openssh* groupinstall "Development Tools" && \
yum clean all
# Prepare build tools
RUN yum update -y && \
yum install -y autoconf automake bzip2 cmake gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel libcurl-devel && \
yum clean all
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment