Skip to content

Conversation

@Flamefire
Copy link
Contributor

@Flamefire Flamefire commented Dec 11, 2025

Resolve backreferences like authors.workspace = true

https://doc.rust-lang.org/cargo/reference/workspaces.html#the-package-table
For ruff-0.14.3 the salsa crate is using the [workspace.package] section where one can define values that can be inherited by members

So the members Cargo.toml file contains e.g.

[package]
name = "bar"
version.workspace = true
authors.workspace = true
description.workspace = true
documentation.workspace = true
[dependencies]
            leptos = { version = "0.6", features = ["csr"] }

For the offline builds we need to copy the members to standalone packages which has the side-effect that no "workspace" exists anymore causing cargo to fail with

  error: failed to get `anyhow` as a dependency of package `ruff v0.14.3 (/dev/shm/ruff/0.14.3/GCCcore-14.3.0/ruff-0.14.3/crates/ruff)`
  Caused by:
    failed to load source for dependency `anyhow`
  Caused by:
    Unable to update registry `crates-io`
  Caused by:
    failed to update replaced source registry `crates-io`
  Caused by:
    failed to parse manifest at `/dev/shm/ruff/0.14.3/GCCcore-14.3.0/easybuild_vendor/salsa-macros/Cargo.toml`
  Caused by:
    error inheriting `edition` from workspace root manifest's `workspace.package.edition`
  Caused by:
    failed to find a workspace root

Checking cargo vendor output: It replaces version.workspace = true by version = "1.2.3"

Hence we need to parse both TOML files, "merge" them to replace those references and write the result to the member Cargo.toml

This PR supersedes #3988 by using:

For future reference I kept that PR as a single, squashed commit.

With that it supports all examples from the docs including merging dictionaries and sections which isn't feasible without a full parser and serializing to TOML

The tests check the parsed results, not their textual representation as e.g. comments and formatting get lost

Implement a more complete TOML parser in Cargo easyblock
Loosely parse everything that could be in a Cargo.toml file

Use it to resolve backreferences like `authors.workspace = true`
EasyBuild contains facilities to read and write TOML files so remove the
manual TOML parser and implement the workspace/crates merging using those.

This allows for a lot more flexibility and avoids errors caused by unexpected
formats of a TOML file.
When inheriting from a workspace value we need to take the original dict
and replace any keys that are present in the child dict.
@Flamefire
Copy link
Contributor Author

Test report by @Flamefire

Overview of tested easyconfigs (in order)

  • SUCCESS alevin-fry-0.9.0-GCCcore-13.2.0.eb

  • SUCCESS bamtofastq-1.4.1-GCCcore-12.3.0.eb

  • SUCCESS bcrypt-4.0.1-GCCcore-12.3.0.eb

  • SUCCESS bcrypt-4.1.3-GCCcore-13.2.0.eb

  • SUCCESS bcrypt-4.3.0-GCCcore-13.3.0.eb

  • SUCCESS bcrypt-4.3.0-GCCcore-14.2.0.eb

  • SUCCESS bcrypt-4.3.0-GCCcore-14.3.0.eb

  • SUCCESS cargo-c-0.10.15-GCCcore-14.3.0.eb

  • SUCCESS cargo-c-0.9.32-GCCcore-13.3.0.eb

  • SUCCESS chopper-0.9.0-GCCcore-12.3.0.eb

  • SUCCESS cramino-0.14.5-GCC-12.3.0.eb

  • SUCCESS cryptography-41.0.1-GCCcore-12.3.0.eb

  • SUCCESS cryptography-41.0.5-GCCcore-13.2.0.eb

  • SUCCESS cryptography-42.0.8-GCCcore-13.3.0.eb

  • SUCCESS elfx86exts-0.6.2-GCC-12.3.0.eb

  • SUCCESS Evcxr-REPL-0.14.2-GCCcore-12.2.0-Rust-1.65.0.eb

  • SUCCESS HERRO-0.1.0_20240808-foss-2023a.eb

  • SUCCESS juliaup-1.17.9-GCCcore-12.3.0.eb

  • SUCCESS kyber-0.4.0-GCC-12.3.0.eb

  • SUCCESS Longshot-0.4.5-GCCcore-11.3.0.eb

  • SUCCESS Longshot-1.0.0-GCCcore-12.3.0.eb

  • SUCCESS Longshot-1.0.0-GCCcore-13.2.0.eb

  • SUCCESS maturin-1.1.0-GCCcore-12.2.0.eb

  • SUCCESS maturin-1.1.0-GCCcore-12.3.0.eb

  • SUCCESS maturin-1.3.1-GCCcore-13.2.0.eb

  • SUCCESS maturin-1.3.2-GCCcore-11.3.0-Rust-1.65.0.eb

  • SUCCESS maturin-1.4.0-GCCcore-12.2.0-Rust-1.75.0.eb

  • SUCCESS maturin-1.4.0-GCCcore-12.3.0-Rust-1.75.0.eb

  • SUCCESS maturin-1.5.0-GCCcore-13.2.0-Rust-1.76.0.eb

  • SUCCESS maturin-1.6.0-GCCcore-13.3.0.eb

  • SUCCESS maturin-1.7.8-GCCcore-12.3.0-Rust-1.81.0.eb

  • SUCCESS maturin-1.8.3-GCCcore-13.3.0-Rust-1.83.0.eb

  • SUCCESS maturin-1.8.3-GCCcore-14.2.0.eb

  • SUCCESS maturin-1.9.1-GCCcore-14.3.0.eb

  • SUCCESS mfqe-0.5.0-GCC-12.3.0.eb

  • SUCCESS modkit-0.3.3-GCCcore-12.3.0.eb

  • SUCCESS modkit-0.4.1-GCCcore-13.3.0.eb

  • SUCCESS modkit-0.5.0-GCCcore-13.3.0.eb

  • SUCCESS orjson-3.9.15-GCCcore-12.3.0.eb

  • SUCCESS phasius-0.2.0-GCC-12.3.0.eb

  • SUCCESS pybigtools-0.1.2-gfbf-2023a.eb

  • SUCCESS pydantic-2.11.7-GCCcore-14.2.0.eb

  • SUCCESS pydantic-2.5.3-GCCcore-12.2.0.eb

  • SUCCESS pydantic-2.5.3-GCCcore-12.3.0.eb

  • SUCCESS pydantic-2.6.4-GCCcore-13.2.0.eb

  • SUCCESS pydantic-2.7.4-GCCcore-13.2.0.eb

  • SUCCESS pydantic-2.9.1-GCCcore-13.3.0.eb

  • FAIL pymatgen-2023.12.18-foss-2023a.eb (build issue)
    (partial log available at https://gist.github.com/Flamefire/0ba2594e137d6af70dc7358a8d2587e3)

  • SUCCESS RDP-0.13.5-GCCcore-13.3.0.eb

  • SUCCESS ripunzip-0.4.0.eb

  • SUCCESS rustworkx-0.12.1-foss-2022a.eb

  • SUCCESS rustworkx-0.12.1-foss-2023a.eb

  • SUCCESS rustworkx-0.15.1-gfbf-2023a.eb

  • SUCCESS Safetensors-0.3.1-foss-2022a.eb

  • SUCCESS Safetensors-0.4.3-gfbf-2022b.eb

  • SUCCESS Safetensors-0.4.3-gfbf-2023a.eb

  • SUCCESS Safetensors-0.4.4-gfbf-2023b.eb

  • SUCCESS Safetensors-0.6.2-gfbf-2024a.eb

  • SUCCESS SKA2-0.3.7-GCCcore-12.2.0.eb

  • SUCCESS skani-0.2.2-GCCcore-12.3.0.eb

  • SUCCESS smafa-0.8.0-GCC-12.3.0.eb

  • SUCCESS subset-bam-1.1.0-GCCcore-10.3.0.eb

  • SUCCESS tiktoken-0.6.0-GCCcore-12.3.0.eb

  • SUCCESS tiktoken-0.7.0-GCCcore-12.3.0.eb

  • SUCCESS tiktoken-0.7.0-GCCcore-13.2.0.eb

  • SUCCESS timm-0.6.13-foss-2022a-CUDA-11.7.0.eb

  • SUCCESS timm-0.9.7-foss-2022a-CUDA-11.7.0.eb

  • SUCCESS tlparse-0.3.37-GCCcore-13.3.0.eb

  • SUCCESS tlparse-0.3.5-GCCcore-13.2.0.eb

  • SUCCESS tokenizers-0.13.3-GCCcore-11.3.0.eb

  • SUCCESS tokenizers-0.13.3-GCCcore-12.2.0.eb

  • SUCCESS tokenizers-0.15.2-GCCcore-12.3.0.eb

  • SUCCESS tokenizers-0.19.1-GCCcore-13.2.0.eb

  • SUCCESS torch-em-0.7.1-foss-2023a.eb

  • SUCCESS tree-sitter-0.25.3-GCCcore-14.2.0.eb

  • SUCCESS uv-0.2.30-GCCcore-13.3.0.eb

  • SUCCESS vLLM-0.4.0-foss-2023a-CUDA-12.1.1.eb

  • SUCCESS yacrd-1.0.0-foss-2023a.eb

  • SUCCESS Clarabel.rs-0.7.1-gfbf-2023a.eb

  • SUCCESS clearml-1.16.5-foss-2023b.eb

  • SUCCESS cramjam-2.9.0-GCCcore-12.3.0.eb

  • SUCCESS cryptography-44.0.2-GCCcore-14.2.0.eb

  • SUCCESS cryptography-45.0.5-GCCcore-14.3.0.eb

  • SUCCESS DeltaLake-0.15.1-gfbf-2023a.eb

  • SUCCESS DeltaLake-0.25.5-gfbf-2023b.eb

  • SUCCESS DeltaLake-0.25.5-gfbf-2024a.eb

  • SUCCESS fastparquet-2023.4.0-gfbf-2022b.eb

  • SUCCESS jiter-0.4.1-GCCcore-12.3.0.eb

  • SUCCESS jupyter-collaboration-2.1.1-GCCcore-13.2.0.eb

  • SUCCESS jupyter-server-2.14.0-GCCcore-13.2.0.eb

  • SUCCESS jupyter-server-2.14.2-GCCcore-13.3.0.eb

  • SUCCESS jupyter-server-2.16.0-GCCcore-14.2.0.eb

  • SUCCESS jupyter-server-2.17.0-GCCcore-14.3.0.eb

  • SUCCESS jupyter-server-2.7.2-GCCcore-12.3.0.eb

  • SUCCESS JupyterLab-4.0.3-GCCcore-12.2.0.eb

  • SUCCESS lazrs-0.7.0-GCCcore-14.2.0.eb

  • SUCCESS polars-0.19.19-gfbf-2023a.eb

  • SUCCESS polars-0.20.2-gfbf-2023a.eb

  • SUCCESS polars-1.28.1-gfbf-2023b.eb

  • SUCCESS scatac_fragment_tools-0.1.0-foss-2023a.eb

  • SUCCESS Spyder-6.0.1-GCCcore-13.2.0.eb

  • SUCCESS build-1.0.3-GCCcore-12.3.0.eb

  • SUCCESS build-1.0.3-GCCcore-13.2.0.eb

  • SUCCESS build-1.2.2.post1-GCCcore-13.3.0.eb

  • SUCCESS build-1.3.0-GCCcore-14.2.0.eb

  • SUCCESS build-1.3.0-GCCcore-14.3.0.eb

  • SUCCESS poetry-1.7.1-GCCcore-12.3.0.eb

  • SUCCESS poetry-1.7.1-GCCcore-13.2.0.eb

  • SUCCESS poetry-1.8.3-GCCcore-13.3.0.eb

  • SUCCESS poetry-2.1.2-GCCcore-14.2.0.eb

  • SUCCESS poetry-2.1.3-GCCcore-14.3.0.eb

  • SUCCESS Python-bundle-PyPI-2024.06-GCCcore-13.3.0.eb

  • SUCCESS Python-bundle-PyPI-2025.04-GCCcore-14.2.0.eb

  • SUCCESS Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb

  • SUCCESS rustworkx-0.16.0-gfbf-2024a.eb

  • SUCCESS tiktoken-0.9.0-GCCcore-13.3.0.eb

  • SUCCESS huggingface_hub-0.34.4-GCCcore-13.3.0.eb

  • SUCCESS polars-1.28.1-gfbf-2024a.eb

  • FAIL SnapATAC2-2.9.0-dev0-20250630-foss-2024a.eb (build issue)
    (partial log available at https://gist.github.com/Flamefire/c1980f66867374986fd3c5dcb1e3cfd0)

  • SUCCESS tokenizers-0.21.4-GCCcore-13.3.0.eb

Build succeeded for 118 out of 120 (total: 18 hours 39 mins 36 secs) (115 easyconfigs in total)
i7109 - Linux Rocky Linux 9.6, x86_64, AMD EPYC 7702 64-Core Processor (zen2), Python 3.9.21
See https://gist.github.com/Flamefire/640f1d4f34e9e7d663461d33c3be6f80 for a full test report.

@boegel
Copy link
Member

boegel commented Dec 13, 2025

SnapATAC2 won't work, see also:

@easybuilders easybuilders deleted a comment from boegelbot Dec 13, 2025
@boegel
Copy link
Member

boegel commented Dec 13, 2025

@boegelbot please test @ jsc-zen3
CORE_CNT=16
EB_ARGS="--installpath /tmp/$USER/pr4016 alevin-fry-0.9.0-GCCcore-13.2.0.eb bamtofastq-1.4.1-GCCcore-12.3.0.eb bcrypt-4.0.1-GCCcore-12.3.0.eb bcrypt-4.1.3-GCCcore-13.2.0.eb bcrypt-4.3.0-GCCcore-13.3.0.eb bcrypt-4.3.0-GCCcore-14.3.0.eb cargo-c-0.10.13-GCCcore-14.2.0.eb cargo-c-0.10.15-GCCcore-14.3.0.eb cargo-c-0.9.32-GCCcore-13.3.0.eb chopper-0.9.0-GCCcore-12.3.0.eb Clarabel.rs-0.7.1-gfbf-2023a.eb clearml-1.16.5-foss-2023b.eb cramino-0.14.5-GCC-12.3.0.eb cramjam-2.9.0-GCCcore-12.3.0.eb cryptography-41.0.1-GCCcore-12.3.0.eb cryptography-41.0.5-GCCcore-13.2.0.eb cryptography-42.0.8-GCCcore-13.3.0.eb cryptography-44.0.2-GCCcore-14.2.0.eb cryptography-45.0.5-GCCcore-14.3.0.eb DeltaLake-0.15.1-gfbf-2023a.eb DeltaLake-0.25.5-gfbf-2023b.eb DeltaLake-0.25.5-gfbf-2024a.eb elfx86exts-0.6.2-GCC-12.3.0.eb Evcxr-REPL-0.14.2-GCCcore-12.2.0-Rust-1.65.0.eb fastparquet-2023.4.0-gfbf-2022b.eb helix-25.07.1-GCCcore-14.3.0.eb HERRO-0.1.0_20240808-foss-2023a.eb huggingface_hub-0.34.4-GCCcore-13.3.0.eb isONclust3-0.3.0-GCCcore-13.3.0.eb jiter-0.4.1-GCCcore-12.3.0.eb juliaup-1.17.9-GCCcore-12.3.0.eb jupyter-collaboration-2.1.1-GCCcore-13.2.0.eb jupyter-server-2.14.0-GCCcore-13.2.0.eb jupyter-server-2.14.2-GCCcore-13.3.0.eb jupyter-server-2.16.0-GCCcore-14.2.0.eb jupyter-server-2.17.0-GCCcore-14.3.0.eb jupyter-server-2.7.2-GCCcore-12.3.0.eb JupyterLab-4.0.3-GCCcore-12.2.0.eb kyber-0.4.0-GCC-12.3.0.eb lazrs-0.7.0-GCCcore-14.2.0.eb Longshot-0.4.5-GCCcore-11.3.0.eb Longshot-1.0.0-GCCcore-12.3.0.eb maturin-1.1.0-GCCcore-12.3.0.eb maturin-1.3.1-GCCcore-13.2.0.eb maturin-1.3.2-GCCcore-11.3.0-Rust-1.65.0.eb maturin-1.4.0-GCCcore-12.3.0-Rust-1.75.0.eb maturin-1.5.0-GCCcore-13.2.0-Rust-1.76.0.eb maturin-1.6.0-GCCcore-13.3.0-Rust-1.83.0.eb maturin-1.6.0-GCCcore-13.3.0.eb maturin-1.7.8-GCCcore-12.3.0-Rust-1.81.0.eb maturin-1.8.3-GCCcore-13.3.0-Rust-1.83.0.eb maturin-1.8.3-GCCcore-14.2.0.eb maturin-1.9.1-GCCcore-14.3.0.eb mfqe-0.5.0-GCC-12.3.0.eb modkit-0.3.3-GCCcore-12.3.0.eb modkit-0.4.1-GCCcore-13.3.0.eb modkit-0.5.0-GCCcore-13.3.0.eb orjson-3.10.13-GCCcore-13.3.0.eb orjson-3.9.15-GCCcore-12.3.0.eb phasius-0.2.0-GCC-12.3.0.eb poetry-1.7.1-GCCcore-12.3.0.eb poetry-1.7.1-GCCcore-13.2.0.eb poetry-1.8.3-GCCcore-13.3.0.eb poetry-2.1.2-GCCcore-14.2.0.eb poetry-2.1.3-GCCcore-14.3.0.eb polars-0.19.19-gfbf-2023a.eb polars-0.20.2-gfbf-2023a.eb polars-1.28.1-gfbf-2023b.eb polars-1.28.1-gfbf-2024a.eb pybigtools-0.1.2-gfbf-2023a.eb pydantic-2.11.7-GCCcore-14.2.0.eb pydantic-2.11.9-GCCcore-14.3.0.eb pydantic-2.5.3-GCCcore-12.2.0.eb pydantic-2.5.3-GCCcore-12.3.0.eb pydantic-2.6.4-GCCcore-13.2.0.eb pydantic-2.7.4-GCCcore-13.2.0.eb pydantic-2.9.1-GCCcore-13.3.0.eb pymatgen-2023.12.18-foss-2023a.eb Python-bundle-PyPI-2024.06-GCCcore-13.3.0.eb Python-bundle-PyPI-2025.04-GCCcore-14.2.0.eb Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb python-jellyfish-1.1.0-GCCcore-12.3.0.eb Qiskit-2.0.2-foss-2023a.eb Qutip-5.2.1-foss-2025b.eb RDP-0.13.5-GCCcore-13.3.0.eb retworkx-0.9.0-foss-2023a.eb ripunzip-0.4.0.eb ruff-0.7.0-GCCcore-13.3.0.eb rustworkx-0.12.1-foss-2023a.eb rustworkx-0.15.1-gfbf-2023a.eb rustworkx-0.16.0-gfbf-2024a.eb Safetensors-0.4.3-gfbf-2023a.eb Safetensors-0.4.4-gfbf-2023b.eb Safetensors-0.6.2-gfbf-2024a.eb scatac_fragment_tools-0.1.0-foss-2023a.eb SKA2-0.3.7-GCCcore-12.3.0.eb skani-0.2.2-GCCcore-12.3.0.eb smafa-0.8.0-GCC-12.3.0.eb SnapATAC2-2.9.0-dev0-20250630-foss-2024a.eb Spyder-5.5.1-GCCcore-12.3.0.eb Spyder-6.0.1-GCCcore-13.2.0.eb subset-bam-1.1.0-GCCcore-10.3.0.eb tiktoken-0.6.0-GCCcore-12.3.0.eb tiktoken-0.7.0-GCCcore-13.2.0.eb tiktoken-0.9.0-GCCcore-13.3.0.eb timm-0.6.13-foss-2022a-CUDA-11.7.0.eb timm-0.9.7-foss-2022a-CUDA-11.7.0.eb tlparse-0.3.37-GCCcore-13.3.0.eb tlparse-0.3.5-GCCcore-13.2.0.eb tokenizers-0.13.3-GCCcore-12.2.0.eb tokenizers-0.15.2-GCCcore-12.3.0.eb tokenizers-0.19.1-GCCcore-13.2.0.eb tokenizers-0.21.4-GCCcore-13.3.0.eb torch-em-0.7.1-foss-2023a.eb tree-sitter-0.25.3-GCCcore-14.2.0.eb uv-0.2.30-GCCcore-13.3.0.eb uv-0.4.20-GCCcore-13.3.0.eb uv-0.7.13-GCCcore-14.2.0.eb vLLM-0.4.0-foss-2023a-CUDA-12.1.1.eb yacrd-1.0.0-foss-2023a.eb"

@boegelbot
Copy link

@boegel: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=4016 EB_ARGS="--installpath /tmp/$USER/pr4016 alevin-fry-0.9.0-GCCcore-13.2.0.eb bamtofastq-1.4.1-GCCcore-12.3.0.eb bcrypt-4.0.1-GCCcore-12.3.0.eb bcrypt-4.1.3-GCCcore-13.2.0.eb bcrypt-4.3.0-GCCcore-13.3.0.eb bcrypt-4.3.0-GCCcore-14.3.0.eb cargo-c-0.10.13-GCCcore-14.2.0.eb cargo-c-0.10.15-GCCcore-14.3.0.eb cargo-c-0.9.32-GCCcore-13.3.0.eb chopper-0.9.0-GCCcore-12.3.0.eb Clarabel.rs-0.7.1-gfbf-2023a.eb clearml-1.16.5-foss-2023b.eb cramino-0.14.5-GCC-12.3.0.eb cramjam-2.9.0-GCCcore-12.3.0.eb cryptography-41.0.1-GCCcore-12.3.0.eb cryptography-41.0.5-GCCcore-13.2.0.eb cryptography-42.0.8-GCCcore-13.3.0.eb cryptography-44.0.2-GCCcore-14.2.0.eb cryptography-45.0.5-GCCcore-14.3.0.eb DeltaLake-0.15.1-gfbf-2023a.eb DeltaLake-0.25.5-gfbf-2023b.eb DeltaLake-0.25.5-gfbf-2024a.eb elfx86exts-0.6.2-GCC-12.3.0.eb Evcxr-REPL-0.14.2-GCCcore-12.2.0-Rust-1.65.0.eb fastparquet-2023.4.0-gfbf-2022b.eb helix-25.07.1-GCCcore-14.3.0.eb HERRO-0.1.0_20240808-foss-2023a.eb huggingface_hub-0.34.4-GCCcore-13.3.0.eb isONclust3-0.3.0-GCCcore-13.3.0.eb jiter-0.4.1-GCCcore-12.3.0.eb juliaup-1.17.9-GCCcore-12.3.0.eb jupyter-collaboration-2.1.1-GCCcore-13.2.0.eb jupyter-server-2.14.0-GCCcore-13.2.0.eb jupyter-server-2.14.2-GCCcore-13.3.0.eb jupyter-server-2.16.0-GCCcore-14.2.0.eb jupyter-server-2.17.0-GCCcore-14.3.0.eb jupyter-server-2.7.2-GCCcore-12.3.0.eb JupyterLab-4.0.3-GCCcore-12.2.0.eb kyber-0.4.0-GCC-12.3.0.eb lazrs-0.7.0-GCCcore-14.2.0.eb Longshot-0.4.5-GCCcore-11.3.0.eb Longshot-1.0.0-GCCcore-12.3.0.eb maturin-1.1.0-GCCcore-12.3.0.eb maturin-1.3.1-GCCcore-13.2.0.eb maturin-1.3.2-GCCcore-11.3.0-Rust-1.65.0.eb maturin-1.4.0-GCCcore-12.3.0-Rust-1.75.0.eb maturin-1.5.0-GCCcore-13.2.0-Rust-1.76.0.eb maturin-1.6.0-GCCcore-13.3.0-Rust-1.83.0.eb maturin-1.6.0-GCCcore-13.3.0.eb maturin-1.7.8-GCCcore-12.3.0-Rust-1.81.0.eb maturin-1.8.3-GCCcore-13.3.0-Rust-1.83.0.eb maturin-1.8.3-GCCcore-14.2.0.eb maturin-1.9.1-GCCcore-14.3.0.eb mfqe-0.5.0-GCC-12.3.0.eb modkit-0.3.3-GCCcore-12.3.0.eb modkit-0.4.1-GCCcore-13.3.0.eb modkit-0.5.0-GCCcore-13.3.0.eb orjson-3.10.13-GCCcore-13.3.0.eb orjson-3.9.15-GCCcore-12.3.0.eb phasius-0.2.0-GCC-12.3.0.eb poetry-1.7.1-GCCcore-12.3.0.eb poetry-1.7.1-GCCcore-13.2.0.eb poetry-1.8.3-GCCcore-13.3.0.eb poetry-2.1.2-GCCcore-14.2.0.eb poetry-2.1.3-GCCcore-14.3.0.eb polars-0.19.19-gfbf-2023a.eb polars-0.20.2-gfbf-2023a.eb polars-1.28.1-gfbf-2023b.eb polars-1.28.1-gfbf-2024a.eb pybigtools-0.1.2-gfbf-2023a.eb pydantic-2.11.7-GCCcore-14.2.0.eb pydantic-2.11.9-GCCcore-14.3.0.eb pydantic-2.5.3-GCCcore-12.2.0.eb pydantic-2.5.3-GCCcore-12.3.0.eb pydantic-2.6.4-GCCcore-13.2.0.eb pydantic-2.7.4-GCCcore-13.2.0.eb pydantic-2.9.1-GCCcore-13.3.0.eb pymatgen-2023.12.18-foss-2023a.eb Python-bundle-PyPI-2024.06-GCCcore-13.3.0.eb Python-bundle-PyPI-2025.04-GCCcore-14.2.0.eb Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb python-jellyfish-1.1.0-GCCcore-12.3.0.eb Qiskit-2.0.2-foss-2023a.eb Qutip-5.2.1-foss-2025b.eb RDP-0.13.5-GCCcore-13.3.0.eb retworkx-0.9.0-foss-2023a.eb ripunzip-0.4.0.eb ruff-0.7.0-GCCcore-13.3.0.eb rustworkx-0.12.1-foss-2023a.eb rustworkx-0.15.1-gfbf-2023a.eb rustworkx-0.16.0-gfbf-2024a.eb Safetensors-0.4.3-gfbf-2023a.eb Safetensors-0.4.4-gfbf-2023b.eb Safetensors-0.6.2-gfbf-2024a.eb scatac_fragment_tools-0.1.0-foss-2023a.eb SKA2-0.3.7-GCCcore-12.3.0.eb skani-0.2.2-GCCcore-12.3.0.eb smafa-0.8.0-GCC-12.3.0.eb SnapATAC2-2.9.0-dev0-20250630-foss-2024a.eb Spyder-5.5.1-GCCcore-12.3.0.eb Spyder-6.0.1-GCCcore-13.2.0.eb subset-bam-1.1.0-GCCcore-10.3.0.eb tiktoken-0.6.0-GCCcore-12.3.0.eb tiktoken-0.7.0-GCCcore-13.2.0.eb tiktoken-0.9.0-GCCcore-13.3.0.eb timm-0.6.13-foss-2022a-CUDA-11.7.0.eb timm-0.9.7-foss-2022a-CUDA-11.7.0.eb tlparse-0.3.37-GCCcore-13.3.0.eb tlparse-0.3.5-GCCcore-13.2.0.eb tokenizers-0.13.3-GCCcore-12.2.0.eb tokenizers-0.15.2-GCCcore-12.3.0.eb tokenizers-0.19.1-GCCcore-13.2.0.eb tokenizers-0.21.4-GCCcore-13.3.0.eb torch-em-0.7.1-foss-2023a.eb tree-sitter-0.25.3-GCCcore-14.2.0.eb uv-0.2.30-GCCcore-13.3.0.eb uv-0.4.20-GCCcore-13.3.0.eb uv-0.7.13-GCCcore-14.2.0.eb vLLM-0.4.0-foss-2023a-CUDA-12.1.1.eb yacrd-1.0.0-foss-2023a.eb" EB_CONTAINER= EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_4016 --ntasks="16" ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 9117

Test results coming soon (I hope)...

Details

- notification for comment with ID 3649590336 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link

Test report by @boegelbot

Overview of tested easyconfigs (in order)

  • SUCCESS alevin-fry-0.9.0-GCCcore-13.2.0.eb

  • SUCCESS bamtofastq-1.4.1-GCCcore-12.3.0.eb

  • SUCCESS bcrypt-4.0.1-GCCcore-12.3.0.eb

  • SUCCESS bcrypt-4.1.3-GCCcore-13.2.0.eb

  • SUCCESS bcrypt-4.3.0-GCCcore-13.3.0.eb

  • SUCCESS bcrypt-4.3.0-GCCcore-14.3.0.eb

  • SUCCESS cargo-c-0.10.13-GCCcore-14.2.0.eb

  • SUCCESS cargo-c-0.10.15-GCCcore-14.3.0.eb

  • SUCCESS cargo-c-0.9.32-GCCcore-13.3.0.eb

  • SUCCESS chopper-0.9.0-GCCcore-12.3.0.eb

  • SUCCESS cramino-0.14.5-GCC-12.3.0.eb

  • SUCCESS cryptography-41.0.1-GCCcore-12.3.0.eb

  • SUCCESS cryptography-41.0.5-GCCcore-13.2.0.eb

  • SUCCESS cryptography-42.0.8-GCCcore-13.3.0.eb

  • SUCCESS elfx86exts-0.6.2-GCC-12.3.0.eb

  • SUCCESS Evcxr-REPL-0.14.2-GCCcore-12.2.0-Rust-1.65.0.eb

  • SUCCESS fastparquet-2023.4.0-gfbf-2022b.eb

  • FAIL helix-25.07.1-GCCcore-14.3.0.eb (build issue)
    (partial log available at https://gist.github.com/boegelbot/0a3437a42ac41aba09cf0407992d0331)

  • SUCCESS HERRO-0.1.0_20240808-foss-2023a.eb

  • SUCCESS isONclust3-0.3.0-GCCcore-13.3.0.eb

  • SUCCESS juliaup-1.17.9-GCCcore-12.3.0.eb

  • SUCCESS JupyterLab-4.0.3-GCCcore-12.2.0.eb

  • SUCCESS kyber-0.4.0-GCC-12.3.0.eb

  • SUCCESS Longshot-0.4.5-GCCcore-11.3.0.eb

  • SUCCESS Longshot-1.0.0-GCCcore-12.3.0.eb

  • SUCCESS maturin-1.1.0-GCCcore-12.3.0.eb

  • SUCCESS maturin-1.3.1-GCCcore-13.2.0.eb

  • SUCCESS maturin-1.3.2-GCCcore-11.3.0-Rust-1.65.0.eb

  • SUCCESS maturin-1.4.0-GCCcore-12.3.0-Rust-1.75.0.eb

  • SUCCESS maturin-1.5.0-GCCcore-13.2.0-Rust-1.76.0.eb

  • SUCCESS maturin-1.6.0-GCCcore-13.3.0-Rust-1.83.0.eb

  • SUCCESS maturin-1.6.0-GCCcore-13.3.0.eb

  • SUCCESS maturin-1.7.8-GCCcore-12.3.0-Rust-1.81.0.eb

  • SUCCESS maturin-1.8.3-GCCcore-13.3.0-Rust-1.83.0.eb

  • SUCCESS maturin-1.8.3-GCCcore-14.2.0.eb

  • SUCCESS maturin-1.9.1-GCCcore-14.3.0.eb

  • SUCCESS mfqe-0.5.0-GCC-12.3.0.eb

  • SUCCESS modkit-0.3.3-GCCcore-12.3.0.eb

  • SUCCESS modkit-0.4.1-GCCcore-13.3.0.eb

  • SUCCESS modkit-0.5.0-GCCcore-13.3.0.eb

  • SUCCESS orjson-3.9.15-GCCcore-12.3.0.eb

  • SUCCESS phasius-0.2.0-GCC-12.3.0.eb

  • SUCCESS poetry-1.7.1-GCCcore-12.3.0.eb

  • SUCCESS poetry-1.7.1-GCCcore-13.2.0.eb

  • SUCCESS poetry-1.8.3-GCCcore-13.3.0.eb

  • SUCCESS pybigtools-0.1.2-gfbf-2023a.eb

  • SUCCESS pydantic-2.11.7-GCCcore-14.2.0.eb

  • SUCCESS pydantic-2.11.9-GCCcore-14.3.0.eb

  • SUCCESS pydantic-2.5.3-GCCcore-12.2.0.eb

  • SUCCESS pydantic-2.5.3-GCCcore-12.3.0.eb

  • SUCCESS pydantic-2.6.4-GCCcore-13.2.0.eb

  • SUCCESS pydantic-2.7.4-GCCcore-13.2.0.eb

  • SUCCESS pydantic-2.9.1-GCCcore-13.3.0.eb

  • SUCCESS pymatgen-2023.12.18-foss-2023a.eb

  • SUCCESS Python-bundle-PyPI-2024.06-GCCcore-13.3.0.eb

  • SUCCESS python-jellyfish-1.1.0-GCCcore-12.3.0.eb

  • SUCCESS RDP-0.13.5-GCCcore-13.3.0.eb

  • SUCCESS retworkx-0.9.0-foss-2023a.eb

  • SUCCESS ripunzip-0.4.0.eb

  • SUCCESS ruff-0.7.0-GCCcore-13.3.0.eb

  • SUCCESS rustworkx-0.12.1-foss-2023a.eb

  • SUCCESS rustworkx-0.15.1-gfbf-2023a.eb

  • SUCCESS rustworkx-0.16.0-gfbf-2024a.eb

  • SUCCESS Safetensors-0.4.3-gfbf-2023a.eb

  • SUCCESS Safetensors-0.4.4-gfbf-2023b.eb

  • SUCCESS Safetensors-0.6.2-gfbf-2024a.eb

  • SUCCESS SKA2-0.3.7-GCCcore-12.3.0.eb

  • SUCCESS skani-0.2.2-GCCcore-12.3.0.eb

  • SUCCESS smafa-0.8.0-GCC-12.3.0.eb

  • SUCCESS subset-bam-1.1.0-GCCcore-10.3.0.eb

  • SUCCESS tiktoken-0.6.0-GCCcore-12.3.0.eb

  • SUCCESS tiktoken-0.7.0-GCCcore-13.2.0.eb

  • SUCCESS tiktoken-0.9.0-GCCcore-13.3.0.eb

  • SUCCESS timm-0.6.13-foss-2022a-CUDA-11.7.0.eb

  • SUCCESS timm-0.9.7-foss-2022a-CUDA-11.7.0.eb

  • SUCCESS tlparse-0.3.37-GCCcore-13.3.0.eb

  • SUCCESS tlparse-0.3.5-GCCcore-13.2.0.eb

  • SUCCESS tokenizers-0.13.3-GCCcore-12.2.0.eb

  • SUCCESS tokenizers-0.15.2-GCCcore-12.3.0.eb

  • SUCCESS tokenizers-0.19.1-GCCcore-13.2.0.eb

  • FAIL torch-em-0.7.1-foss-2023a.eb (build issue)
    (partial log available at https://gist.github.com/boegelbot/197b21593a40a7a925fc9046e7d1ec06)

  • SUCCESS tree-sitter-0.25.3-GCCcore-14.2.0.eb

  • SUCCESS uv-0.2.30-GCCcore-13.3.0.eb

  • SUCCESS uv-0.4.20-GCCcore-13.3.0.eb

  • SUCCESS uv-0.7.13-GCCcore-14.2.0.eb

  • SUCCESS vLLM-0.4.0-foss-2023a-CUDA-12.1.1.eb

  • SUCCESS yacrd-1.0.0-foss-2023a.eb

  • SUCCESS Clarabel.rs-0.7.1-gfbf-2023a.eb

  • SUCCESS clearml-1.16.5-foss-2023b.eb

  • SUCCESS cramjam-2.9.0-GCCcore-12.3.0.eb

  • SUCCESS cryptography-44.0.2-GCCcore-14.2.0.eb

  • SUCCESS cryptography-45.0.5-GCCcore-14.3.0.eb

  • SUCCESS DeltaLake-0.15.1-gfbf-2023a.eb

  • SUCCESS DeltaLake-0.25.5-gfbf-2023b.eb

  • SUCCESS DeltaLake-0.25.5-gfbf-2024a.eb

  • SUCCESS huggingface_hub-0.34.4-GCCcore-13.3.0.eb

  • SUCCESS jiter-0.4.1-GCCcore-12.3.0.eb

  • SUCCESS jupyter-collaboration-2.1.1-GCCcore-13.2.0.eb

  • SUCCESS jupyter-server-2.14.2-GCCcore-13.3.0.eb

  • SUCCESS jupyter-server-2.16.0-GCCcore-14.2.0.eb

  • SUCCESS jupyter-server-2.17.0-GCCcore-14.3.0.eb

  • SUCCESS jupyter-server-2.7.2-GCCcore-12.3.0.eb

  • SUCCESS lazrs-0.7.0-GCCcore-14.2.0.eb

  • SUCCESS orjson-3.10.13-GCCcore-13.3.0.eb

  • SUCCESS polars-0.19.19-gfbf-2023a.eb

  • SUCCESS polars-0.20.2-gfbf-2023a.eb

  • SUCCESS polars-1.28.1-gfbf-2023b.eb

  • SUCCESS polars-1.28.1-gfbf-2024a.eb

  • SUCCESS Qiskit-2.0.2-foss-2023a.eb

  • SUCCESS scatac_fragment_tools-0.1.0-foss-2023a.eb

  • FAIL SnapATAC2-2.9.0-dev0-20250630-foss-2024a.eb (build issue)
    (partial log available at https://gist.github.com/boegelbot/78204c0aba12929c010c0b4239ef5a50)

  • SUCCESS Spyder-5.5.1-GCCcore-12.3.0.eb

  • SUCCESS tokenizers-0.21.4-GCCcore-13.3.0.eb

  • SUCCESS debugpy-1.8.1-GCCcore-13.2.0.eb

  • SUCCESS build-1.3.0-GCCcore-14.2.0.eb

  • SUCCESS build-1.3.0-GCCcore-14.3.0.eb

  • SUCCESS poetry-2.1.2-GCCcore-14.2.0.eb

  • SUCCESS poetry-2.1.3-GCCcore-14.3.0.eb

  • SUCCESS Python-bundle-PyPI-2025.04-GCCcore-14.2.0.eb

  • SUCCESS Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb

  • SUCCESS Qutip-5.2.1-foss-2025b.eb

  • SUCCESS deprecation-2.1.0-GCCcore-13.2.0.eb

  • SUCCESS jupyter_packaging-0.12.3-GCCcore-13.2.0.eb

  • SUCCESS ipywidgets-8.1.2-GCCcore-13.2.0.eb

  • SUCCESS jupyter-server-2.14.0-GCCcore-13.2.0.eb

  • SUCCESS Spyder-6.0.1-GCCcore-13.2.0.eb

Build succeeded for 123 out of 126 (total: 17 hours 31 mins 45 secs) (120 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.6, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/102fa76efc383a46e998530adf03cb65 for a full test report.

@Flamefire
Copy link
Contributor Author

As for SnapATAC: easybuilders/easybuild-easyconfigs#24643

Would be good to get that and dependencies in too

@boegel
Copy link
Member

boegel commented Dec 14, 2025

  • Test failure for helix-25.07.1-GCCcore-14.3.0.eb:

    /usr/bin/bash: line 1: cd: helix-term: No such file or directory
    

    Also happens with current develop, so that problem is not introduced by the changes in this PR, so following up on that in a separate PR...

  • Test failure for torch-em-0.7.1-foss-2023a.eb: LibLZF/3.6-GCCcore-12.3.0 of imagecodecs/2024.1.1-foss-2023a was missing, fixing that...

@boegel
Copy link
Member

boegel commented Dec 14, 2025

@boegelbot please test @ jsc-zen3
CORE_CNT=16
EB_ARGS="--installpath /tmp/$USER/pr4016 torch-em-0.7.1-foss-2023a.eb"

@boegelbot
Copy link

@boegel: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=4016 EB_ARGS="--installpath /tmp/$USER/pr4016 torch-em-0.7.1-foss-2023a.eb" EB_CONTAINER= EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_4016 --ntasks="16" ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 9143

Test results coming soon (I hope)...

Details

- notification for comment with ID 3650689258 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link

Test report by @boegelbot

Overview of tested easyconfigs (in order)

  • SUCCESS torch-em-0.7.1-foss-2023a.eb

Build succeeded for 1 out of 1 (total: 15 mins 50 secs) (1 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.6, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/78347ff7522ba0c0ed5506f5a57bf29e for a full test report.

@boegel
Copy link
Member

boegel commented Dec 14, 2025

Problem with helix-25.07.1-GCCcore-14.3.0.eb seems related to the changes made in easybuilders/easybuild-framework#5057, if I roll that back it works fine.

I suspect that the changes there unmasked another bug, because the start_dir ends up being set to the path of a file something now...

edit: Since the problem also pop up when not using this updated Cargo easyblock, it's not introduced by these changes in this PR, so it shouldn't block this from getting merged either...

Copy link
Member

@boegel boegel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@boegel boegel changed the title Implement merging Cargo.toml file with workspace file w/ tomlparser & writer enhance Cargo easyblock to merge Cargo.toml file with workspace file Dec 14, 2025
@boegel boegel merged commit 0cbd89f into easybuilders:develop Dec 14, 2025
22 checks passed
@Thyre
Copy link
Collaborator

Thyre commented Dec 14, 2025

Problem with helix-25.07.1-GCCcore-14.3.0.eb seems related to the changes made in easybuilders/easybuild-framework#5057, if I roll that back it works fine.

I suspect that the changes there unmasked another bug, because the start_dir ends up being set to the path of a file something now...

edit: Since the problem also pop up when not using this updated Cargo easyblock, it's not introduced by these changes in this PR, so it shouldn't block this from getting merged either...

@boegel, for some reason, the current directory is set to helix-stdx during the install process, where it was the correct top level directory before. For installation, helix requires to run the install commands from helix-term.
A hacky solution would be to replace the cd helix-term in the EasyConfig with cd ../helix-term, but we should fix this properly...

# Shell for the command: 'cd helix-term &&  cargo install --profile=release --root=/tmp/software/helix/25.07.1-GCCcore-14.3.0 --path=.'
# Use command history, exit to stop
eb-shell> pwd
/data/EasyBuild-develop/build/helix/25.07.1/GCCcore-14.3.0/helix-stdx
eb-shell> ls ../helix-term/
build.rs  Cargo.toml  src  tests
eb-shell> cd ../helix-term/
eb-shell> cargo install --profile=release --root=/tmp/software/helix/25.07.1-GCCcore-14.3.0 --path=.
  Installing helix-term v25.7.1 (/data/EasyBuild-develop/build/helix/25.07.1/GCCcore-14.3.0/helix-term)
[...]

Also confirmed in the EasyBuild logs:

== 2025-12-14 14:33:23,386 easyblock.py:2394 INFO Using /data/EasyBuild-develop/build/helix/25.07.1/GCCcore-14.3.0/helix-stdx as start dir

@Thyre
Copy link
Collaborator

Thyre commented Dec 14, 2025

@Flamefire, @boegel helix regression was very likely introduced by #3665 (more specifically this part). We take the first folder of the extracted sources if there's more than one folder. Here, the sources include several subfolders, but the actual source directory is the top level.
Also, the selected directory is not deterministic. In test runs, I got basically all of the subdirectories of helix at least once.

The final path is then set to the non-deterministic subfolder, therefore breaking parts which rely on being in one of the specific folders, or in the top level.

== 2025-12-14 15:09:00,131 filetools.py:1478 DEBUG Possible new dir /data/EasyBuild-develop/build/helix/25.07.1/GCCcore-14.3.0 found
== 2025-12-14 15:09:00,131 cargo.py:332 WARNING Found multiple folders when extracting helix-25.07.1.tar.xz: helix-stdx, helix-view, helix-lsp, theme.toml, .github, flake.nix, helix-core, README.md, logo_dark.svg, .gitattributes, xtask, .git, logo_light.svg, LICENSE, .envrc, grammars.nix, helix-tui, rustfmt.toml, flake.lock, base16_theme.toml, helix-parsec, runtime, helix-loader, Cargo.toml, helix-dap, book, helix-lsp-types, helix-event, .cargo, rust-toolchain.toml, Cargo.lock, helix-term, languages.toml, shell.nix, docs, CHANGELOG.md, .gitignore, logo.svg, helix-vcs, default.nix, contrib, screenshot.png.
== 2025-12-14 15:09:00,131 cargo.py:335 DEBUG Unpacked sources of helix-25.07.1.tar.xz into: /data/EasyBuild-develop/build/helix/25.07.1/GCCcore-14.3.0/helix-stdx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants