#! /bin/sh # # //node/install # # export version=X.Y.Z to install a specific version # otherwise the latest upstream version will be determined and used # # export force=true to install even though it already seems to be installed # # export clean=true to first wipe any generated files # set -xeuf # cd //node cd $(readlink -f $(dirname $0)) # PATH prepend //node/tools //util/bin export PATH="$PWD/tools:$PWD/../util/bin${PATH+:$PATH}" if test "${force-false}" = true; then : # skip check if it is already installed else if test -e ../bin/node; then : '//bin/node # is already installed' exit fi fi if test "${clean-false}" = true; then rm -fR src out fi test -d src || mkdir -v src cd src version=${version-`latest-version`} target=node-v$version distfile=$target.tar.gz download() { curl -C - -so $distfile http://nodejs.org/dist/v$version/$distfile || curl -C - -so $distfile http://nodejs.org/dist/$distfile || : } is_downloaded() { gzip -t $distfile 2>/dev/null } if ! is_downloaded; then download if ! is_downloaded; then rm -f $distfile download fi if ! is_downloaded; then rm -f $distfile echo failed to download distfile exit 1 fi fi if ! zcat $distfile | tar -x --keep-newer-files 2>/dev/null; then rm -fR $target zcat $distfile | tar -x fi cd .. prefix=out/$target mkdir -p $prefix prefix=`readlink -f $prefix` cd src/$target ./configure --prefix=$prefix CPPFLAGS=-Wno-unused-but-set-variable make make install cd ../.. ln -snf ../node/out/$target/bin/node ../bin/node