Closed davebelais closed 5 days ago
Hi @davebelais thank you very much for reporting this.
Before we dive into investigation, could you please review the reproducer a little bit? If I understand the text of PEP 517 correctly the value passed to the build_wheel
hook must be the same as returned by prepare_metadata_for_build_wheel
, not the one passed in. So probably something like this:
import tempfile from setuptools
import build_meta
metadata_directory: str = tempfile.mkdtemp()
dist_directory: str = tempfile.mkdtemp()
build_meta.build_sdist(dist_directory)
metadata_directory = build_meta.prepare_metadata_for_build_wheel(metadata_directory)
build_meta.build_wheel(
dist_directory,
metadata_directory=metadata_directory, # UPDATE: this is also wrong see below.
)
Could you please check if the error still happens after reviewing the reproducer in the light of this nuance of PEP 517?
UPDATE: See below.
Actually, PEP 517 says:
build_wheel ... it should provide the path to the created
.dist-info
directory as themetadata_directory
argument.prepare_metadata_for_build_wheel Must create a .dist-info directory containing wheel metadata inside the specified metadata_directory (i.e., creates a directory like
{metadata_directory}/{package}-{version}.dist-info/
) ... This must return the basename (not the full path) of the.dist-info
directory it creates, as a unicode string.
So I was also wrong, probably something like the following:
import os.path
import tempfile
from setuptools import build_meta
metadata_directory: str = tempfile.mkdtemp()
dist_directory: str = tempfile.mkdtemp()
build_meta.build_sdist(dist_directory)
dist_info = build_meta.prepare_metadata_for_build_wheel(metadata_directory)
build_meta.build_wheel(
dist_directory, metadata_directory=os.path.join(metadata_directory, dist_info)
)
Could you please try something like that and let me know if the problem still persists?
Thanks @abravalheri ! Yes, that works as expected. I should have thought to lookup the PEP :-).
setuptools version
75.2.0
Python version
3.8
OS
macOS
Additional environment information
No response
Description
Something went awry with building wheel metadata in 75.2.0...
To replicate, use the following:
Here's the output from the last line above when run w/ v75.1.0 (I am using this repo):
Here's the output from the last line of the same script w/ v75.2.0:
...notice how the *.dist-info is double-nested when run in v75.2.0. This breaks the wheel, of course.
Expected behavior
I tried building a wheel using
setuptools.build_meta
.How to Reproduce
Output