[rubygems/rubygems] Removed ccache or sccache from args of Rust builder
``` " = note: some arguments are omitted. use `--verbose` to show all linker arguments\n" + " = note: error: unexpected argument '-W' found\n" + " \n" + " tip: to pass '-W' as a value, use '-- -W'\n" + " \n" + " Usage: sccache [OPTIONS] <--dist-auth|--debug-preprocessor-cache|--dist-status|--show-stats|--show-adv-stats|--start-server|--stop-server|--zero-stats|--package-toolchain <EXE> <OUT>|CMD>\n" + " \n" + " For more information, try '--help'.\n" + " \n" + ``` https://github.com/rubygems/rubygems/commit/45e688ae62
This commit is contained in:
parent
4585ccd90f
commit
166ff187bd
@ -158,6 +158,10 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
||||
# mkmf work properly.
|
||||
def linker_args
|
||||
cc_flag = self.class.shellsplit(makefile_config("CC"))
|
||||
# Avoid to ccache like tool from Rust build
|
||||
# see https://github.com/rubygems/rubygems/pull/8521#issuecomment-2689854359
|
||||
# ex. CC="ccache gcc" or CC="sccache clang --any --args"
|
||||
cc_flag.shift if cc_flag.size >= 2 && !cc_flag[1].start_with?("-")
|
||||
linker = cc_flag.shift
|
||||
link_args = cc_flag.flat_map {|a| ["-C", "link-arg=#{a}"] }
|
||||
|
||||
|
@ -141,6 +141,58 @@ class TestGemExtCargoBuilder < Gem::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_linker_args
|
||||
orig_cc = RbConfig::MAKEFILE_CONFIG["CC"]
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = "clang"
|
||||
|
||||
builder = Gem::Ext::CargoBuilder.new
|
||||
args = builder.send(:linker_args)
|
||||
|
||||
assert args[1], "linker=clang"
|
||||
assert_nil args[2]
|
||||
ensure
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = orig_cc
|
||||
end
|
||||
|
||||
def test_linker_args_with_options
|
||||
orig_cc = RbConfig::MAKEFILE_CONFIG["CC"]
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = "gcc -Wl,--no-undefined"
|
||||
|
||||
builder = Gem::Ext::CargoBuilder.new
|
||||
args = builder.send(:linker_args)
|
||||
|
||||
assert args[1], "linker=clang"
|
||||
assert args[3], "link-args=-Wl,--no-undefined"
|
||||
ensure
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = orig_cc
|
||||
end
|
||||
|
||||
def test_linker_args_with_cachetools
|
||||
orig_cc = RbConfig::MAKEFILE_CONFIG["CC"]
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = "sccache clang"
|
||||
|
||||
builder = Gem::Ext::CargoBuilder.new
|
||||
args = builder.send(:linker_args)
|
||||
|
||||
assert args[1], "linker=clang"
|
||||
assert_nil args[2]
|
||||
ensure
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = orig_cc
|
||||
end
|
||||
|
||||
def test_linker_args_with_cachetools_and_options
|
||||
orig_cc = RbConfig::MAKEFILE_CONFIG["CC"]
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = "ccache gcc -Wl,--no-undefined"
|
||||
|
||||
builder = Gem::Ext::CargoBuilder.new
|
||||
args = builder.send(:linker_args)
|
||||
|
||||
assert args[1], "linker=clang"
|
||||
assert args[3], "link-args=-Wl,--no-undefined"
|
||||
ensure
|
||||
RbConfig::MAKEFILE_CONFIG["CC"] = orig_cc
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def skip_unsupported_platforms!
|
||||
|
Loading…
x
Reference in New Issue
Block a user