-
Notifications
You must be signed in to change notification settings - Fork 480
/
.install_julia.sh
executable file
·113 lines (109 loc) · 3.59 KB
/
.install_julia.sh
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
#!/bin/bash
# install julia vX.Y.Z: ./install-julia.sh X.Y.Z
# install julia nightly: ./install-julia.sh nightly
# LICENSE
#
# Copyright © 2013 by Steven G. Johnson, Fernando Perez, Jeff
# Bezanson, Stefan Karpinski, Keno Fischer, Jake Bolewski, Takafumi
# Arakaki, and other contributors.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# stop on error
set -e
VERSION="$1"
case "$VERSION" in
nightly)
BASEURL="https://julialangnightlies-s3.julialang.org/bin"
JULIANAME="julia-latest"
;;
[0-9]*.[0-9]*.[0-9]*)
BASEURL="https://julialang-s3.julialang.org/bin"
SHORTVERSION="$(echo "$VERSION" | grep -Eo '^[0-9]+\.[0-9]+')"
JULIANAME="$SHORTVERSION/julia-$VERSION"
;;
[0-9]*.[0-9])
BASEURL="https://julialang-s3.julialang.org/bin"
SHORTVERSION="$(echo "$VERSION" | grep -Eo '^[0-9]+\.[0-9]+')"
JULIANAME="$SHORTVERSION/julia-$VERSION-latest"
;;
*)
echo "Unrecognized VERSION=$VERSION, exiting"
exit 1
;;
esac
case $(uname) in
Linux)
case $(uname -m) in
x86_64)
ARCH="x64"
case "$JULIANAME" in
julia-latest)
SUFFIX="linux64"
;;
*)
SUFFIX="linux-x86_64"
;;
esac
;;
i386 | i486 | i586 | i686)
ARCH="x86"
case "$JULIANAME" in
julia-latest)
SUFFIX="linux32"
;;
*)
SUFFIX="linux-i686"
;;
esac
;;
*)
echo "Do not have Julia binaries for this architecture, exiting"
exit 1
;;
esac
echo "$BASEURL/linux/$ARCH/$JULIANAME-$SUFFIX.tar.gz"
curl -L "$BASEURL/linux/$ARCH/$JULIANAME-$SUFFIX.tar.gz" | tar -xz
sudo ln -s $PWD/julia-*/bin/julia /usr/local/bin/julia
julia -e 'import Pkg; Pkg.add("PyCall");'
julia -e 'import Pkg; Pkg.add("PowerModels"); Pkg.add("Ipopt");'
julia -e 'import Pkg; Pkg.add("JSON"); Pkg.add("JuMP"); Pkg.add("Cbc"); Pkg.add("Juniper");'
;;
Darwin)
if [ -e /usr/local/bin/julia ]; then
echo "/usr/local/bin/julia already exists, exiting"
exit 1
elif [ -e julia.dmg ]; then
echo "julia.dmg already exists, exiting"
exit 1
elif [ -e ~/julia ]; then
echo "~/julia already exists, exiting"
exit 1
fi
curl -Lo julia.dmg "$BASEURL/mac/x64/$JULIANAME-mac64.dmg"
hdiutil mount -mountpoint /Volumes/Julia julia.dmg
cp -Ra /Volumes/Julia/*.app/Contents/Resources/julia ~
ln -s ~/julia/bin/julia /usr/local/bin/julia
# TODO: clean up after self?
;;
*)
echo "Do not have Julia binaries for this platform, exiting"
exit 1
;;
esac