272 lines
5.8 KiB
Bash
Executable File
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
|