Skip to content

Commit faa610d

Browse files
authored
Fix finding cargo artifacts when filenames are empty (#521)
1 parent a766bd5 commit faa610d

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

setuptools_rust/build.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,15 @@ def _find_cargo_artifacts(
758758
... kinds={"rlib"},
759759
... )
760760
['/file/two/baz.rlib']
761+
>>> _find_cargo_artifacts(
762+
... [
763+
... '{"some_irrelevant_message": []}',
764+
... '{"reason": "compiler-artifact", "package_id": "some_id", "target": {"kind": ["bin"]}, "filenames":[], "executable": "/target/debug/some_exe"}'
765+
... ],
766+
... package_id="some_id",
767+
... kinds={"bin"},
768+
... )
769+
['/target/debug/some_exe']
761770
"""
762771
artifacts = []
763772
for message in cargo_messages:
@@ -769,9 +778,12 @@ def _find_cargo_artifacts(
769778
parsed.get("reason") == "compiler-artifact"
770779
and parsed.get("package_id") == package_id
771780
):
772-
for artifact_kind, filename in zip(
773-
parsed["target"]["kind"], parsed["filenames"]
774-
):
781+
filenames = parsed["filenames"]
782+
if not filenames and parsed.get("executable"):
783+
# Use parsed["executable"] as the filename when filenames are empty
784+
# See https://github.com/PyO3/maturin/issues/2370
785+
filenames = [parsed["executable"]]
786+
for artifact_kind, filename in zip(parsed["target"]["kind"], filenames):
775787
if artifact_kind in kinds:
776788
artifacts.append(filename)
777789
return artifacts

0 commit comments

Comments
 (0)