blob: 57bf9d3a5dd79c1515d5d770099bee4b27a82fc2 (
plain) (
tree)
|
|
# Copyright (C) NGINX, Inc.
shift
for nxt_option; do
case "$nxt_option" in
-*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
*) value="" ;;
esac
case "$nxt_option" in
--node=*) NXT_NODE="$value" ;;
--npm=*) NXT_NPM="$value" ;;
--node-gyp=*) NXT_NODE_GYP="$value" ;;
--local=*) NXT_NODE_LOCAL="$value" ;;
--help)
cat << END
--node=FILE set node executable
--npm=FILE set npm executable
--node-gyp=FILE set node-gyp executable
--local=DIRECTORY set directory path for local installation
END
exit 0
;;
*)
echo
echo $0: error: invalid Node option \"$nxt_option\"
echo
exit 1
;;
esac
done
if [ ! -f $NXT_AUTOCONF_DATA ]; then
echo
echo Please run common $0 before configuring module \"$nxt_module\".
echo
exit 1
fi
. $NXT_AUTOCONF_DATA
NXT_NODE=${NXT_NODE=node}
NXT_NPM=${NXT_NPM=npm}
NXT_NODE_GYP=${NXT_NODE_GYP=node-gyp}
NXT_NODE_LOCAL=${NXT_NODE_LOCAL=}
$echo "configuring nodejs module"
$echo "configuring nodejs module..." >> $NXT_AUTOCONF_ERR
$echo -n "checking for node ..."
$echo "checking for node ..." >> $NXT_AUTOCONF_ERR
if /bin/sh -c "${NXT_NODE} -v" >> $NXT_AUTOCONF_ERR 2>&1; then
$echo " found"
NXT_NODE_VERSION="`${NXT_NODE} -v`"
$echo " + node version ${NXT_NODE_VERSION}"
else
$echo " not found"
$echo
$echo $0: error: no Node found.
$echo
exit 1;
fi
$echo -n "checking for npm ..."
$echo "checking for npm ..." >> $NXT_AUTOCONF_ERR
if /bin/sh -c "${NXT_NPM} -v" >> $NXT_AUTOCONF_ERR 2>&1; then
$echo " found"
NXT_NPM_VERSION="`${NXT_NPM} -v`"
$echo " + npm version ${NXT_NPM_VERSION}"
else
$echo " not found"
$echo
$echo $0: error: no npm found.
$echo
exit 1;
fi
$echo -n "checking for node-gyp ..."
$echo "checking for node-gyp ..." >> $NXT_AUTOCONF_ERR
if /bin/sh -c "${NXT_NODE_GYP} -v" >> $NXT_AUTOCONF_ERR 2>&1; then
$echo " found"
NXT_NODE_GYP_VERSION="`${NXT_NODE_GYP} -v`"
$echo " + node-gyp version ${NXT_NODE_GYP_VERSION}"
else
$echo " not found"
$echo
$echo $0: error: no node-gyp found.
$echo
exit 1;
fi
if grep ^$NXT_NODE: $NXT_MAKEFILE 2>&1 > /dev/null; then
$echo
$echo $0: error: duplicate \"$NXT_NODE\" package configured.
$echo
exit 1;
fi
NXT_NODE_TMP=${NXT_BUILD_DIR}/src/${NXT_NODE}/unit-http
NXT_NODE_TARBALL=${NXT_BUILD_DIR}/${NXT_NODE}-unit-http.tar.gz
NXT_NODE_VERSION_FILE=${NXT_NODE_TMP}/version.h
NXT_NODE_EXPORTS="export UNIT_SRC_PATH=${PWD}/src \
&& export UNIT_BUILD_PATH=${PWD}/${NXT_BUILD_DIR} \
&& export UNIT_LIB_STATIC_PATH=${PWD}/${NXT_BUILD_DIR}/libunit.a"
if [ -n "$NXT_NODE_LOCAL" ]; then
NXT_NODE_INSTALL=local-install
else
NXT_NODE_INSTALL=install
fi
cat << END >> $NXT_MAKEFILE
.PHONY: ${NXT_NODE}
.PHONY: ${NXT_NODE}-copy
.PHONY: ${NXT_NODE}-install
.PHONY: ${NXT_NODE}-uninstall
.PHONY: ${NXT_NODE}-local-check
.PHONY: ${NXT_NODE}-local-install
.PHONY: ${NXT_NODE}-build
.PHONY: ${NXT_NODE}-publish
NXT_UNIT_VERSION=\$(shell grep 'define NXT_VERSION' \
src/nxt_main.h | sed -e 's/^.*"\(.*\)".*/\1/')
${NXT_NODE}: ${NXT_NODE}-copy $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
${NXT_NODE_EXPORTS} && \\
cd ${NXT_NODE_TMP} && ${NXT_NODE_GYP} configure build clean
${NXT_NODE}-copy: ${NXT_NODE_VERSION_FILE}
mkdir -p ${NXT_BUILD_DIR}/src/
cp -rp src/nodejs/* ${NXT_BUILD_DIR}/src/${NXT_NODE}
${NXT_NODE_VERSION_FILE}: src/nxt_main.h
mkdir -p ${NXT_NODE_TMP}
$echo -n '#define NXT_NODE_VERNUM ' > $NXT_NODE_VERSION_FILE
grep 'define NXT_VERNUM' src/nxt_main.h \\
| sed -e 's/[^0-9]//g' >> $NXT_NODE_VERSION_FILE
${NXT_NODE_TARBALL}: ${NXT_NODE}-copy
sed -e 's/"version"\s*:.*/"version": "\$(NXT_UNIT_VERSION).0",/' \
${NXT_NODE_TMP}/package.json > ${NXT_NODE_TMP}/package.json.tmp
mv ${NXT_NODE_TMP}/package.json.tmp ${NXT_NODE_TMP}/package.json
tar -zcvf ${NXT_NODE_TARBALL} -C ${NXT_NODE_TMP} .
install: ${NXT_NODE}-$NXT_NODE_INSTALL
${NXT_NODE}-install: ${NXT_NODE_TARBALL} \
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
${NXT_NODE_EXPORTS} && \\
${NXT_NPM} install -g --unsafe-perm ${PWD}/${NXT_NODE_TARBALL}
${NXT_NODE}-uninstall:
${NXT_NPM} uninstall -g unit-http
${NXT_NODE}-local-check:
@test -n "\$(DESTDIR)$NXT_NODE_LOCAL" \\
|| (echo; \\
echo "error: to make ${NXT_NODE}-local-install you need either"; \\
echo " to configure --local option"; \\
echo " or to set DESTDIR environment variable."; \\
echo; \\
exit 1)
${NXT_NODE}-local-install: ${NXT_NODE_TARBALL} ${NXT_NODE}-local-check \
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
${NXT_NODE_EXPORTS} && \\
mkdir -p \$(DESTDIR)${NXT_NODE_LOCAL} && \\
cd \$(DESTDIR)${NXT_NODE_LOCAL} && \\
${NXT_NPM} install ${PWD}/${NXT_NODE_TARBALL}
${NXT_NODE}-build: ${NXT_NODE}
${NXT_NODE}-publish: ${NXT_NODE}
cd ${NXT_NODE_TMP} && ${NXT_NPM} publish
END
|