The patch removes the "files" section from package.json to avoid future issues with missing files. For package testing purposes, 'npm pack' is used instead of plain 'tar' to simulate packaging more accurately.
217 lines
5.8 KiB
Plaintext
217 lines
5.8 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_TMP_G=${NXT_BUILD_DIR}/src/${NXT_NODE}/unit-http-g
|
|
NXT_NODE_TARBALL=${NXT_BUILD_DIR}/${NXT_NODE}-unit-http.tar.gz
|
|
NXT_NODE_TARBALL_G=${NXT_BUILD_DIR}/${NXT_NODE}-unit-http-g.tar.gz
|
|
NXT_NODE_VERSION_FILE=${NXT_BUILD_DIR}/src/${NXT_NODE}/version.h
|
|
NXT_NODE_PACKAGE_FILE=${NXT_BUILD_DIR}/src/${NXT_NODE}/package.json
|
|
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}-copy-g
|
|
.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} ${NXT_NODE_PACKAGE_FILE}
|
|
mkdir -p ${NXT_NODE_TMP}
|
|
cp -rp src/nodejs/unit-http/* ${NXT_NODE_TMP}/
|
|
cp -p ${NXT_NODE_VERSION_FILE} ${NXT_NODE_PACKAGE_FILE} ${NXT_NODE_TMP}/
|
|
rm -f ${NXT_NODE_TMP}/binding_pub.gyp
|
|
|
|
${NXT_NODE}-copy-g: ${NXT_NODE_VERSION_FILE} ${NXT_NODE_PACKAGE_FILE}
|
|
mkdir -p ${NXT_NODE_TMP_G}
|
|
cp -rp src/nodejs/unit-http/* ${NXT_NODE_TMP_G}/
|
|
cp -p ${NXT_NODE_VERSION_FILE} ${NXT_NODE_PACKAGE_FILE} ${NXT_NODE_TMP_G}/
|
|
mv ${NXT_NODE_TMP_G}/binding_pub.gyp ${NXT_NODE_TMP_G}/binding.gyp
|
|
|
|
${NXT_NODE_VERSION_FILE}: ${NXT_VERSION_H}
|
|
mkdir -p ${NXT_BUILD_DIR}/src/${NXT_NODE}
|
|
$echo '#define NXT_NODE_VERNUM \$(NXT_VERNUM)' > $NXT_NODE_VERSION_FILE
|
|
|
|
${NXT_NODE_PACKAGE_FILE}: ${NXT_VERSION_H} src/nodejs/unit-http/package.json
|
|
mkdir -p ${NXT_BUILD_DIR}/src/${NXT_NODE}
|
|
sed -e "s|%%VERSION%%|\$(NXT_VERSION)|" \
|
|
src/nodejs/unit-http/package.json > ${NXT_NODE_PACKAGE_FILE}
|
|
|
|
${NXT_NODE_TARBALL}: ${NXT_NODE}-copy
|
|
cd ${NXT_NODE_TMP} && npm pack
|
|
mv ${NXT_NODE_TMP}/unit-http-\$(NXT_VERSION).tgz ${NXT_NODE_TARBALL}
|
|
|
|
${NXT_NODE_TARBALL_G}: ${NXT_NODE}-copy-g
|
|
cd ${NXT_NODE_TMP_G} && npm pack
|
|
mv ${NXT_NODE_TMP_G}/unit-http-\$(NXT_VERSION).tgz ${NXT_NODE_TARBALL_G}
|
|
|
|
|
|
install: ${NXT_NODE}-$NXT_NODE_INSTALL
|
|
|
|
${NXT_NODE}-install: ${NXT_NODE_TARBALL_G} libunit-install
|
|
${NXT_NPM} install -g --unsafe-perm ${PWD}/${NXT_NODE_TARBALL_G}
|
|
|
|
${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
|