Skip to content

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

@apolcyn

Description

@apolcyn

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions