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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
DESCRIPTION = "The Thing System steward"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2fe93140f8c4e56b56fbcd64730767a4"
SRC_URI = "\
git://github.com/TheThingSystem/steward.git \
file://steward.service.in \
file://start-steward \
file://start-steward.debug \
file://server.js.in \
file://package.json \
"
SRCREV = "cc38554aea4bdebcf55d11ca516711abbfc7ec73"
S = "${WORKDIR}/git"
PR = "r9"
PV = "1.7+git${SRCPV}"
DEPENDS = "tts-nodejs-native"
DEPENDS_${PN} = "\
libdns-sd-dev \
libpcap-dev \
libusb1 \
libbluetooth-dev \
${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd-dev', 'libudev-dev', d)} \
"
THE_THING_SYSTEM ?= "/opt/TheThingSystem"
inherit systemd
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "steward.service"
FILES_${PN} = "\
${THE_THING_SYSTEM}/* \
${libdir} \
"
FILES_${PN}-dbg += "\
${THE_THING_SYSTEM}/steward/*/*/*/.debug \
${THE_THING_SYSTEM}/steward/*/*/*/*/.debug \
${THE_THING_SYSTEM}/steward/*/*/*/*/*/.debug \
${THE_THING_SYSTEM}/steward/*/*/*/*/*/*/.debug \
${THE_THING_SYSTEM}/steward/*/*/*/*/*/*/*/.debug \
${THE_THING_SYSTEM}/steward/*/*/*/*/*/*/*/*/.debug \
${THE_THING_SYSTEM}/steward/*/*/*/*/*/*/*/*/*/.debug \
"
RDEPENDS_${PN} = "openssl tts-nodejs steward-init ruby"
def get_arch(bb, d):
val = (bb.data.getVar("MACHINEOVERRIDES", d) or "")
if val.find("genericx86") > 0:
return "--arch=i686"
elif val.find("x86") > 0:
return "--arch=i686"
elif val.find("arm") > 0:
return "--arch=arm"
else:
return ""
# Always compile 32-bit in npm because many modules that npm
# compiles do not support 64 bit in x86.
TTS_ARCH := "${@get_arch(bb, d)}"
do_install_append() {
# Some python issue prevents installation if the current
# user id is not in sysroots /etc/passwd file. So add user
# information there (this is actually quite ugly hack)
# See http://bugs.python.org/issue10496 for details.
PASSLINE=`grep \`echo ${HOME}|cut -d / -f 3\` /etc/passwd`; \
grep "'${PASSLINE}'" ${PKG_CONFIG_SYSROOT_DIR}/etc/passwd || \
echo "${PASSLINE}" >> ${PKG_CONFIG_SYSROOT_DIR}/etc/passwd
install -d ${D}${THE_THING_SYSTEM}/steward
install -d ${D}${systemd_unitdir}/system
install -m 0755 ${WORKDIR}/start-steward ${D}${THE_THING_SYSTEM}/steward
install -m 0755 ${WORKDIR}/start-steward.debug ${D}${THE_THING_SYSTEM}/steward
sed 's,@the_thing_system_dir@,${THE_THING_SYSTEM},g' \
< ${WORKDIR}/steward.service.in \
> ${D}${systemd_unitdir}/system/steward.service
sed 's,@the_thing_system_dir@,${THE_THING_SYSTEM},g' \
< ${WORKDIR}/server.js.in \
> ${D}${THE_THING_SYSTEM}/steward/server.js
cp -pR ${S}/steward/* ${D}${THE_THING_SYSTEM}/steward/
install -m 0644 ${WORKDIR}/package.json ${D}${THE_THING_SYSTEM}/steward
rm -rf ${D}${THE_THING_SYSTEM}/steward/sandbox/js-beautify-master/tests
rm ${D}${THE_THING_SYSTEM}/steward/run.sh
find ${D}${THE_THING_SYSTEM} -name .gitignore -exec rm '{}' \;
# Setup the node.js environment
cd ${D}${THE_THING_SYSTEM}/steward
# There seems to be some issues (npm hanging) if you try to run
# install when behind the proxy. So we try to setup proxies for npm
# See README.iot file for details.
if [ -x ~/npm-setup-proxies ]; then ~/npm-setup-proxies; fi
# Cleaning cache should help to some weird compilation errors
npm cache clean
# Do a fresh start
rm -rf node_modules
# Telling npm to use known registrars will prevent this error
# | npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
# when running npm
npm config set ca ""
# Some of the node.js packages put -pthreads into ld params and ld
# does not understand it. So install packages using gcc as a linker.
LD=${TARGET_PREFIX}gcc npm install --production -l ${TTS_ARCH}
# No need for static libraries
find ${D}${THE_THING_SYSTEM} -name '*.a' -exec rm '{}' \;
# Remove not used files
rm -rf ${D}${THE_THING_SYSTEM}/steward/node_modules/xml2js/node_modules/sax/examples
rm -rf ${D}${THE_THING_SYSTEM}/steward/node_modules/openzwave/deps/open-zwave/debian
# Remove some garbage files that prevent image creation
rm -f ${D}${THE_THING_SYSTEM}/steward/node_modules/pcap/*%*
# Blinkstick does not load in this version so just remove it
rm -rf ${D}${THE_THING_SYSTEM}/steward/node_modules/blinkstick
rm -rf ${D}${THE_THING_SYSTEM}/steward/devices/devices-lighting/lighting-blinkstick-led.js
}
|