126 lines
3.2 KiB
Bash
Executable file
126 lines
3.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# Script to build Khaganat binary (executed in docker)
|
|
#
|
|
# Copyright (C) 2017 AleaJactaEst
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
declare DIRBUILD="/opt/build/"
|
|
declare DIRCODE="/opt/ref/opennel-code"
|
|
|
|
function usage()
|
|
{
|
|
cat << EOF
|
|
usage:$0 [options] <workdir>
|
|
internal script to build under docker
|
|
|
|
workdir: directory use to buid
|
|
|
|
options:
|
|
-h, --help : Show this help
|
|
-d, --debug : Show debug message
|
|
--add-opts-cmake="string" : add option use on command cmake (generate Makefile)
|
|
--add-opts-make="string" : add option use on command make
|
|
EOF
|
|
}
|
|
|
|
function chrashed()
|
|
{
|
|
echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - BUILD FAILED (code:$?)" >> $LOGFILE
|
|
exit 2
|
|
}
|
|
|
|
function msg_info()
|
|
{
|
|
echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $1"
|
|
echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $1" >> $LOGFILE
|
|
}
|
|
|
|
#
|
|
# MAIN
|
|
#
|
|
|
|
trap chrashed EXIT
|
|
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
-h|--help)
|
|
usage
|
|
exit 1
|
|
;;
|
|
-d|--debug)
|
|
DEBUG=1
|
|
shift
|
|
;;
|
|
--add-opts-cmake=*)
|
|
CMAKEOPTS="$CMAKEOPTS ${1#*=}"
|
|
shift
|
|
;;
|
|
--add-opts-make=*)
|
|
MAKEOPTS="$MAKEOPTS ${1#*=}"
|
|
shift
|
|
;;
|
|
--build-dir=*)
|
|
DIRBUILD="${1#*=}"
|
|
shift
|
|
;;
|
|
--code-dir=*)
|
|
DIRCODE="${1#*=}"
|
|
shift
|
|
;;
|
|
*)
|
|
msg_error "options '$1' not recognize"
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
declare LOGFILE="${DIRBUILD}/build.log"
|
|
|
|
|
|
msg_info "CREATE BUILD DIRECTORY"
|
|
mkdir -p ${DIRBUILD}/ || exit 2
|
|
|
|
msg_info "COPY CODE"
|
|
mkdir -p ${DIRBUILD}/opennel-code
|
|
cp -r $DIRCODE/* ${DIRBUILD}/opennel-code
|
|
|
|
msg_info "PATCH CODE"
|
|
cd ${DIRBUILD}/opennel-code/code
|
|
patch -t -i ${DIRBUILD}/opennel-code/patch/libcrypto.patch || exit 2
|
|
patch -t -i ${DIRBUILD}/opennel-code/patch/libicuuc.patch || exit 2
|
|
|
|
msg_info "PREPARE BUILD"
|
|
cd ${DIRBUILD}; cmake -DWITH_NEL=ON \
|
|
-DWITH_STATIC=ON \
|
|
-DWITH_STATIC_DRIVERS=ON \
|
|
-DWITH_STATIC_EXTERNAL=ON \
|
|
-DWITH_SYMBOLS=ON \
|
|
-DWITH_LUA52=ON \
|
|
-DWITH_RYZOM_PATCH=ON \
|
|
-DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON \
|
|
${CMAKEOPTS} \
|
|
${DIRBUILD}/opennel-code/code 1>>$LOGFILE 2>&1 || exit 2
|
|
|
|
msg_info "BUILD START"
|
|
cd ${DIRBUILD}; make $MAKEOPTS 1>>$LOGFILE 2>&1 || exit 2
|
|
|
|
msg_info "GENERATE PACKAGE"
|
|
cd ${DIRBUILD}; make package 1>>$LOGFILE 2>&1 || exit 2
|
|
|
|
trap '' EXIT
|
|
msg_info "BUILD END"
|