150 lines
4.3 KiB
Makefile
150 lines
4.3 KiB
Makefile
# Debian package name & version
|
|
MAJOR_VER=0
|
|
MINOR_VER=1
|
|
PATCH_VER=0
|
|
PKG_NAME=borderpatrol
|
|
BUILD_VER=0${BUILD_NUMBER}-dev
|
|
|
|
# binaries
|
|
CC:=clang
|
|
LUAROCKS=luarocks
|
|
|
|
# nginx and lua modules
|
|
MODULE_PATH=${PWD}
|
|
MODULE_PKG_DIR=${MODULE_PATH}/pkg
|
|
CONTRIB_PATH=${MODULE_PATH}/contrib
|
|
NGINX_PATH=${CONTRIB_PATH}/nginx
|
|
NDK_PATH=${CONTRIB_PATH}/ngx_devel_kit
|
|
MEMC_NGINX_PATH=${CONTRIB_PATH}/memc-nginx-module
|
|
LUA_MODULE_PATH=${CONTRIB_PATH}/lua-nginx-module
|
|
ECHO_MODULE_PATH=${CONTRIB_PATH}/echo-nginx-module
|
|
STICKY_MODULE_PATH=${CONTRIB_PATH}/nginx-sticky-module
|
|
HEADERS_MORE_MODULE_PATH=${CONTRIB_PATH}/headers-more-nginx-module
|
|
|
|
NGINX_MODULES=--add-module=${NDK_PATH} \
|
|
--add-module=${MEMC_NGINX_PATH} \
|
|
--add-module=${LUA_MODULE_PATH} \
|
|
--add-module=${STICKY_MODULE_PATH} \
|
|
--add-module=${HEADERS_MORE_MODULE_PATH} \
|
|
--add-module=${ECHO_MODULE_PATH} # only needed for
|
|
|
|
# build locations
|
|
BUILD_PATH=${MODULE_PATH}/build
|
|
DESTDIR=${PWD}/${PKG_NAME}
|
|
|
|
# packaging locations
|
|
CONF_DIR=/etc/${PKG_NAME}
|
|
SBIN_DIR=/usr/sbin
|
|
LOG_DIR=/var/log/${PKG_NAME}
|
|
SHARE_DIR=/usr/share/${PKG_NAME}
|
|
|
|
# test locations
|
|
TEST_DIR = ${MODULE_PATH}/t
|
|
TEST_RUN_DIR = ${TEST_DIR}/servroot
|
|
|
|
UNAME:=$(shell uname -s)
|
|
|
|
ifeq ($(UNAME), Darwin)
|
|
CFLAGS+="-I /usr/local/include -Wno-error"
|
|
LD_FLAGS+="-L /usr/local/lib -L /usr/lib -liconv"
|
|
endif
|
|
|
|
all: build
|
|
|
|
$(BUILD_PATH)/.install_rocks:
|
|
@$(LUAROCKS) install luajson --to=$(BUILD_PATH)/usr
|
|
@$(LUAROCKS) install luacrypto --to=$(BUILD_PATH)/usr
|
|
@touch $(BUILD_PATH)/.install_rocks
|
|
|
|
build: submodules compile mkdirs $(BUILD_PATH)/.install_rocks
|
|
@cp ${NGINX_PATH}/objs/nginx ${BUILD_PATH}${SBIN_DIR}/${PKG_NAME}
|
|
@cp -rp ${PWD}/src/*.lua ${BUILD_PATH}${SHARE_DIR}
|
|
@cp ${PWD}/src/robots.txt ${BUILD_PATH}${SHARE_DIR}
|
|
@cp ${PWD}/src/config/nginx.conf.sample ${BUILD_PATH}${CONF_DIR}/sites-available/${PKG_NAME}.conf.sample
|
|
@cp ${PWD}/src/ssl/server.crt ${BUILD_PATH}${CONF_DIR}/ssl/server.crt
|
|
@cp ${PWD}/src/ssl/server.key ${BUILD_PATH}${CONF_DIR}/ssl/server.key
|
|
|
|
submodules:
|
|
git submodule init
|
|
git submodule update
|
|
|
|
mkdirs:
|
|
@mkdir -p ${BUILD_PATH}${CONF_DIR}/conf.d
|
|
@mkdir -p ${BUILD_PATH}${CONF_DIR}/sites-available
|
|
@mkdir -p ${BUILD_PATH}${CONF_DIR}/sites-enabled
|
|
@mkdir -p ${BUILD_PATH}${CONF_DIR}/ssl
|
|
@mkdir -p ${BUILD_PATH}${SHARE_DIR}
|
|
@mkdir -p ${BUILD_PATH}${CONF_DIR}
|
|
@mkdir -p ${BUILD_PATH}${SBIN_DIR}
|
|
|
|
compile:
|
|
@if [ ! -f ${NGINX_PATH}/Makefile ]; then (cd ${NGINX_PATH} && \
|
|
./configure --prefix=/usr \
|
|
--sbin-path=${SBIN_DIR}/borderpatrol \
|
|
--conf-path=${CONF_DIR}/borderpatrol.conf \
|
|
--pid-path=/var/run/borderpatrol.pid \
|
|
--error-log-path=${LOG_DIR}/error.log \
|
|
--http-log-path=${LOG_DIR}/access.log \
|
|
${NGINX_MODULES} \
|
|
--with-ld-opt=${LD_FLAGS} \
|
|
--with-cc-opt=${CFLAGS} \
|
|
--with-http_ssl_module); \
|
|
fi;
|
|
@(cd ${NGINX_PATH} && make -j2)
|
|
|
|
.PHONY : test
|
|
|
|
test: build
|
|
@TEST_NGINX_BINARY=${PKG_NAME} PATH=${BUILD_PATH}${SBIN_DIR}:${PATH} prove -r ${TEST_DIR}/*.t
|
|
|
|
mocktest: build
|
|
god -Dbc t/borderpatrol.god
|
|
|
|
make clean:
|
|
rm -rf ${BUILD_PATH}
|
|
rm -rf ${DESTDIR}
|
|
rm -rf ngx_borderpatrol*
|
|
rm -rf *.deb
|
|
|
|
distclean: clean
|
|
(cd ${NGINX_PATH} && if [ -f Makefile ]; then make clean; fi;)
|
|
|
|
pkg: test
|
|
|
|
# copy the build target dir to the package dir
|
|
rm -rf ${DESTDIR}
|
|
mv ${BUILD_PATH} ${DESTDIR}
|
|
|
|
# Install configs under /etc/borderpatrol
|
|
cp ${MODULE_PKG_DIR}/borderpatrol.conf ${DESTDIR}${CONF_DIR}/borderpatrol.conf
|
|
chmod 0600 ${DESTDIR}${CONF_DIR}/borderpatrol.conf
|
|
chmod 0600 ${DESTDIR}${CONF_DIR}/sites-available/*
|
|
|
|
# Install package hooks
|
|
cp ${MODULE_PKG_DIR}/after-install.sh ${DESTDIR}
|
|
|
|
# Setup upstart config
|
|
mkdir -p ${DESTDIR}/etc/init.d
|
|
cp ${MODULE_PKG_DIR}/borderpatrol.init ${DESTDIR}/etc/init.d/borderpatrol
|
|
chmod 755 ${DESTDIR}/etc/init.d/borderpatrol
|
|
|
|
# Create extra directories
|
|
mkdir -p ${DESTDIR}/var/log/borderpatrol
|
|
mkdir -p ${DESTDIR}/var/borderpatrol
|
|
mkdir -p ${DESTDIR}/var/cache/borderpatrol
|
|
|
|
##########################################################################
|
|
# create the borderpatrol package
|
|
|
|
# install fpm if needed
|
|
test -n "$(shell gem query --local fpm|grep fpm)" || gem install fpm
|
|
|
|
cd ${DESTDIR} && fpm -s dir -t deb -n borderpatrol -v ${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}-${BUILD_VER} -C ${DESTDIR} \
|
|
-p borderpatrol-VERSION_ARCH.deb \
|
|
--after-install after-install.sh \
|
|
-d libssl1.0.0 \
|
|
-d luarocks \
|
|
usr/ etc/ var/
|
|
|
|
mv ${DESTDIR}/*.deb ${PWD}/
|