xref: /unit/auto/modules/nodejs (revision 837:6e06affa49c8)
1
2# Copyright (C) NGINX, Inc.
3
4
5shift
6
7for nxt_option; do
8
9    case "$nxt_option" in
10        -*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'`     ;;
11           *) value=""                                                      ;;
12    esac
13
14    case "$nxt_option" in
15        --node=*)       NXT_NODE="$value"                                   ;;
16        --npm=*)        NXT_NPM="$value"                                    ;;
17        --node-gyp=*)   NXT_NODE_GYP="$value"                               ;;
18
19        --help)
20            cat << END
21
22    --node=FILE        set node executable
23    --npm=FILE         set npm executable
24    --node-gyp=FILE    set node-gyp executable
25
26END
27            exit 0
28        ;;
29
30        *)
31            echo
32            echo $0: error: invalid Node option \"$nxt_option\"
33            echo
34            exit 1
35        ;;
36
37    esac
38
39done
40
41
42if [ ! -f $NXT_AUTOCONF_DATA ]; then
43   echo
44   echo Please run common $0 before configuring module \"$nxt_module\".
45   echo
46   exit 1
47fi
48
49. $NXT_AUTOCONF_DATA
50
51
52NXT_NODE=${NXT_NODE=node}
53NXT_NPM=${NXT_NPM=npm}
54NXT_NODE_GYP=${NXT_NODE_GYP=node-gyp}
55
56
57$echo "configuring nodejs module"
58$echo "configuring nodejs module..." >> $NXT_AUTOCONF_ERR
59
60$echo -n "checking for node ..."
61$echo "checking for node ..." >> $NXT_AUTOCONF_ERR
62
63if /bin/sh -c "${NXT_NODE} -v" >> $NXT_AUTOCONF_ERR 2>&1; then
64    $echo " found"
65
66    NXT_NODE_VERSION="`${NXT_NODE} -v`"
67    $echo " + node version ${NXT_NODE_VERSION}"
68
69else
70    $echo " not found"
71    $echo
72    $echo $0: error: no Node found.
73    $echo
74    exit 1;
75fi
76
77
78$echo -n "checking for npm ..."
79$echo "checking for npm ..." >> $NXT_AUTOCONF_ERR
80
81if /bin/sh -c "${NXT_NPM} -v" >> $NXT_AUTOCONF_ERR 2>&1; then
82    $echo " found"
83
84    NXT_NPM_VERSION="`${NXT_NPM} -v`"
85    $echo " + npm version ${NXT_NPM_VERSION}"
86
87else
88    $echo " not found"
89    $echo
90    $echo $0: error: no npm found.
91    $echo
92    exit 1;
93fi
94
95
96$echo -n "checking for node-gyp ..."
97$echo "checking for node-gyp ..." >> $NXT_AUTOCONF_ERR
98
99if /bin/sh -c "${NXT_NODE_GYP} -v" >> $NXT_AUTOCONF_ERR 2>&1; then
100    $echo " found"
101
102    NXT_NODE_GYP_VERSION="`${NXT_NODE_GYP} -v`"
103    $echo " + node-gyp version ${NXT_NODE_GYP_VERSION}"
104
105else
106    $echo " not found"
107    $echo
108    $echo $0: error: no node-gyp found.
109    $echo
110    exit 1;
111fi
112
113if grep ^$NXT_NODE: $NXT_MAKEFILE 2>&1 > /dev/null; then
114    $echo
115    $echo $0: error: duplicate \"$NXT_NODE\" package configured.
116    $echo
117    exit 1;
118fi
119
120
121NXT_NODE_TMP=${NXT_BUILD_DIR}/src/${NXT_NODE}/unit-http
122NXT_NODE_TARBALL=${NXT_BUILD_DIR}/${NXT_NODE}-unit-http.tar.gz
123NXT_NODE_EXPORTS="export UNIT_SRC_PATH=${PWD}/src && \
124    export UNIT_LIB_STATIC_PATH=${PWD}/${NXT_BUILD_DIR}/libunit.a"
125
126cat << END >> $NXT_MAKEFILE
127
128.PHONY: ${NXT_NODE}
129.PHONY: ${NXT_NODE}-copy
130.PHONY: ${NXT_NODE}-install
131.PHONY: ${NXT_NODE}-uninstall
132.PHONY: ${NXT_NODE}-local-install
133.PHONY: ${NXT_NODE}-build
134.PHONY: ${NXT_NODE}-publish
135
136
137${NXT_NODE}: ${NXT_NODE}-copy $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
138	${NXT_NODE_EXPORTS} && \\
139	cd ${NXT_NODE_TMP} && ${NXT_NODE_GYP} configure build clean
140
141${NXT_NODE}-copy:
142	mkdir -p ${NXT_BUILD_DIR}/src/
143	cp -rp src/nodejs/ ${NXT_BUILD_DIR}/src/${NXT_NODE}
144
145${NXT_NODE_TARBALL}: ${NXT_NODE}-copy
146	tar -zcvf ${NXT_NODE_TARBALL} -C ${NXT_NODE_TMP} .
147
148
149${NXT_NODE}-install: ${NXT_NODE_TARBALL} \
150    $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
151	${NXT_NODE_EXPORTS} && \\
152	${NXT_NPM} install -g ${PWD}/${NXT_NODE_TARBALL}
153
154${NXT_NODE}-uninstall:
155	${NXT_NPM} uninstall -g unit-http
156
157${NXT_NODE}-local-install: ${NXT_NODE_TARBALL} \
158    $NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
159	${NXT_NODE_EXPORTS} && \\
160	mkdir -p \$(DESTDIR) && \\
161	cd \$(DESTDIR) && ${NXT_NPM} install ${PWD}/${NXT_NODE_TARBALL}
162
163
164${NXT_NODE}-build: ${NXT_NODE}
165
166${NXT_NODE}-publish: ${NXT_NODE}
167	cd ${NXT_NODE_TMP} && ${NXT_NPM} publish
168
169END
170