summaryrefslogtreecommitdiffhomepage
path: root/auto
diff options
context:
space:
mode:
authorAlexander Borisov <alexander.borisov@nginx.com>2018-10-03 17:50:03 +0300
committerAlexander Borisov <alexander.borisov@nginx.com>2018-10-03 17:50:03 +0300
commitea62327b008b39dc48a51aa80343b20a0a122cd6 (patch)
treea81a4c6e61ae35d3415f5991a55a1ecdd4dde0bb /auto
parent141ee2aa326d54eeecc2ef96f61e2d2d8068b6b1 (diff)
downloadunit-ea62327b008b39dc48a51aa80343b20a0a122cd6.tar.gz
unit-ea62327b008b39dc48a51aa80343b20a0a122cd6.tar.bz2
Added Node.js support.
Diffstat (limited to 'auto')
-rw-r--r--auto/modules/conf4
-rw-r--r--auto/modules/nodejs161
-rw-r--r--auto/save2
3 files changed, 167 insertions, 0 deletions
diff --git a/auto/modules/conf b/auto/modules/conf
index 93d28601..409b4bea 100644
--- a/auto/modules/conf
+++ b/auto/modules/conf
@@ -25,6 +25,10 @@ case "$nxt_module" in
. auto/modules/ruby
;;
+ nodejs)
+ . auto/modules/nodejs
+ ;;
+
*)
echo
echo $0: error: invalid module \"$nxt_module\".
diff --git a/auto/modules/nodejs b/auto/modules/nodejs
new file mode 100644
index 00000000..25e75f01
--- /dev/null
+++ b/auto/modules/nodejs
@@ -0,0 +1,161 @@
+
+# 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" ;;
+
+ --help)
+ cat << END
+
+ --node=NAME set node executable
+ --npm=NAME set npm executable
+ --node-gyp=NAME set node-gyp executable
+
+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
+
+
+$echo "configuring nodejs module"
+$echo "configuring nodejs module..." >> $NXT_AUTOCONF_ERR
+
+NXT_NODE=${NXT_NODE=node}
+NXT_NPM=${NXT_NPM=npm}
+NXT_NODE_GYP=${NXT_NODE_GYP=node-gyp}
+
+$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=${PWD}/${NXT_BUILD_DIR}/${NXT_NODE}-unit-http.tar.gz
+NXT_NODE_EXPORTS="export UNIT_SRC_PATH=${PWD}/src && \
+ export UNIT_LIB_STATIC_PATH=${PWD}/${NXT_BUILD_DIR}/libunit.a"
+
+cat << END >> $NXT_MAKEFILE
+
+.PHONY: ${NXT_NODE}
+.PHONY: ${NXT_NODE}-copy
+.PHONY: ${NXT_NODE}-install
+.PHONY: ${NXT_NODE}-uninstall
+
+all:
+
+${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:
+ mkdir -p ${NXT_BUILD_DIR}/src/
+ cp -rp src/nodejs/ ${NXT_BUILD_DIR}/src/${NXT_NODE}
+
+${NXT_NODE_TARBALL}: ${NXT_NODE}-copy
+ tar -zcvf ${NXT_NODE_TARBALL} -C ${NXT_NODE_TMP} .
+
+${NXT_NODE}-install: ${NXT_NODE_TARBALL} \
+ $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
+ ${NXT_NODE_EXPORTS} && \\
+ ${NXT_NPM} install -g ${NXT_NODE_TARBALL} --unsafe-perm=true
+
+${NXT_NODE}-local-install: ${NXT_NODE_TARBALL} \
+ $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
+ ${NXT_NODE_EXPORTS} && \\
+ mkdir -p \$(DESTDIR) && \\
+ cd \$(DESTDIR) && ${NXT_NPM} install ${NXT_NODE_TARBALL}
+
+${NXT_NODE}-build: ${NXT_NODE}
+
+${NXT_NODE}-publish: ${NXT_NODE}
+ cd ${NXT_NODE_TMP} && ${NXT_NPM} publish
+
+${NXT_NODE}-uninstall:
+ ${NXT_NPM} uninstall -g unit-http
+
+END
diff --git a/auto/save b/auto/save
index 3a04a698..350c9c1f 100644
--- a/auto/save
+++ b/auto/save
@@ -26,6 +26,8 @@ echo=$NXT_BUILD_DIR/echo
NXT_LIB_AUX_CFLAGS=
NXT_LIB_AUX_LIBS=
+NXT_LIB_UNIT_STATIC='$NXT_LIB_UNIT_STATIC'
+
NXT_MODULES='$NXT_MODULES'
END