| 1 | #!/bin/bash |
| 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 | |
| 12 | cat <<DPKGCFG | sudo tee /etc/dpkg/dpkg.cfg.d/dpkg-speedup > /dev/null |
| 13 | # Skip fsync |
| 14 | force-unsafe-io |
| 15 | # Don't install documentation |
| 16 | path-exclude=/usr/share/man/* |
| 17 | path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo |
| 18 | path-exclude=/usr/share/doc/* |
| 19 | DPKGCFG |
| 20 | # Packages available on i686 and x86_64 |
| 21 | pkgs=( |
| 22 | libaio-dev |
| 23 | libcunit1-dev |
| 24 | libcurl4-openssl-dev |
| 25 | libfl-dev |
| 26 | libnuma-dev |
| 27 | libnfs-dev |
| 28 | valgrind |
| 29 | ) |
| 30 | case "${CI_TARGET_ARCH}" in |
| 31 | "i686") |
| 32 | sudo dpkg --add-architecture i386 |
| 33 | pkgs=("${pkgs[@]/%/:i386}") |
| 34 | pkgs+=( |
| 35 | gcc-multilib |
| 36 | pkg-config:i386 |
| 37 | zlib1g-dev:i386 |
| 38 | ) |
| 39 | ;; |
| 40 | "x86_64") |
| 41 | pkgs+=( |
| 42 | libglusterfs-dev |
| 43 | libgoogle-perftools-dev |
| 44 | libiscsi-dev |
| 45 | libnbd-dev |
| 46 | libpmem-dev |
| 47 | libpmem2-dev |
| 48 | libprotobuf-c-dev |
| 49 | librbd-dev |
| 50 | libtcmalloc-minimal4 |
| 51 | nvidia-cuda-dev |
| 52 | libibverbs-dev |
| 53 | librdmacm-dev |
| 54 | ) |
| 55 | echo "Removing libunwind-14-dev because of conflicts with libunwind-dev" |
| 56 | sudo apt remove -y libunwind-14-dev |
| 57 | ;; |
| 58 | esac |
| 59 | |
| 60 | # Architecture-independent packages and packages for which we don't |
| 61 | # care about the architecture. |
| 62 | pkgs+=( |
| 63 | python3-scipy |
| 64 | python3-sphinx |
| 65 | ) |
| 66 | |
| 67 | echo "Updating APT..." |
| 68 | sudo apt-get -qq update |
| 69 | echo "Installing packages... ${pkgs[@]}" |
| 70 | sudo apt-get install -o APT::Immediate-Configure=false --no-install-recommends -qq -y "${pkgs[@]}" |
| 71 | if [ "${CI_TARGET_ARCH}" == "x86_64" ]; then |
| 72 | # install librpma from sources |
| 73 | ci/actions-install-librpma.sh |
| 74 | fi |
| 75 | } |
| 76 | |
| 77 | install_linux() { |
| 78 | install_ubuntu |
| 79 | } |
| 80 | |
| 81 | install_macos() { |
| 82 | # Assumes homebrew and python3 are already installed |
| 83 | #echo "Updating homebrew..." |
| 84 | #brew update >/dev/null 2>&1 |
| 85 | echo "Installing packages..." |
| 86 | HOMEBREW_NO_AUTO_UPDATE=1 brew install cunit libnfs sphinx-doc |
| 87 | brew link sphinx-doc --force |
| 88 | pip3 install scipy six |
| 89 | } |
| 90 | |
| 91 | main() { |
| 92 | if [ "${CI_TARGET_BUILD}" = "android" ]; then |
| 93 | echo "Installing Android NDK..." |
| 94 | wget --quiet https://dl.google.com/android/repository/android-ndk-r24-linux.zip |
| 95 | unzip -q android-ndk-r24-linux.zip |
| 96 | return 0 |
| 97 | fi |
| 98 | |
| 99 | set_ci_target_os |
| 100 | |
| 101 | install_function="install_${CI_TARGET_OS}" |
| 102 | ${install_function} |
| 103 | |
| 104 | echo "Python3 path: $(type -p python3 2>&1)" |
| 105 | echo "Python3 version: $(python3 -V 2>&1)" |
| 106 | } |
| 107 | |
| 108 | main |