# 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