mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	This fixes a bug where provision was failing since our most recent upgrade to yarn/nvm/node. It turns out my original fix was the correct fix, but to the wrong third-party tool: nvm, not yarn, was the offender.
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
set -e
 | 
						|
 | 
						|
ZULIP_PATH="$(dirname "$0")/../.."
 | 
						|
ZULIP_SRV="/srv"
 | 
						|
if [ "$TRAVIS" ] ; then
 | 
						|
    ZULIP_SRV="/home/travis"
 | 
						|
fi
 | 
						|
YARN_BIN="$ZULIP_SRV/zulip-yarn/bin/yarn"
 | 
						|
node_version=8.11.1
 | 
						|
yarn_version=1.5.1
 | 
						|
 | 
						|
# This is a fix for the fact that nvm uses $HOME to determine which
 | 
						|
# user account's home directory to ~/.config to.  Ideally, we'd have a
 | 
						|
# more systematic fix, like using `sudo -H` everywhere.
 | 
						|
export HOME=/root
 | 
						|
 | 
						|
current_node_version="none"
 | 
						|
if hash node 2>/dev/null; then
 | 
						|
    current_node_version="$(node --version)"
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$($YARN_BIN --version 2>/dev/null)" = "$yarn_version" ] && [ "$current_node_version" = "v$node_version" ]; then
 | 
						|
    echo "Node version $node_version and yarn version $yarn_version are already installed."
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$current_node_version" != "v$node_version" ]; then
 | 
						|
    export NVM_DIR=/usr/local/nvm
 | 
						|
    if ! [ -e "$NVM_DIR/nvm.sh" ]; then
 | 
						|
        wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
 | 
						|
    fi
 | 
						|
 | 
						|
    source "$NVM_DIR/nvm.sh"
 | 
						|
    nvm install "$node_version" && nvm alias default "$node_version"
 | 
						|
    export NODE_BIN="$(nvm which default)"
 | 
						|
 | 
						|
    # Fix messed-up uid=500 and group write bits produced by nvm
 | 
						|
    n=$(which node)
 | 
						|
    n=${n%/bin/node}
 | 
						|
    chown -R root:root "$n"
 | 
						|
    chmod -R go-w "$n"
 | 
						|
 | 
						|
    # Install node wrapper to /usr/local/bin
 | 
						|
    cp "$ZULIP_PATH/scripts/setup/node-wrapper" /usr/local/bin/node
 | 
						|
    sed -i "s|NODE_PATH|$NODE_BIN|" /usr/local/bin/node
 | 
						|
fi
 | 
						|
 | 
						|
# Work around the fact that apparently sudo doesn't clear the HOME
 | 
						|
# environment variable in some cases; we don't want root
 | 
						|
# accessing/storing yarn configuration in the non-root user's home
 | 
						|
# directory.
 | 
						|
export HOME=/root
 | 
						|
 | 
						|
# Install yarn if not installed
 | 
						|
bash "$ZULIP_PATH/scripts/lib/third/install-yarn.sh" "$ZULIP_SRV" --version "$yarn_version"
 |