Commit | Line | Data |
---|---|---|
70c96f76 | 1 | #!/usr/bin/env bash |
ce1b5612 SW |
2 | # This script expects to be invoked from the base fio directory. |
3 | set -eu | |
4 | ||
5 | SCRIPT_DIR=$(dirname "$0") | |
6 | # shellcheck disable=SC1091 | |
7 | . "${SCRIPT_DIR}/common.sh" | |
8 | ||
9 | install_ubuntu() { | |
10 | local pkgs | |
11 | ||
9b471ea6 VF |
12 | if [ "${GITHUB_JOB}" == "build-containers" ]; then |
13 | # containers run as root and do not have sudo | |
14 | apt update | |
15 | apt -y install sudo | |
16 | fi | |
17 | ||
ce1b5612 SW |
18 | cat <<DPKGCFG | sudo tee /etc/dpkg/dpkg.cfg.d/dpkg-speedup > /dev/null |
19 | # Skip fsync | |
20 | force-unsafe-io | |
21 | # Don't install documentation | |
22 | path-exclude=/usr/share/man/* | |
23 | path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo | |
24 | path-exclude=/usr/share/doc/* | |
25 | DPKGCFG | |
9b471ea6 | 26 | |
ce1b5612 SW |
27 | # Packages available on i686 and x86_64 |
28 | pkgs=( | |
29 | libaio-dev | |
30 | libcunit1-dev | |
31 | libcurl4-openssl-dev | |
32 | libfl-dev | |
ce1b5612 | 33 | libnuma-dev |
dff32ddb | 34 | libnfs-dev |
ce1b5612 SW |
35 | valgrind |
36 | ) | |
37 | case "${CI_TARGET_ARCH}" in | |
38 | "i686") | |
39 | sudo dpkg --add-architecture i386 | |
40 | pkgs=("${pkgs[@]/%/:i386}") | |
41 | pkgs+=( | |
42 | gcc-multilib | |
43 | pkg-config:i386 | |
44 | zlib1g-dev:i386 | |
5cedafaf VF |
45 | libc6:i386 |
46 | libgcc-s1:i386 | |
ce1b5612 SW |
47 | ) |
48 | ;; | |
49 | "x86_64") | |
50 | pkgs+=( | |
51 | libglusterfs-dev | |
52 | libgoogle-perftools-dev | |
2d416331 | 53 | libisal-dev |
ce1b5612 SW |
54 | libiscsi-dev |
55 | libnbd-dev | |
56 | libpmem-dev | |
ce1b5612 SW |
57 | librbd-dev |
58 | libtcmalloc-minimal4 | |
b68ba328 VF |
59 | libibverbs-dev |
60 | librdmacm-dev | |
9b471ea6 | 61 | pkg-config |
ce1b5612 | 62 | ) |
726a9585 VF |
63 | echo "Removing libunwind-14-dev because of conflicts with libunwind-dev" |
64 | sudo apt remove -y libunwind-14-dev | |
9b471ea6 VF |
65 | if [ "${CI_TARGET_OS}" == "linux" ] || [ "${CI_TARGET_OS}" == "ubuntu" ]; then |
66 | # Only for Ubuntu | |
67 | pkgs+=( | |
68 | nvidia-cuda-dev | |
69 | ) | |
70 | fi | |
ce1b5612 SW |
71 | ;; |
72 | esac | |
73 | ||
74 | # Architecture-independent packages and packages for which we don't | |
75 | # care about the architecture. | |
76 | pkgs+=( | |
77 | python3-scipy | |
5c997f9c | 78 | python3-sphinx |
888dbd62 | 79 | python3-statsmodels |
ce1b5612 | 80 | ) |
9b471ea6 VF |
81 | if [ "${GITHUB_JOB}" == "build-containers" ]; then |
82 | pkgs+=( | |
83 | bison | |
84 | build-essential | |
85 | cmake | |
86 | flex | |
87 | unzip | |
88 | wget | |
89 | zlib1g-dev | |
90 | ) | |
91 | fi | |
ce1b5612 SW |
92 | |
93 | echo "Updating APT..." | |
94 | sudo apt-get -qq update | |
b68ba328 VF |
95 | echo "Installing packages... ${pkgs[@]}" |
96 | sudo apt-get install -o APT::Immediate-Configure=false --no-install-recommends -qq -y "${pkgs[@]}" | |
ce1b5612 SW |
97 | } |
98 | ||
2a262580 | 99 | # Fedora and related distributions |
9b471ea6 | 100 | install_fedora() { |
2a262580 VF |
101 | pkgs=( |
102 | bison-devel | |
103 | git | |
104 | cmake | |
105 | flex-devel | |
106 | gperftools | |
107 | isa-l-devel | |
108 | kernel-devel | |
109 | libaio-devel | |
110 | libibverbs-devel | |
111 | libiscsi-devel | |
112 | libnbd-devel | |
113 | libnfs-devel | |
114 | libpmem-devel | |
115 | libpmem2-devel | |
116 | librbd-devel | |
117 | numactl-devel | |
118 | protobuf-c-devel | |
119 | python3-scipy | |
120 | python3-sphinx | |
121 | sudo | |
122 | unzip | |
123 | valgrind-devel | |
124 | wget | |
125 | ) | |
126 | ||
127 | case "${CI_TARGET_OS}" in | |
128 | "fedora") | |
129 | pkgs+=( | |
130 | cunit-devel | |
131 | libgfapi-devel | |
132 | python3-statsmodels | |
133 | ) | |
134 | ;; | |
135 | "rocky" | "alma" | "oracle") | |
136 | pkgs+=( | |
137 | CUnit-devel | |
138 | python-pip | |
139 | ) | |
140 | ;;& | |
141 | "rocky" | "alma") | |
142 | pkgs+=( | |
143 | glusterfs-api-devel | |
144 | ) | |
145 | ;; | |
146 | esac | |
147 | dnf install -y "${pkgs[@]}" | |
9b471ea6 VF |
148 | } |
149 | ||
2a262580 VF |
150 | install_rhel_clone() { |
151 | dnf install -y epel-release | |
152 | install_fedora | |
153 | ||
154 | # I could not find a python3-statsmodels package in the repos | |
155 | pip3 install statsmodels | |
156 | } | |
157 | ||
158 | install_oracle() { | |
159 | dnf config-manager --set-enabled ol9_codeready_builder | |
160 | install_rhel_clone | |
161 | } | |
162 | ||
163 | install_alma() { | |
164 | dnf install -y 'dnf-command(config-manager)' | |
165 | dnf config-manager --set-enabled crb | |
166 | dnf install -y almalinux-release-devel | |
167 | install_rhel_clone | |
168 | } | |
169 | ||
170 | install_rocky() { | |
171 | dnf install -y 'dnf-command(config-manager)' | |
172 | dnf config-manager --set-enabled crb | |
173 | dnf config-manager --set-enabled devel | |
174 | install_rhel_clone | |
175 | } | |
176 | ||
9b471ea6 VF |
177 | install_debian() { |
178 | install_ubuntu | |
179 | } | |
180 | ||
ce1b5612 SW |
181 | install_linux() { |
182 | install_ubuntu | |
183 | } | |
184 | ||
185 | install_macos() { | |
186 | # Assumes homebrew and python3 are already installed | |
187 | #echo "Updating homebrew..." | |
188 | #brew update >/dev/null 2>&1 | |
189 | echo "Installing packages..." | |
70c96f76 | 190 | HOMEBREW_NO_AUTO_UPDATE=1 brew install cunit libnfs |
9af4af7a | 191 | pip3 install scipy six statsmodels sphinx |
ce1b5612 SW |
192 | } |
193 | ||
89d08880 VF |
194 | install_windows() { |
195 | pip3 install scipy six statsmodels sphinx | |
196 | } | |
197 | ||
ce1b5612 | 198 | main() { |
9b3cc2dd BVA |
199 | case "${CI_TARGET_BUILD}" in |
200 | android*) | |
201 | echo "Installing Android NDK..." | |
202 | wget --quiet https://dl.google.com/android/repository/android-ndk-r24-linux.zip | |
203 | unzip -q android-ndk-r24-linux.zip | |
204 | return 0 | |
205 | ;; | |
206 | esac | |
787c02a6 | 207 | |
ce1b5612 SW |
208 | set_ci_target_os |
209 | ||
210 | install_function="install_${CI_TARGET_OS}" | |
211 | ${install_function} | |
212 | ||
213 | echo "Python3 path: $(type -p python3 2>&1)" | |
214 | echo "Python3 version: $(python3 -V 2>&1)" | |
215 | } | |
216 | ||
217 | main |