forked from facebook/redex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup_oss_toolchain.sh
executable file
·129 lines (114 loc) · 3.13 KB
/
setup_oss_toolchain.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/env bash
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
# Set-up the dependencies necessary to build and run Redex on Ubuntu 16.04
# Xenial, using APT for software management.
# Exit on any command failing
set -e
# Root directory of repository
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
# Temporary directory for toolchain sources. Build artifacts will be
# installed to /usr/local.
TMP=$(mktemp -d 2>/dev/null)
trap 'rm -r $TMP' EXIT
BOOST_DEB_UBUNTU_PKGS="libboost-filesystem-dev
libboost-iostreams-dev
libboost-program-options-dev
libboost-regex-dev
libboost-system-dev
libboost-thread-dev"
function install_python36_from_source {
pushd "$TMP"
wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
tar -xvf Python-3.6.10.tgz
pushd Python-3.6.10
./configure
make V=0 && make install V=0
}
function install_boost_from_source {
pushd "$TMP"
"$ROOT"/get_boost.sh
}
function install_protobuf3_from_source {
pushd "$TMP"
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.17.3/protobuf-cpp-3.17.3.tar.gz
tar -xvf protobuf-cpp-3.17.3.tar.gz --no-same-owner
pushd protobuf-3.17.3
./configure
make V=0 && make install V=0
}
function install_from_apt {
PKGS="autoconf
autoconf-archive
automake
binutils-dev
bzip2
ca-certificates
g++
libiberty-dev
libjemalloc-dev
libjsoncpp-dev
liblz4-dev
liblzma-dev
libtool
make
wget
zlib1g-dev $*"
apt-get update
apt-get install --no-install-recommends -y ${PKGS}
}
function handle_debian {
case $1 in
[1-9])
echo "Unsupported Debian version $1"
exit 1
;;
10)
install_from_apt python3
install_boost_from_source
install_protobuf3_from_source
;;
*)
install_from_apt ${BOOST_DEB_UBUNTU_PKGS} python3
install_protobuf3_from_source
;;
esac
}
function handle_ubuntu {
case $1 in
16*)
install_from_apt
install_python36_from_source
install_boost_from_source
install_protobuf3_from_source
;;
1[7-9]*)
install_from_apt python3
install_boost_from_source
install_protobuf3_from_source
;;
2*)
install_from_apt ${BOOST_DEB_UBUNTU_PKGS} python3
install_protobuf3_from_source
;;
*)
echo "Unsupported Ubuntu version $1"
exit 1
;;
esac
}
# Read ID and VERSION_ID from /etc/os-release.
declare $(grep -E '^(ID|VERSION_ID)=' /etc/os-release | xargs)
case $ID in
ubuntu)
handle_ubuntu "$VERSION_ID"
;;
debian)
handle_debian "$VERSION_ID"
;;
*)
echo "Unsupported OS $ID - $VERSION_ID"
exit 1
esac