Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setuptools "clean" command does not respect the deployement target #1012

Open
jcfr opened this issue Jul 16, 2023 · 0 comments
Open

setuptools "clean" command does not respect the deployement target #1012

jcfr opened this issue Jul 16, 2023 · 0 comments

Comments

@jcfr
Copy link
Contributor

jcfr commented Jul 16, 2023

This issue pertains to projects still using the legacy approach for building package. New project should integrate with scikit-build-core.

After building a project with setup.py bdist_wheel --plat-name macosx-11.0-arm64, a directory like _skbuild/macosx-11.0-arm64-3.9 is created.

Then, attempting to run setup.py clean is attempting to remove these folders:

'_skbuild/macosx-13.0-arm64-3.9/setuptools' # self.build_base
'_skbuild/macosx-13.0-arm64-3.9/setuptools/bdist.macosx-10.9-universal2' # self.bdist_base
'_skbuild/macosx-13.0-arm64-3.9/setuptools/lib' # self.build_lib
'_skbuild/macosx-13.0-arm64-3.9/setuptools/scripts-3.9' # self.build_scripts

instead of

macosx-11.0-arm64-3.9
@jcfr jcfr changed the title setuptools "clean" command does not support --plat-name setuptools "clean" command does not respect the deployement target Jul 17, 2023
jcfr added a commit to jcfr/ITKPythonPackage that referenced this issue Jul 17, 2023
This commit works around an issue with the "clean"
command (see [1]) that was not properly considering the current
MACOSX_DEPLOYMENT_TARGET env. variable.

It does by explicitly deleting the scikit-build directory
without relying on the "setup.py clean" command not respecting the
selected deployment target.

Considering that

1. the libraries installed while building the dependent itk-* wheels
   were accumulated in the install directory (e.g `_skbuild/macosx-X.Y-<arch>-3.9/setuptools/lib`)

2. the wheel is generated by systematically archiving the content of
   the install directory. The manifest files are used to select which
   file to "copy" into the install directory but these are not used
   by the function creating the wheel archive. See [2]

3. following scikit-build/scikit-build@ac9648bf4 (post 0.8.1), the
   platform name was properly considered on macOS *only* when
   building the wheel (using "setup.py build") but not when cleaning
   the build directory (using "setup.py clean")

... all the wheels depending on "itk-core" where unexpectedly large because
there are including the cumulative set of files from all the wheels built
beforehand.

[1] scikit-build/scikit-build#1012
[2] https://github.com/pypa/wheel/blob/0.40.0/src/wheel/wheelfile.py#L121-L141

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: Matt McCormick <matt.mccormick@kitware.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant