blob: f83a7a4a073ee6b5dc3896ef302535990ded71c9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
HOMEPAGE = "http://nodejs.org"
LICENSE = "MIT & BSD-2-Clause & BSD-3-Clause & ISC & AFL-2.0 & Apache-2.0 & OpenSSL & Zlib & Artistic-2.0 & (BSD-3-Clause | GPLv2)"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e804bf1e856481415099460bc54d9316"
DEPENDS = "openssl"
DEPENDS_append_class-target = " nodejs-native"
SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz"
SRC_URI[md5sum] = "3f45f994f1f02736576bf7bff1870897"
SRC_URI[sha256sum] = "513da8ed5e48abefdfab664f1cabc160238d314a0481148804aff8fc6552b78b"
S = "${WORKDIR}/node-v${PV}"
# v8 errors out if you have set CCACHE
CCACHE = ""
ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"
ARCHFLAGS ?= ""
# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi
do_configure () {
export LD="${CXX}"
./configure --prefix=${prefix} --without-snapshot --shared-openssl ${ARCHFLAGS}
}
do_compile () {
export LD="${CXX}"
make BUILDTYPE=Release
}
do_install () {
oe_runmake install DESTDIR=${D}
}
do_install_append_class-target () {
# install node-gyp node hedaers in /usr/include/node-gyp/
cd ${D}/${libdir}/node_modules/npm/node_modules/node-gyp/
export HOME=${D}/usr/include/node-gyp
sed -i 's/\.node-gyp//' lib/node-gyp.js
# configure http proxy if neccessary
if [ -n "${http_proxy}" ]; then
${STAGING_BINDIR_NATIVE}/node bin/node-gyp.js --verbose --proxy=${http_proxy} install
elif [ -n "${HTTP_PROXY}" ]; then
${STAGING_BINDIR_NATIVE}/node bin/node-gyp.js --verbose --proxy=${HTTP_PROXY} install
else
${STAGING_BINDIR_NATIVE}/node bin/node-gyp.js --verbose install
fi
}
do_install_append_class-native() {
# /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
# use sed on npm-cli.js because otherwise symlink is replaced with normal file and
# npm-cli.js continues to use old shebang
sed "1s^.*^#\!/usr/bin/env node^g" -i ${D}${libdir}/node_modules/npm/bin/npm-cli.js
}
do_install_append_class-target() {
sed "1s^.*^#\!${bindir}/env node^g" -i ${D}${libdir}/node_modules/npm/bin/npm-cli.js
}
pkg_postinst_${PN} () {
sed -e '/^PATH=/aNODE_PATH=\/usr\/lib\/node_modules\/' \
-e 's/\(^export\)\(.*\)/\1 NODE_PATH\2/' \
-i $D/etc/profile
}
pkg_prerm_${PN} () {
sed -e '/^NODE_PATH.*$/d' \
-e 's/\(^export\)\(.*\)\(\<NODE_PATH\>\s\)\(.*\)/\1\2\4/' \
-i $D/etc/profile
}
RDEPENDS_${PN} = "curl"
RDEPENDS_${PN}_class-native = ""
PACKAGES += "${PN}-npm"
FILES_${PN}-npm = "${libdir}/node_modules ${bindir}/npm"
RDEPENDS_${PN}-npm = "python-shell python-datetime python-subprocess python-crypt python-textutils \
python-netclient python-ctypes python-misc python-compiler python-multiprocessing \
bash"
BBCLASSEXTEND = "native"
|