Conversation
The ECAL calibration suite, namely its `ECEngine`, inherits from `ReconstructionEngine` here, which depends on `jclara`. Since `jclara` is not in the shaded JAR, the ECAL calibration suite must additionally depend on `jclara`, even though it does not `import` any of its classes. To avoid this, let's just shade `jclara`.
|
We need to be sure CLARA can't pickup stuff in this 4.3 jar. Let's post here what's in it ( |
|
This reminds me of some old issues ....
Incidentally, I think #3 might also make it easy for coatjava to keep providing rogue jars w/o clara seeing them, relevant to this PR. |
|
Here's a
These printouts were produced by: #!/usr/bin/env bash
set -euo pipefail
for j in $(find coatjava/lib -type f -name '*.jar'); do
while read o; do
echo "$o $j"
done < <(jar tf $j)
done | sort |
CLARA's own 6.0 version of the classes are prioritized in the classpath used at runtime; the classpath (from clara/lib # contains jclara 6.0
clara/plugins/clas12/lib/clas # this PR would add jclara 4.3 here, in the shaded JAR
clara/plugins/clas12/lib/services
clara/plugins/grapes/lib/core
clara/plugins/grapes/lib/services
clara/servicesIn theory the 6.0 version will always be used, since it appears first in the class path; however, subtle bugs may still appear with the two versions of clara classes in the classpath, unfortunately. |
|
I confirmed we have historically been excluding |
|
I can't think of a clean way to do what we want here. The fundamental issue is
|
|
on the other hand, our CLARA CI test passes here, so maybe things will be okay... |
|
I wouldn't expect any current tests to be sensitive to an overridden clara jar. It probably won't take much to just get this rogue jar out of coatjava. |
The ECAL calibration suite, namely its
ECEngine, inherits fromReconstructionEnginehere, which depends onjclara. Sincejclarais not in the shaded JAR, the ECAL calibration suite must additionally depend onjclara, even though it does notimportany of its classes or directly use them.To avoid this, let's just shade
jclara.Furthermore, we have been copying our local
external-dependencies/jclara-4.3-SNAPSHOT.jarto the "prefix"coatjava/lib/utils/. Addingjclarato the shaded JAR means we no longer need to copy thisexternal-dependenciesJAR. Therefore, we can remove the need for theexternal-dependencies/JAR altogether.