|
18 | 18 | "//dart/build_rules/common:path.bzl", |
19 | 19 | "filter_files", |
20 | 20 | ) |
| 21 | +load( |
| 22 | + "//dart/build_rules/common:_archive.bzl", |
| 23 | + "create_archive", |
| 24 | +) |
21 | 25 |
|
22 | 26 | def collect_dart_context(dart_ctx, transitive = True, include_self = True): |
23 | 27 | """Collect direct or transitive deps in a map, merging contexts as needed.""" |
@@ -83,8 +87,14 @@ def make_dart_context( |
83 | 87 | dart_srcs = filter_files(dart_filetypes, srcs) |
84 | 88 | data = set(data or []) |
85 | 89 | deps = deps or [] |
86 | | - transitive_srcs, transitive_dart_srcs, transitive_data, transitive_deps = ( |
87 | | - _collect_files(srcs, dart_srcs, data, deps)) |
| 90 | + archive_srcs = list(srcs + data) |
| 91 | + |
| 92 | + archive = None |
| 93 | + if archive_srcs: |
| 94 | + archive = create_archive(ctx, archive_srcs, ctx.label) |
| 95 | + |
| 96 | + transitive_srcs, transitive_dart_srcs, transitive_data, transitive_deps, transitive_archives = ( |
| 97 | + _collect_files(srcs, dart_srcs, data, deps, archive)) |
88 | 98 | strong_analysis = None |
89 | 99 | strong_summary = None |
90 | 100 | if enable_summaries: |
@@ -113,23 +123,29 @@ def make_dart_context( |
113 | 123 | transitive_dart_srcs = transitive_dart_srcs, |
114 | 124 | transitive_data = transitive_data, |
115 | 125 | transitive_deps = transitive_deps, |
| 126 | + archive=archive, |
| 127 | + transitive_archives=transitive_archives |
116 | 128 | ) |
117 | 129 |
|
118 | | -def _collect_files(srcs, dart_srcs, data, deps): |
| 130 | +def _collect_files(srcs, dart_srcs, data, deps, archive): |
119 | 131 | transitive_srcs = set() |
120 | 132 | transitive_dart_srcs = set() |
121 | 133 | transitive_data = set() |
122 | 134 | transitive_deps = {} |
| 135 | + transitive_archives = set() |
123 | 136 | for dep in deps: |
124 | 137 | transitive_srcs += dep.dart.transitive_srcs |
125 | 138 | transitive_dart_srcs += dep.dart.transitive_dart_srcs |
126 | 139 | transitive_data += dep.dart.transitive_data |
127 | 140 | transitive_deps += dep.dart.transitive_deps |
128 | 141 | transitive_deps["%s" % dep.dart.label] = dep |
| 142 | + transitive_archives += dep.dart.transitive_archives |
129 | 143 | transitive_srcs += srcs |
130 | 144 | transitive_dart_srcs += dart_srcs |
131 | 145 | transitive_data += data |
132 | | - return (transitive_srcs, transitive_dart_srcs, transitive_data, transitive_deps) |
| 146 | + if archive: |
| 147 | + transitive_archives += [archive] |
| 148 | + return (transitive_srcs, transitive_dart_srcs, transitive_data, transitive_deps, transitive_archives) |
133 | 149 |
|
134 | 150 | def _merge_dart_context(dart_ctx1, dart_ctx2): |
135 | 151 | """Merges dart contexts, or fails if they are incompatible.""" |
|
0 commit comments