Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add hardened libcxx builds in separate label #176

Merged
merged 4 commits into from
Aug 5, 2024

Conversation

h-vetinari
Copy link
Member

It turns out that the enabling the "fast" hardening mode (c.f. #136) was a bad idea (see #162), not least because the default assertion handler just crashes without any useful information. Go back to no hardening for the production builds, but add a maximally hardened (thus better crash information) variant in a separate label.

@conda-forge-webservices
Copy link

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.

Copy link
Member

@jjerphan jjerphan left a comment

Choose a reason for hiding this comment

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

Thank you, @h-vetinari.

I strongly support such debug variants.

Comment on lines +125 to +127
# even though libcxxabi shouldn't be affected, distinguish builds
string: h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [hardening == "none"]
string: debug_h{{ PKG_HASH }}_{{ PKG_BUILDNUM }} # [hardening == "debug"]
Copy link
Member

Choose a reason for hiding this comment

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

Naive question: what is the pros of using another build string and label over using a track feature for such variant?

Copy link
Member Author

Choose a reason for hiding this comment

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

track-features don't support a way to explicitly select the package (except by channel priority1), and we wouldn't be able to do a run-export. Arguably the latter isn't strictly necessary (because the hardening modes should be ABI-compatible), but after the recent experience with libcxx 18.x I want to start off defensively.

also, since libcxx has nothing that affects the build strings, we're not tight on real estate currently. ;-)

Footnotes

  1. but at that point you don't need to weigh down builds anymore anyway; track features are useful for preferring one variant over another if both live in the same channel

@ianthomas23
Copy link
Member

I've locally built and used the hardened package and it is working as expected.

@h-vetinari
Copy link
Member Author

OK, since all the relevant changes here are restricted to a separate label, I'm putting this in. Let's hope this helps with debugging! :)

@h-vetinari h-vetinari merged commit e3eee7d into conda-forge:main Aug 5, 2024
10 checks passed
@h-vetinari h-vetinari deleted the hardening branch August 5, 2024 22:01
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.

3 participants