Files
nginx-unit/auto/modules/nodejs
Valentin Bartenev 5c9fe8c306 Added trailing zero to version string.
While it looks nicer without zero 3-rd version number, this should
improve interoperability.  Version string can be parsed or used for
sorting.  And it is easier to handle and less confusing when there
is constant number of version parts.

Moreover, NPM also expects version format with 3 parts.
So ".0" has already been used in Node.js module version.
2019-02-27 17:25:28 +03:00

200 lines
4.9 KiB
Plaintext

# 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_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}: ${NXT_VERSION_H}
mkdir -p ${NXT_NODE_TMP}
$echo '#define NXT_NODE_VERNUM \$(NXT_VERNUM)' > $NXT_NODE_VERSION_FILE
${NXT_NODE_TARBALL}: ${NXT_NODE}-copy
sed -e 's/"version"\s*:.*/"version": "\$(NXT_VERSION)",/' \
${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