Skip to content

Commit 4854f57

Browse files
committed
wip
1 parent c4b8d81 commit 4854f57

1 file changed

Lines changed: 34 additions & 23 deletions

File tree

rust/private/rustc.bzl

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1547,29 +1547,40 @@ def rustc_compile_action(
15471547
for dep in getattr(ctx.attr, "deps", []):
15481548
runfiles_list.append(dep[DefaultInfo].default_runfiles)
15491549

1550-
runfiles_list.append(ctx.runfiles(files = ([] if experimental_use_coverage_metadata_files else coverage_runfiles)))
1551-
1552-
dynamic_libraries = [
1553-
library_to_link.dynamic_library
1554-
for dep in getattr(ctx.attr, "deps", [])
1555-
if CcInfo in dep
1556-
for linker_input in dep[CcInfo].linking_context.linker_inputs.to_list()
1557-
for library_to_link in linker_input.libraries
1558-
if _is_dylib(library_to_link)
1559-
]
1560-
runfiles_list.append(ctx.runfiles(files = dynamic_libraries))
1561-
1562-
runfiles = ctx.runfiles().merge_all(runfiles_list)
1550+
if not experimental_use_coverage_metadata_files:
1551+
runfiles_list.append(ctx.runfiles(files = coverage_runfiles))
15631552

1564-
default_runfiles = ctx.runfiles(files = _get_dynamic_libraries_for_runtime(linking_context, True))
1565-
default_runfiles = runfiles.merge(default_runfiles)
1553+
common_runfiles = ctx.runfiles().merge_all(runfiles_list)
15661554

1567-
data_runfiles = ctx.runfiles(files = _get_dynamic_libraries_for_runtime(linking_context, False))
1568-
data_runfiles = runfiles.merge(data_runfiles)
1555+
dynamic_libraries = ctx.runfiles(
1556+
files = _get_dynamic_libraries_for_runtime(linking_context, True),
1557+
)
1558+
library_default_runfiles = None
1559+
library_data_runfiles = None
1560+
binary_runfiles = None
1561+
if crate_info.type in ["rlib", "lib", "dylib"]:
1562+
# Default runfiles for library include dynamic libraries that don't have
1563+
# a static library equivalent.
1564+
library_default_runfiles = common_runfiles.merge(dynamic_libraries)
1565+
1566+
data_runfiles = ctx.runfiles(
1567+
files = _get_dynamic_libraries_for_runtime(linking_context, False),
1568+
)
15691569

1570-
if getattr(ctx.attr, "crate", None):
1571-
runfiles = runfiles.merge(ctx.attr.crate[DefaultInfo].default_runfiles)
1572-
runfiles = runfiles.merge(ctx.attr.crate[DefaultInfo].data_runfiles)
1570+
# Data runfiles for library include dynamic libraries even when they have
1571+
# a static library equivalent.
1572+
library_data_runfiles = common_runfiles.merge(data_runfiles)
1573+
else:
1574+
binary_runfiles = common_runfiles.merge(dynamic_libraries)
1575+
1576+
if getattr(ctx.attr, "crate", None):
1577+
crate_default_info = ctx.attr.crate[DefaultInfo]
1578+
binary_runfiles = binary_runfiles.merge_all(
1579+
[
1580+
crate_default_info.default_runfiles,
1581+
crate_default_info.data_runfiles,
1582+
],
1583+
)
15731584

15741585
# TODO: Remove after some resolution to
15751586
# https://github.com/bazelbuild/rules_rust/issues/771
@@ -1592,9 +1603,9 @@ def rustc_compile_action(
15921603
DefaultInfo(
15931604
# nb. This field is required for cc_library to depend on our output.
15941605
files = depset(outputs),
1595-
default_runfiles = default_runfiles if crate_info.type not in ["bin", "staticlib", "cdylib"] else None,
1596-
data_runfiles = data_runfiles if crate_info.type not in ["bin", "staticlib", "cdylib"] else None,
1597-
runfiles = runfiles if crate_info.type in ["bin", "staticlib", "cdylib"] else None,
1606+
default_runfiles = library_default_runfiles,
1607+
data_runfiles = library_data_runfiles,
1608+
runfiles = binary_runfiles,
15981609
executable = executable,
15991610
),
16001611
] + cc_info

0 commit comments

Comments
 (0)