Skip to content

Conversation

@Teemperor
Copy link
Contributor

If we generate a dictionary with a C++ module with rootcling we
should write in the payload that we generated a C++ module.
This way we can actually print a reliable warning when we fail
to load the C++ module during runtime. Without this we can only
speculate if a missing C++ module is intentional.

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1012/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu14/native, ubuntu14/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@Teemperor
Copy link
Contributor Author

This commit is part of #1394 and I want to get it in while the rest of the other PR is being worked on.

@phsft-bot
Copy link

Build failed on slc6/gcc62.
See console output.

Errors:

  • ERROR: Timeout after 10 minutes
  • ERROR: Error fetching remote repo 'origin'
  • stderr: error: RPC failed; result=18, HTTP code = 200
  • error: fetch-pack died of signal 15
  • ERROR: Error fetching remote repo 'origin'

@phsft-bot
Copy link

Build failed on mac1012/native.
See console output.

Errors:

  • ERROR: Error fetching remote repo 'origin'
  • error: RPC failed; curl 18 transfer closed with outstanding read data remaining
  • ERROR: Error fetching remote repo 'origin'

Copy link
Member

@Axel-Naumann Axel-Naumann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If a cxx module was generated but cannot be loaded - is that a severe issue? Or is the module optional?

If it's optional, should we just try to load it and fail gracefully if it's not installed? But maybe that's the cause of a perf issue that's hard to track down?

Anyway - thank you so much for providing this patch!

" TROOT::RegisterModule(\"" << GetDemangledDictionaryName() << "\",\n"
" headers, includePaths, payloadCode, fwdDeclCode,\n"
" TriggerDictionaryInitialization_" << GetDictionaryName() << "_Impl, " << fwdDeclnArgsToKeepString << ", classesHeaders);\n"
" TriggerDictionaryInitialization_" << GetDictionaryName() << "_Impl, " << fwdDeclnArgsToKeepString << ", classesHeaders, " << (fCI->getLangOpts().Modules ? "/*has C++ module*/true" : "/*has no C++ module*/false") << ");\n"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you make that , /*hasCxxModule*/" << (fCI->getLangOpts().Modules ? "true" : "false")?

/*has no C++ module*/ false sounds like a double negation...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed!

@vgvassilev
Copy link
Member

@phsft-bot build!

@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1012/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu14/native, ubuntu14/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

If we generate a dictionary with a C++ module with rootcling we
should write in the payload that we generated a C++ module.
This way we can actually print a *reliable* warning when we fail
to load the C++ module during runtime. Without this we can only
speculate if a missing C++ module is intentional.
@Teemperor Teemperor force-pushed the OnlyLoadExistingModules branch from 5d835cc to 4900610 Compare January 17, 2018 10:17
@phsft-bot
Copy link

Starting build on centos7/gcc49, mac1012/native, slc6/gcc49, slc6/gcc62, slc6/gcc62, ubuntu14/native, ubuntu14/native, windows10/vc15 with flags -Dvc=OFF -Dimt=ON -Dccache=ON
How to customize builds

@Teemperor
Copy link
Contributor Author

@Axel-Naumann Shouldn't matter (beside performance) at the moment if a module can't be loaded. So far we only print a message to inform that our loading setup is still wrong and then continue.

@Teemperor
Copy link
Contributor Author

@phsft-bot build just on slc6/gcc62 with flags -Druntime_cxxmodules=On -Dctest_test_exclude_none=on

@phsft-bot
Copy link

Starting build on slc6/gcc62 with flags -Dvc=OFF -Dimt=ON -Dccache=ON -Druntime_cxxmodules=On -Dctest_test_exclude_none=on
How to customize builds

@Teemperor
Copy link
Contributor Author

@phsft-bot build just on slc6/gcc62 with flags -Druntime_cxxmodules=On -Dctest_test_exclude_none=on

@phsft-bot
Copy link

Starting build on slc6/gcc62 with flags -Dvc=OFF -Dimt=ON -Dccache=ON -Druntime_cxxmodules=On -Dctest_test_exclude_none=on
How to customize builds

@Teemperor
Copy link
Contributor Author

@phsft-bot build just on centos7/gcc7 with flags -Druntime_cxxmodules=On -Dctest_test_exclude_none=on

@phsft-bot
Copy link

Starting build on centos7/gcc7 with flags -Dvc=OFF -Dimt=ON -Dccache=ON -Druntime_cxxmodules=On -Dctest_test_exclude_none=on
How to customize builds

@phsft-bot
Copy link

Build failed on centos7/gcc7.
See console output.

Errors:

Failing tests:

And 25 more

@Teemperor
Copy link
Contributor Author

Ok, Jenkins passed without modules and with modules we have no regressions it seems, so merging.

@Teemperor Teemperor merged commit 48fc07c into root-project:master Jan 22, 2018
@Teemperor Teemperor deleted the OnlyLoadExistingModules branch January 22, 2018 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants