-
Notifications
You must be signed in to change notification settings - Fork 1.4k
[io] rootPcmObjs depends on Core and RIO #20797
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
[io] rootPcmObjs depends on Core and RIO #20797
Conversation
might be a reason why sometimes one gets 'out of date' modules?
|
Hello @ferdymercury, happy new year! I don't think this is the cause for the out-of-date errors. I suspect that the message about pcms being out of date is actually inverted. That is, you rebuild a pcm that's at the centre of the dependency graph, e.g. IO or Core, and a pcm that's more at the leaves doesn't get rebuilt. In that case, it will say that Core is out of date and needs to be rebuilt, but actually it's let's say "RooFit.pcm" that should have been rebuilt. I wanted to have a look a this for while, but didn't get to it. You probably know that you can circumvent these errors by simply deleting all pcms and rebuilding. If I'm right, in the above case, it would be sufficient to delete the RooFit pcm, even if ROOT says that Core is out of date. Anyway, if the above is correct or partly correct, we don't need to to anything about As a last comment, |
Test Results 19 files 19 suites 3d 4h 4m 35s ⏱️ For more details on these failures, see this check. Results for commit a25d222. |
|
Hi Stephan, happy new year! Just for my understanding: we have Image now that we modify TClassEdit.h, for example modifying one function signature, but we forget to adapt the signature in src/rootclingIO.css, and try to recompile incrementally. How does Ninja know that it has to rebuild RootPcmObjs ? Wouldn't it say 'all is fine' even if it should say "compilation error", rootclingIO.cxx function XYZ does not exit. Or we hope that this does not happen very often and otherwise do a clean-build label? Likewise, we are using TFile and TStreamerInfo from within rootclingIO.cxx, so RootPcmObjs should depend on IO, or these classes should be avoided?? |
|
Looking at the top of Now, let's answer
Unless CMake treats object libraries differently, |
|
Thanks for the clarification! |
|
I tested what I just said: So this shows that it gets compiled very early. |
exploring here if this might be a reason why sometimes one gets 'out of date' modules?
rootclingIO.cxx uses RIO and Core classes.
I am not sure if BUILTINS is working well: with add_dependencies explicitly, I got a cyclic dependency error.
see occurrence: https://github.com/root-project/root/actions/runs/20365372252/job/58519132341?pr=20758
and #7704
I also attach here the dependency graph by
using
CMakeGraphVizOptions.cmakein the source or binary dir:Btw this SVG graph might be useful to add in the Doxygen docu @couet
I do it as follows in my projects:
Somewhere in the index.md file I write
and in the CMake:
In the Doxyfile:
DOTFILE_DIRS = SOME_OUTPUT_DIR