File indexing completed on 2026-03-30 07:48:31
0001 import os
0002 from spack.package import *
0003 from spack_repo.builtin.build_systems.cmake import CMakePackage
0004
0005
0006 class Epic(CMakePackage):
0007 """The ePIC Detector at IP6 of the Electron-Ion Collider."""
0008
0009 homepage = "https://epic-eic.org"
0010 url = "https://github.com/eic/epic/archive/refs/tags/22.10.0.zip"
0011 list_url = "https://github.com/eic/epic/tags"
0012 git = "https://github.com/eic/epic"
0013
0014 maintainers = ["wdconinc"]
0015
0016 tags = ["eic"]
0017
0018 version("main", branch="main")
0019 version("26.03.1", sha256="06dddba9f0e0ed872172d5f612974fb4ef2e40392ec8cac6267bf332275e067b")
0020 version("26.03.0", sha256="97bcfa08bf827fcf9907079dcd6e0bbb4e682ffe9d66110a130045c881df80a2")
0021 version("26.02.0", sha256="af563312a64c83430a92bf0d666c65854f960e04b2d28c718da6554f86251600")
0022 version("26.01.0", sha256="83c54dda2285c8c7898d24f50fcf37a01e49babb61f2153cb2d7d883234e812a")
0023 version("25.12.0", sha256="f5ef7cfac24178114aedb7d7c9d3805c180dfbc3580c2ef0db5d396195cbe164")
0024 version("25.11.2", sha256="60c010b26e0979341343fc38b44afefbc8de489251815e49381643282c28f0ab")
0025 version("25.11.1", sha256="073a0dfde0aa7f26a80a8a320456c14a83ba0f23da7387b02c0db936217f89ba")
0026 version("25.11.0", sha256="ed1e5f29589f197d342ec5287d3bda1502239f3b52a535a5cd2de457034698d8")
0027 version("25.10.4", sha256="7b49c11f8f2343a0febcff0df0a8df157bb5d37107dce7a251962df6dcbb70bd")
0028 version("25.10.3", sha256="5fcb3a7e83b37f507a62365eb33f74997a521244c622bf54fe9dc405f9c6dcf9")
0029 version("25.10.2", sha256="c97fb37646e8083f97b4ebcc0c73e97febbbec43e9aeaf9711fab7d515862696")
0030 version("25.10.1", sha256="5f0149da98675be2b3363cb592375a04682c93d97f8b17d146ebb4d0e4d1028c")
0031 version("25.10.0", sha256="b6bbdc2ad98b008c791dc7219ba5e5dde826859e99d9d35d186902a511fb2786")
0032 version("25.09.0", sha256="310f32d5addbcafbea3092e98ecb59ce3d6a9bcb80c13985ccb749dfc132398d")
0033 version("25.08.0", sha256="4a62dd6cf87f66f86c93706071169b22bfb2fe4a39e1c605be20640b6a4778bb")
0034 version("25.07.0", sha256="87bbcdf3946f6964cfdfc77fee9c984e3e8918cc5c458846bc6288f6e61ff39b")
0035 version("25.06.1", sha256="8dbfe939045337d82a3ee179b4c72892dceec6ed2eee4531d7e7f03f07b3ca85")
0036 version("25.06.0", sha256="ee060ecd23724384efc5cda26d70f45aff94d9df1b5330520e12ef47b7a20064")
0037 version("25.05.0", sha256="a60adef6c65b0dbf5d808ccf86a7912a02716c47252a0855ed34810b89960133")
0038 version("25.04.1", sha256="9f687233a9cb8db1c132d5d25ca0b7cc1f0e5188196d55a05ee63f4d8ada9a3d")
0039 version("25.04.0", sha256="4f3cd095c478ad0df9b743a03a867586f50182473ca2f6757645a2c4b7750796")
0040 version("25.03.1", sha256="e1250bc037c84417cf07d4b1915795ca8547567d3c525622cc61ca19f72a4dbb")
0041 version("25.03.0", sha256="cb0b3f294250abf296d6a91ef4a181ed2e8ad63ff9314fe1c8c38d35028b7395")
0042 version("25.02.0", sha256="5e76bd65b27f80b314107364db31a8c2d60dfa25a5d0ed068ade051dbaefdea1")
0043 version("25.01.1", sha256="393815f9a70bef775efa5f304cac4e7dc3be5eff284a2d45bb7e615ea87ad48c")
0044 version("25.01.0", sha256="af97f29df965dd5114c106e9291104b2c77e2dd758e04cae609d2e6c81561161")
0045 version("24.12.0", sha256="e7003a27bcb3f21763157ba12c9298113052249a4ccb49b5ba8a71a2f8612a12")
0046 version("24.11.2", sha256="0c734bec463103149acea641ce085c9653bc3b451a18f22c7c34aa632467f26f")
0047 version("24.11.1", sha256="781f848dc5032fc15699d57bcc911736d5fc22ac4b728a84da19fe7ee579a29f")
0048 version("24.11.0", sha256="3039d22bc654643046b27fc840543ec0faf35708c045f40f8f2c1064d1c6126d")
0049 version("24.10.1", sha256="9b5d161851d7acbe1986e7673bf8a268a9b74e1256fa3cb7e51a76e952990dcd")
0050 version("24.10.0", sha256="aeef27935f2664b96c1e0558b65dd2817ae53143c72de3451c24a9c65652c786")
0051 version("24.09.0", sha256="a0ab3ac4f5268aa2e5f7da0ab2e9c3c06180019bee088e1f72111e491fb8ae07")
0052 version("24.08.1", sha256="56f71b3136ade19a62ee6307f22a41a0cfade702519b0074799aee2aeecec8c8")
0053 version("24.08.0", sha256="288064ec68eb61a443a6b5ab5b8ec0b12b541ae1ad1550f4d68831390246dbb7")
0054 version("24.07.0", sha256="86f9a3f052e7a3699bba4e8f9f2600948073357bec820369a236dfe1339cf6f2")
0055 version("24.06.0", sha256="1aa075223704269905c6ac166ded074679387cbfda0297cfd4ec799e5b38a764")
0056 version("24.05.2", sha256="4e25154ca7c499eb360f370e0afac5c2d780cd2f682e0ad178875beb7db77040")
0057 version("24.05.1", sha256="2e0e7390fea6c091ee230835eac2354ac8b5f506f9508b4e6f8fd46d9573c2a5")
0058 version("24.05.0", sha256="647eff542ec5b77f73c2d9623d90abcca7a9ef30baaa21809b59f3c77e080385")
0059 version("24.04.0", sha256="9de5a71c3af9bf7d99ffcb10c5000d9ed2b5ffdbfc45a1a2e8b60cb73b480eea")
0060 version("24.03.1", sha256="58eb4fe340ba9e1b2d23bad805619b095ff0dc59d0187e831b576b1dbfb5cb24")
0061 version("24.03.0", sha256="d9943955a8135108df02ed4916c7493f246290c9379f912401efb3eecc297d4b")
0062 version("24.02.1", sha256="5c8bb108c00c807913da8508aa6a36d370079918e93f7cf6c8eae98fa41f43e7")
0063 version("24.02.0", sha256="04eb6e498eb6a9eafc2d29a5a34e6bbbedac26289ec98c5ce99cb5cfc3455d0e")
0064 version("23.12.0", sha256="04e94abf111d2746315dfa912f86c81c0f11011dff2a65434e00c87ba2de7b4a")
0065 version("23.11.0", sha256="24d856f718369d4336c56e191b5cb305bae60bcb06d00485154f5145d9acf597")
0066 version(
0067 "23.10.0",
0068 sha256="abf833eea328afb749c1eabbc83072c1382f02fc547ce7e9291e0616db552a0e",
0069 )
0070 version(
0071 "23.09.1",
0072 sha256="1fc30d36461e5acc3a54f475e9c01132aca12e74cc2fbec78fb3073fa83782b5",
0073 )
0074 version(
0075 "23.09.0",
0076 sha256="6f2ced07ead619ad4096246966383f7362d34fb140f8c0f3f60e775401deb303",
0077 )
0078 version(
0079 "23.08.0",
0080 sha256="1a8f82ef75d19dfad7228fcb437736622fc984caf0cf06466209124a8559d968",
0081 )
0082 version(
0083 "23.07.2",
0084 sha256="e80c31a338e41766aecc76441ac7aed7d53ddf401c7ca8773b0124536096ef2d",
0085 )
0086 version(
0087 "23.07.1",
0088 sha256="7e5908b3a64941ca2ff81195d62b3da6c8a20c4431f903a3c1bdda30bd39fac3",
0089 )
0090 version(
0091 "23.07.0",
0092 sha256="3b2fd83ee1664cb6bb47e45098c0357649d33526bac1e8637118bec4cd88295e",
0093 )
0094 version(
0095 "23.06.1",
0096 sha256="c78a756f84f34c6bb7b39e2bb104ffa7bcb2c7d0dcbdaa7905fe44f81e7b17aa",
0097 )
0098 version(
0099 "23.06.0",
0100 sha256="3e9825457920b97cab1bc73f44b8cfc45130f66a5d00c4acde4f8b9079a661b1",
0101 )
0102 version(
0103 "23.05.2",
0104 sha256="afb31d076a7859bd4cd94d9eed237f402a5cc56100c53c933ed4a024c8ef997b",
0105 )
0106 version(
0107 "23.05.1",
0108 sha256="4cac31b2619b3aafaaa9cc6a43923a97d04d74b753eb580990d569d1ef94c94d",
0109 )
0110 version(
0111 "23.05.0",
0112 sha256="a72774ffc3176178b128a4069d2a7bebfebde91192d971d0ccd3ab3392ff7977",
0113 )
0114 version(
0115 "23.03.0",
0116 sha256="16badb2418531250a81931f920e145c4be9ef93411f091d93202c23e36e91129",
0117 )
0118 version(
0119 "23.01.0",
0120 sha256="56e1d9a9ca3d81e64127f4d14fd45733dad07f6ffdec8387e6cae5e729525399",
0121 )
0122 version(
0123 "22.12.0",
0124 sha256="9de036b47ab8d0c97ab32fc788dd8300132014413013a1b19c2a3f8f3883a7ae",
0125 )
0126 version(
0127 "22.11.3",
0128 sha256="5cea46de7edf4868a361c5a75749f6c0f3d3ee941a33b956b2507581aa638232",
0129 )
0130 version(
0131 "22.11.2",
0132 sha256="f53aa7a4d992ddfb7549abedd4d6b87d61569b9530691b99640c6a635f2545c2",
0133 )
0134 version(
0135 "22.11.1",
0136 sha256="c8aded71dc707185a06557a76060661c57f24ed5eeb4a39b0ebcc63c9fc0a4fe",
0137 )
0138 version(
0139 "22.11.0",
0140 sha256="f683ed9e26b303ea428dc513d6e841efeeaa584cec44121f6a28116693d13065",
0141 )
0142 version(
0143 "22.10.1",
0144 sha256="dbd70d2d5ab42f3979ba4e7cda87cbb8cc48b37c4d13a887bbf96c3b32c347e9",
0145 )
0146 version(
0147 "22.10.0",
0148 sha256="f683ed9e26b303ea428dc513d6e841efeeaa584cec44121f6a28116693d13065",
0149 )
0150
0151 def cmake_flags(self):
0152 return [f"-DVERSION={self.version}"]
0153
0154
0155 patch(
0156 "https://github.com/eic/epic/pull/449.patch?full_index=1",
0157 sha256="df951c3e8a6dd519b48ae7b6248dc70e9709e3931f129cba66cafed2466837f4",
0158 when="@:23.06 ^dd4hep@1.26:",
0159 )
0160
0161 patch(
0162 "https://github.com/eic/epic/pull/520.patch?full_index=1",
0163 sha256="b76a5830404c4e25efc95f359dc661c29de417b1961525ac3cfd76f954ee3957",
0164 when="@:23.09",
0165 )
0166
0167 variant(
0168 "artifacts",
0169 default="none",
0170 description="Initialize configuration with artifacts",
0171 )
0172 variant(
0173 "ip",
0174 default="6",
0175 values=("6"),
0176 when="@:22.11",
0177 description="Interaction point design",
0178 )
0179
0180 depends_on("cxx", type="build")
0181
0182 depends_on("dd4hep@1.21: +ddg4 +ddrec", when="@:23.03.0")
0183 depends_on("dd4hep@1.21: +ddrec", when="@23.05.0:")
0184
0185 depends_on("acts-dd4hep", when="@:23.01.0")
0186
0187 depends_on("xrootd", when="@25.08.0:")
0188
0189 depends_on("irt2", when="@26.03.0:")
0190
0191 depends_on("fmt +shared")
0192 depends_on("py-pyyaml")
0193 depends_on("py-jinja2")
0194
0195 depends_on("eic-ip6", when="@:22.11 ip=6")
0196
0197 phases = ["cmake", "build", "install", "postinstall"]
0198
0199 def postinstall(self, spec, prefix):
0200 if spec.satisfies("@:22.11"):
0201 ip = "ip" + spec.variants["ip"].value
0202
0203
0204
0205
0206
0207 copy_tree(
0208 join_path(self.spec["eic-" + ip].prefix, "share", ip, ip),
0209 join_path(prefix, "share/epic", ip),
0210 )
0211
0212 if not spec.satisfies("artifacts=none"):
0213 detector_path = join_path(self.prefix.share, "epic")
0214 with working_dir(detector_path):
0215 os.environ["LD_LIBRARY_PATH"] += os.pathsep + self.prefix.lib
0216 if spec.satisfies("@:24.03"):
0217 os.environ["LD_LIBRARY_PATH"] += os.pathsep + self.spec["root"].prefix.lib.root
0218 os.environ["LD_LIBRARY_PATH"] += os.pathsep + self.spec["fmt"].prefix.lib
0219 os.environ["DETECTOR_PATH"] = detector_path
0220 checkGeometry = Executable(join_path(spec['dd4hep'].prefix.bin, 'checkGeometry'))
0221 checkGeometry('-c', join_path(detector_path, spec.variants["artifacts"].value + ".xml"))
0222
0223 def setup_run_environment(self, env):
0224 env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
0225 env.set("DETECTOR_PATH", join_path(self.prefix.share, "epic"))
0226 env.set("DETECTOR", "epic")
0227 env.set("DETECTOR_CONFIG", "epic")