tree 3f62e91bb05839b244ca8fbfbf4632840dbf7d47
parent 927a364cbcb696c897961794199f5c470f8047d0
author Paul Fariello <paul@fariello.eu> 1673010134 +0100
committer GitHub <noreply@github.com> 1673010134 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJjuBvWCRBK7hj4Ov3rIwAAwtsIAFzUTTbVISVZhev1S64Qo/rO
 i1tyNsk7IRjWGF8252sTL+6kRZYK2r4yd0C78PXgYCGfzKHEyVOcRAkiGgbUctN4
 gSwI6E8NVWiORCC1ORL0DriCUVMjJhHoCDJeEdqCV/QyfwoNkf5M+xs7uWsDB174
 E+hOG171/h3qxEEyqbwfzahD1NROKlgyqpjihD4f3JpqPEvNwnFuW+nh01+aFtCR
 fLjrMeKJODPaUE3HxU5u8mKlk9Od3mAGkqyI4OGMKHwgm1GAPFo51fcSCsJaOZzH
 P7Xsnz/6tjqVvLoSEdeyPHKjIaCFdoqe6W0WpDrZa3PO8ZNQOz0hkxOCsfoOYr0=
 =mXv5
 -----END PGP SIGNATURE-----
 

Fix data and compile_data for rust_doc (#1741)

Fixes #1572 

Main issue is that data_paths do not inherit from original crate when building rust_doc (and probably rust_test).
The main idea is to rely on crate_info which inherit correctly from original crate.

Issue with this draft is that compile_data is filed with File instead of Target when building 3rd party crate.

```
ERROR: <redacted>__base64-0.13.1/BUILD.bazel:34:13: in rust_library rule @<redacted>__base64-0.13.1//:base64:
Traceback (most recent call last):
	File "external/rules_rust/rust/private/rust.bzl", line 197, column 32, in _rust_library_impl
		return _rust_library_common(ctx, "rlib")
	File "external/rules_rust/rust/private/rust.bzl", line 292, column 32, in _rust_library_common
		return rustc_compile_action(
	File "external/rules_rust/rust/private/rustc.bzl", line 1093, column 46, in rustc_compile_action
		args, env_from_args = construct_arguments(
	File "external/rules_rust/rust/private/rustc.bzl", line 915, column 38, in construct_arguments
		expand_list_element_locations(
	File "external/rules_rust/rust/private/utils.bzl", line 311, column 53, in expand_list_element_locations
		return [_expand_location_for_build_script_runner(ctx, arg, data) for arg in args]
	File "external/rules_rust/rust/private/utils.bzl", line 255, column 30, in _expand_location_for_build_script_runner
		dedup_expand_location(ctx, env, data),
	File "external/rules_rust/rust/private/utils.bzl", line 230, column 31, in dedup_expand_location
		return ctx.expand_location(input, _deduplicate(targets))
Error in expand_location: at index 0 of targets, got element of type File, want Target
```