mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-31 01:24:19 +02:00
Since recently, rockylinux:9 failed with linker errors against bz2, lzma and zstd. Installing the relevant devel packages fixed the builds. For reasons, cmake has started to add the -lbz2, -llzma, and -lzstd linker flags. Since Icinga 2 usually does not need those, the relevant devel packages were not installed. This may be due to some other transitively linked dependency. > 2025-06-05T13:12:59.5866282Z : && /usr/lib64/ccache/c++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wsuggest-override -Wrange-loop-construct -g -pthread -Winvalid-pch -O2 -g -DNDEBUG -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--export-dynamic -rdynamic third-party/mmatch/CMakeFiles/mmatch.dir/mmatch.c.o third-party/socketpair/CMakeFiles/socketpair.dir/socketpair.c.o lib/base/CMakeFiles/base.dir/application-version.cpp.o lib/base/CMakeFiles/base.dir/journaldlogger.cpp.o lib/base/CMakeFiles/base.dir/base_unity.cpp.o third-party/execvpe/CMakeFiles/execvpe.dir/execvpe.c.o lib/config/CMakeFiles/config.dir/config_lexer.cc.o lib/config/CMakeFiles/config.dir/config_parser.cc.o lib/config/CMakeFiles/config.dir/config_unity.cpp.o lib/remote/CMakeFiles/remote.dir/remote_unity.cpp.o plugins/CMakeFiles/check_nscp_api.dir/check_nscp_api.cpp.o -o Bin/RelWithDebInfo/check_nscp_api -Wl,-rpath,:::::::::::::::::::::::: -ldl /usr/lib64/libboost_coroutine.so.1.75.0 /usr/lib64/libboost_context.so.1.75.0 /usr/lib64/libboost_date_time.so.1.75.0 /usr/lib64/libboost_filesystem.so.1.75.0 /usr/lib64/libboost_iostreams.so.1.75.0 /usr/lib64/libboost_thread.so.1.75.0 /usr/lib64/libboost_system.so.1.75.0 /usr/lib64/libboost_program_options.so.1.75.0 /usr/lib64/libboost_regex.so.1.75.0 /usr/lib64/libssl.so /usr/lib64/libcrypto.so -lsystemd /lib64/libedit.so -ltermcap /usr/lib64/libboost_chrono.so.1.75.0 -lbz2 -llzma -lz -lzstd -licudata -licui18n -licuuc && : > 2025-06-05T13:12:59.5872347Z /usr/bin/ld: cannot find -lbz2 > 2025-06-05T13:12:59.5872577Z /usr/bin/ld: cannot find -llzma > 2025-06-05T13:12:59.5872802Z /usr/bin/ld: cannot find -lzstd > 2025-06-05T13:12:59.5873039Z collect2: error: ld returned 1 exit status Hopefully, this issue may resolve itself in the near future, but for the time being this satisfies our CI run on Rocky Linux 9.
111 lines
3.3 KiB
Bash
Executable File
111 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -exo pipefail
|
|
|
|
export PATH="/usr/lib/ccache/bin:/usr/lib/ccache:/usr/lib64/ccache:$PATH"
|
|
export CCACHE_DIR=/icinga2/ccache
|
|
export CTEST_OUTPUT_ON_FAILURE=1
|
|
CMAKE_OPTS=()
|
|
|
|
case "$DISTRO" in
|
|
alpine:*)
|
|
# Packages inspired by the Alpine package, just
|
|
# - LibreSSL instead of OpenSSL 3 and
|
|
# - no MariaDB or libpq as they depend on OpenSSL.
|
|
# https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/icinga2/APKBUILD
|
|
apk add bison boost-dev ccache cmake flex g++ libedit-dev libressl-dev ninja-build tzdata
|
|
ln -vs /usr/lib/ninja-build/bin/ninja /usr/local/bin/ninja
|
|
;;
|
|
|
|
amazonlinux:2)
|
|
amazon-linux-extras install -y epel
|
|
yum install -y bison ccache cmake3 gcc-c++ flex ninja-build system-rpm-config \
|
|
{libedit,mariadb,ncurses,openssl,postgresql,systemd}-devel
|
|
|
|
yum install -y bzip2 tar wget
|
|
wget https://archives.boost.io/release/1.69.0/source/boost_1_69_0.tar.bz2
|
|
tar -xjf boost_1_69_0.tar.bz2
|
|
|
|
(
|
|
cd boost_1_69_0
|
|
./bootstrap.sh --with-libraries=context,coroutine,date_time,filesystem,iostreams,program_options,regex,system,test,thread
|
|
./b2
|
|
)
|
|
|
|
ln -vs /usr/bin/cmake3 /usr/local/bin/cmake
|
|
ln -vs /usr/bin/ninja-build /usr/local/bin/ninja
|
|
CMAKE_OPTS+=(-DBOOST_{INCLUDEDIR=/boost_1_69_0,LIBRARYDIR=/boost_1_69_0/stage/lib})
|
|
export LD_LIBRARY_PATH=/boost_1_69_0/stage/lib
|
|
;;
|
|
|
|
amazonlinux:20*)
|
|
dnf install -y amazon-rpm-config bison cmake flex gcc-c++ ninja-build \
|
|
{boost,libedit,mariadb-connector-c,ncurses,openssl,postgresql,systemd}-devel
|
|
;;
|
|
|
|
debian:*|ubuntu:*)
|
|
apt-get update
|
|
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-{recommends,suggests} -y \
|
|
bison ccache cmake dpkg-dev flex g++ ninja-build tzdata \
|
|
lib{boost-all,edit,mariadb,ncurses,pq,ssl,systemd}-dev
|
|
;;
|
|
|
|
fedora:*)
|
|
dnf install -y bison ccache cmake flex gcc-c++ ninja-build redhat-rpm-config \
|
|
{boost,libedit,mariadb,ncurses,openssl,postgresql,systemd}-devel
|
|
;;
|
|
|
|
*suse*)
|
|
zypper in -y bison ccache cmake flex gcc-c++ ninja rpm-config-SUSE \
|
|
{lib{edit,mariadb,openssl},ncurses,postgresql,systemd}-devel \
|
|
libboost_{context,coroutine,filesystem,iostreams,program_options,regex,system,test,thread}-devel
|
|
;;
|
|
|
|
rockylinux:*)
|
|
dnf install -y 'dnf-command(config-manager)' epel-release
|
|
|
|
case "$DISTRO" in
|
|
*:8)
|
|
dnf config-manager --enable powertools
|
|
;;
|
|
*)
|
|
dnf config-manager --enable crb
|
|
;;
|
|
esac
|
|
|
|
dnf install -y bison ccache cmake gcc-c++ flex ninja-build redhat-rpm-config \
|
|
{boost,bzip2,libedit,mariadb,ncurses,openssl,postgresql,systemd,xz,libzstd}-devel
|
|
;;
|
|
esac
|
|
|
|
case "$DISTRO" in
|
|
alpine:*)
|
|
CMAKE_OPTS+=(-DUSE_SYSTEMD=OFF -DICINGA2_WITH_MYSQL=OFF -DICINGA2_WITH_PGSQL=OFF)
|
|
;;
|
|
debian:*|ubuntu:*)
|
|
CMAKE_OPTS+=(-DICINGA2_LTO_BUILD=ON)
|
|
source <(dpkg-buildflags --export=sh)
|
|
;;
|
|
*)
|
|
CMAKE_OPTS+=(-DCMAKE_{C,CXX}_FLAGS="$(rpm -E '%{optflags} %{?march_flag}')")
|
|
export LDFLAGS="$(rpm -E '%{?build_ldflags}')"
|
|
;;
|
|
esac
|
|
|
|
mkdir /icinga2/build
|
|
cd /icinga2/build
|
|
|
|
cmake \
|
|
-GNinja \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DICINGA2_UNITY_BUILD=ON \
|
|
-DUSE_SYSTEMD=ON \
|
|
-DICINGA2_USER=$(id -un) \
|
|
-DICINGA2_GROUP=$(id -gn) \
|
|
"${CMAKE_OPTS[@]}" ..
|
|
|
|
ninja -v
|
|
|
|
ninja test
|
|
ninja install
|
|
icinga2 daemon -C
|