[ruby] fix re2 compilation when older system version installed (#32580)

re2 previously failed to compile if:

1. An old `re2` version is installed with a non-standard system prefix,
such as `/opt/local`.
2. The environment variable is set: `CPPFLAGS=-I/opt/local/include`.

Running `make` would result in function prototype mismatches because the
Makefile would previously attempt to use the headers from
`/opt/local/include/re2` before the `third_party/re2/re2` directory.

https://github.com/grpc/grpc/pull/27660 caused `CPPFLAGS` to inherit
from the environment, but this can cause the Makefile to use external
include files for re2 and other libraries if `-I` flags are defined.

This commit reverts to the original behavior of only using
`RbConfig::CONFIG` values to avoid using the wrong headers.
revert-32956-client-channel-resolver-fuzzer
Stan Hu 2 years ago committed by GitHub
parent dcef4bb981
commit 01c87e24da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      src/ruby/ext/grpc/extconf.rb

@ -34,24 +34,23 @@ def env_unset?(name)
ENV[name].nil? || ENV[name].size == 0
end
def rbconfig_set?(name)
RbConfig::CONFIG[name] && RbConfig::CONFIG[name].size > 0
def inherit_env_or_rbconfig(name)
ENV[name] = inherit_rbconfig(name) if env_unset?(name)
end
def inherit_rbconfig(name)
ENV[name] = RbConfig::CONFIG[name] if env_unset?(name) && rbconfig_set?(name)
ENV[name] = RbConfig::CONFIG[name] || ''
end
def env_append(name, string)
ENV[name] ||= ''
ENV[name] += ' ' + string
end
inherit_rbconfig 'AR'
inherit_rbconfig 'CC'
inherit_rbconfig 'CXX'
inherit_rbconfig 'RANLIB'
inherit_rbconfig 'STRIP'
inherit_env_or_rbconfig 'AR'
inherit_env_or_rbconfig 'CC'
inherit_env_or_rbconfig 'CXX'
inherit_env_or_rbconfig 'RANLIB'
inherit_env_or_rbconfig 'STRIP'
inherit_rbconfig 'CPPFLAGS'
inherit_rbconfig 'LDFLAGS'

Loading…
Cancel
Save