Merge branch 'atomic-writes'
[fio.git] / ci / actions-install.sh
CommitLineData
70c96f76 1#!/usr/bin/env bash
ce1b5612
SW
2# This script expects to be invoked from the base fio directory.
3set -eu
4
5SCRIPT_DIR=$(dirname "$0")
6# shellcheck disable=SC1091
7. "${SCRIPT_DIR}/common.sh"
8
9install_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
20force-unsafe-io
21# Don't install documentation
22path-exclude=/usr/share/man/*
23path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo
24path-exclude=/usr/share/doc/*
25DPKGCFG
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 100install_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
150install_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
158install_oracle() {
159 dnf config-manager --set-enabled ol9_codeready_builder
160 install_rhel_clone
161}
162
163install_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
170install_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
177install_debian() {
178 install_ubuntu
179}
180
ce1b5612
SW
181install_linux() {
182 install_ubuntu
183}
184
185install_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
194install_windows() {
195 pip3 install scipy six statsmodels sphinx
196}
197
ce1b5612 198main() {
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
217main