Skip to content

give dependencies provided via EasyBuld priority over sysroot for Rust package in easyconfig for librsvg v2.61.0#25317

Merged
boegel merged 1 commit intoeasybuilders:developfrom
ocaisa:20260218093845_new_pr_librsvg2610
Feb 18, 2026
Merged

give dependencies provided via EasyBuld priority over sysroot for Rust package in easyconfig for librsvg v2.61.0#25317
boegel merged 1 commit intoeasybuilders:developfrom
ocaisa:20260218093845_new_pr_librsvg2610

Conversation

@ocaisa
Copy link
Copy Markdown
Member

@ocaisa ocaisa commented Feb 18, 2026

(created using eb --new-pr)

@github-actions github-actions Bot added 2025b issues & PRs related to 2025b common toolchains change labels Feb 18, 2026
@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Feb 18, 2026

Test report by @ocaisa
SUCCESS
Build succeeded for 1 out of 1 (total: 2 mins 8 secs) (1 easyconfigs in total)
aoc-laptop - Linux Ubuntu 24.04.3 LTS (Noble Numbat), AArch64, UNKNOWN, Python 3.13.4
See https://gist.github.com/ocaisa/ae4ae41110647911a356451905494721 for a full test report.

# command which gives the sysroot libraries priority over things
# in LIBRARY_PATH. The flag belows forces Rust to give higher priority to the
# locations in LIBRARY_PATH (ensuring EasyBuild dependencies are preferred)
prebuildopts = "export RUSTFLAGS=\"$(printf -- '-L native=%s ' $(echo $LIBRARY_PATH | tr ':' ' ')) $RUSTFLAGS\" && "
Copy link
Copy Markdown
Member Author

@ocaisa ocaisa Feb 18, 2026

Choose a reason for hiding this comment

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

@Flamefire @Thyre This looks like another Rust situation that (longer term) is better handled in a generic way

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What exactly is "using a sysroot" in this situation? How does rust get and add it?

Am I reading this syntax correctly, that it expects RUSTFLAGS="-L native=/lib1 -L native=/lib2"? Looks like a mix of linker flags and something else

And again, similar to previous discussions and the below CARGO_HOME: We likely need framework support for cargo to allow the easyblock to do what the cargo easyblock currently does: Set env variables and possibly populate crates and their information to avoid adding CargoMesonNinja

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This is mostly based on what I have seen with this package, not on things I really know:

What exactly is "using a sysroot" in this situation? How does rust get and add it?

AFAICT Rust knows about the sysroot (in my case the EESSI compat layer) from the compiler. Once it sees a sysroot it adds the lib folders from the sysroot to the link line explicitly. The unintended impact of this is that the sysroot now has priority over the directories in LIBRARY_PATH (since the linker checks the explicitly listed locations first). This at least was my experience with this package: libfontconfig was available in the compat layer, and was being picked up even though the Pango dep loads the (correct) fontconfig as a dependency.

Am I reading this syntax correctly, that it expects RUSTFLAGS="-L native=/lib1 -L native=/lib2"? Looks like a mix of linker flags and something else

Yes, that's correct. I did what the AI told me to do and it works, information is hard to find, but there are some examples in the Rust CI: https://github.com/rust-lang/rust/blob/main/compiler/rustc_codegen_gcc/.github/workflows/release.yml#L100

And again, similar to previous discussions and the below CARGO_HOME: We likely need framework support for cargo to allow the easyblock to do what the cargo easyblock currently does: Set env variables and possibly populate crates and their information to avoid adding CargoMesonNinja

Agreed

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

@Flamefire Flamefire Feb 19, 2026

Choose a reason for hiding this comment

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

all — Search for all library kinds in this directory, except frameworks. This is the default if KIND is not specified.

That sounds like we don't need/want native= (or anything at all)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Seems possible...but I only found those docs 30 minutes ago.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Indeed, that works. I'll open up a follow-up PR

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Feb 18, 2026

@boegelbot Please test @ jsc-zen3

@boegelbot
Copy link
Copy Markdown
Collaborator

@ocaisa: 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=25317 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25317 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3919462228 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
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 1 out of 1 (total: 4 mins 17 secs) (1 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.23
See https://gist.github.com/boegelbot/049f3bf13933a3915f132f9245babac5 for a full test report.

@boegel boegel changed the title librsvg v2.61.0: Give EB dependencies priority over sysroot for Rust package give dependencies provided via EasyBuld priority over sysroot for Rust package in easyconfig for librsvg v2.61.0 Feb 18, 2026
@boegel boegel added this to the next release (5.2.1) milestone Feb 18, 2026
@boegel boegel added bug fix EESSI Related to EESSI project and removed change labels Feb 18, 2026
Copy link
Copy Markdown
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
Copy link
Copy Markdown
Member

boegel commented Feb 18, 2026

Test report by @boegel
SUCCESS
Build succeeded for 1 out of 1 (total: 3 mins 50 secs) (1 easyconfigs in total)
node4218.shinx.os - Linux RHEL 9.6, x86_64, AMD EPYC 9654 96-Core Processor (zen4), Python 3.9.21
See https://gist.github.com/boegel/23b7bebcafb7154f911b30ec5d9e6a54 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Feb 18, 2026

Going in, thanks @ocaisa!

@boegel boegel merged commit f5410b5 into easybuilders:develop Feb 18, 2026
8 checks passed
@ocaisa ocaisa deleted the 20260218093845_new_pr_librsvg2610 branch February 18, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2025b issues & PRs related to 2025b common toolchains bug fix EESSI Related to EESSI project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants