File tree Expand file tree Collapse file tree 2 files changed +40
-3
lines changed Expand file tree Collapse file tree 2 files changed +40
-3
lines changed Original file line number Diff line number Diff line change @@ -210,9 +210,21 @@ def build_extension(
210
210
211
211
# Execute cargo
212
212
try :
213
- output = subprocess .check_output (command , env = env , encoding = "latin-1" )
213
+ output = subprocess .check_output (
214
+ command , env = env , encoding = "latin-1" , stderr = subprocess .PIPE
215
+ )
214
216
except subprocess .CalledProcessError as e :
215
- raise CompileError (f"cargo failed with code: { e .returncode } \n { e .output } " )
217
+ raise CompileError (
218
+ f"""
219
+ cargo failed with code: { e .returncode }
220
+
221
+ Output captured from stderr:
222
+ { e .stderr }
223
+
224
+ Output captured from stdout:
225
+ { e .stdout }
226
+ """
227
+ )
216
228
217
229
except OSError :
218
230
raise DistutilsExecError (
Original file line number Diff line number Diff line change @@ -240,7 +240,32 @@ def _metadata(self) -> "_CargoMetadata":
240
240
]
241
241
if self .cargo_manifest_args :
242
242
metadata_command .extend (self .cargo_manifest_args )
243
- self ._cargo_metadata = json .loads (subprocess .check_output (metadata_command ))
243
+
244
+ try :
245
+ payload = subprocess .check_output (
246
+ metadata_command , encoding = "latin-1" , stderr = subprocess .PIPE
247
+ )
248
+ except subprocess .CalledProcessError as e :
249
+ raise DistutilsSetupError (
250
+ f"""
251
+ cargo metadata failed with code: { e .returncode }
252
+
253
+ Output captured from stderr:
254
+ { e .stderr }
255
+
256
+ Output captured from stdout:
257
+ { e .stdout }
258
+ """
259
+ )
260
+ try :
261
+ self ._cargo_metadata = json .loads (payload )
262
+ except json .decoder .JSONDecodeError as e :
263
+ raise DistutilsSetupError (
264
+ f"""
265
+ Error parsing output of cargo metadata as json; received:
266
+ { payload }
267
+ """
268
+ ) from e
244
269
return self ._cargo_metadata
245
270
246
271
def _uses_exec_binding (self ) -> bool :
You can’t perform that action at this time.
0 commit comments