@@ -149,7 +149,7 @@ def _rust_library_common(ctx, crate_type):
149
149
crate_root = getattr (ctx .file , "crate_root" , None )
150
150
if not crate_root :
151
151
crate_root = crate_root_src (ctx .attr .name , ctx .attr .crate_name , ctx .files .srcs , crate_type )
152
- srcs , crate_root = transform_sources (ctx , ctx .files .srcs , crate_root )
152
+ srcs , compile_data , crate_root = transform_sources (ctx , ctx .files .srcs , ctx . files . compile_data , crate_root )
153
153
154
154
# Determine unique hash for this rlib.
155
155
# Note that we don't include a hash for `cdylib` and `staticlib` since they are meant to be consumed externally
@@ -202,7 +202,7 @@ def _rust_library_common(ctx, crate_type):
202
202
rustc_env_files = ctx .files .rustc_env_files ,
203
203
is_test = False ,
204
204
data = depset (ctx .files .data ),
205
- compile_data = depset (ctx . files . compile_data ),
205
+ compile_data = depset (compile_data ),
206
206
compile_data_targets = depset (ctx .attr .compile_data ),
207
207
owner = ctx .label ,
208
208
),
@@ -233,7 +233,7 @@ def _rust_binary_impl(ctx):
233
233
crate_root = getattr (ctx .file , "crate_root" , None )
234
234
if not crate_root :
235
235
crate_root = crate_root_src (ctx .attr .name , ctx .attr .crate_name , ctx .files .srcs , ctx .attr .crate_type )
236
- srcs , crate_root = transform_sources (ctx , ctx .files .srcs , crate_root )
236
+ srcs , compile_data , crate_root = transform_sources (ctx , ctx .files .srcs , ctx . files . compile_data , crate_root )
237
237
238
238
providers = rustc_compile_action (
239
239
ctx = ctx ,
@@ -254,7 +254,7 @@ def _rust_binary_impl(ctx):
254
254
rustc_env_files = ctx .files .rustc_env_files ,
255
255
is_test = False ,
256
256
data = depset (ctx .files .data ),
257
- compile_data = depset (ctx . files . compile_data ),
257
+ compile_data = depset (compile_data ),
258
258
compile_data_targets = depset (ctx .attr .compile_data ),
259
259
owner = ctx .label ,
260
260
),
@@ -330,13 +330,11 @@ def _rust_test_impl(ctx):
330
330
),
331
331
)
332
332
333
- srcs , crate_root = transform_sources (ctx , ctx .files .srcs , getattr (ctx .file , "crate_root" , None ))
333
+ # Need to consider all src files together when transforming
334
+ srcs = depset (ctx .files .srcs , transitive = [crate .srcs ]).to_list ()
335
+ compile_data = depset (ctx .files .compile_data , transitive = [crate .compile_data ]).to_list ()
336
+ srcs , compile_data , crate_root = transform_sources (ctx , srcs , compile_data , getattr (ctx .file , "crate_root" , None ))
334
337
335
- # Optionally join compile data
336
- if crate .compile_data :
337
- compile_data = depset (ctx .files .compile_data , transitive = [crate .compile_data ])
338
- else :
339
- compile_data = depset (ctx .files .compile_data )
340
338
if crate .compile_data_targets :
341
339
compile_data_targets = depset (ctx .attr .compile_data , transitive = [crate .compile_data_targets ])
342
340
else :
@@ -360,7 +358,7 @@ def _rust_test_impl(ctx):
360
358
name = crate_name ,
361
359
type = crate_type ,
362
360
root = crate .root ,
363
- srcs = depset (srcs , transitive = [ crate . srcs ] ),
361
+ srcs = depset (srcs ),
364
362
deps = depset (deps , transitive = [crate .deps ]),
365
363
proc_macro_deps = depset (proc_macro_deps , transitive = [crate .proc_macro_deps ]),
366
364
aliases = aliases ,
@@ -370,7 +368,7 @@ def _rust_test_impl(ctx):
370
368
rustc_env = rustc_env ,
371
369
rustc_env_files = rustc_env_files ,
372
370
is_test = True ,
373
- compile_data = compile_data ,
371
+ compile_data = depset ( compile_data ) ,
374
372
compile_data_targets = compile_data_targets ,
375
373
wrapped_crate_type = crate .type ,
376
374
owner = ctx .label ,
@@ -381,7 +379,7 @@ def _rust_test_impl(ctx):
381
379
if not crate_root :
382
380
crate_root_type = "lib" if ctx .attr .use_libtest_harness else "bin"
383
381
crate_root = crate_root_src (ctx .attr .name , ctx .attr .crate_name , ctx .files .srcs , crate_root_type )
384
- srcs , crate_root = transform_sources (ctx , ctx .files .srcs , crate_root )
382
+ srcs , compile_data , crate_root = transform_sources (ctx , ctx .files .srcs , ctx . files . compile_data , crate_root )
385
383
386
384
if toolchain ._incompatible_change_rust_test_compilation_output_directory :
387
385
output = ctx .actions .declare_file (
@@ -420,7 +418,7 @@ def _rust_test_impl(ctx):
420
418
rustc_env = rustc_env ,
421
419
rustc_env_files = ctx .files .rustc_env_files ,
422
420
is_test = True ,
423
- compile_data = depset (ctx . files . compile_data ),
421
+ compile_data = depset (compile_data ),
424
422
compile_data_targets = depset (ctx .attr .compile_data ),
425
423
owner = ctx .label ,
426
424
)
0 commit comments