1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- def _v8_disable_pointer_compression(settings, attr):
- return {
- "//:v8_enable_pointer_compression": "False",
- }
- v8_disable_pointer_compression = transition(
- implementation = _v8_disable_pointer_compression,
- inputs = [],
- outputs = ["//:v8_enable_pointer_compression"],
- )
- # The implementation of transition_rule: all this does is copy the
- # cc_binary's output to its own output and propagate its runfiles
- # and executable to use for "$ bazel run".
- #
- # This makes transition_rule as close to a pure wrapper of cc_binary
- # as possible.
- def _v8_binary_non_pointer_compression(ctx):
- binary = ctx.attr.binary[0]
- outfile = ctx.actions.declare_file(ctx.label.name)
- cc_binary_outfile = binary[DefaultInfo].files.to_list()[0]
- ctx.actions.run_shell(
- inputs = [cc_binary_outfile],
- outputs = [outfile],
- command = "cp %s %s" % (cc_binary_outfile.path, outfile.path),
- )
- return [
- DefaultInfo(
- executable = outfile,
- data_runfiles = binary[DefaultInfo].data_runfiles,
- ),
- ]
- # The purpose of this rule is to transition to a config where v8_target_cpu is
- # set to the appropriate architecture, which will remain in place through exec
- # transitions, so mksnapshot can for instance build on x64 but for arm64.
- v8_binary_non_pointer_compression = rule(
- implementation = _v8_binary_non_pointer_compression,
- attrs = {
- # This is the cc_binary whose deps will select() on that feature.
- # Note specificaly how it's configured with v8_target_cpu_transition, which
- # ensures that setting propagates down the graph.
- "binary": attr.label(cfg = v8_disable_pointer_compression),
- # This is a stock Bazel requirement for any rule that uses Starlark
- # transitions. It's okay to copy the below verbatim for all such rules.
- #
- # The purpose of this requirement is to give the ability to restrict
- # which packages can invoke these rules, since Starlark transitions
- # make much larger graphs possible that can have memory and performance
- # consequences for your build. The whitelist defaults to "everything".
- # But you can redefine it more strictly if you feel that's prudent.
- "_allowlist_function_transition": attr.label(
- default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
- ),
- },
- # Making this executable means it works with "$ bazel run".
- executable = True,
- )
|