Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-03-30 07:48:31

0001 # Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
0002 # Spack Project Developers. See the top-level COPYRIGHT file for details.
0003 #
0004 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
0005 
0006 from spack.package import *
0007 from spack_repo.builtin.build_systems.cmake import CMakePackage
0008 
0009 
0010 class Eicrecon(CMakePackage):
0011     """EIC Reconstruction - JANA based."""
0012 
0013     homepage = "https://github.com/eic/eicrecon"
0014     url = "https://github.com/eic/EICrecon/archive/refs/tags/v0.1.0.zip"
0015     git = "https://github.com/eic/eicrecon.git"
0016     list_url = "https://github.com/eic/EICrecon/tags"
0017 
0018     tags = ["eic"]
0019 
0020     maintainers = ["wdconinc"]
0021 
0022     version("main", branch="main")
0023     version("1.35.2", sha256="f03059a60756ad61d885eb350a57a339890c39fd0471a9f777db47bd6057df34")
0024     version("1.35.1", sha256="11a6eed2e20d64359b726cade4003deec3f51eb906ef1a5fe323b1caacf1c105")
0025     version("1.35.0", sha256="dbecf22f8a95d1af1932d8e53ffdc251e73db0a430af6f254375f5c54b531749")
0026     version("1.34.0", sha256="2c5910faec93543c67c4ff4605bff1e24bf6b496633b56d608d9c8fcbc230d36")
0027     version("1.33.1", sha256="c9fdb32e4be2a15558d7a8bc7d973665a2c349c974fc7aaf984302ee3baaeab8")
0028     version("1.33.0", sha256="bf87745da1ff237b7ffbef476358cc0230ba016378e7b6242abca45846bdef52")
0029     version("1.32.0", sha256="47ccd336984b0c01a43ca60859b0760b6576a045be0cd6de95bfa9f95f1df42e")
0030     version("1.31.0", sha256="d417ce403bb631d20b14d9ea65ac9203a6d049bb234f631a8912eeebf679ea65")
0031     version("1.30.2", sha256="127a05a448b777aca9f73e047ac8cca054a46f59821743d2e39c2c8ea4e18533")
0032     version("1.30.1", sha256="2cdbe2b20a26e35f7db15ab003fa99fdb7b16f14037381ba8c77bfe34b849bba")
0033     version("1.30.0", sha256="72b7af4521d83f454650a096b53936e795ca8292f7268100d392a217ec84e809")
0034     version("1.29.1", sha256="41999a3be2234a0d84f9b7b68fa34830b40845346cebb0f4e4121c8f6d006e56")
0035     version("1.29.0", sha256="434d64d61e4d497fbfca8f338f0345f831aae8dbdfc5cbcaf42b2f014e185b9a")
0036     version("1.28.0", sha256="3dc35a7e5bf0f2f9fb60a95fcf4ce2a940428553eb07b55f243058c5d3cb39f2")
0037     version("1.27.1", sha256="2e09004d6a6b45da7125a749350be3bd1af6c152f25fe1c731f2f5b30f6aec07")
0038     version("1.27.0", sha256="073d76da7540f2c8432f76925d66b38778b2aec8e57264cb8562d456b760ed3d")
0039     version("1.26.1", sha256="68022617abcdd00eaa2d8db941ebf53e2f9bdd180ae1398995b1c98406f2f019")
0040     version("1.26.0", sha256="032e9051602c24bdcd2536b24f600a7a25268e1798fcfe1798ed8fa26538a379")
0041     version("1.25.0", sha256="ecef50842387c8fb25ea21faad474811ccc500290a38cd132f005684db09807e")
0042     version("1.24.2", sha256="19d6f0b81fdf631dbf1f9a73e798079a3a40ff7bfed5b25c2f3656cb8bc5aaeb")
0043     version("1.24.1", sha256="910d5098cc7c49c30656a53df241183b9f10b0bc1352472fca9dd803b1774cb2")
0044     version("1.24.0", sha256="c38a947b71be7de31d2148afdcacdfe13c112d693ecf6005d22e29bf41eb4137")
0045     version("1.23.1", sha256="952f1397af8c8555b67c7e34a0fc2641f836dfa92f050a2498c3b24b663b6e07")
0046     version("1.23.0", sha256="2ffabcc1ea16dfd9ef9f81304b19cd756d5ac65349b97ba4c595e25ff49ebb99")
0047     version("1.22.0", sha256="3206fd194d810a1f57ce378442ee9c9fae330cda8070777cb6db25f2f2145acf")
0048     version("1.21.0", sha256="4ef7b7144728019a5d7564067da8ac86d30347e6c4ff420efd58076e112bdde2")
0049     version("1.20.0", sha256="e0f87635330d7ab3abf5f2c39e26d4ef2cb428a7fe4e10ea712936de7712e394")
0050     version("1.19.0", sha256="db4cacba6f7c6818f15a0cfa83882a0ac3a8663dda28ee41c75adeeb6bd5425e")
0051     version("1.18.1", sha256="f4ca7e104fb8bfe960a7e339b67240d5885dcf248eb0bb6a5a81b928b2a58701")
0052     version("1.18.0", sha256="1110ba2bab25980c7ac843ffb07b00c9d5b30c270e5998d1cc755f2cc262ca5e")
0053     version("1.17.0", sha256="016b5e10f076e97d10d216a1952c9363d97f9b8f8fd8eb6a44fb49ed551d3eba")
0054     version("1.16.1", sha256="b0b98694f87c0b84fda5e3fe014e176e02881c5fb74a9e0bf1eb849d506a60c9")
0055     version("1.16.0", sha256="7296bf565ca787f7a4b538272c59a23e99469f8f2ed931698010def8169e9f6e")
0056     version("1.15.0", sha256="3a553bf9643828cd3b6e64c9324dc40b50c6c2cddb9ac618316afcc7529dc254")
0057     version("1.14.1", sha256="2a9445482d47b461ced8fcbaa8cf55903f4fec24d323b90b5fb3e9bc64c28f9e")
0058     version("1.14.0", sha256="f90e3a5bc55d7696f86a2b86cd38b585553b3e13bc0323ca4a2971688ecda58c")
0059     version("1.13.2", sha256="24ac2172b4834a2fa30ff13290e9c7c946f51472d57d4223711d2f86360eb926")
0060     version("1.13.1", sha256="66e9767e520ebcd6dc12f616d7a9e1262db0574e5b7e6a90df282ccd3e28612d")
0061     version("1.12.0", sha256="7b1fbf72a0756cd7338c179096c329b20611018b19e5fd73ce311e415adad47f")
0062     version("1.11.0", sha256="4442248864ed432762f267dc4d03eb1ddfecc3155d5b7c3d7f9a2dbc7b1427f7")
0063     version("1.10.0", sha256="f7469c5d62fd8614b1fb5a22be533d8fcc28ebdb955189f6b839caaac7a6be03")
0064     version("1.9.1", sha256="7d06d0fa14213525a06d5633b15d63d1c0827515a3e22f1e952e610cf90bb4d7")
0065     version("1.9.0", sha256="58c32f6953940277c4c01b563cac878b0aae01b09b88e7960d8500aa6080f745")
0066     version("1.8.1", sha256="7bc073d87fa6b619330bb3c1ce751e0535d04f9db3d04f13108b147759a29d6d")
0067     version("1.8.0", sha256="f0769d816e4119322e5429db9b9262ecb3cf8b140fa9f07707a6cdf5c77d0832")
0068     version("1.7.0", sha256="60732169f76d215ad111a9b34affb64b0f1adafa4aba372b53acb39fe50c6b07")
0069     version(
0070         "1.6.2",
0071         sha256="725d53bc4527486fd15d600b1bd329228502ef83c0ff118cc4600eac7cc2d148",
0072     )
0073     version(
0074         "1.6.1",
0075         sha256="fb3cffe9882d912288d40fcb0dc08a24bbe8adf57a53f05a7ab3559baa4c30cb",
0076     )
0077     version(
0078         "1.6.0",
0079         sha256="f099e4ad400b617f597ca7e1869b9fc5fb2ec6ab13af7dd66972b16ae194106d",
0080     )
0081     version(
0082         "1.5.1",
0083         sha256="3e77b6fc5dfa269f782bb8b3e33112f3cb7c7be9459a8efa6996c189463fad6e",
0084     )
0085     version(
0086         "1.5.0",
0087         sha256="b91339f39747ebda4e52a0e9d65e3af36e0e5d626335120dd73afe7a1bf0af62",
0088     )
0089     version(
0090         "1.4.1",
0091         sha256="3587fe257d8dcb6aa16a90ea6ab23a62b0894671fa91531a084611006719b234",
0092     )
0093     version(
0094         "1.4.0",
0095         sha256="714d5556499bbc067682970168fdd5e7a1b9ea3895f8153451032c5933747019",
0096     )
0097     version(
0098         "1.3.2",
0099         sha256="3abf080f8eb416ca6963ef9a1c5a039727119eea80d4eed2cceb8af3446bf9a2",
0100     )
0101     version(
0102         "1.3.1",
0103         sha256="e2acf781f34990f3602a078a65127b846f90a54dfbdbbdb63349931ed19e161e",
0104     )
0105     version(
0106         "1.3.0",
0107         sha256="b000c9f1f482b82c6a8b8f9daa5e7d4ce8c350fe09380f708d4c4077e22442bb",
0108     )
0109     version(
0110         "1.2.1",
0111         sha256="6a3ef0115a40369fc70c11218bccc957196730554f7ccf59da70e3dcdb12dcb9",
0112     )
0113     version(
0114         "1.2.0",
0115         sha256="89b1226248bca10ecb1677e065ffceae71921be0685988d66a0b7a0a13dbbbb3",
0116     )
0117     version(
0118         "1.1.1",
0119         sha256="05b7488481a6614b3a933786badd7b8f5eba97023047e35f63098ace427f5219",
0120     )
0121     version(
0122         "1.1.0",
0123         sha256="16bae53095bdf485824a6ff4b186b3f4435a21efd6ee3342604c0515cbf3ed4f",
0124     )
0125     version(
0126         "1.0.0",
0127         sha256="f7616b39150378ad8697e1b797edddce2f91181d1105b00b1dd66d618100c632",
0128     )
0129     version(
0130         "0.6.3",
0131         sha256="bd0bb106c4951fc472100538e6624eae1c9b568de4a2f35606b82f3bf462d0a2",
0132     )
0133     version(
0134         "0.6.2",
0135         sha256="47a0047f340f8c8384c01a97c69d85569084ce1b43941eabe69bd46e1dd4dadd",
0136     )
0137     version(
0138         "0.6.1",
0139         sha256="a1ec19101cb283d8af06c9236a069a6a9652bbd480be43f59a9612319567897b",
0140     )
0141     version(
0142         "0.6.0",
0143         sha256="498585c4ed5a4f5e8371bcb14971278aa2d5dce1d6fa15f03bb49164594ecaa6",
0144     )
0145     version(
0146         "0.5.4",
0147         sha256="79f4618ac2de44a876a13196790c9ce9d6e26bade4e71b44385cff321dedf18d",
0148     )
0149     version(
0150         "0.5.3",
0151         sha256="722988227f3b9f42932ee246a4bf28478d1221aa534e47eee1638c2a23198ebb",
0152     )
0153     version(
0154         "0.5.2",
0155         sha256="1a449ac1d93da6c85b52f2f1ff2f1d71034a00a437e48b261878a2380f3c7b33",
0156     )
0157     version(
0158         "0.5.1",
0159         sha256="546f4ceb05b957a5189ef1ccb3ff20f73c794a9e5d8f2b34eaa3ce8bfeade154",
0160     )
0161     version(
0162         "0.5.0",
0163         sha256="741836e51949168f1a542a3a1bb15735c54d997de158e1ef4adcf6ef12bfa269",
0164     )
0165     version(
0166         "0.4.2",
0167         sha256="ffc2ccee5a4634af10719966b41d464e95c67447efa79def4745472e8407ddc0",
0168     )
0169     version(
0170         "0.4.1",
0171         sha256="2653d381ebf5edfbe2bd9c962017685408001ca01fb296f62643c2d9645a1f1d",
0172     )
0173     version(
0174         "0.4.0",
0175         sha256="0b7e2cef2427110151b76711bc0e02aa44cfce055f96507bad64561206ccb4de",
0176     )
0177     version(
0178         "0.3.7",
0179         sha256="6499661af54703b280410b4bd71324aea756379fca269eaed53f047d1acb0475",
0180     )
0181     version(
0182         "0.3.6.2",
0183         sha256="a6a3e12a8fc98355b8a469d5fb5d789839bdbb0e403e376e00ffee7fa5603341",
0184     )
0185     version(
0186         "0.3.6.1",
0187         sha256="bc38b1b354dd9fbe97e98ddd4bc677aee6173121240df77ade8db1f680eb82a4",
0188     )
0189     version(
0190         "0.3.6",
0191         sha256="dac1ad140d0f9cd7d86e7df3fb2160f430b7971b20339281658b86c4450321d9",
0192     )
0193     version(
0194         "0.3.5",
0195         sha256="59ab7f3dda714dcea461c60cc60ab47825c3f91729de0f4f390898b934bfb09b",
0196     )
0197     version(
0198         "0.3.4",
0199         sha256="00f8dd172f8ddf5a1c7630eccf0e70a3efc43429c873f7d05918735fb526a3d5",
0200     )
0201     version(
0202         "0.3.3",
0203         sha256="a5a4ca7b36c132ccd4c3505c083b48d701dd0c487e57fb19d839d99b8cec362f",
0204     )
0205     version(
0206         "0.3.2",
0207         sha256="e89d64181c3b988e920df99e97d433365f865f1063561d0098f2ccfd13c5f5f5",
0208     )
0209     version(
0210         "0.3.1",
0211         sha256="3c153f8fbf06212b55a15cd34243bd9712e344163781bbbf8504d1a0a435646b",
0212     )
0213     version(
0214         "0.3.0",
0215         sha256="2efe99ea82c6f93cab1d9db32243c5c4138a3e32e7c051c1a206de9d59dd58d9",
0216     )
0217     version(
0218         "0.2.8",
0219         sha256="6c64f845566dc7b1cecaf4250193495256dce9f5c6a6d2742c35ce7fa882ba11",
0220     )
0221     version(
0222         "0.2.7",
0223         sha256="afcb8addea452c610b7ab1e5bfc179e062de0f1407605a7ae36b68bc55a2bc3a",
0224     )
0225     version(
0226         "0.2.6",
0227         sha256="819982d86cfb6f51661eb113af7eba337adda8d694cabfcd79dfc7f794f73226",
0228     )
0229     version(
0230         "0.2.5",
0231         sha256="c87970284130590049e4b40ad595fceab31daf22143e7e1afb08836b8c68170c",
0232     )
0233     version(
0234         "0.2.4",
0235         sha256="d8c55f54767f783eea8bf4939ef837fc73373ed71bd1509fdd5ae46aca4d8fa5",
0236     )
0237     version(
0238         "0.2.3",
0239         sha256="2660cb18272a932555ee1f690bcd904335feb1a6d8969859834307b24a937fd0",
0240     )
0241     version(
0242         "0.2.2",
0243         sha256="de8e5ef71465027226debfe4d42b8a4f883ffcb03ce2bfee0a0d247a4a1e89f2",
0244     )
0245     version(
0246         "0.2.1",
0247         sha256="097fef82cacd45453770f30e7e0ae382a11660b8bd4dfe478e7488a8988b8816",
0248     )
0249     version(
0250         "0.2.0",
0251         sha256="3fc0b812637d6bca9587cb4dadcd4b2ca386458ff6d46551ed8cf291335b4780",
0252     )
0253     version(
0254         "0.1.0",
0255         sha256="dcc8b60530a627c825413c07472659ba155600339ef8b8e742e3c997bcc504ae",
0256     )
0257 
0258     variant("asan", default=False, description="Enable address sanitizer")
0259     variant("lsan", default=False, description="Enable leak sanitizer", when="+asan")
0260     variant("tsan", default=False, description="Enable thread sanitizer")
0261     variant("ubsan", default=False, description="Enable undefined behavior sanitizer")
0262 
0263     depends_on("cxx", type="build")
0264     depends_on("cmake@3.16:", type="build")
0265 
0266     depends_on("jana2 +root +zmq")
0267     depends_on("dd4hep +ddrec +edm4hep")
0268     depends_on("edm4eic")
0269     depends_on("edm4hep")
0270     depends_on("podio")
0271 
0272     depends_on("acts +dd4hep +identification +tgeo", when="@:1.15")
0273     depends_on("acts +dd4hep +json", when="@1.16:")
0274     depends_on("acts@30:", when="@1.8:")
0275     depends_on("acts@:30", when="@:1.9.0")
0276 
0277     depends_on("root")
0278     depends_on("fastjet")
0279     depends_on("fjcontrib", when="@1.13:")
0280     depends_on("fmt")
0281     depends_on("irt", when="@0.2.8:")
0282     depends_on("irt2", when="@1.33.0:")
0283     depends_on("spdlog")
0284     depends_on("catch2", when="@1.0.0:")
0285     depends_on("cppgsl", when="@1.7:")
0286     depends_on("algorithms", when="@1.7:")
0287     depends_on("py-onnxruntime", when="@1.13:")
0288 
0289     def cmake_args(self):
0290         return [
0291             self.define("VERSION", self.version),
0292             self.define_from_variant("USE_ASAN", "asan"),
0293             self.define_from_variant("USE_TSAN", "tsan"),
0294             self.define_from_variant("USE_UBSAN", "ubsan"),
0295         ]
0296 
0297     def setup_run_environment(self, env):
0298         env.prepend_path(
0299             "JANA_PLUGIN_PATH", join_path(self.prefix, "lib", "EICrecon", "plugins")
0300         )
0301 
0302         if self.spec.satisfies("+asan"):
0303             env.set(
0304                 "ASAN_OPTIONS",
0305                 (
0306                     f"suppressions={self.prefix}/share/EICrecon/asan.supp:"
0307                     "malloc_context_size=20:detect_leaks=1:verify_asan_link_order=0:"
0308                     "detect_stack_use_after_return=1:detect_odr_violation=1:"
0309                     "new_delete_type_mismatch=0:intercept_tls_get_addr=0"
0310                 ),
0311             )
0312 
0313         if self.spec.satisfies("+lsan"):
0314             env.set(
0315                 "LSAN_OPTIONS",
0316                 (
0317                     f"suppressions={self.prefix}/share/EICrecon/lsan.supp"
0318                 ),
0319             )
0320 
0321         if self.spec.satisfies("+ubsan"):
0322             env.set(
0323                 "UBSAN_OPTIONS",
0324                 (
0325                     f"suppressions={self.prefix}/share/EICrecon/ubsan.supp:"
0326                     "print_stacktrace=1:silence_unsigned_overflow=1:"
0327                     "report_error_type=1"
0328                 ),
0329             )