Working around module name collisions
Maybe this is a bug? Maybe it is a feature? Maybe its a missing feature .... ?
In toyExperiment there is a module named HelloWorld that is used as the first module that people run.
In the art-workbook there is a second copy of HelloWorld, found in art-workbook/ModuleNameCollision/HelloWorld_module.cc . It differs from the first only in that it prints out text in bad french instead of in english. This directory also contains 5 .fcl files.
hello1.fcl - illustrates that art detects a module name collision if you specify just module_type : HelloWorld
hello2.fcl - illustrates how to choose the version from toyExperiment
hello3.fcl - illustrates how to choose the version from art-workbook
hello4.fcl - illustrates that if you configure both modules, you get two copies of the same module
hello5.fcl - illustrates that if you change the module labels to swap order of alphabetization you get the other module
Is this the intended behaviour or was it intended that it would be possible to run both modules within one job?
#1 Updated by Christopher Green over 6 years ago
- Tracker changed from Feature to Bug
- Description updated (diff)
- Category set to Infrastructure
- Status changed from New to Accepted
- Target version set to 1.13.00
- Estimated time set to 8.00 h
- Experiment Mu2e added
- Experiment deleted (
- SSI Package cetlib added
- SSI Package deleted (
I took the liberty of changing your second
hello5.fcl, which is I believe what you intended.
It is certainly intended that one should be able to load both modules in the same art job. If this is not in fact possible, this is a bug and should be rectified.
#3 Updated by Christopher Green almost 6 years ago
- Status changed from Assigned to Feedback
Standalone tests of the library- and symbol-finding mechanism failed to show a problem, so I fell back to a visual inspection of the module code referenced by your example FHiCL files.
Please try your 4 and 5 again, but put the art-workbook
HelloWorld class into a namespace other than
tex, otherwise not all the
dlopen() magic in the world will save you from the ODR violation.