From 2fd112b069da2ae95ddcbca11d94fc1c0e100169 Mon Sep 17 00:00:00 2001
From: Robert Nelson <robertcnelson@gmail.com>
Date: Thu, 28 Jan 2016 16:55:30 -0600
Subject: [PATCH] bb.org: jessie: enable node-red, based off:
 https://gist.github.com/jadonk/ad049193593539cea29e

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
 .../chroot/beagleboard.org-console-jessie.sh  | 44 ++++++++++++-------
 target/chroot/beagleboard.org-jessie.sh       | 44 ++++++++++++-------
 2 files changed, 56 insertions(+), 32 deletions(-)

diff --git a/target/chroot/beagleboard.org-console-jessie.sh b/target/chroot/beagleboard.org-console-jessie.sh
index 1889f2088..8f44b02a0 100755
--- a/target/chroot/beagleboard.org-console-jessie.sh
+++ b/target/chroot/beagleboard.org-console-jessie.sh
@@ -344,15 +344,19 @@ install_node_pkgs () {
 			fi
 		fi
 
-		if [ -f /usr/bin/make ] ; then
-			echo "Installing: [npm install -g --unsafe-perm node-red]"
-			TERM=dumb npm install -g --unsafe-perm node-red
+		ver_nodered="0.9.1-nocolors"
 
-			if [ -d /usr/local/lib/node_modules/node-red ] ; then
-				cd /usr/local/lib/node_modules/node-red
-				TERM=dumb npm install systemd
-				cd /opt/
-			fi
+		if [ -f /opt/scripts/mods/node-red/node-red-${ver_nodered}.patch ] && [ -f /usr/bin/make ] ; then
+
+			echo "Installing: [npm install -g systemd@0.2.6]"
+			TERM=dumb npm install -g systemd@0.2.6
+
+			echo "Installing: [npm install -g node-red@${ver_nodered}]"
+			TERM=dumb npm install -g node-red@${ver_nodered}
+
+			cd /usr/local/lib/node_modules/node-red
+			patch -p1 < /opt/scripts/mods/node-red/node-red-${ver_nodered}.patch
+			cd /opt/
 
 		#disable for now, it needs to be smarter about loading capes in 4.1.x
 		if [ "x0" = "x" ] ; then
@@ -366,8 +370,6 @@ install_node_pkgs () {
 			cd /opt/
 		fi
 
-		#broken.. node-red socket activation....
-		if [ "x0" = "x" ] ; then
 			wfile="/lib/systemd/system/node-red.socket"
 			echo "[Socket]" > ${wfile}
 			echo "ListenStream=1880" >> ${wfile}
@@ -377,15 +379,25 @@ install_node_pkgs () {
 
 			wfile="/lib/systemd/system/node-red.service"
 			echo "[Unit]" > ${wfile}
-			echo "Description=node-red server" >> ${wfile}
+			echo "Description=Start Node-RED" >> ${wfile}
 			echo "" >> ${wfile}
 			echo "[Service]" >> ${wfile}
-			echo "WorkingDirectory=/usr/local/lib/node_modules/node-red" >> ${wfile}
-			echo "ExecStart=/usr/bin/node --max-old-space-size=128 red.js" >> ${wfile}
-			echo "SyslogIdentifier=node-red" >> ${wfile}
+			echo "Environment=HOME=/root" >> ${wfile}
+			echo "WorkingDirectory=/root" >> ${wfile}
+			echo "ExecStart=/usr/local/lib/node_modules/node-red/node-red.sh" >> ${wfile}
+			echo "SyslogIdentifier=Node-RED" >> ${wfile}
+			echo "RemainAfterExit=yes" >> ${wfile}
+			echo "" >> ${wfile}
+			echo "[Install]" >> ${wfile}
+			echo "WantedBy=multi-user.target" >> ${wfile}
+
+			wfile="/usr/local/lib/node_modules/node-red/node-red.sh"
+			echo "#!/bin/bash -" > ${wfile}
+			echo "export NODE_PATH=/usr/local/lib/node_modules" >> ${wfile}
+			echo "cd /usr/local/lib/node_modules/node-red/" >> ${wfile}
+			echo "/usr/bin/node --max-old-space-size=128 red.js" >> ${wfile}
 
 			systemctl enable node-red.socket || true
-		fi
 
 			if [ -d /etc/avahi/ ] ; then
 				#Annouce http server via DNS Sevice Discovery
@@ -397,7 +409,7 @@ install_node_pkgs () {
 				echo "" >> ${wfile}
 				echo "<service-group>" >> ${wfile}
 				echo "" >> ${wfile}
-				echo "  <name replace-wildcards=\"yes\">node-red for %h</name>" >> ${wfile}
+				echo "  <name replace-wildcards=\"yes\">Node-RED for %h</name>" >> ${wfile}
 				echo "  <service>" >> ${wfile}
 				echo "" >> ${wfile}
 				echo "    <type>_http._tcp</type>" >> ${wfile}
diff --git a/target/chroot/beagleboard.org-jessie.sh b/target/chroot/beagleboard.org-jessie.sh
index adb1e2bf2..72390540c 100755
--- a/target/chroot/beagleboard.org-jessie.sh
+++ b/target/chroot/beagleboard.org-jessie.sh
@@ -344,15 +344,19 @@ install_node_pkgs () {
 			fi
 		fi
 
-		if [ -f /usr/bin/make ] ; then
-			echo "Installing: [npm install -g --unsafe-perm node-red]"
-			TERM=dumb npm install -g --unsafe-perm node-red
+		ver_nodered="0.9.1-nocolors"
 
-			if [ -d /usr/local/lib/node_modules/node-red ] ; then
-				cd /usr/local/lib/node_modules/node-red
-				TERM=dumb npm install systemd
-				cd /opt/
-			fi
+		if [ -f /opt/scripts/mods/node-red/node-red-${ver_nodered}.patch ] && [ -f /usr/bin/make ] ; then
+
+			echo "Installing: [npm install -g systemd@0.2.6]"
+			TERM=dumb npm install -g systemd@0.2.6
+
+			echo "Installing: [npm install -g node-red@${ver_nodered}]"
+			TERM=dumb npm install -g node-red@${ver_nodered}
+
+			cd /usr/local/lib/node_modules/node-red
+			patch -p1 < /opt/scripts/mods/node-red/node-red-${ver_nodered}.patch
+			cd /opt/
 
 		#disable for now, it needs to be smarter about loading capes in 4.1.x
 		if [ "x0" = "x" ] ; then
@@ -366,8 +370,6 @@ install_node_pkgs () {
 			cd /opt/
 		fi
 
-		#broken.. node-red socket activation....
-		if [ "x0" = "x" ] ; then
 			wfile="/lib/systemd/system/node-red.socket"
 			echo "[Socket]" > ${wfile}
 			echo "ListenStream=1880" >> ${wfile}
@@ -377,15 +379,25 @@ install_node_pkgs () {
 
 			wfile="/lib/systemd/system/node-red.service"
 			echo "[Unit]" > ${wfile}
-			echo "Description=node-red server" >> ${wfile}
+			echo "Description=Start Node-RED" >> ${wfile}
 			echo "" >> ${wfile}
 			echo "[Service]" >> ${wfile}
-			echo "WorkingDirectory=/usr/local/lib/node_modules/node-red" >> ${wfile}
-			echo "ExecStart=/usr/bin/node --max-old-space-size=128 red.js" >> ${wfile}
-			echo "SyslogIdentifier=node-red" >> ${wfile}
+			echo "Environment=HOME=/root" >> ${wfile}
+			echo "WorkingDirectory=/root" >> ${wfile}
+			echo "ExecStart=/usr/local/lib/node_modules/node-red/node-red.sh" >> ${wfile}
+			echo "SyslogIdentifier=Node-RED" >> ${wfile}
+			echo "RemainAfterExit=yes" >> ${wfile}
+			echo "" >> ${wfile}
+			echo "[Install]" >> ${wfile}
+			echo "WantedBy=multi-user.target" >> ${wfile}
+
+			wfile="/usr/local/lib/node_modules/node-red/node-red.sh"
+			echo "#!/bin/bash -" > ${wfile}
+			echo "export NODE_PATH=/usr/local/lib/node_modules" >> ${wfile}
+			echo "cd /usr/local/lib/node_modules/node-red/" >> ${wfile}
+			echo "/usr/bin/node --max-old-space-size=128 red.js" >> ${wfile}
 
 			systemctl enable node-red.socket || true
-		fi
 
 			if [ -d /etc/avahi/ ] ; then
 				#Annouce http server via DNS Sevice Discovery
@@ -397,7 +409,7 @@ install_node_pkgs () {
 				echo "" >> ${wfile}
 				echo "<service-group>" >> ${wfile}
 				echo "" >> ${wfile}
-				echo "  <name replace-wildcards=\"yes\">node-red for %h</name>" >> ${wfile}
+				echo "  <name replace-wildcards=\"yes\">Node-RED for %h</name>" >> ${wfile}
 				echo "  <service>" >> ${wfile}
 				echo "" >> ${wfile}
 				echo "    <type>_http._tcp</type>" >> ${wfile}
-- 
GitLab