Skip to content

ensure other sysroots in same env respect version as lower bound#87

Closed
h-vetinari wants to merge 2 commits intoconda-forge:mainfrom
h-vetinari:lockstep
Closed

ensure other sysroots in same env respect version as lower bound#87
h-vetinari wants to merge 2 commits intoconda-forge:mainfrom
h-vetinari:lockstep

Conversation

@h-vetinari
Copy link
Copy Markdown
Member

@h-vetinari h-vetinari commented Jul 9, 2025

In conda-forge/nodejs-feedstock#397 we have a situation where we require glibc 2.28 as a lower bound, and sysroot_linux-aarch64 2.28 gets pulled in correctly into the build environment.

However, we're getting

    sysroot_linux-64:              2.17-h0157908_18              conda-forge
    sysroot_linux-aarch64:         2.28-h43caf72_7               conda-forge

in the build environment, which ends up breaking compilation, because the build needs to compile something for the build-native architecture (i.e. seen from $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-c++ ... being called), which then fails due to the too-low glibc-version.

I think it would be good if we could add constraints for the sysroots of other architectures to the packages here, so that setting c_stdlib_version once ensures that all others respect that as a lower bound as well.

If we can agree on this, I'm happy to backport this to 2.28.

@conda-forge-admin
Copy link
Copy Markdown
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.

I do have some suggestions for making it better though...

For recipe/meta.yaml:

  • ℹ️ The recipe is not parsable by parser conda-souschef (grayskull). This parser is not currently used by conda-forge, but may be in the future. We are collecting information to see which recipes are compatible with grayskull.
  • ℹ️ License exception is not an SPDX exception.

Documentation on acceptable licenses can be found here.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/16180992707. Examine the logs at this URL for more detail.

run:
- {{ pin_subpackage('kernel-headers_' ~ cross_target_platform, exact=True) }}
- tzdata
run_constrained:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This will probably need a repodata as otherwise, we will fallback to other build numbers, right?

Also, wouldn't it make sense to have a single sysroot_linux_mutex package to also cover the case where we add new architectures (like RISC-V)? All sysroot_linux-* packages would depend on it, and thus it would ensure consistency without the need for explicitly listing architectures here?

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.

Fine with other designs, though I don't really see the "mutually exclusive" aspect, neither for the sysroots (i.e. the can be co-installed), nor for the versions (it's just a lower bound).

And yes, with this approach it's possible that we need repodata patches, but that doesn't seem scary.

Copy link
Copy Markdown
Member

@isuruf isuruf left a comment

Choose a reason for hiding this comment

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

This would prevent me from cross compiling for newer sysroots from older sysroots. Correct fix is #75

@h-vetinari
Copy link
Copy Markdown
Member Author

Correct fix is #75

OK cool. Would you mind rebasing that PR, or do you want me to do it?

@h-vetinari
Copy link
Copy Markdown
Member Author

This would prevent me from cross compiling for newer sysroots from older sysroots.

Also, if you wouldn't mind explaining, I'd be curious what the use-case is for needing an older sysroot in build: than the one for the target.

@h-vetinari
Copy link
Copy Markdown
Member Author

#88 / #89 worked, as seen in conda-forge/nodejs-feedstock#405. Closing

@h-vetinari h-vetinari closed this Jul 18, 2025
@h-vetinari h-vetinari deleted the lockstep branch July 18, 2025 02:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants