From ae66736f067fc6cb2fd53b033b941bc24a327007 Mon Sep 17 00:00:00 2001
From: scott snyder <scott.snyder@cern.ch>
Date: Tue, 13 Nov 2018 17:20:39 +0100
Subject: [PATCH] AthenaConfiguration: Don't crash if downstream packages are
 missing.

AthenaConfiguration is a package that's needed by many other packages.
As such, it should not be depending on things like LArCellRec --- that
results in a circular package dependency.
Why should running the SCT_Cabling tests require LArCellRec to be present?
It shouldn't, but it currently does.

Work around this by not crashing if downstream packages are not present.
---
 .../python/AllConfigFlags.py                  | 35 +++++++++++++++----
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/Control/AthenaConfiguration/python/AllConfigFlags.py b/Control/AthenaConfiguration/python/AllConfigFlags.py
index dfc51a02bef..fff969b827b 100644
--- a/Control/AthenaConfiguration/python/AllConfigFlags.py
+++ b/Control/AthenaConfiguration/python/AllConfigFlags.py
@@ -46,9 +46,16 @@ def _createCfgFlags():
 
 
 #LAr Flags:
-    from LArCellRec.LArConfigFlags import createLArConfigFlags
-    lcf=createLArConfigFlags()
-    acf.join(lcf)
+    try:
+        import LArCellRec # Suppress flake8 unused import warning: # noqa: F401
+        haveLArCellRec = True
+    except ImportError:
+        haveLArCellRec = False
+
+    if haveLArCellRec:
+        from LArCellRec.LArConfigFlags import createLArConfigFlags
+        lcf=createLArConfigFlags()
+        acf.join(lcf)
 
 #CaloNoise Flags
     acf.addFlag("Calo.Noise.fixedLumiForNoise",-1)
@@ -61,12 +68,26 @@ def _createCfgFlags():
 
 
 # Trigger
-    from TriggerJobOpts.TriggerConfigFlags import createTriggerFlags
-    acf.join( createTriggerFlags() )
+    try:
+        import TriggerJobOpts # Suppress flake8 unused import warning: # noqa: F401
+        haveTriggerJobOpts = True
+    except ImportError:
+        haveTriggerJobOpts = False
+
+    if haveTriggerJobOpts:
+        from TriggerJobOpts.TriggerConfigFlags import createTriggerFlags
+        acf.join( createTriggerFlags() )
 
 # Muon 
-    from MuonConfig.MuonConfigFlags import createMuonConfigFlags
-    acf.join( createMuonConfigFlags() )
+    try:
+        import MuonConfig # Suppress flake8 unused import warning: # noqa: F401
+        haveMuonConfig = True
+    except ImportError:
+        haveMuonConfig = False
+
+    if haveMuonConfig:
+        from MuonConfig.MuonConfigFlags import createMuonConfigFlags
+        acf.join( createMuonConfigFlags() )
 
     return acf
 
-- 
GitLab