Problem with mpdroot on cluster

Hi,
I tried this super-easy way to install mpdroot. So I make source to the /cvmfs/nica.jinr.ru/sw/os/login.sh call add mpdroot module, but when I try to run call “new MpdMiniMcTrack();” I get errors like

In file included from G__MpdMiniEventDict dictionary payload:5:
In file included from /cvmfs/nica.jinr.ru/sw/slc7_x86-64/mpdroot/v22.01.24-1/include        /MpdMiniPhysicalHelix.h:19:
/cvmfs/nica.jinr.ru/sw/slc7_x86-64/mpdroot/v22.01.24-1/include/MpdMiniHelix.h:26:10: fatal error:     'SystemOfUnits.h' file not found
#include "SystemOfUnits.h"
     ^~~~~~~~~~~~~~~~~
Error in <TInterpreter::AutoParse>: Error parsing payload code for class MpdMiniMcTrack with content:

#line 1 "G__MpdMiniEventDict dictionary payload"

Hi Daniel,

I don’t understand how to reproduce this behavior. Could you give more information?
(btw there is service desk for reporting these things Q & A)

Hi Slavomir
Actually Jan told that he will fix this. In principle I just set this source, call add mpdroot module. Then I can do something like:
root
new MpdMiniMCTrack()
and I get the error, but for example
new MpdEvent()
works fine

Hi Daniel,

The header file SystemOfUnits.h is placed in the same MpdMiniEvent directory.
I guess the problem is exactly in the login.sh script that you run at the login time (or
any time when you set the environment). Likely, the login.sh does not properly set the path to all directories/files.

Cheers,
Grigory

I forwarded your request to Jan.
It will be fixed soon (@nigmatkulov this bug has nothing to do with login.sh script).
One thing users can learn from this is to adhere to standard Software Development practices:

  • submit your issue to the service desk Q & A (devs are usually not present on this forum)
  • if it really is a bug, it will be escalated as an issue to be fixed (a lot of requests we got are not bugs, but misunderstandings which are then clarified in Q&A section)

We will all benefit.
Thank you !



From Jan's email:
 
Before all source files were copied automatically into include
directory and therefore there were no problems with un-referenced sources.
Now, we rely on CMake and only headers connected with respective sources 
(.cc files of same name as .h) are copied, unless the header file was 
specified manually in the linking process, which was not the case. 
Therefore you got the error message. Unfortunately, we still don't have 
enough cover tests for all user cases.
...
In theory, it should be sufficient to add SystemOfUnits.h 
in the section Set(HEADERS) in CMakeLists.txt of MpdMiniEvent, 
but I have to test it and I will have time only tomorrow.

Hi Slavomir,

The MpdMiniEvent (aka MpdMiniDst) had no issues in past by design (I wrote the package). I agree that one should modify CMakeLists.txt accordingly to your (or Jan’s) suggestions. However, I want to notice that there were no issues in previous setup of the MpdRoot. If one wants to modify the global compilation process or something like that it has to be widely discussed. Or at least it should be discussed with the package maintainers/developers. Otherwise it may lead to unexpected consequences in the code behavior.

My 2 cents,
Grigory

@nigmatkulov thanks for your comment - we know that :slightly_smiling_face:
Based on available resources at the moment we decided to do it this way and take the c**p for it. Otherwise it wouldn’t get done at all, which is worse. The old way of building (difficult to maintain & upgrade from software development perspective) is kept for transition period.
In the meantime, we are here to make it easy for users to adapt to new build.

We have CODEOWNERS file and you should be probably placed there as owner of your dir/package
(it is added into MR, you should have an email asking you to review the parts of the code you own)

Or if your package is hosted in separate repo and can be compiled as external module (in the future), that would be ideal.

It works in latest mpdroot v22.02.22-1.
Thanks for reporting the bug!

mpd_mini