agent-enviroments/builder/libs/seastar/install-dependencies.sh
2024-09-10 17:06:08 +03:00

272 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
#
# This file is open source software, licensed to you under the terms
# of the Apache License, Version 2.0 (the "License"). See the NOTICE file
# distributed with this work for additional information regarding copyright
# ownership. You may not use this file except in compliance with the License.
#
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# os-release may be missing in container environment by default.
if [ -f "/etc/os-release" ]; then
. /etc/os-release
elif [ -f "/etc/arch-release" ]; then
export ID=arch
else
echo "/etc/os-release missing."
exit 1
fi
debian_packages=(
cmake
diffutils
doxygen
g++
gcc
libboost-all-dev
libc-ares-dev
libcrypto++-dev
libfmt-dev
libgnutls28-dev
libhwloc-dev
liblz4-dev
libnuma-dev
libpciaccess-dev
libprotobuf-dev
libsctp-dev
libtool
liburing-dev
libxml2-dev
libyaml-cpp-dev
make
meson
ninja-build
openssl
pkg-config
protobuf-compiler
python3
python3-pyelftools
python3-yaml
ragel
stow
systemtap-sdt-dev
valgrind
xfslibs-dev
)
# seastar doesn't directly depend on these packages. They are
# needed because we want to link seastar statically and pkg-config
# has no way of saying "static seastar, but dynamic transitive
# dependencies". They provide the various .so -> .so.ver symbolic
# links.
transitive=(
libidn2-devel
libtool-ltdl-devel
libunistring-devel
trousers-devel
)
redhat_packages=(
boost-devel
c-ares-devel
cmake
diffutils
doxygen
fmt-devel
gcc
gnutls-devel
hwloc-devel
libpciaccess-devel
libtool
liburing-devel
libxml2-devel
lksctp-tools-devel
lz4-devel
make
meson
numactl-devel
openssl
protobuf-compiler
protobuf-devel
python3
python3-pyelftools
python3-pyyaml
stow
systemtap-sdt-devel
valgrind-devel
xfsprogs-devel
yaml-cpp-devel
"${transitive[@]}"
)
fedora_packages=(
"${redhat_packages[@]}"
boost-devel
fmt-devel
gcc-c++
libasan
libatomic
libubsan
ninja-build
ragel
valgrind-devel
)
centos7_packages=(
"${redhat_packages[@]}"
cmake3
devtoolset-11-gcc-c++
devtoolset-11-libasan
devtoolset-11-libatomic
devtoolset-11-libubsan
ninja-build
ragel
rh-mongodb36-boost-devel
)
centos8_packages=(
"${redhat_packages[@]}"
gcc-toolset-11-gcc
gcc-toolset-11-gcc-c++
gcc-toolset-11-libasan-devel
gcc-toolset-11-libatomic-devel
gcc-toolset-11-libubsan-devel
ninja-build
ragel
)
centos9_packages=(
"${redhat_packages[@]}"
gcc-toolset-13-gcc
gcc-toolset-13-gcc-c++
gcc-toolset-13-libasan-devel
gcc-toolset-13-libatomic-devel
gcc-toolset-13-libubsan-devel
ninja-build
ragel
)
# 1) glibc 2.30-3 has sys/sdt.h (systemtap include)
# some old containers may contain glibc older,
# so enforce update on that one.
# 2) if problems with signatures, ensure having fresh
# archlinux-keyring: pacman -Sy archlinux-keyring && pacman -Syyu
# 3) aur installations require having sudo and being
# a sudoer. makepkg does not work otherwise.
arch_packages=(
boost
boost-libs
c-ares
cmake
crypto++
filesystem
fmt
gcc
glibc
gnutls
hwloc
libpciaccess
libtool
liburing
libxml2
lksctp-tools
lz4
make
meson
ninja
numactl
openssl
pkgconf
protobuf
python3
python-pyelftools
python-yaml
ragel
stow
valgrind
xfsprogs
yaml-cpp
)
opensuse_packages=(
c-ares-devel
cmake
hwloc-devel
libboost_atomic1_66_0
libboost_atomic1_66_0-devel
libboost_chrono1_66_0
libboost_chrono1_66_0-devel
libboost_date_time1_66_0
libboost_date_time1_66_0-devel
libboost_filesystem1_66_0
libboost_filesystem1_66_0-devel
libboost_program_options1_66_0
libboost_program_options1_66_0-devel
libboost_system1_66_0
libboost_system1_66_0-devel
libboost_test1_66_0
libboost_test1_66_0-devel
libboost_thread1_66_0
libboost_thread1_66_0-devel
libgnutls-devel
libgnutlsxx28
liblz4-devel
libnuma-devel
libtool
lksctp-tools-devel
meson
ninja
openssl
protobuf-devel
python3-PyYAML
ragel
stow
xfsprogs-devel
yaml-cpp-devel
)
case "$ID" in
ubuntu|debian|pop)
apt-get install -y "${debian_packages[@]}"
;;
fedora)
dnf install -y "${fedora_packages[@]}"
;;
rhel|centos|rocky)
if [ "$VERSION_ID" = "7" ]; then
yum install -y epel-release centos-release-scl scl-utils
yum install -y "${centos7_packages[@]}"
elif [ "${VERSION_ID%%.*}" = "8" ]; then
dnf install -y epel-release
dnf install -y "${centos8_packages[@]}"
elif [ "${VERSION_ID%%.*}" = "9" ]; then
dnf install -y epel-release
dnf install -y "${centos9_packages[@]}"
fi
;;
opensuse-leap)
zypper install -y "${opensuse_packages[@]}"
;;
arch|manjaro)
if [ "$EUID" -eq "0" ]; then
pacman -Sy --needed --noconfirm "${arch_packages[@]}"
else
echo "seastar: running without root. Skipping main dependencies (pacman)." 1>&2
fi
;;
*)
echo "Your system ($ID) is not supported by this script. Please install dependencies manually."
exit 1
;;
esac