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

Including -s in LDFLAGS makes it hard to save debug symbols of release gems #107

Open
apolcyn opened this issue Oct 17, 2023 · 1 comment

Comments

@apolcyn
Copy link

apolcyn commented Oct 17, 2023

Currently, rake-compiler-dock sets -s in LDFLAGS when installing rubies for cross-compilation (done in

export LDFLAGS='-pipe <%= strip %>' && \
).

I want to say this logic was carried over from rake-compiler/rake-compiler#165.

Speaking for the grpc gem, when shipping release gems, this -s flag is normally OK because we want to strip symbols anyways.

But it's become apparent that we need to make debug symbols for our pre-compiled binaries available (otherwise, it can be hard to deal with bugs in the wild).

I came up with an approach in grpc/grpc#34632, the idea is:

  1. build an unstripped native library

  2. save debug symbols off to the side

  3. strip the native library, and include this in a release gem

  4. publish debug symbols from 2) in a separate auxiliary package

Problem:

Because we have -s in LDFLAGS, in order to do step 1) we need to manually find and remove -s from $LDFLAGS in our extconf.rb.

Finding and removing -s seems fragile long term. For example, if the flag was renamed to --strip-all, our logic would break.

I'm wondering if we can create more explicit way to prevent automatic stripping on the rake-compiler/rake-compiler-dock side.

@flavorjones
Copy link
Collaborator

@apolcyn Thanks for starting this conversation. I'll explore some options and write them up here for feedback from you and other users.

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

No branches or pull requests

2 participants