Skip to content

Commit 79e19d2

Browse files
committed
Move runfiles from DefaultInfo into FilesToRun
ctx.actions.run(tools=[...]) may take instances of FilesToRun. FilesToRun should therefore be complete enough that it describes an executable and all of its runtime dependencies. We should therefore place the runfiles not in DefaultInfo, but in FilesToRun.
1 parent 6e261e4 commit 79e19d2

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

starlark/builtins_core/exports.bzl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,29 +91,34 @@ _runfiles = runfiles
9191

9292
def _default_info_init(*, data_runfiles = None, default_runfiles = None, executable = None, files = None, runfiles = None):
9393
return {
94-
# Bazel documents DefaultInfo(data_runfiles, default_runfiles)
95-
# and DefaultInfo.data_runfiles as features to avoid. The
96-
# distinction between "data" and "default" runfiles is only
97-
# maintained for legacy reasons. Keep this implementation simple
98-
# by only storing a single copy of the runfiles.
99-
"default_runfiles": (runfiles or _runfiles()).merge_all(
100-
([default_runfiles] if default_runfiles else []) +
101-
([data_runfiles] if data_runfiles else []),
102-
),
10394
"files": files or depset(),
10495
"files_to_run": FilesToRunProvider(
96+
# According to the Bazel documentation, only the runfiles
97+
# parameter should be used. Calling DefaultInfo() with
98+
# data_runfiles or default_runfiles is deprecated. In this
99+
# implementation we simply merge all of the runfiles
100+
# together.
101+
_runfiles = (runfiles or _runfiles()).merge_all(
102+
([data_runfiles] if data_runfiles else []) +
103+
([default_runfiles] if default_runfiles else []),
104+
),
105105
executable = executable,
106106
repo_mapping_manifest = None,
107107
runfiles_manifest = None,
108108
),
109109
}
110110

111-
def _default_info_data_runfiles(r):
112-
return r.default_runfiles
111+
def _default_info_runfiles(r):
112+
# There is no point in storing the runfiles both in DefaultInfo and
113+
# the FilesToRunProvider contained within. Simply let
114+
# DefaultInfo.{data,default}_runfiles return the runfiles object
115+
# contained in the FilesToRunProvider.
116+
return r.files_to_run._runfiles
113117

114118
DefaultInfo, _DefaultInfoRaw = provider(
115119
computed_fields = {
116-
"data_runfiles": _default_info_data_runfiles,
120+
"data_runfiles": _default_info_runfiles,
121+
"default_runfiles": _default_info_runfiles,
117122
},
118123
init = _default_info_init,
119124
)

0 commit comments

Comments
 (0)