An experimental spindle with support for Pixi as an engine
9

Configure Feed

Select the types of activity you want to include in your feed.

chore: support x86-64 linux

Ethan Holz (May 21, 2026, 9:53 AM -0600) 3e777a47 a7b2b0f3

+490 -8
+417
pixi.lock
··· 6 6 options: 7 7 pypi-prerelease-mode: if-necessary-or-explicit 8 8 packages: 9 + linux-64: 10 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_go_select-2.3.0-cgo.tar.bz2 11 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda 12 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda 13 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda 14 + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-22-22.1.6-default_h99862b1_0.conda 15 + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-22.1.6-default_cfg_hcbb2b3e_0.conda 16 + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-22.1.6-default_h0a60c25_0.conda 17 + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-22.1.6-ha770c72_0.conda 18 + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt22-22.1.6-hb700be7_0.conda 19 + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_linux-64-22.1.6-hffcefe0_0.conda 20 + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-22.1.6-ha770c72_0.conda 21 + - conda: https://conda.anaconda.org/conda-forge/linux-64/go-1.26.3-h282a287_0.conda 22 + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda 23 + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda 24 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda 25 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.6-default_h99862b1_0.conda 26 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-22.1.6-hb700be7_0.conda 27 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda 28 + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda 29 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda 30 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda 31 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda 32 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda 33 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.6-hf7376ad_0.conda 34 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda 35 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda 36 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda 37 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda 38 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda 39 + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.6-h4922eb0_0.conda 40 + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda 41 + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda 42 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda 9 43 osx-arm64: 10 44 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_go_select-2.3.0-cgo.tar.bz2 11 45 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda ··· 44 78 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda 45 79 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda 46 80 packages: 81 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_go_select-2.3.0-cgo.tar.bz2 82 + sha256: d86836d4f3094b4ac149dcdc55f1f12be6e84ed1206a4234404a024e49769832 83 + md5: 76f94c0e00d08432e003a7b54a1adf53 84 + license: BSD-3-Clause 85 + license_family: BSD 86 + size: 4875 87 + timestamp: 1586504607438 47 88 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_go_select-2.3.0-cgo.tar.bz2 48 89 sha256: 5cd5dd9817d0d671ad3e2f85c967b4dcd1a297a686b7d5820e625e2f4f962558 49 90 md5: 79a39651abfce773c2948175d9b62986 ··· 51 92 license_family: BSD 52 93 size: 5074 53 94 timestamp: 1627073534014 95 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda 96 + build_number: 20 97 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 98 + md5: a9f577daf3de00bca7c3c76c0ecbd1de 99 + depends: 100 + - __glibc >=2.17,<3.0.a0 101 + - libgomp >=7.5.0 102 + constrains: 103 + - openmp_impl <0.0a0 104 + license: BSD-3-Clause 105 + license_family: BSD 106 + size: 28948 107 + timestamp: 1770939786096 54 108 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda 55 109 build_number: 7 56 110 sha256: 7acaa2e0782cad032bdaf756b536874346ac1375745fb250e9bdd6a48a7ab3cd ··· 61 115 license_family: BSD 62 116 size: 8325 63 117 timestamp: 1764092507920 118 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda 119 + sha256: 3c7c5580c1720206f28b7fa3d60d17986b3f32465e63009c14c9ae1ea64f926c 120 + md5: 212fe5f1067445544c99dc1c847d032c 121 + depends: 122 + - binutils_impl_linux-64 >=2.45.1,<2.45.2.0a0 123 + license: GPL-3.0-only 124 + license_family: GPL 125 + size: 35436 126 + timestamp: 1774197482571 127 + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda 128 + sha256: 0a7d405064f53b9d91d92515f1460f7906ee5e8523f3cd8973430e81219f4917 129 + md5: 8165352fdce2d2025bf884dc0ee85700 130 + depends: 131 + - ld_impl_linux-64 2.45.1 default_hbd61a6d_102 132 + - sysroot_linux-64 133 + - zstd >=1.5.7,<1.6.0a0 134 + license: GPL-3.0-only 135 + license_family: GPL 136 + size: 3661455 137 + timestamp: 1774197460085 64 138 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda 65 139 sha256: 9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b 66 140 md5: 489b8e97e666c93f68fdb35c3c9b957f ··· 99 173 license_family: Other 100 174 size: 749166 101 175 timestamp: 1772019681419 176 + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-22.1.6-default_cfg_hcbb2b3e_0.conda 177 + sha256: 627770cb49d7123c748da96e1f49f249a5103cfaa831f708ca229a08b48e16fa 178 + md5: c43f41e6f2b443b303611dd2e4b83772 179 + depends: 180 + - binutils 181 + - clang-22 22.1.6 default_h99862b1_0 182 + - clang_impl_linux-64 22.1.6 default_h0a60c25_0 183 + - libgcc-devel_linux-64 184 + - llvm-openmp >=22.1.6 185 + - sysroot_linux-64 186 + license: Apache-2.0 WITH LLVM-exception 187 + license_family: Apache 188 + size: 28615 189 + timestamp: 1779368963907 102 190 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22.1.6-default_cfg_hb78b91e_0.conda 103 191 sha256: c430ac67e1572d0aa95f39d014941436539c5683884882b607cee16463d9f90e 104 192 md5: bf6c4520dd3ef972c4c4ce0068717e0f ··· 114 202 license_family: Apache 115 203 size: 28817 116 204 timestamp: 1779365708308 205 + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-22-22.1.6-default_h99862b1_0.conda 206 + sha256: be0c96c2a4c54377823583418f0d84d463fcb31087806b1e3a8392503f4d11e9 207 + md5: b222de6a878d19543f5d5b442dea7fe4 208 + depends: 209 + - __glibc >=2.17,<3.0.a0 210 + - compiler-rt22 22.1.6.* 211 + - libclang-cpp22.1 22.1.6 default_h99862b1_0 212 + - libgcc >=14 213 + - libllvm22 >=22.1.6,<22.2.0a0 214 + - libstdcxx >=14 215 + license: Apache-2.0 WITH LLVM-exception 216 + license_family: Apache 217 + size: 835490 218 + timestamp: 1779368907665 117 219 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22-22.1.6-default_hd632d02_0.conda 118 220 sha256: 0367adcf51ed84e41d4c19e01d96c43e04ab835c5f30959ff445f74dd1b96b8a 119 221 md5: 069624db5072fa14238cc9709f586f91 ··· 127 229 license_family: Apache 128 230 size: 821063 129 231 timestamp: 1779365621298 232 + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-22.1.6-default_h0a60c25_0.conda 233 + sha256: 8a14f6a3647accbbb7b591f20af2a7132fbe30a589fa0a3b703785442d2b4b3f 234 + md5: 9b91e0c9e57a3c89201429d1eae74da3 235 + depends: 236 + - binutils_impl_linux-64 237 + - clang-22 22.1.6 default_h99862b1_0 238 + - compiler-rt 22.1.6.* 239 + - compiler-rt_linux-64 240 + - libgcc-devel_linux-64 241 + - sysroot_linux-64 242 + license: Apache-2.0 WITH LLVM-exception 243 + license_family: Apache 244 + size: 28176 245 + timestamp: 1779368947557 130 246 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-22.1.6-default_h17d1ed9_0.conda 131 247 sha256: 8a8409a70e4457ac03b3051c4d30dea0074fd85f2184abca131061d6e2b4a7c8 132 248 md5: fb3550f145ce84067b4e4ce1865284cb ··· 140 256 license_family: Apache 141 257 size: 28198 142 258 timestamp: 1779365691060 259 + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-22.1.6-ha770c72_0.conda 260 + sha256: 42d60a29aa92a64826b970b3e2a02e5d67b473549683487aeb50fbf3a7bde120 261 + md5: 2ef7a5417739e6c0cfd3760fa5bff44d 262 + depends: 263 + - compiler-rt22 22.1.6 hb700be7_0 264 + - libcompiler-rt 22.1.6 hb700be7_0 265 + constrains: 266 + - clang 22.1.6 267 + license: Apache-2.0 WITH LLVM-exception 268 + license_family: APACHE 269 + size: 16640 270 + timestamp: 1779326846986 143 271 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-22.1.6-hce30654_0.conda 144 272 sha256: 149e12bebeab294788e9315b7c28af2588cfe885901deb35a948c147b62dbb61 145 273 md5: 628bdb214acf2446155494500fc1a63f ··· 152 280 license_family: APACHE 153 281 size: 16597 154 282 timestamp: 1779326777807 283 + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt22-22.1.6-hb700be7_0.conda 284 + sha256: fc510b7380f29bfc5940d5b4752a96d8b319e0bcea0a6c70010088c609507585 285 + md5: 6de1d497d2465255db3798f8ddceb274 286 + depends: 287 + - __glibc >=2.17,<3.0.a0 288 + - compiler-rt22_linux-64 22.1.6.* 289 + - libgcc >=14 290 + - libstdcxx >=14 291 + license: Apache-2.0 WITH LLVM-exception 292 + license_family: APACHE 293 + size: 114899 294 + timestamp: 1779326845856 155 295 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt22-22.1.6-hd34ed20_0.conda 156 296 sha256: 1156047c7d6145aad7532935346a13985d2496ca0b280702d9fb2d5614d4a551 157 297 md5: f26403e30c9c146df6c5f40c2cfa0f0a ··· 162 302 license_family: APACHE 163 303 size: 99292 164 304 timestamp: 1779326776559 305 + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_linux-64-22.1.6-hffcefe0_0.conda 306 + sha256: c3440ca1569ea0c9735df3267de18ebc8af3390ff57ae59bad429f56e41de2c6 307 + md5: 9dea93dc86cfc92a102fd8bfb67bf222 308 + constrains: 309 + - compiler-rt >=9.0.1 310 + license: Apache-2.0 WITH LLVM-exception 311 + license_family: APACHE 312 + size: 49353539 313 + timestamp: 1779326755815 165 314 - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_osx-arm64-22.1.6-h7e67a1e_0.conda 166 315 sha256: 49dd3a39f82703d308421cdd5e7896e87cf39f7bdfd8bf1fa43abc31e047fcaf 167 316 md5: 89c554a96da130d076a1e8e96a83abe0 ··· 171 320 license_family: APACHE 172 321 size: 10983499 173 322 timestamp: 1779326748181 323 + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-22.1.6-ha770c72_0.conda 324 + sha256: edfca3825c48fdc7b4e6e4386ff62ffbabe8dcc4a30b529b09cdb38de497c90b 325 + md5: 49877bbc50e467c7b6c63de2bec339bc 326 + depends: 327 + - compiler-rt22_linux-64 22.1.6 hffcefe0_0 328 + constrains: 329 + - clang 22.1.6 330 + license: Apache-2.0 WITH LLVM-exception 331 + license_family: APACHE 332 + size: 16632 333 + timestamp: 1779326846691 174 334 - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-22.1.6-hce30654_0.conda 175 335 sha256: 11b1934e9c8d685a2b2ff0d83a02e9a24a741551bd7c25a7b3a14a3cc87bf185 176 336 md5: 918710203c7313cd1c36c0825b548983 ··· 182 342 license_family: APACHE 183 343 size: 16753 184 344 timestamp: 1779326777309 345 + - conda: https://conda.anaconda.org/conda-forge/linux-64/go-1.26.3-h282a287_0.conda 346 + sha256: 55e33ea26cb7d52150b3fa7f8cab54a114ba26171d81fd62740c90ca20a86c73 347 + md5: 349bac71872e562aeeeba37e68edc2d8 348 + depends: 349 + - __glibc >=2.17,<3.0.a0 350 + - _go_select 2.3.0 cgo 351 + - libgcc >=14 352 + - libgfortran 353 + - libgfortran5 >=14.3.0 354 + - libstdcxx >=14 355 + constrains: 356 + - gcc_linux-64 14.* 357 + - gfortran_linux-64 14.* 358 + - gxx_linux-64 14.* 359 + license: BSD-3-Clause 360 + license_family: BSD 361 + size: 53547958 362 + timestamp: 1778599406308 185 363 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/go-1.26.3-h94dcc77_0.conda 186 364 sha256: 9a5ea96378ecbf0087273b34cf3e30077de6fe5971838d4490497f2aac06dc87 187 365 md5: 37c872ccf00a83aaec4858f2f9e4147a ··· 199 377 license_family: BSD 200 378 size: 73580802 201 379 timestamp: 1778600046441 380 + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda 381 + sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a 382 + md5: c80d8a3b84358cb967fa81e7075fbc8a 383 + depends: 384 + - __glibc >=2.17,<3.0.a0 385 + - libgcc >=14 386 + - libstdcxx >=14 387 + license: MIT 388 + license_family: MIT 389 + size: 12723451 390 + timestamp: 1773822285671 391 + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda 392 + sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a 393 + md5: 86d9cba083cd041bfbf242a01a7a1999 394 + constrains: 395 + - sysroot_linux-64 ==2.28 396 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later 397 + license_family: GPL 398 + size: 1278712 399 + timestamp: 1765578681495 202 400 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm22_1_h5b97f1b_4.conda 203 401 sha256: 405f08540aedb58fa070b097143b3fe0fcb2b92e3b4aca723780e2f3d754803b 204 402 md5: 8254e40b35e6c3159de53275801a6ebc ··· 230 428 license_family: Other 231 429 size: 1038027 232 430 timestamp: 1772019602406 431 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda 432 + sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c 433 + md5: 18335a698559cdbcd86150a48bf54ba6 434 + depends: 435 + - __glibc >=2.17,<3.0.a0 436 + - zstd >=1.5.7,<1.6.0a0 437 + constrains: 438 + - binutils_impl_linux-64 2.45.1 439 + license: GPL-3.0-only 440 + license_family: GPL 441 + size: 728002 442 + timestamp: 1774197446916 443 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.6-default_h99862b1_0.conda 444 + sha256: 072f7b0632af982159bffa30c4741232faf9e6066f657e60f27a1e9c0941dd57 445 + md5: 6bf22bd2ce3150cd8ee3689d5f9b6d1a 446 + depends: 447 + - __glibc >=2.17,<3.0.a0 448 + - libgcc >=14 449 + - libllvm22 >=22.1.6,<22.2.0a0 450 + - libstdcxx >=14 451 + license: Apache-2.0 WITH LLVM-exception 452 + license_family: Apache 453 + size: 21668437 454 + timestamp: 1779368849256 233 455 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp22.1-22.1.6-default_h8e162e0_0.conda 234 456 sha256: cc0f134519f3a595e3f6b0d53e6411e9768c6fae25850fe0ad1713d1f537723e 235 457 md5: c2e52ea4693860def7ddd1e349332a68 ··· 241 463 license_family: Apache 242 464 size: 14184674 243 465 timestamp: 1779365542821 466 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-22.1.6-hb700be7_0.conda 467 + sha256: 2b89a8c95b71509d6241cee16be682a38657c9e15e09c63c3c1ea9d315476c8e 468 + md5: a4c2f5b79d4864e62a8c2bbcc6553cf7 469 + depends: 470 + - __glibc >=2.17,<3.0.a0 471 + - libgcc >=14 472 + - libstdcxx >=14 473 + constrains: 474 + - compiler-rt >=9.0.1 475 + license: Apache-2.0 WITH LLVM-exception 476 + license_family: APACHE 477 + size: 10890904 478 + timestamp: 1779326826989 244 479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcompiler-rt-22.1.6-hd34ed20_0.conda 245 480 sha256: f626060e2a9e75845f5894fd9f4e5d21910dc9eab59f3ea6e427c7b8e305e9d6 246 481 md5: bb20061b453dcc9397a341edf074c7ff ··· 261 496 license_family: Apache 262 497 size: 570038 263 498 timestamp: 1779253025527 499 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda 500 + sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 501 + md5: 57736f29cc2b0ec0b6c2952d3f101b6a 502 + depends: 503 + - __glibc >=2.17,<3.0.a0 504 + - _openmp_mutex >=4.5 505 + constrains: 506 + - libgcc-ng ==15.2.0=*_19 507 + - libgomp 15.2.0 he0feb66_19 508 + license: GPL-3.0-only WITH GCC-exception-3.1 509 + license_family: GPL 510 + size: 1041084 511 + timestamp: 1778269013026 264 512 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda 265 513 sha256: 06644fa4d34d57c9e48f4d84b1256f9e5f654fdb37f43acc8a58a396952d42b7 266 514 md5: 644058123986582db33aebd4ae2ca184 ··· 273 521 license_family: GPL 274 522 size: 404080 275 523 timestamp: 1778273064154 524 + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda 525 + sha256: 38a557eba305468ac1f90ac85e50d8defd76141cb0b8a43b2fc1aca71dd5d5f2 526 + md5: 683fcb168e1df9a21fa80d5aa2d9330b 527 + depends: 528 + - __unix 529 + license: GPL-3.0-only WITH GCC-exception-3.1 530 + license_family: GPL 531 + size: 3095909 532 + timestamp: 1778268932148 533 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda 534 + sha256: 561a42758ef25b9ce308c4e2cf56daee4f06138385a17e29a492cd928e00be6f 535 + md5: 42bf7eca1a951735fa06c0e3c0d5c8e6 536 + depends: 537 + - libgfortran5 15.2.0 h68bc16d_19 538 + constrains: 539 + - libgfortran-ng ==15.2.0=*_19 540 + license: GPL-3.0-only WITH GCC-exception-3.1 541 + license_family: GPL 542 + size: 27655 543 + timestamp: 1778269042954 276 544 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda 277 545 sha256: d4837b3b9b30af3132d260225e91ab9dde83be04c59513f500cc81050fb37486 278 546 md5: 1ea03f87cdb1078fbc0e2b2deb63752c ··· 284 552 license_family: GPL 285 553 size: 139675 286 554 timestamp: 1778273280875 555 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda 556 + sha256: 057978bb69fea29ed715a9b98adf71015c31baecc4aeb2bfc20d4fd5d83579d4 557 + md5: 85072b0ad177c966294f129b7c04a2d5 558 + depends: 559 + - __glibc >=2.17,<3.0.a0 560 + - libgcc >=15.2.0 561 + constrains: 562 + - libgfortran 15.2.0 563 + license: GPL-3.0-only WITH GCC-exception-3.1 564 + license_family: GPL 565 + size: 2483673 566 + timestamp: 1778269025089 287 567 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda 288 568 sha256: d0a68b7a121d115b80c169e24d1265dcc25a3fe58d107df1bbc430797e226d88 289 569 md5: ba36d8c606a6a53fe0b8c12d47267b3d ··· 295 575 license_family: GPL 296 576 size: 599691 297 577 timestamp: 1778273075448 578 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda 579 + sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b 580 + md5: faac990cb7aedc7f3a2224f2c9b0c26c 581 + depends: 582 + - __glibc >=2.17,<3.0.a0 583 + license: GPL-3.0-only WITH GCC-exception-3.1 584 + license_family: GPL 585 + size: 603817 586 + timestamp: 1778268942614 587 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda 588 + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f 589 + md5: 915f5995e94f60e9a4826e0b0920ee88 590 + depends: 591 + - __glibc >=2.17,<3.0.a0 592 + - libgcc >=14 593 + license: LGPL-2.1-only 594 + size: 790176 595 + timestamp: 1754908768807 298 596 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda 299 597 sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03 300 598 md5: 4d5a7445f0b25b6a3ddbb56e790f5251 ··· 303 601 license: LGPL-2.1-only 304 602 size: 750379 305 603 timestamp: 1754909073836 604 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.6-hf7376ad_0.conda 605 + sha256: c883814c109f6f1d3b159d6366a5d39dd1e160ce1cf48b27b6d7c4ee8d804232 606 + md5: 605a337de427d14e51adb39f8a07b282 607 + depends: 608 + - __glibc >=2.17,<3.0.a0 609 + - libgcc >=14 610 + - libstdcxx >=14 611 + - libxml2 612 + - libxml2-16 >=2.14.6 613 + - libzlib >=1.3.2,<2.0a0 614 + - zstd >=1.5.7,<1.6.0a0 615 + license: Apache-2.0 WITH LLVM-exception 616 + license_family: Apache 617 + size: 44235433 618 + timestamp: 1779261596488 306 619 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm22-22.1.6-h89af1be_0.conda 307 620 sha256: e1ca362a1ee853c54547e609459a900d098781ba74651639577375d2e95fe225 308 621 md5: 51fdd7b15cbbed91fef5e800c34bf741 ··· 317 630 license_family: Apache 318 631 size: 30038453 319 632 timestamp: 1779257738170 633 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda 634 + sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d 635 + md5: b88d90cad08e6bc8ad540cb310a761fb 636 + depends: 637 + - __glibc >=2.17,<3.0.a0 638 + - libgcc >=14 639 + constrains: 640 + - xz 5.8.3.* 641 + license: 0BSD 642 + size: 113478 643 + timestamp: 1775825492909 320 644 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda 321 645 sha256: 34878d87275c298f1a732c6806349125cebbf340d24c6c23727268184bba051e 322 646 md5: b1fd823b5ae54fbec272cea0811bd8a9 ··· 337 661 license_family: MIT 338 662 size: 36416 339 663 timestamp: 1767045062496 664 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda 665 + sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc 666 + md5: 5794b3bdc38177caf969dabd3af08549 667 + depends: 668 + - __glibc >=2.17,<3.0.a0 669 + - libgcc 15.2.0 he0feb66_19 670 + constrains: 671 + - libstdcxx-ng ==15.2.0=*_19 672 + license: GPL-3.0-only WITH GCC-exception-3.1 673 + license_family: GPL 674 + size: 5852044 675 + timestamp: 1778269036376 676 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda 677 + sha256: 3bc5551720c58591f6ea1146f7d1539c734ed1c40e7b9f5cb8cb7e900c509aba 678 + md5: 995d8c8bad2a3cc8db14675a153dec2b 679 + depends: 680 + - __glibc >=2.17,<3.0.a0 681 + - icu >=78.3,<79.0a0 682 + - libgcc >=14 683 + - libiconv >=1.18,<2.0a0 684 + - liblzma >=5.8.3,<6.0a0 685 + - libxml2-16 2.15.3 hca6bf5a_0 686 + - libzlib >=1.3.2,<2.0a0 687 + license: MIT 688 + license_family: MIT 689 + size: 46810 690 + timestamp: 1776376751152 340 691 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-heed7d32_0.conda 341 692 sha256: 4d9c117b2dd222cf891710d5f6a570ebb275479979843a1477ac54ed50907b40 342 693 md5: 0c1fdc80534d8f25fd74722aba81f044 ··· 352 703 license_family: MIT 353 704 size: 41663 354 705 timestamp: 1776377341241 706 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda 707 + sha256: 3d44f737c5ae52d5af32682cc1530df433f401f8e58a7533926536244127572a 708 + md5: e79d2c2f24b027aa8d5ab1b1ba3061e7 709 + depends: 710 + - __glibc >=2.17,<3.0.a0 711 + - icu >=78.3,<79.0a0 712 + - libgcc >=14 713 + - libiconv >=1.18,<2.0a0 714 + - liblzma >=5.8.3,<6.0a0 715 + - libzlib >=1.3.2,<2.0a0 716 + constrains: 717 + - libxml2 2.15.3 718 + license: MIT 719 + license_family: MIT 720 + size: 559775 721 + timestamp: 1776376739004 355 722 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h6967ea9_0.conda 356 723 sha256: 43895a7517c055b8893531290f9dc48bd751eb04be04f14bbce3b6c71b052be6 357 724 md5: 6c8292c2ee808aeef2406083beaa6da7 ··· 367 734 license_family: MIT 368 735 size: 465820 369 736 timestamp: 1776377317454 737 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda 738 + sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 739 + md5: d87ff7921124eccd67248aa483c23fec 740 + depends: 741 + - __glibc >=2.17,<3.0.a0 742 + constrains: 743 + - zlib 1.3.2 *_2 744 + license: Zlib 745 + license_family: Other 746 + size: 63629 747 + timestamp: 1774072609062 370 748 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda 371 749 sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05 372 750 md5: bc5a5721b6439f2f62a84f2548136082 ··· 378 756 license_family: Other 379 757 size: 47759 380 758 timestamp: 1774072956767 759 + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.6-h4922eb0_0.conda 760 + sha256: e74dbafd2b420687cc913f5587050270c8f57042405b6b0d66c3a8013dc104ab 761 + md5: a7f80a18bc21daad0f4d5c3fbad1e8c1 762 + depends: 763 + - __glibc >=2.17,<3.0.a0 764 + constrains: 765 + - openmp 22.1.6|22.1.6.* 766 + - intel-openmp <0.0a0 767 + license: Apache-2.0 WITH LLVM-exception 768 + license_family: APACHE 769 + size: 6121374 770 + timestamp: 1779340573879 381 771 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.6-hc7d1edf_0.conda 382 772 sha256: 12d3652549a9abd30f3cc14797715327b86e91001d11865106eb3e02c40be9da 383 773 md5: b8cf70b77b2ed10d5f82e367c327b76b ··· 448 838 license_family: MIT 449 839 size: 114331 450 840 timestamp: 1767045086274 841 + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda 842 + sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851 843 + md5: 13dc3adbc692664cd3beabd216434749 844 + depends: 845 + - __glibc >=2.28 846 + - kernel-headers_linux-64 4.18.0 he073ed8_9 847 + - tzdata 848 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later 849 + license_family: GPL 850 + size: 24008591 851 + timestamp: 1765578833462 451 852 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda 452 853 sha256: de6893e53664e769c1b1c4103a666d436e3d307c0eb6a09a164e749d116e80f7 453 854 md5: 555070ad1e18b72de36e9ee7ed3236b3 ··· 458 859 license: NCSA 459 860 size: 200192 460 861 timestamp: 1775657222120 862 + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda 863 + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c 864 + md5: ad659d0a2b3e47e38d829aa8cad2d610 865 + license: LicenseRef-Public-Domain 866 + size: 119135 867 + timestamp: 1767016325805 868 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda 869 + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 870 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 871 + depends: 872 + - __glibc >=2.17,<3.0.a0 873 + - libzlib >=1.3.1,<2.0a0 874 + license: BSD-3-Clause 875 + license_family: BSD 876 + size: 601375 877 + timestamp: 1764777111296 461 878 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda 462 879 sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 463 880 md5: ab136e4c34e97f34fb621d2592a393d8
+1 -1
pixi.toml
··· 2 2 authors = ["Ethan Holz <ethan.holz@thoriumworks.com>"] 3 3 channels = ["conda-forge"] 4 4 name = "pixi-spindle" 5 - platforms = ["osx-arm64"] 5 + platforms = ["osx-arm64", "linux-64"] 6 6 version = "0.1.0" 7 7 8 8 [tasks]
+32 -7
pixi/engine.go
··· 5 5 "errors" 6 6 "fmt" 7 7 "io" 8 + "os" 8 9 "sync" 9 10 "time" 10 11 ··· 22 23 ) 23 24 24 25 const ( 25 - defaultPixiImage = "ghcr.io/prefix-dev/pixi:latest" 26 - workspaceDir = "/tangled/workspace" 27 - homeDir = "/tangled/home" 26 + defaultPixiImage = "ghcr.io/prefix-dev/pixi:latest" 27 + defaultWorkflowTimeout = 5 * time.Minute 28 + workflowTimeoutEnvVar = "SPINDLE_PIPELINES_WORKFLOW_TIMEOUT" 29 + workspaceDir = "/tangled/workspace" 30 + homeDir = "/tangled/home" 28 31 ) 29 32 30 33 type cleanupFunc func(context.Context) error 31 34 32 35 type PixiEngine struct { 33 - docker client.APIClient 36 + docker client.APIClient 37 + workflowTimeout time.Duration 34 38 35 39 cleanupMu sync.Mutex 36 40 cleanup map[string][]cleanupFunc ··· 77 81 return nil, fmt.Errorf("create docker client: %w", err) 78 82 } 79 83 84 + workflowTimeout, err := loadWorkflowTimeout() 85 + if err != nil { 86 + return nil, err 87 + } 88 + 80 89 return &PixiEngine{ 81 - docker: dockerClient, 82 - cleanup: make(map[string][]cleanupFunc), 90 + docker: dockerClient, 91 + workflowTimeout: workflowTimeout, 92 + cleanup: make(map[string][]cleanupFunc), 83 93 }, nil 84 94 } 85 95 ··· 294 304 // engine-specific config. The timeout applies to the whole workflow execution 295 305 // after SetupWorkflow succeeds, not to each individual step. 296 306 func (e *PixiEngine) WorkflowTimeout() time.Duration { 297 - return 5 * time.Minute 307 + if e.workflowTimeout == 0 { 308 + return defaultWorkflowTimeout 309 + } 310 + return e.workflowTimeout 298 311 } 299 312 300 313 // DestroyWorkflow releases all resources created for one workflow. ··· 459 472 quoted += string(r) 460 473 } 461 474 return quoted + "'" 475 + } 476 + 477 + func loadWorkflowTimeout() (time.Duration, error) { 478 + value := os.Getenv(workflowTimeoutEnvVar) 479 + if value == "" { 480 + return defaultWorkflowTimeout, nil 481 + } 482 + timeout, err := time.ParseDuration(value) 483 + if err != nil { 484 + return 0, fmt.Errorf("parse %s: %w", workflowTimeoutEnvVar, err) 485 + } 486 + return timeout, nil 462 487 } 463 488 464 489 func (e *PixiEngine) registerCleanup(wid models.WorkflowId, fn cleanupFunc) {
+40
pixi/engine_test.go
··· 2 2 3 3 import ( 4 4 "testing" 5 + "time" 5 6 6 7 "tangled.org/core/api/tangled" 7 8 ) ··· 80 81 t.Fatalf("flag = %q, want %q", got, want) 81 82 } 82 83 } 84 + 85 + func TestLoadWorkflowTimeoutDefault(t *testing.T) { 86 + t.Setenv(workflowTimeoutEnvVar, "") 87 + 88 + got, err := loadWorkflowTimeout() 89 + if err != nil { 90 + t.Fatal(err) 91 + } 92 + if got != 5*time.Minute { 93 + t.Fatalf("timeout = %s, want 5m", got) 94 + } 95 + } 96 + 97 + func TestLoadWorkflowTimeoutFromEnv(t *testing.T) { 98 + t.Setenv(workflowTimeoutEnvVar, "12m") 99 + 100 + got, err := loadWorkflowTimeout() 101 + if err != nil { 102 + t.Fatal(err) 103 + } 104 + if got != 12*time.Minute { 105 + t.Fatalf("timeout = %s, want 12m", got) 106 + } 107 + } 108 + 109 + func TestLoadWorkflowTimeoutInvalid(t *testing.T) { 110 + t.Setenv(workflowTimeoutEnvVar, "nope") 111 + 112 + if _, err := loadWorkflowTimeout(); err == nil { 113 + t.Fatal("expected invalid timeout error") 114 + } 115 + } 116 + 117 + func TestWorkflowTimeoutFallsBackForZeroValueEngine(t *testing.T) { 118 + eng := &PixiEngine{} 119 + if got := eng.WorkflowTimeout(); got != 5*time.Minute { 120 + t.Fatalf("timeout = %s, want 5m", got) 121 + } 122 + }