Project

General

Profile

Day 2 qualifier discussion

e1 -- what is that?
hybridqual, extraqual, etc. should be purely internal

what do we need to track
what needs to be controlled by developer/build manager/user?

openmp build
writing code that requires c++11 - have stringent compiler requirements
is current info redundant?

internal/external dependencies
cannot require same qualifier in entire chain

debug/profile/optimize
everything should be built the same way
product a depends on b, use debug build of both
system must enforce debug for entire chain

c++03 vs c++11
have to be able to mix in some cases (e.g. root and root dictionaries)

openmp (compiler option) or not
a5 for fhicl does not mean the same as a5 for openmp
openmp is only needed in art
e1 is currently a catchall that means 2 different things - BAD

What is a qualifier - a label. Any individual means what we say it means.
We use this label to express different ABI's. (different builds of root is an ABI difference)
  • version --> tag in code repository
  • qualifier --> only distinguished by build choices
  • within a product, please be consistent with qualifier choice, but do not rigidly enforce
artdaq P51
  • art P51
  • mvapich2 - qualifier only says which gcc was used, but is still P51
art
  • c++03
  • c++11
  • c++11 and -fopen.mp
  • art_openmp should be just a different qualifier
  • P51 - c++03, using root P51, etc.
  • M1 - c++11
  • M3 - c++11 and -fopen.mp
root
  • with Geant4
  • without Geant4
  • with MinFit
  • without MinFit
  • P51 - with G4 P51 (and thus gcc 4.6.1) w/ minfit
  • P3 - gcc 4.5.3 w/o minfit
  • do not demand that root qualifier is P51
geant4
  • which compiler was used
  • with internal CLHEP
  • with external CLHEP
  • use qualifier to distinguish
  • P51 -- w/o CLHEP and gcc 4.6.1
  • P43 -- w CLHEP and gcc 4.7.0
  • can P51 mean w/o CLHEP and with "my preferred" compiler
  • -- NO
  • -- setup an umbrella product will do this
  • specify to ups - this qualifier has this description string
  • ups describe
  • starts with human readable list
  • specify text description of qualifier in table file
  • add describeQual action
  • but now need this information to be echoed (optionally) by ups depend
  • maintain description in table file so it is not in two places and does not get out of sync
  • "use our tools, it's easy to do the right thing"