Biweekly meeting: C++ Modules in ROOT

Oksana Shadura (University of Nebraska Lincoln (US)) , Vasil Georgiev Vasilev (Institute for Advanced Physical Studies (BG))
Videoconference Rooms
ROOT Team Meeting
Axel Naumann
Auto-join URL
Useful links
Phone numbers

Attendance: Arpitha, Axel, David, Mircho, Oksana, Philippe, Shahzad, Vassil

[Arpitha] Nothing to report. I've been busy writing my final report and presenting slides.

[Axel, Philippe] Why MakeProject needs to have a modulemap which is then deleted. Vassil: because some test require autoloading and others not to synthesize the project. See the Unlink("rootmap") file.

[Oksana] Modules, whats the path forward. Axel: we fix the master we enable modules for all unix platforms, whenever Vassil give us green light and tests are green (incrementals included). AFAIK we have 2 disabled tests, we do not need to fix them because the experiments won't be affected.

[Axel] I started using C++ Modules. I am debugging the getBody test failures and it seems that the failure is due to the different cling::Transaction topology. The fix should be easy.

[David] Helping Vassil getting cmssw debug builds. Vassil: David is working on reducing the dependence of CMSSW on boost::shared_ptr (and alike). The idea is to delay the possible C++ module dependency on the boost module.

[Mircho] Nothing to report, I've been bumping the ROOT master on request.

[Shahzad] I have been testing what you have and it seems the libHistPainter_rdict issue is gone but there are other failures. Running root.exe -l -b should be enough to reproduce. We are ready to bump the IBs when this issue is fixed.

[Oksana] I am at FNAL, I did not do a lot this week. Last week I checked the last IB that was succesful and remeasured the results for the ACAT paper. The statistics was very bad but the good news is the results look really promising. I was really surprised -- looks like we are on the right track. I will add to the cdash platform names the feature name so that (eg rtcxxmods) such that builds would be easier to find. I am also worried that if we use the LCG distribution mechanism where we move all include files (modulemap included) in one folder things will be overriden. Vassil: this is not a ROOT-specific issue, the issue is the same if two libraries have the same filename or if they have modulemaps. We can work around it by concatenating both files.

[Philippe] The module.modulemap file is too generic, it should include the library name prefix. Vassil: we can implement that if it is required. Currently we generate the modulemap in cmake and if we have two dictionaries in the same folder we append the module content to the already existing modulemap. This is a terrible solution and we should move the code to what ACLiC with modules where we gSystem synthesizes a libname.modulemap and calls rootcling with this specific file. If needed we should refactor this code (we even have a FIXME on that).

[Philippe] What happens if I have a module.modulemap I want to enable clang -fmodules would it pick up the rootcling generated modules. Vassil: no, they are protected unless -fprebuilt-module-path is given and then clang will complain that the module files are incompatible.

[Vassil] Oksana and I have enabled the incremental modules builds. We see 6 failures 3 of which are obvious to fix. There is a strange issue where under certain circumstances ctest triggers a rebuild of ROOT while testing causing random test failures. Such an issue we have had before with cpack. It is unclear what causes this one. In addition Axel has found that we do not rebuild Cling_Runtime.pcm. We have reworked the argument parsing in rootcling which enables us to start building the Core modules explicitly (the PR is not merged yet). We have fixed an issue with the CMSSW and the ROOT master where we did not resolve properly the symlinks to the rdict files. A similar problem exists with the C++ modules IB and I have a PR for it. Next steps will be to enable C++ modules for ROOT on UNIX. Our GSoC students performed very well and we are happy with the progress they've made.


Vassil: Next meeting is in 2 weeks time.

There are minutes attached to this event. Show them.