Skip to content

Commit 230e3f1

Browse files
committed
Replace legacy struct providers with modern ones
Legacy struct providers have been deprecated by Bazel. Replacing them with modern providers, will make it possible to simplify and remove legacy handling from Bazel.
1 parent d033418 commit 230e3f1

File tree

3 files changed

+60
-75
lines changed

3 files changed

+60
-75
lines changed

tensorboard/defs/internal/html.bzl

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"""Rule for building the HTML binary."""
1616

1717
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_aspect")
18-
load("@io_bazel_rules_closure//closure/private:defs.bzl", "collect_js", "long_path", "unfurl") # buildifier: disable=bzl-visibility
18+
load("@io_bazel_rules_closure//closure/private:defs.bzl", "WebFilesInfo", "long_path", "unfurl") # buildifier: disable=bzl-visibility
1919

2020
def _tb_combine_html_impl(ctx):
2121
"""Compiles HTMLs into one HTML.
@@ -25,18 +25,11 @@ def _tb_combine_html_impl(ctx):
2525
JavaScript file when `js_path` is specified.
2626
"""
2727

28-
deps = unfurl(ctx.attr.deps, provider = "webfiles")
29-
manifests = depset(order = "postorder")
30-
files = depset()
31-
webpaths = depset()
32-
for dep in deps:
33-
manifests = depset(transitive = [manifests, dep.webfiles.manifests])
34-
webpaths = depset(transitive = [webpaths, dep.webfiles.webpaths])
35-
files = depset(transitive = [files, dep.data_runfiles.files])
28+
deps = unfurl(ctx.attr.deps, provider = WebFilesInfo).exports
29+
manifests = depset(order = "postorder", transitive = [dep[WebFilesInfo].manifests for dep in deps])
30+
webpaths = depset(transitive = [dep[WebFilesInfo].webpaths for dep in deps])
31+
files = depset(transitive = [dep.data_runfiles.files for dep in deps])
3632
webpaths = depset([ctx.attr.output_path], transitive = [webpaths])
37-
closure_js_library = collect_js(
38-
unfurl(ctx.attr.deps, provider = "closure_js_library"),
39-
)
4033

4134
# vulcanize
4235
ctx.actions.run(
@@ -91,23 +84,25 @@ def _tb_combine_html_impl(ctx):
9184
dep.data_runfiles.files,
9285
])
9386

94-
return struct(
95-
files = depset([ctx.outputs.html, ctx.outputs.js]),
96-
webfiles = struct(
87+
return [
88+
DefaultInfo(
89+
files = depset([ctx.outputs.html, ctx.outputs.js]),
90+
runfiles = ctx.runfiles(
91+
files = ctx.files.data + [
92+
manifest,
93+
ctx.outputs.html,
94+
ctx.outputs.js,
95+
],
96+
transitive_files = transitive_runfiles,
97+
),
98+
),
99+
WebFilesInfo(
97100
manifest = manifest,
98101
manifests = manifests,
99102
webpaths = webpaths,
100103
dummy = ctx.outputs.html,
101104
),
102-
runfiles = ctx.runfiles(
103-
files = ctx.files.data + [
104-
manifest,
105-
ctx.outputs.html,
106-
ctx.outputs.js,
107-
],
108-
transitive_files = transitive_runfiles,
109-
),
110-
)
105+
]
111106

112107
tb_combine_html = rule(
113108
implementation = _tb_combine_html_impl,

tensorboard/defs/web.bzl

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ load(
2222
"@io_bazel_rules_closure//closure/private:defs.bzl",
2323
"CLOSURE_LIBRARY_BASE_ATTR",
2424
"CLOSURE_WORKER_ATTR",
25+
"ClosureJsLibraryInfo",
26+
"WebFilesInfo",
2527
"collect_js",
2628
"collect_runfiles",
2729
"difference",
@@ -49,10 +51,8 @@ def _tf_web_library(ctx):
4951
fail("when \"*\" is suppressed no other items should be present")
5052

5153
# process what came before
52-
deps = unfurl(ctx.attr.deps, provider = "webfiles")
53-
webpaths = depset()
54-
for dep in deps:
55-
webpaths = depset(transitive = [webpaths, dep.webfiles.webpaths])
54+
deps = unfurl(ctx.attr.deps, provider = WebFilesInfo).exports
55+
webpaths = depset(transitive = [dep[WebFilesInfo].webpaths for dep in deps])
5656

5757
# process what comes now
5858
manifest_srcs = []
@@ -93,11 +93,11 @@ def _tf_web_library(ctx):
9393
# If a rule exists purely to export other build rules, then it's
9494
# appropriate for the exported sources to be included in the
9595
# development web server.
96-
export_deps = unfurl(ctx.attr.exports)
96+
export_deps = unfurl(ctx.attr.exports).exports
9797
devserver_manifests = depset(
9898
order = "postorder",
9999
transitive = (
100-
[manifests] + [dep.webfiles.manifests for dep in export_deps]
100+
[manifests] + [dep[WebFilesInfo].manifests for dep in export_deps]
101101
),
102102
)
103103
params = struct(
@@ -125,38 +125,38 @@ def _tf_web_library(ctx):
125125
# rule from rules_closure: because `tf_web_library`s may depend on
126126
# either other `tf_web_library`s or base `web_library`s, the
127127
# interfaces ~must be the same.
128-
#
129-
# buildozer: disable=rule-impl-return
130-
return struct(
131-
files = depset(web_srcs + [dummy]),
132-
exports = unfurl(ctx.attr.exports),
133-
webfiles = struct(
128+
return [
129+
WebFilesInfo(
134130
manifest = manifest,
135131
manifests = manifests,
136132
webpaths = webpaths,
137133
dummy = dummy,
138134
),
139-
closure_js_library = collect_js(
140-
unfurl(ctx.attr.deps, provider = "closure_js_library"),
135+
unfurl(ctx.attr.exports),
136+
collect_js(
137+
unfurl(ctx.attr.deps, provider = ClosureJsLibraryInfo).exports,
141138
ctx.files._closure_library_base,
142139
),
143-
runfiles = ctx.runfiles(
144-
files = (ctx.files.srcs +
145-
ctx.files.data +
146-
ctx.files._closure_library_base + [
147-
manifest,
148-
params_file,
149-
ctx.outputs.executable,
150-
dummy,
151-
]),
152-
transitive_files = depset(transitive = [
153-
collect_runfiles([ctx.attr._WebfilesServer]),
154-
collect_runfiles(deps),
155-
collect_runfiles(export_deps),
156-
collect_runfiles(ctx.attr.data),
157-
]),
140+
DefaultInfo(
141+
files = depset(web_srcs + [dummy]),
142+
runfiles = ctx.runfiles(
143+
files = (ctx.files.srcs +
144+
ctx.files.data +
145+
ctx.files._closure_library_base + [
146+
manifest,
147+
params_file,
148+
ctx.outputs.executable,
149+
dummy,
150+
]),
151+
transitive_files = depset(transitive = [
152+
collect_runfiles([ctx.attr._WebfilesServer]),
153+
collect_runfiles(deps),
154+
collect_runfiles(export_deps),
155+
collect_runfiles(ctx.attr.data),
156+
]),
157+
),
158158
),
159-
)
159+
]
160160

161161
def _make_manifest(ctx, src_list):
162162
manifest = _new_file(ctx, "-webfiles.pbtxt")
@@ -171,9 +171,7 @@ def _make_manifest(ctx, src_list):
171171

172172
def _run_webfiles_validator(ctx, srcs, deps, manifest):
173173
dummy = _new_file(ctx, "-webfiles.ignoreme")
174-
manifests = depset(order = "postorder")
175-
for dep in deps:
176-
manifests = depset(transitive = [manifests, dep.webfiles.manifests])
174+
manifests = depset(order = "postorder", transitive = [dep[WebFilesInfo].manifests for dep in deps])
177175
if srcs:
178176
args = [
179177
"WebfilesValidator",
@@ -188,17 +186,13 @@ def _run_webfiles_validator(ctx, srcs, deps, manifest):
188186
args.append(category)
189187
inputs = [] # list of depsets
190188
inputs.append(depset([manifest] + srcs))
191-
direct_manifests = depset()
189+
direct_manifests = depset([dep[WebFilesInfo].manifest for dep in deps])
192190
for dep in deps:
193-
inputs.append(depset([dep.webfiles.dummy]))
191+
inputs.append(depset([dep[WebFilesInfo].dummy]))
194192
inputs.append(dep.files)
195-
direct_manifests = depset(
196-
[dep.webfiles.manifest],
197-
transitive = [direct_manifests],
198-
)
199-
inputs.append(depset([dep.webfiles.manifest]))
193+
inputs.append(depset([dep[WebFilesInfo].manifest]))
200194
args.append("--direct_dep")
201-
args.append(dep.webfiles.manifest.path)
195+
args.append(dep[WebFilesInfo].manifest.path)
202196
for man in difference(manifests, direct_manifests):
203197
inputs.append(depset([man]))
204198
args.append("--transitive_dep")

tensorboard/defs/zipper.bzl

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,10 @@
1717
load("@io_bazel_rules_closure//closure/private:defs.bzl", "unfurl")
1818

1919
def _tensorboard_zip_file(ctx):
20-
deps = unfurl(ctx.attr.deps, provider = "webfiles")
21-
manifests = depset(order = "postorder")
22-
files = depset()
23-
webpaths = depset()
24-
for dep in deps:
25-
manifests = depset(transitive = [manifests, dep.webfiles.manifests])
26-
webpaths = depset(transitive = [webpaths, dep.webfiles.webpaths])
27-
files = depset(transitive = [files, dep.data_runfiles.files])
20+
deps = unfurl(ctx.attr.deps, provider = WebFilesInfo).exports
21+
manifests = depset(order = "postorder", transitive = [dep[WebFilesInfo].manifests for dep in deps])
22+
webpaths = depset(transitive = [dep[WebFilesInfo].webpaths for dep in deps])
23+
files = depset(transitive = [dep.data_runfiles.files for dep in deps])
2824
ctx.actions.run(
2925
mnemonic = "Zipper",
3026
inputs = depset(transitive = [manifests, files]).to_list(),
@@ -40,7 +36,7 @@ def _tensorboard_zip_file(ctx):
4036
transitive_runfiles,
4137
dep.data_runfiles.files,
4238
])
43-
return struct(
39+
return DefaultInfo(
4440
files = depset([ctx.outputs.zip]),
4541
runfiles = ctx.runfiles(
4642
files = ctx.files.data + [ctx.outputs.zip],
@@ -52,7 +48,7 @@ tensorboard_zip_file = rule(
5248
implementation = _tensorboard_zip_file,
5349
attrs = {
5450
"data": attr.label_list(allow_files = True),
55-
"deps": attr.label_list(providers = ["webfiles"], mandatory = True),
51+
"deps": attr.label_list(providers = [WebFilesInfo], mandatory = True),
5652
"_Zipper": attr.label(
5753
default = Label("//tensorboard/java/org/tensorflow/tensorboard/vulcanize:Zipper"),
5854
executable = True,

0 commit comments

Comments
 (0)