Skip to content

runtime_cxxmodules fails to build with GCC12 #10478

@dennisklein

Description

@dennisklein
cat reproducer.def
Bootstrap: docker
From: fedora:36

%post
    dnf -y update
    dnf -y install git make cmake gcc-c++ gcc binutils ninja-build \
      libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel
    dnf -y clean all

    mkdir /reproducer && cd /reproducer
    git clone -b master --depth 1 http://github.com/root-project/root source
    git -C source log
    gcc --version
    cmake -GNinja -S source -B build -Dxrootd=OFF
    cmake --build build
singularity --version
singularity version 3.8.7-1.fc35singularity build -f reproducer.sif reproducer.def
(...skip...)
+ mkdir /reproducer
+ cd /reproducer
+ git clone -b master --depth 1 http://github.com/root-project/root source
Cloning into 'source'...
(...skip...)
+ git -C source log
commit 9c12a2a4e707ee75f37bde96772ab53e94f01033 (grafted, HEAD -> master, origin/master, origin/HEAD)
Author: Jonas Rembser <[email protected]>
Date:   Mon Apr 25 11:58:45 2022 +0200

    [RF] Also compare parameter errors in RooFitResult::isIdentical(NoCov)

    The `RooFitResult::isIdentical` method so far only compared parameter
    values and covariance matrix values. Even though comparing the final
    parameter errors would be redundant with the covariance matrix checks,
    it's still important to check parameter errors for two reasons:

      1. Initial parameter errors need to be compared, because the the
         initial error determins the initial step size which influences the
         minimization path. If initial errors are different, the final
         parameter values are almost never identical.

         Catching differences in initial parameter errors informs the user
         that differences in fit result are because of the starting
         conditions.

      2. In the case of `RooFitResult::isIdenticalNoCov`, we need to check
         the error of final parameters because there is no comparison of
         covariance matrix values.

    The signature of the public function `isIdenticalNoCov` is extended by a
    tolerance parameter for the error comparison. This is expected to not
    break user code, because the function was only introduced in 6.26 and is
    so far only used in a single unit test (`testSumW2Error`).

    The `testRooAbsPdf` unit test didn't reset the initial parameter errors
    correctly, which is now fixed.
+ gcc --version
gcc (GCC) 12.0.1 20220413 (Red Hat 12.0.1-0)
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

+ cmake -GNinja -S source -B build -Dxrootd=OFF
(...skip...)
-- ROOT Configuration

System          Linux-5.16.9-200.rog.fc35.x86_64
Processor       8 core AMD Ryzen 7 5800HS with Radeon Graphics (x86_64)
Build type      Release
Install path    /usr/local
Compiler        GNU 12.0.1
Compiler flags:
C                -fdiagnostics-color=always -Wno-implicit-fallthrough -pipe -Wall -W -pthread -O3 -DNDEBUG
C++              -fdiagnostics-color=always -std=c++17 -Wno-implicit-fallthrough -Wno-noexcept-type -pipe  -Wshadow -Wall -W -Woverloaded-virtual -fsigned-char -pthread -O3 -DNDEBUG
Linker flags:
Executable       -rdynamic
Module
Shared           -Wl,--no-undefined -Wl,--hash-style="both"

-- Enabled support for:  asimage builtin_afterimage builtin_clang builtin_cling builtin_llvm builtin_lz4 builtin_nlohmannjson builtin_openui5 builtin_tbb builtin_vdt builtin_xxhash builtin_zstd clad dataframe exceptions gdml http imt mlp minuit2 roofit webgui root7 rpath runtime_cxxmodules shared ssl tmva spectrum vdt x11 xml
-- Configuring done
-- Generating done
-- Build files have been written to: /reproducer/build
+ cmake --build build
(...skip...)
[7047/9103] Generating G__Core.cxx, ../lib/Core.pcm
FAILED: core/G__Core.cxx lib/Core.pcm /reproducer/build/core/G__Core.cxx /reproducer/build/lib/Core.pcm
cd /reproducer/build/core && /usr/bin/cmake -E env LD_LIBRARY_PATH=/reproducer/build/lib:/.singularity.d/libs /reproducer/build/core/rootcling_stage1/src/rootcling_stage1 -v2 -f G__Core.cxx -cxxmodule -s /reproducer/build/lib/libCore.so -excludePath /reproducer/source -excludePath /reproducer/build/ginclude -excludePath /reproducer/build/externals -excludePath /reproducer/build/builtins -writeEmptyRootPCM -m _Builtin_intrinsics -mByproduct _Builtin_intrinsics -mByproduct ROOT_Foundation_Stage1_NoRTTI -mByproduct ROOT_Foundation_C -mByproduct ROOT_Rtypes -D__STDC_NO_COMPLEX__ -D__COMPLEX_H__ -D_COMPLEX_H -D__CLANG_STDATOMIC_H -compilerI/usr/include/c++/12 -compilerI/usr/include/c++/12/x86_64-redhat-linux -compilerI/usr/include/c++/12/backward -compilerI/usr/lib/gcc/x86_64-redhat-linux/12/include -compilerI/usr/local/include -compilerI/usr/include -compilerI/usr/lib/gcc/x86_64-redhat-linux/12/include -compilerI/usr/local/include -compilerI/usr/include -I/reproducer/build/include -I/reproducer/build/ginclude -I/reproducer/source/core/base/inc -I/reproducer/source/core/foundation/inc -I/reproducer/source/core/cont/inc -I/reproducer/source/core/gui/inc -I/reproducer/source/core/meta/inc -I/reproducer/source/core/clib/inc -I/reproducer/source/core/rint/inc -I/reproducer/source/core/zip/inc -I/reproducer/source/core/thread/inc -I/reproducer/source/core/textinput/inc -I/reproducer/source/core/clingutils/inc -I/reproducer/source/core/base/v7/inc -I/reproducer/source/core/foundation/v7/inc -I/reproducer/source/core/unix/inc -I/usr/include -I/reproducer/source/builtins/xxhash -I/reproducer/source/builtins/lz4 -I/reproducer/source/builtins/zstd ROOT/TErrorDefaultHandler.hxx ROOT/TSequentialExecutor.hxx ROOT/StringConv.hxx Buttons.h Bytes.h Byteswap.h KeySymbols.h MessageTypes.h Riostream.h Rtypes.h TApplication.h TAtt3D.h TAttAxis.h TAttBBox2D.h TAttBBox.h TAttFill.h TAttLine.h TAttMarker.h TAttPad.h TAttText.h TBase64.h TBenchmark.h TBuffer3D.h TBuffer3DTypes.h TBuffer.h TColor.h TColorGradient.h TDatime.h TDirectory.h TEnv.h TException.h TExec.h TFileCollection.h TFileInfo.h TFolder.h TInetAddress.h TMacro.h TMathBase.h TMD5.h TMemberInspector.h TMessageHandler.h TNamed.h TNotifyLink.h TObject.h TObjString.h TParameter.h TPluginManager.h TPoint.h TPRegexp.h TProcessID.h TProcessUUID.h TQClass.h TQCommand.h TQConnection.h TQObject.h TRedirectOutputGuard.h TRefCnt.h TRef.h TRegexp.h TRemoteObject.h TROOT.h TRootIOCtor.h TStopwatch.h TStorage.h TString.h TStringLong.h TStyle.h TSysEvtHandler.h TSystemDirectory.h TSystemFile.h TSystem.h TTask.h TThreadSlots.h TTime.h TTimer.h TTimeStamp.h TUri.h TUrl.h TUUID.h TVersionCheck.h TVirtualAuth.h TVirtualFFT.h TVirtualGL.h TVirtualMonitoring.h TVirtualMutex.h TVirtualPadEditor.h TVirtualPad.h TVirtualPadPainter.h TVirtualPerfStats.h TVirtualPS.h TVirtualQConnection.h TVirtualRWMutex.h TVirtualTableInterface.h TVirtualViewer3D.h TVirtualX.h ROOT/RDirectoryEntry.hxx ROOT/RIndexIter.hxx strlcpy.h snprintf.h strtok.h ROOT/TSeq.hxx TArrayC.h TArrayD.h TArrayF.h TArray.h TArrayI.h TArrayL64.h TArrayL.h TArrayS.h TBits.h TBtree.h TClassTable.h TClonesArray.h TCollection.h TCollectionProxyInfo.h TExMap.h THashList.h THashTable.h TIterator.h TList.h TMap.h TObjArray.h TObjectTable.h TOrdCollection.h TRefArray.h TRefTable.h TSeqCollection.h TSortedList.h TVirtualCollectionProxy.h ESTLType.h RStringView.h TClassEdit.h TError.h ROOT/RLogger.hxx ROOT/RNotFn.hxx ROOT/RRangeCast.hxx ROOT/RSpan.hxx ROOT/RStringView.hxx ROOT/StringUtils.hxx ROOT/span.hxx ROOT/TypeTraits.hxx TUnixSystem.h root_std_complex.h GuiTypes.h TApplicationImp.h TBrowser.h TBrowserImp.h TCanvasImp.h TClassMenuItem.h TContextMenu.h TContextMenuImp.h TControlBarImp.h TGuiFactory.h TInspectorImp.h TObjectSpy.h TToggleGroup.h TToggle.h TBaseClass.h TClassGenerator.h TClass.h TClassRef.h TClassStreamer.h TDataMember.h TDataType.h TDictAttributeMap.h TDictionary.h TEnumConstant.h TEnum.h TFileMergeInfo.h TFunction.h TFunctionTemplate.h TGenericClassInfo.h TGlobal.h TInterpreter.h TInterpreterValue.h TIsAProxy.h TListOfDataMembers.h TListOfEnums.h TListOfEnumsWithLock.h TListOfFunctions.h TListOfFunctionTemplates.h TMemberStreamer.h TMethodArg.h TMethodCall.h TMethod.h TProtoClass.h TRealData.h TSchemaHelper.h TSchemaRule.h TSchemaRuleSet.h TStatusBitsChecker.h TStreamerElement.h TStreamer.h TVirtualIsAProxy.h TVirtualRefProxy.h TVirtualStreamerInfo.h TVirtualArray.h TVirtualObject.h Getline.h /reproducer/source/core/base/inc/LinkDef.h
While building module 'Core':
While building module 'std' imported from input_line_1:1:
In file included from <module-includes>:2:
In file included from /usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/array:43:
In file included from /usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algobase.h:64:
In file included from /usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_pair.h:62:
/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/utility.h:220:27: error: redefinition of '__is_in_place_type_v<in_place_type_t<_Tp> >'
    inline constexpr bool __is_in_place_type_v<in_place_type_t<_Tp>> = true;
                          ^
/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_pair.h:62:11: note: '/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/utility.h' included multiple times, additional include site in header from module 'std.algorithm'
# include <bits/utility.h> // for std::tuple_element, std::tuple_size
          ^
/reproducer/build/etc/cling/std.modulemap:5:10: note: std.algorithm defined here
  module "algorithm" {
         ^
/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_pair.h:62:11: note: '/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/utility.h' included multiple times, additional include site in header from module 'std.array'
# include <bits/utility.h> // for std::tuple_element, std::tuple_size
          ^
/reproducer/build/etc/cling/std.modulemap:9:10: note: std.array defined here
  module "array" {
         ^
(...skip many more...)

Building with -Druntime_cxxmodules=OFF succeeds.

Note: Details for the GCC 12.0.1 used above.

full_log.txt

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions