-
Notifications
You must be signed in to change notification settings - Fork 1
/
meteor
136 lines (110 loc) · 4.15 KB
/
meteor
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
BUNDLE_VERSION=0.3.23
# OS Check. Put here because here is where we download the precompiled
# bundles that are arch specific.
UNAME=$(uname)
if [ "$UNAME" != "Linux" -a "$UNAME" != "Darwin" ] ; then
echo "Sorry, this OS is not supported."
exit 1
fi
if [ "$UNAME" = "Darwin" ] ; then
if [ "i386" != "$(uname -p)" -o "1" != "$(sysctl -n hw.cpu64bit_capable 2>/dev/null || echo 0)" ] ; then
# Can't just test uname -m = x86_64, because Snow Leopard can
# return other values.
echo "Only 64-bit Intel processors are supported at this time."
exit 1
fi
ARCH="x86_64"
elif [ "$UNAME" = "Linux" ] ; then
ARCH="$(uname -m)"
if [ "$ARCH" != "i686" -a "$ARCH" != "x86_64" ] ; then
echo "Unsupported architecture: $ARCH"
echo "Meteor only supports i686 and x86_64 for now."
exit 1
fi
fi
PLATFORM="${UNAME}_${ARCH}"
# Find the script dir, following one level of symlink. Note that symlink
# can be relative or absolute. Too bad 'readlink -f' is not portable.
ORIG_DIR=$(pwd)
cd "$(dirname "$0")"
if [ -L "$(basename "$0")" ] ; then
cd "$(dirname $(readlink $(basename "$0") ) )"
fi
SCRIPT_DIR=$(pwd -P)
# fetch crypto_ext
#if [ ! -f crypto_ext/bin/lib32/libc.so.a0e12298 ]; then
# wget "http://web.mit.edu/dvorak42/Public/cebin.tar"
# tar xvf "cebin.tar"
# rm "cebin.tar"
#fi
# removed crypto_ext temporarily
for D in enc_modules/crypto_mk enc_modules/crypto_server; do
echo "Building $D"
( cd $D && make )
done
if pidof crypto_server
then
echo "Crypto server already running"
else
(cd enc_modules/crypto_server && ./crypto_server &)
fi
cd "$ORIG_DIR"
function install_dev_bundle {
set -e
trap "echo Failed to install dependency kit." EXIT
TARBALL="dev_bundle_${PLATFORM}_${BUNDLE_VERSION}.tar.gz"
BUNDLE_TMPDIR="$SCRIPT_DIR/dev_bundle.xxx"
rm -rf "$BUNDLE_TMPDIR"
mkdir "$BUNDLE_TMPDIR"
if [ -f "$SCRIPT_DIR/$TARBALL" ] ; then
echo "Skipping download and installing kit from $SCRIPT_DIR/$TARBALL"
tar -xzf "$SCRIPT_DIR/$TARBALL" -C "$BUNDLE_TMPDIR"
elif [ -n "$SAVE_DEV_BUNDLE_TARBALL" ] ; then
# URL duplicated in tools/server/target.sh.in
curl -# "https://d3sqy0vbqsdhku.cloudfront.net/$TARBALL" >"$SCRIPT_DIR/$TARBALL"
tar -xzf "$SCRIPT_DIR/$TARBALL" -C "$BUNDLE_TMPDIR"
else
curl -# "https://d3sqy0vbqsdhku.cloudfront.net/$TARBALL" | tar -xzf - -C "$BUNDLE_TMPDIR"
fi
test -x "${BUNDLE_TMPDIR}/bin/node" # bomb out if it didn't work, eg no net
# Delete old dev bundle and rename the new one on top of it.
rm -rf "$SCRIPT_DIR/dev_bundle"
mv "$BUNDLE_TMPDIR" "$SCRIPT_DIR/dev_bundle"
echo "Installed dependency kit v${BUNDLE_VERSION} in dev_bundle."
echo
trap - EXIT
set +e
}
if [ -d "$SCRIPT_DIR/.git" ] || [ -f "$SCRIPT_DIR/.git" ]; then
# In a checkout.
if [ ! -d "$SCRIPT_DIR/dev_bundle" ] ; then
echo "It's the first time you've run Meteor from a git checkout."
echo "I will download a kit containing all of Meteor's dependencies."
install_dev_bundle
elif [ ! -f "$SCRIPT_DIR/dev_bundle/.bundle_version.txt" ] ||
grep -qvx "$BUNDLE_VERSION" "$SCRIPT_DIR/dev_bundle/.bundle_version.txt" ; then
echo "Your dependency kit is out of date. I will download the new one."
install_dev_bundle
fi
DEV_BUNDLE="$SCRIPT_DIR/dev_bundle"
METEOR="$SCRIPT_DIR/tools/meteor.js"
else
# In an install
DEV_BUNDLE=$(dirname "$SCRIPT_DIR")
METEOR="$DEV_BUNDLE/tools/meteor.js"
fi
# Bump our file descriptor ulimit as high as it will go. This is a
# temporary workaround for dependancy watching holding open too many
# files: https://app.asana.com/0/364581412985/472479912325
if [ "$(ulimit -n)" != "unlimited" ] ; then
ulimit -n 16384 > /dev/null 2>&1 || \
ulimit -n 8192 > /dev/null 2>&1 || \
ulimit -n 4096 > /dev/null 2>&1 || \
ulimit -n 2048 > /dev/null 2>&1 || \
ulimit -n 1024 > /dev/null 2>&1 || \
ulimit -n 512 > /dev/null 2>&1
fi
export NODE_PATH="$DEV_BUNDLE/lib/node_modules"
export CRYPTO_SERVER="$DEV_BUNDLE/../enc_modules/crypto_server/crypto_server"
exec "$DEV_BUNDLE/bin/node" "$METEOR" "$@"