File indexing completed on 2026-03-30 07:48:31
0001
0002
0003
0004
0005
0006 from spack.package import *
0007 from spack_repo.builtin.build_systems.cmake import CMakePackage
0008 from spack_repo.builtin.build_systems.cuda import CudaPackage
0009
0010
0011 class Jana2(CMakePackage, CudaPackage):
0012 """Multi-threaded HENP Event Reconstruction."""
0013
0014 homepage = "https://jeffersonlab.github.io/JANA2/"
0015 url = "https://github.com/JeffersonLab/JANA2/archive/refs/tags/v2.0.3.tar.gz"
0016 list_url = "https://github.com/JeffersonLab/JANA2/tags"
0017 git = "https://github.com/JeffersonLab/JANA2.git"
0018
0019 maintainer = ["wdconinc"]
0020
0021 tags = ["eic"]
0022
0023 version("master", branch="master")
0024 version("2026.01.01", sha256="2ccb1d6cc695df1ea9aa04667607534d89fb21c6f0692ebbf2ea9bf0e409621c")
0025 version("2026.01.00", sha256="575a202f5b7e153f9e25274fc6367c2a935aa23fb2ad3331c87d2fbfe08154ff")
0026 version("2.4.3", sha256="9d023f2225ad28d19c0e663de180d08e96900c4f76e3992faa946926cfa9cfcb")
0027 version("2.4.2", sha256="3536c2885745dd3e0ce3e068d09537a93850bee6e5a2ca8a559044ce1a7f985a")
0028 version("2.4.1", sha256="d3fabb532bbc6773fcd40fbdac714079b25bf69edd8f528395be0c7909bf8265")
0029 version("2.4.0", sha256="3b84fe3f86d8cc1ff79463e092c44d42c7d7a639319cb19bdfdfbcecd6f4ee7d")
0030 version("2.3.3", sha256="9cbb805e041ba54aea2c178f367ddf7b584b652cdbfa9f9be4d5ad7a22561861")
0031 version("2.3.2", sha256="26c5b521087cf526e9a498c9d1235531fdc28690f538221e422b79cc5fd0a87c")
0032 version("2.3.1", sha256="860e1f5019fbc9deed8768724e4d42956dc10ee55583852febde8dd7bf2b616e")
0033 version("2.3.0", sha256="7ebc914f1dafbd50d7296c92d67658b64f80e309e9812653413b525d84320b1d")
0034 version("2.2.1-rc1", sha256="7b65ce967d9c0690e22f4450733ead4acebf8fa510f792e0e4a6def14fb739b1")
0035 version("2.2.0", sha256="60940e182593dafddaa76d582d3270ac47694fa3f20257493e1017b34f624ba9")
0036 version("2.1.2", sha256="81b5b323289113d0fe666927afa3f81e76b3fcee0df7bff2c3fc1cb72fb240ce")
0037 version(
0038 "2.1.1",
0039 sha256="ea9926e0fb2fa1fa1f22acb6411d5bd521733f25031df114f118fa7fe2272a14",
0040 )
0041 version(
0042 "2.1.0",
0043 sha256="111f7a3c3a2357a4bbf54370740b22f641a99c83ec649d4ea9899c143371cf35",
0044 )
0045 version(
0046 "2.0.9",
0047 sha256="d8df3dc3390a239eae64eb58f6a5745608405b8aa91fb247965aaf2e321d269b",
0048 deprecated=True,
0049 )
0050 version(
0051 "2.0.8",
0052 sha256="b0c91a2780a66cd51cfeaf2ddbe44e2264afb4b2b2a91bc2d001802fb40c3a1b",
0053 )
0054 version(
0055 "2.0.7",
0056 sha256="56b4d1858d0f84e655b903eef07f5c6e23a9ed62219cd083ae279549dd051eb1",
0057 )
0058 version(
0059 "2.0.6",
0060 sha256="dc0bec6a63b6973171a714cb9eb2044b96c28f7aa5dd198e5be5858e5ec7ce7c",
0061 )
0062 version(
0063 "2.0.5",
0064 sha256="2e7297dfb0bd7f4a2f2fa3bca6b1c10b2553d321dec6060e48b0d75a5ed6717d",
0065 )
0066 version(
0067 "2.0.4",
0068 sha256="848adffcb881beb7835d01ce47a58991bb4f92664c9477196960ce8cfd94a3ca",
0069 )
0070 version(
0071 "2.0.3",
0072 sha256="fd34c40e2d6660ec08aca9208999dd9c8fe17de21c144ac68b6211070463e415",
0073 )
0074 version(
0075 "2.0.2",
0076 sha256="161d29c2b1efbfb36ec783734b45dff178b0c6bd77a2044d5a8829ba5b389b14",
0077 )
0078 version(
0079 "2.0.1",
0080 sha256="1471cc9c3f396dc242f8bd5b9c8828b68c3c0b72dbd7f0cfb52a95e7e9a8cf31",
0081 )
0082
0083 variant(
0084 "podio", default=False, description="Build with PODIO support.", when="@2.1.0:"
0085 )
0086 variant("python", default=True, description="Build with Python bindings.")
0087 variant("root", default=False, description="Use ROOT for janarate.")
0088 variant("xerces", default=True, description="Build with XML support.")
0089 variant("zmq", default=False, description="Use zeroMQ for janacontrol.")
0090
0091 depends_on("c", type="build")
0092 depends_on("cxx", type="build")
0093 depends_on("cmake@3.16:", type="build")
0094 depends_on("cppzmq", when="+zmq")
0095 depends_on("py-pybind11@2.6.1:", when="+python")
0096 depends_on("root", when="+root")
0097 depends_on("xerces-c")
0098
0099 with when("+podio"):
0100 depends_on("podio@0.16.3:")
0101 depends_on("podio@:1.4", when="@:2.4.2")
0102 depends_on("podio@:0.17.3", when="@:2.1.2")
0103 depends_on("py-jinja2")
0104 depends_on("py-pyyaml")
0105
0106 conflicts("+cuda", when="@:2.0", msg="CUDA support only available in 2.1 and later")
0107
0108
0109 patch(
0110 "https://github.com/JeffersonLab/JANA2/pull/243.patch?full_index=1",
0111 sha256="f1b89fe245ac44fec815b7cf97d40924acf1281cd2aeb31ee33ad76a13e0abd4",
0112 when="@2.1.1",
0113 )
0114
0115 patch(
0116 "https://github.com/JeffersonLab/JANA2/pull/239.patch?full_index=1",
0117 sha256="a32220ba30f18f30c196a604c9ccf9ed01676a81aadfad0028214b42a4363e25",
0118 when="@2.0.6:2.1.1",
0119 )
0120
0121 patch(
0122 "https://github.com/JeffersonLab/JANA2/pull/224.patch?full_index=1",
0123 sha256="cc3820e391caae8f4fe08d96f49fa2b38e454aaf37edde7dbd6fb4537a01af61",
0124 when="@2.0.2:2.1.0",
0125 )
0126
0127 patch(
0128 "https://github.com/JeffersonLab/JANA2/commit/8ed069da7f307d12cafd6b075eae8401aec6f5aa.diff?full_index=1",
0129 sha256="65f4b71d5cbf40ca5ece32ebab20a2da651201cf8dc89a09ab656dec2075f1f3",
0130 when="@2.3.2",
0131 )
0132
0133
0134 patch(
0135 "https://github.com/JeffersonLab/JANA2/pull/462/commits/c439fdd14bad2da6cf237c6d442f2a2f6632b67a.patch?full_index=1",
0136 sha256="cc8d304a51912ae0519b9862bafb0fee56d1c1cd8b29523519bf04f6fc005d9f",
0137 when="@2.4:2.4.2",
0138 )
0139
0140
0141 patch(
0142 "https://github.com/JeffersonLab/JANA2/pull/464.patch?full_index=1",
0143 sha256="a2590467a168a5771c02e4b361b1cc8f556a45e88683ec266169c1f0b3620d48",
0144 when="@2.4.3",
0145 )
0146
0147 patch(
0148 "https://github.com/JeffersonLab/JANA2/pull/492.patch?full_index=1",
0149 sha256="dd30168e3968538cecbb1a4ff234e193c733956db2f4b8332df151cc297e8987",
0150 when="@2.4.3",
0151 )
0152
0153 def cmake_args(self):
0154 args = [
0155 self.define_from_variant("USE_CUDA", "cuda"),
0156 self.define_from_variant("USE_ROOT", "root"),
0157 self.define_from_variant("USE_ZEROMQ", "zmq"),
0158 self.define_from_variant("USE_PYTHON", "python"),
0159 self.define("BUILD_EXAMPLES", self.run_tests),
0160 self.define("BUILD_TESTS", self.run_tests),
0161 ]
0162
0163
0164 if "+podio" in self.spec:
0165 args.append("-DUSE_PODIO=On")
0166
0167
0168 if "+zmq" in self.spec:
0169 args.append("-DZEROMQ_DIR=%s" % self.spec["cppzmq"].prefix)
0170
0171
0172 if "+root" in self.spec:
0173 args.append(
0174 "-DCMAKE_CXX_STANDARD=%s" % self.spec["root"].variants["cxxstd"].value
0175 )
0176
0177 return args
0178
0179 def setup_run_environment(self, env):
0180 env.append_path("JANA_PLUGIN_PATH", self.prefix.lib.JANA.plugins)
0181 env.set("JANA_HOME", self.prefix)