Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ceph.spec.in: bump gcc-toolset to 13 and use it on rhel>=8 #55886

Merged
merged 5 commits into from
Mar 21, 2024

Commits on Mar 11, 2024

  1. ceph.spec.in: use gts_version instead of gts_prefix

    since we are going to use different gcc-toolset versions on rhel8 and
    on rhel9, and the subpackage names of gcc-toolset changed across
    gts 11 and gts 13, let's prepare for this change.
    
    Signed-off-by: Kefu Chai <tchaikov@gmail.com>
    tchaikov committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    c8e37d1 View commit details
    Browse the repository at this point in the history
  2. ceph.spec.in: set CMAKE_EXE_LINKER_FLAGS to -lstdc++

    because the gcc-toolset-13 always links against the `libstdc++_nonshared.a`, which misses the
    simple symbols. so we have to link against libstdc++ explicitly to assure that the
    executables have access to them when compiling with the gcc-toolset toolchain.
    
    see
    ```
    /opt/rh/gcc-toolset-13/root/usr/bin/c++ -O2  -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 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -rdynamic -pie CMakeFiles/ceph_scratchtool.dir/scratchtool.c.o -o ../../bin/ceph_scratchtool  -Wl,-rpath,/home/jenkins-build/build/workspace/ceph-dev-new-build/ARCH/x86_64/AVAILABLE_ARCH/x86_64/AVAILABLE_DIST/centos9/DIST/centos9/MACHINE_SIZE/gigantic/release/19.0.0-1977-gb0c1f7e8/rpm/el9/BUILD/ceph-19.0.0-1977-gb0c1f7e8/redhat-linux-build/lib: ../../lib/librados.so.2.0.0 ../../lib/libglobal.a ../../lib/libceph-common.so.2 ../../lib/libjson_spirit.a ../../lib/libcommon_utf8.a ../../lib/liberasure_code.a ../../lib/libextblkdev.a -lcap ../../boost/lib/libboost_thread.a ../../boost/lib/libboost_chrono.a ../../boost/lib/libboost_atomic.a ../../boost/lib/libboost_system.a ../../boost/lib/libboost_random.a ../../boost/lib/libboost_program_options.a ../../boost/lib/libboost_date_time.a ../../boost/lib/libboost_iostreams.a ../../boost/lib/libboost_regex.a /usr/lib64/libblkid.so /usr/lib64/libcrypto.so /usr/lib64/libudev.so /usr/lib64/libibverbs.so /usr/lib64/librdmacm.so /usr/lib64/libz.so ../opentelemetry-cpp/sdk/src/trace/libopentelemetry_trace.a ../opentelemetry-cpp/sdk/src/resource/libopentelemetry_resources.a ../opentelemetry-cpp/sdk/src/common/libopentelemetry_common.a ../opentelemetry-cpp/exporters/jaeger/libopentelemetry_exporter_jaeger_trace.a ../opentelemetry-cpp/ext/src/http/client/curl/libopentelemetry_http_client_curl.a /usr/lib64/libcurl.so /usr/lib64/libthrift.so -ldl /usr/lib64/librt.a -lresolv  -Wl,--as-needed -latomic
    /opt/rh/gcc-toolset-13/root/usr/libexec/gcc/x86_64-redhat-linux/13/ld: /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/libstdc++_nonshared.a(ios_init.o): undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
    /opt/rh/gcc-toolset-13/root/usr/libexec/gcc/x86_64-redhat-linux/13/ld:
    /usr/lib64/libstdc++.so.6: error adding symbols: DSO missing from command line
    ```
    
    this change prepares us for switching to gts-13.
    
    Signed-off-by: Kefu Chai <tchaikov@gmail.com>
    tchaikov committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    f5f2e4c View commit details
    Browse the repository at this point in the history
  3. ceph.spec.in: disable lto to work around gcc-toolset-13 linker bug

    gcc-toolset-13 lto can trigger a linker bug resulting in a segfault in
    SafeTimer (and perhaps elsewhere).  See
    https://tracker.ceph.com/issues/63867 for details.  This patch disables
    lto for now now so that we can switch to gcc-toolset-13.
    
    Fixes: https://tracker.ceph.com/issues/63867
    Signed-off-by: Samuel Just <sjust@redhat.com>
    athanatos authored and tchaikov committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    a164f5f View commit details
    Browse the repository at this point in the history
  4. ceph.spec.in: use gcc-toolset 13 for crimson build

    since gts 13 is out, and GCC-13 brings better support of C++20 coroutines,
    and because clang prefers using a newer gts when its gcc is around. so
    let's bump up the gcc-toolset from 11 to 13 when building crimson. because
    gcc-toolset-13 LTO triggers a linker bug resulting in a segfault in SafeTimer,
    see https://tracker.ceph.com/issues/63867 , we cannot switch the classic
    build to gts 13 without proving that it does not incur performance
    regressions.
    
    since annobin plugin package was renamed to
    gcc-toolset-13-gcc-plugin-annobin, let's update its name accordingly.
    
    and use -runtime subpackage instead of -build, as
    macros.gcc-toolset-13-enable is now located in -runtime subpackage
    since devtoolset12
    
    Signed-off-by: Kefu Chai <tchaikov@gmail.com>
    tchaikov committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    55da694 View commit details
    Browse the repository at this point in the history
  5. ceph.spec.in: use gcc-toolset when with seastar or rhel 8

    both RHEL8 and RHEL9 have gcc-toolset 13, and we need to use gts-13
    for building crimson, so let's enable it when building crimson,
    and we need to use gts-11 when building on RHEL7. hence this change.
    
    Signed-off-by: Kefu Chai <tchaikov@gmail.com>
    tchaikov committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    913d127 View commit details
    Browse the repository at this point in the history