Skip to content
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

Improve diagnostic information about module rebuilds #8518

Open
chrisburr opened this issue Jun 23, 2021 · 0 comments
Open

Improve diagnostic information about module rebuilds #8518

chrisburr opened this issue Jun 23, 2021 · 0 comments

Comments

@chrisburr
Copy link
Member

Is your feature request related to a problem? Please describe.

Currently it's hard to debug issues that happen when the modules are rebuilt as there is no information displayed about why ROOT decided to rebuild them. For an example see conda-forge/root-feedstock#136.

Describe the solution you'd like

When rebuilding modules information will be displayed such as: /usr/include/foo.h got updated, must regenerate module bar

Describe alternatives you've considered

Additional context

I've tried a few thing to try and force a module rebuild, e.g. editing headers, touching files and installing different versions of dependencies but ROOT never seems to notice. The best I've managed is to delete all lib/*.pcm files which obviously triggers them to be rebuilt:

$ root
input_line_1:1:10: remark: building module 'std' as '/home/cburr/miniconda3/envs/test/lib/std.pcm' [-Rmodule-build]
#include <new>
         ^
input_line_1:1:10: remark: finished building module 'std' [-Rmodule-build]
input_line_2:1:10: remark: building module 'Cling_Runtime' as '/home/cburr/miniconda3/envs/test/lib/Cling_Runtime.pcm' [-Rmodule-build]
#include "cling/Interpreter/RuntimeUniverse.h"
         ^
While building module 'Cling_Runtime' imported from input_line_2:1:
In file included from <module-includes>:3:
/home/cburr/miniconda3/envs/test/etc//cling/Interpreter/DynamicLookupRuntimeUniverse.h:16:10: remark: building module 'Cling_Runtime_Extra' as '/home/cburr/miniconda3/envs/test/lib/Cling_Runtime_Extra.pcm' [-Rmodule-build]
#include "cling/Interpreter/DynamicExprInfo.h"
         ^

I don't know if ROOT is supposed to be able to recover from this but I run in to three issues, the first is the known tbb dependency issue in 6.24.0 that is already fixed for the next patch release.

The second issue is that MathCore.pcm fails to build with:

<<< cling interactive line includer >>>: remark: building module 'MathCore' as '/home/cburr/miniconda3/envs/test/lib/MathCore.pcm' [-Rmodule-build]
While building module 'MathCore':
In file included from <module-includes>:3:
In file included from /home/cburr/miniconda3/envs/test/include/Fit/Chi2FCN.h:19:
/home/cburr/miniconda3/envs/test/include/Fit/FitUtil.h:404:23: error: no matching constructor for initialization of 'std::vector<double>'
         std::vector<double> ones{1, 1, 1, 1};
                             ^   ~~~~~~~~~~~~~~~~

I can workaround this by using four ones.push_back(1.0); lines instead of initialising it as ones though it doesn't explain why this fails.

Finally after fixing this it, running root.exe -b -l -q -e '1+1' -x repeatedly continues to rebuild modules, e.g. on the second iteration:

<<< cling interactive line includer >>>: remark: building module 'Minuit' as '/home/cburr/miniconda3/envs/test/lib/Minuit.pcm' [-Rmodule-build]
<<< cling interactive line includer >>>: remark: finished building module 'Minuit' [-Rmodule-build]
Module a����2V`^��2V`X��2V�N��2VPP��2V��x�2V@!`�k�2V@�:�2V` not found.
Module test__CLING__GNUC__ct_int81����2V���2V-in-extern-ce not found.
Module includeit.pcm not found.
Module lib not found.
Module P�w��P�w�� ���2V��'�2V0b(�2V��:�2V���2V����2V�:�2V not found.
Module  ���2V@)����2V not found.
Module TFitter not found.
Module
       )��o�~�'��'�@5���(�L)�B5���(��)�J5���(�$ not found.
<<< cling interactive line includer >>>: remark: building module 'Genetic' as '/home/cburr/miniconda3/envs/test/lib/Genetic.pcm' [-Rmodule-build]
<<< cling interactive line includer >>>: remark: finished building module 'Genetic' [-Rmodule-build]
Module ROOTGpadv7 not found.
Module ���2V8���2V not found.
Module ��=\u��&���g|��Xϭ)��ۡc}n?�ʾ��v� @Elj7VP\�2 not found.
Module Ц~������2V D not found.
Module mi not found.
Module �j%�2Vpj%�2VPh%�2V@h%�2V@s%�2V0s%�2V�N��2V�N��2VQ��2VQ��2V@S��2V0S��2V �8�2V not found.
Module 9.0 not found.
��2V���2V ��2V���2V�Y��2V ��2V�v�2V��2V ��2V 	��2V not found.
Module @�ĉ7VPh%�2V@h%�2V@s%�2V0s%�2V�N��2V�N��2VQ��2VQ��2V@S��2V0S��2V �8�2V not found.
Module !p�w���:�2 not found.
Module ��=\u��&���g|��Xϭ)��ۡc}n?�ʾ��v� �z���  not found.
Module  not found.
Module ��ĉ7V99cl_khr_gVs_�0���2V;;e>khr_fp16 not found.
Module  not found.
Module GeneticMinimizer not found.
Module �[h��A�2V�[h��<��[h��0�#\h����K\h� not found.
Module �� not found.
Module module not found.
Module base_1621��7VP\�2Vl_khr_f not found.
Module  not found.
Module  not found.
Module �'��&E'��'�Q|�~ not found.
Module Q����2V�
               ��2V����a3 not found.
Module е8�2V��8�2VP�8�2V@�8�2V��8�2V��8�2V�K�Q7V��2V>��� not found.
Error in <TCling::LoadPCM>: ROOT PCM /home/cburr/miniconda3/envs/test/lib/libNet_rdict.pcm file does not exist
Error in <TCling::LoadPCM>: ROOT PCM /home/cburr/miniconda3/envs/test/lib/libMathCore_rdict.pcm file does not exist

(int) 2

on the third:

<<< cling interactive line includer >>>: remark: building module 'ROOTVecOps' as '/home/cburr/miniconda3/envs/test/lib/ROOTVecOps.pcm' [-Rmodule-build]
<<< cling interactive line includer >>>: remark: finished building module 'ROOTVecOps' [-Rmodule-build]
(truncated but it's similar to above)

on the fourteenth:

<<< cling interactive line includer >>>: remark: building module 'TMVA' as '/home/cburr/miniconda3/envs/test/lib/TMVA.pcm' [-Rmodule-build]
<<< cling interactive line includer >>>: remark: finished building module 'TMVA' [-Rmodule-build]
Module FitterBase not found.
Module (�;cU! ��;cUpJ����  not found.
Module TMVA.pcmoRTTI not found.
Module  not found.
Error in <TCling::LoadPCM>: ROOT PCM /home/cburr/miniconda3/envs/test/lib/libNet_rdict.pcm file does not exist
Error in <TCling::LoadPCM>: ROOT PCM /home/cburr/miniconda3/envs/test/lib/libMathCore_rdict.pcm file does not exist

(int) 2

on the fifteenth run it finally becomes stable with this output:

Error in <TCling::LoadPCM>: ROOT PCM /home/cburr/miniconda3/envs/test/lib/libNet_rdict.pcm file does not exist
Error in <TCling::LoadPCM>: ROOT PCM /home/cburr/miniconda3/envs/test/lib/libMathCore_rdict.pcm file does not exist

(int) 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants