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.
200 lines
4.9 KiB
Plaintext
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
|