Skip to content

Commit b95a61a

Browse files
Googlercopybara-github
Googler
authored andcommitted
Substitute cc_internal.strip with cc_helper.create_strip_action.
* Move create_strip_action implementation from cc_binary to cc_helper. * Switch cc_internal.strip implementations to cc_helper.create_strip_action in java_binary, go_binary and go_test. * Delete cc_internal.strip. PiperOrigin-RevId: 436161369
1 parent 00d74ff commit b95a61a

File tree

3 files changed

+43
-68
lines changed

3 files changed

+43
-68
lines changed

src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java

-26
Original file line numberDiff line numberDiff line change
@@ -91,32 +91,6 @@ public CcStarlarkApiInfo createCcProvider(CcInfo ccInfo) {
9191
return new CcStarlarkApiInfo(ccInfo);
9292
}
9393

94-
@StarlarkMethod(
95-
name = "strip",
96-
documented = false,
97-
parameters = {
98-
@Param(name = "ctx", named = true, positional = false),
99-
@Param(name = "toolchain", named = true, positional = false),
100-
@Param(name = "input", named = true, positional = false),
101-
@Param(name = "output", named = true, positional = false),
102-
@Param(name = "feature_configuration", named = true, positional = false),
103-
})
104-
public void createStripAction(
105-
StarlarkRuleContext ctx,
106-
CcToolchainProvider toolchain,
107-
Artifact input,
108-
Artifact output,
109-
FeatureConfigurationForStarlark featureConfig)
110-
throws EvalException, RuleErrorException {
111-
CppHelper.createStripAction(
112-
ctx.getRuleContext(),
113-
toolchain,
114-
ctx.getRuleContext().getFragment(CppConfiguration.class),
115-
input,
116-
output,
117-
featureConfig.getFeatureConfiguration());
118-
}
119-
12094
@StarlarkMethod(
12195
name = "init_make_variables",
12296
documented = false,

src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl

+1-42
Original file line numberDiff line numberDiff line change
@@ -155,47 +155,6 @@ def _create_debug_packager_actions(ctx, cc_toolchain, dwp_output, dwo_files):
155155
outputs = packager["outputs"],
156156
)
157157

158-
def _create_strip_action(ctx, cc_toolchain, cpp_config, input, output, feature_configuration):
159-
if cc_common.is_enabled(feature_configuration = feature_configuration, feature_name = "no_stripping"):
160-
ctx.actions.symlink(
161-
output = output,
162-
target_file = input,
163-
progress_message = "Symlinking original binary as stripped binary",
164-
)
165-
return
166-
167-
if not cc_common.action_is_enabled(feature_configuration = feature_configuration, action_name = "strip"):
168-
fail("Expected action_config for 'strip' to be configured.")
169-
170-
variables = cc_common.create_compile_variables(
171-
cc_toolchain = cc_toolchain,
172-
feature_configuration = feature_configuration,
173-
output_file = output.path,
174-
input_file = input.path,
175-
strip_opts = cpp_config.strip_opts(),
176-
)
177-
command_line = cc_common.get_memory_inefficient_command_line(
178-
feature_configuration = feature_configuration,
179-
action_name = "strip",
180-
variables = variables,
181-
)
182-
execution_info = {}
183-
for execution_requirement in cc_common.get_tool_requirement_for_action(feature_configuration = feature_configuration, action_name = "strip"):
184-
execution_info[execution_requirement] = ""
185-
ctx.actions.run(
186-
inputs = depset(
187-
direct = [input],
188-
transitive = [cc_toolchain.all_files],
189-
),
190-
outputs = [output],
191-
use_default_shell_env = True,
192-
executable = cc_common.get_tool_for_action(feature_configuration = feature_configuration, action_name = "strip"),
193-
execution_requirements = execution_info,
194-
progress_message = "Stripping {} for {}".format(output.short_path, ctx.label),
195-
mnemonic = "CcStrip",
196-
arguments = command_line,
197-
)
198-
199158
def _is_stamping_enabled(ctx):
200159
if ctx.configuration.is_tool_configuration():
201160
return 0
@@ -858,7 +817,7 @@ def cc_binary_impl(ctx, additional_linkopts):
858817

859818
# Create the stripped binary but don't add it to filesToBuild; it's only built when requested.
860819
stripped_file = ctx.outputs.stripped_binary
861-
_create_strip_action(ctx, cc_toolchain, cpp_config, binary, stripped_file, feature_configuration)
820+
cc_helper.create_strip_action(ctx, cc_toolchain, cpp_config, binary, stripped_file, feature_configuration)
862821
dwo_files = _collect_transitive_dwo_artifacts(
863822
cc_compilation_outputs,
864823
cc_helper.merge_cc_debug_contexts(cc_compilation_outputs, _get_providers(ctx, cpp_config)),

src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl

+42
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,47 @@ def _check_srcs_extensions(ctx, allowed_src_files, rule_name, allow_versioned_sh
6363
if not at_least_one_good:
6464
fail("'{}' does not produce any {} srcs files".format(str(src.label), rule_name), attr = "srcs")
6565

66+
def _create_strip_action(ctx, cc_toolchain, cpp_config, input, output, feature_configuration):
67+
if cc_common.is_enabled(feature_configuration = feature_configuration, feature_name = "no_stripping"):
68+
ctx.actions.symlink(
69+
output = output,
70+
target_file = input,
71+
progress_message = "Symlinking original binary as stripped binary",
72+
)
73+
return
74+
75+
if not cc_common.action_is_enabled(feature_configuration = feature_configuration, action_name = "strip"):
76+
fail("Expected action_config for 'strip' to be configured.")
77+
78+
variables = cc_common.create_compile_variables(
79+
cc_toolchain = cc_toolchain,
80+
feature_configuration = feature_configuration,
81+
output_file = output.path,
82+
input_file = input.path,
83+
strip_opts = cpp_config.strip_opts(),
84+
)
85+
command_line = cc_common.get_memory_inefficient_command_line(
86+
feature_configuration = feature_configuration,
87+
action_name = "strip",
88+
variables = variables,
89+
)
90+
execution_info = {}
91+
for execution_requirement in cc_common.get_tool_requirement_for_action(feature_configuration = feature_configuration, action_name = "strip"):
92+
execution_info[execution_requirement] = ""
93+
ctx.actions.run(
94+
inputs = depset(
95+
direct = [input],
96+
transitive = [cc_toolchain.all_files],
97+
),
98+
outputs = [output],
99+
use_default_shell_env = True,
100+
executable = cc_common.get_tool_for_action(feature_configuration = feature_configuration, action_name = "strip"),
101+
execution_requirements = execution_info,
102+
progress_message = "Stripping {} for {}".format(output.short_path, ctx.label),
103+
mnemonic = "CcStrip",
104+
arguments = command_line,
105+
)
106+
66107
def _merge_cc_debug_contexts(compilation_outputs, dep_cc_infos):
67108
debug_context = cc_common.create_debug_context(compilation_outputs)
68109
debug_contexts = []
@@ -561,4 +602,5 @@ cc_helper = struct(
561602
get_linked_artifact = _get_linked_artifact,
562603
collect_compilation_prerequisites = _collect_compilation_prerequisites,
563604
collect_native_cc_libraries = _collect_native_cc_libraries,
605+
create_strip_action = _create_strip_action,
564606
)

0 commit comments

Comments
 (0)