Skip to content

Commit

Permalink
Use more n chiaminejp (#9971)
Browse files Browse the repository at this point in the history
* Added n as a local npm dependency

* Fixed an issue where install-gui.sh failed due to incompatible npm version

* Updated tab spaces

* Fixed for nodejs@3 environment

* Fixed a minor issue

* Install compatible npm locally if it's missing

* Updated start-gui.sh

* Fixed a minor issue

* Install npm localy if it's missing for BSD OSes

* Replaced tabs to spaces

* Added missing new line
  • Loading branch information
ChiaMineJP committed Feb 4, 2022
1 parent 92fc34c commit 1a815df
Show file tree
Hide file tree
Showing 5 changed files with 177 additions and 66 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,6 @@ win_code_sign_cert.p12

# chia-blockchain wheel build folder
build/

# Temporal `n` (node version manager) directory
.n/
13 changes: 13 additions & 0 deletions build_scripts/npm_global/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions build_scripts/npm_global/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "npm_global",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"n": "^8.0.2"
}
}
191 changes: 127 additions & 64 deletions install-gui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,67 +2,130 @@
set -e
export NODE_OPTIONS="--max-old-space-size=3000"

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")

if [ "${SCRIPT_DIR}" != "$(pwd)" ]; then
echo "Please change working directory by the command below"
echo " cd ${SCRIPT_DIR}"
exit 1
fi

if [ -z "$VIRTUAL_ENV" ]; then
echo "This requires the chia python virtual environment."
echo "Execute '. ./activate' before running."
exit 1
exit 1
fi

if [ "$(id -u)" = 0 ]; then
echo "The Chia Blockchain GUI can not be installed or run by the root user."
exit 1
exit 1
fi

# Allows overriding the branch or commit to build in chia-blockchain-gui
SUBMODULE_BRANCH=$1

install_npm_locally(){
NPM_VERSION="$(npm -v | cut -d'.' -f 1)"
if [ "$NPM_VERSION" -lt "7" ]; then
echo "Current npm version($(npm -v)) is less than 7. GUI app requires npm>=7."
NPM_GLOBAL="${SCRIPT_DIR}/build_scripts/npm_global"
# install-gui.sh can be executed
echo "cd ${NPM_GLOBAL}"
cd "${NPM_GLOBAL}"
if [ "$NPM_VERSION" -lt "6" ]; then
# Ubuntu image of Amazon ec2 instance surprisingly uses [email protected]
# which doesn't support `npm ci` as of 27th Jan, 2022
echo "npm install"
npm install
else
echo "npm ci"
npm ci
fi
export N_PREFIX=${SCRIPT_DIR}/.n
export PATH="${N_PREFIX}/bin:$(npm bin):${PATH}"
echo "n 16"
n 16
echo "Current npm version: $(npm -v)"
if [ "$(npm -v | cut -d'.' -f 1)" -lt "7" ]; then
echo "Error: Failed to install npm>=7"
exit 1
fi
cd "${SCRIPT_DIR}"
else
echo "Found npm $(npm -v)"
fi
}

UBUNTU=false
# Manage npm and other install requirements on an OS specific basis
if [ "$(uname)" = "Linux" ]; then
#LINUX=1
if type apt-get; then
# Debian/Ubuntu
UBUNTU=true

# Check if we are running a Raspberry PI 4
if [ "$(uname -m)" = "aarch64" ] \
&& [ "$(uname -n)" = "raspberrypi" ]; then
# Check if NodeJS & NPM is installed
type npm >/dev/null 2>&1 || {
echo >&2 "Please install NODEJS&NPM manually"
}
else
sudo apt-get install -y npm nodejs libxss1
sudo npm install -g n
export N_PREFIX=${SCRIPT_DIR}/.n
n stable
fi
elif type yum && [ ! -f "/etc/redhat-release" ] && [ ! -f "/etc/centos-release" ] && [ ! -f /etc/rocky-release ] && [ ! -f /etc/fedora-release ]; then
# AMZN 2
echo "Installing on Amazon Linux 2."
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
elif type yum && [ ! -f /etc/rocky-release ] && [ ! -f /etc/fedora-release ] && [ -f /etc/redhat-release ] || [ -f /etc/centos-release ]; then
# CentOS or Redhat
echo "Installing on CentOS/Redhat."
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
elif type yum && [ -f /etc/rocky-release ] || [ -f /etc/fedora-release ]; then
# RockyLinux
echo "Installing on RockyLinux/Fedora"
sudo dnf module enable nodejs:12
sudo dnf install -y nodejs
fi

elif [ "$(uname)" = "Darwin" ] && type brew && ! npm version >/dev/null 2>&1; then
# Install npm if not installed
brew install npm
#LINUX=1
if type apt-get; then
# Debian/Ubuntu
UBUNTU=true

# Check if we are running a Raspberry PI 4
if [ "$(uname -m)" = "aarch64" ] \
&& [ "$(uname -n)" = "raspberrypi" ]; then
# Check if NodeJS & NPM is installed
type npm >/dev/null 2>&1 || {
echo >&2 "Please install NODEJS&NPM manually"
}
else
if ! npm version >/dev/null 2>&1; then
# If npm/node is not installed, install them
echo "nodejs is not installed. Installing..."
echo "sudo apt-get install -y npm nodejs libxss1"
sudo apt-get install -y npm nodejs libxss1
fi

install_npm_locally
fi
elif type yum && [ ! -f "/etc/redhat-release" ] && [ ! -f "/etc/centos-release" ] && [ ! -f /etc/rocky-release ] && [ ! -f /etc/fedora-release ]; then
# AMZN 2
if ! npm version >/dev/null 2>&1; then
# If npm/node is not installed, install them
echo "Installing nodejs on Amazon Linux 2."
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
fi

install_npm_locally
elif type yum && [ ! -f /etc/rocky-release ] && [ ! -f /etc/fedora-release ] && [ -f /etc/redhat-release ] || [ -f /etc/centos-release ]; then
# CentOS or Redhat
if ! npm version >/dev/null 2>&1; then
# If npm/node is not installed, install them
echo "Installing nodejs on CentOS/Redhat."
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
fi

install_npm_locally
elif type yum && [ -f /etc/rocky-release ] || [ -f /etc/fedora-release ]; then
# RockyLinux
if ! npm version >/dev/null 2>&1; then
# If npm/node is not installed, install them
echo "Installing nodejs on RockyLinux/Fedora"
sudo dnf module enable nodejs:12
sudo dnf install -y nodejs
fi

install_npm_locally
fi
elif [ "$(uname)" = "Darwin" ] && type brew; then
if ! npm version >/dev/null 2>&1; then
# If npm/node is not installed, install them
echo "Installing nodejs on MacOS"
brew install npm
fi

install_npm_locally
elif [ "$(uname)" = "OpenBSD" ]; then
pkg_add node
pkg_add node
install_npm_locally
elif [ "$(uname)" = "FreeBSD" ]; then
pkg install node
pkg install node
install_npm_locally
fi

echo ""
Expand All @@ -71,30 +134,30 @@ echo ""
# Pipelines directly, so skip unless you are completing a source/developer install.
# Ubuntu special cases above.
if [ ! "$CI" ]; then
echo "Running git submodule update --init --recursive."
echo ""
git submodule update --init --recursive
echo "Running git submodule update."
echo ""
git submodule update
cd chia-blockchain-gui

if [ "$SUBMODULE_BRANCH" ];
then
echo "Running git submodule update --init --recursive."
echo ""
git submodule update --init --recursive
echo "Running git submodule update."
echo ""
git submodule update
cd chia-blockchain-gui

if [ "$SUBMODULE_BRANCH" ];
then
git fetch
git checkout "$SUBMODULE_BRANCH"
git checkout "$SUBMODULE_BRANCH"
git pull
echo ""
echo "Building the GUI with branch $SUBMODULE_BRANCH"
echo ""
fi

npm ci
npm audit fix || true
npm run build
python ../installhelper.py
echo ""
echo "Building the GUI with branch $SUBMODULE_BRANCH"
echo ""
fi

npm ci
npm audit fix || true
npm run build
python ../installhelper.py
else
echo "Skipping node.js in install.sh on MacOS ci."
echo "Skipping node.js in install.sh on MacOS ci."
fi

echo ""
Expand Down
21 changes: 19 additions & 2 deletions start-gui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,25 @@
set -e
export NODE_OPTIONS="--max-old-space-size=3000"

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
export N_PREFIX="${SCRIPT_DIR}/.n"
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")

if [ -d "${SCRIPT_DIR}/.n" ]; then
export N_PREFIX="${SCRIPT_DIR}/.n"
export PATH="${N_PREFIX}/bin:${PATH}"
fi

if ! npm version >/dev/null 2>&1; then
echo "Please install GUI dependencies by:"
echo " sh install-gui.sh"
echo "on ${SCRIPT_DIR}"
exit 1
fi

NPM_VERSION="$(npm -v | cut -d'.' -f 1)"
if [ "$NPM_VERSION" -lt "7" ]; then
echo "Current npm version($(npm -v)) is less than 7. GUI app requires npm>=7."
exit 1
fi

cd "${SCRIPT_DIR}/chia-blockchain-gui/"
npm run electron

0 comments on commit 1a815df

Please sign in to comment.