summaryrefslogtreecommitdiffstats
path: root/node/install
blob: 1284a73a45273fbb70b66ac22b952f29d385b7e6 (plain)
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
#! /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