Genie is hosted by Hepforge, IPPP Durham

Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#64 closed defect (fixed)

circular library dependence

Reported by: rhatcher Owned by: jwolcott
Priority: major Milestone:
Component: Framework Version:
Keywords: Cc:

Description

genie::exceptions::EVGThreadException introduces a circular library dependence: (defined in EVGCore lib, used by GInteraction). This leads to the 'genie' script's (i.e. root $GENIE/src/scripts/gcint/genie_interpreter.C) failure to load all the libraries.

Change History (3)

comment:1 Changed 2 years ago by jwolcott

  • Owner changed from candreop to jwolcott
  • Status changed from new to assigned

This was at least partially my fault (I introduced the usage of the exception into src/Interaction/KPhaseSpace.cxx). But after writing a separate exception class that lives in src/Interaction and using that instead in r6352 (which removes the dependence of GInteraction on EVGCore), there seems to be another dependency issue blocking the use of the genie script:

$ genie
   ------------------------------------------------------------
  | Welcome to ROOT 6.06/04                http://root.cern.ch |
  |                               (c) 1995-2016, The ROOT Team |
  | Built for linuxx8664gcc                                    |
  | From tag v6-06-04, 3 May 2016                              |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' |
   ------------------------------------------------------------

root [0] 
Processing /home/jeremy/code/genie-dfr/src/scripts/gcint/genie_interpreter.C...
cling::DynamicLibraryManager::loadLibrary(): /home/jeremy/code/genie-dfr/lib/libGUtils-999.999.999.so: undefined symbol: _ZTIN5genie13NuclearModelIE

which implies that GUtils depends on GNuclear. Looking into this too.

Last edited 2 years ago by jwolcott (previous) (diff)

comment:2 Changed 2 years ago by jwolcott

Yep, looks like r6102 introduced another circular dependency because src/Utils/NuclearUtils.cxx now depends on src/Nuclear/NuclearModelI (needs to check whether the nuclear model is LFG or not), and many things in src/Nuclear also depend on src/Utils/NuclearUtils. Hmm...

Last edited 2 years ago by jwolcott (previous) (diff)

comment:3 Changed 2 years ago by jwolcott

  • Resolution set to fixed
  • Status changed from assigned to closed

I was able to fix this by moving NuclearModelI to a new directory, Interfaces/, and by moving NuclearModel to a different new directory, Types/, neither of which is built into a library. See r6353.

Note: See TracTickets for help on using tickets.