-
Notifications
You must be signed in to change notification settings - Fork 1.5k
runtime_cxxmodules fails to build with GCC12 #10478
Copy link
Copy link
Closed
Labels
Description
❯ 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.fc35
❯ singularity 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.
Reactions are currently unavailable