66from pants .backend .python .target_types import PythonSources
77from pants .core .util_rules .determine_source_files import AllSourceFilesRequest , SourceFiles
88from pants .core .util_rules .external_tool import DownloadedExternalTool , ExternalToolRequest
9- from pants .core .util_rules .strip_source_roots import representative_path_from_address
9+ from pants .core .util_rules .strip_source_roots import StrippedSourceFiles
1010from pants .engine .addresses import Addresses
1111from pants .engine .fs import AddPrefix , Digest , MergeDigests , RemovePrefix , Snapshot
1212from pants .engine .platform import Platform
@@ -52,33 +52,36 @@ async def generate_python_from_protobuf(
5252 AllSourceFilesRequest (
5353 (tgt .get (Sources ) for tgt in transitive_targets .closure ),
5454 for_sources_types = (ProtobufSources ,),
55- # NB: By stripping the source roots, we avoid having to set the value `--proto_path`
56- # for Protobuf imports to be discoverable.
57- strip_source_roots = True ,
5855 ),
5956 )
60- stripped_target_sources_request = Get (
61- SourceFiles ,
62- AllSourceFilesRequest ([request .protocol_target [ProtobufSources ]], strip_source_roots = True ),
57+ unstripped_target_sources_request = Get (
58+ SourceFiles , AllSourceFilesRequest ([request .protocol_target [ProtobufSources ]]),
6359 )
6460
6561 (
6662 downloaded_protoc_binary ,
6763 create_output_dir_result ,
68- all_sources ,
69- stripped_target_sources ,
64+ all_sources_unstripped ,
65+ target_sources_unstripped ,
7066 ) = await MultiGet (
7167 download_protoc_request ,
7268 create_output_dir_request ,
7369 all_sources_request ,
74- stripped_target_sources_request ,
70+ unstripped_target_sources_request ,
71+ )
72+
73+ # NB: By stripping the source roots, we avoid having to set the value `--proto_path`
74+ # for Protobuf imports to be discoverable.
75+ all_sources_stripped , target_sources_stripped = await MultiGet (
76+ Get (StrippedSourceFiles , SourceFiles , all_sources_unstripped ),
77+ Get (StrippedSourceFiles , SourceFiles , target_sources_unstripped ),
7578 )
7679
7780 input_digest = await Get (
7881 Digest ,
7982 MergeDigests (
8083 (
81- all_sources .snapshot .digest ,
84+ all_sources_stripped .snapshot .digest ,
8285 downloaded_protoc_binary .digest ,
8386 create_output_dir_result .output_digest ,
8487 )
@@ -92,7 +95,7 @@ async def generate_python_from_protobuf(
9295 downloaded_protoc_binary .exe ,
9396 "--python_out" ,
9497 output_dir ,
95- * stripped_target_sources .snapshot .files ,
98+ * target_sources_stripped .snapshot .files ,
9699 ),
97100 input_digest = input_digest ,
98101 description = f"Generating Python sources from { request .protocol_target .address } ." ,
@@ -105,13 +108,7 @@ async def generate_python_from_protobuf(
105108 # including adding back the original source root.
106109 normalized_digest , source_root = await MultiGet (
107110 Get (Digest , RemovePrefix (result .output_digest , output_dir )),
108- Get (
109- SourceRoot ,
110- SourceRootRequest ,
111- SourceRootRequest .for_file (
112- representative_path_from_address (request .protocol_target .address )
113- ),
114- ),
111+ Get (SourceRoot , SourceRootRequest , SourceRootRequest .for_target (request .protocol_target )),
115112 )
116113 source_root_restored = (
117114 await Get (Snapshot , AddPrefix (normalized_digest , source_root .path ))
0 commit comments