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

deprecation of distutilsupstream for python >= 3.12 #230

Open
HinTak opened this issue Jan 29, 2024 · 8 comments
Open

deprecation of distutilsupstream for python >= 3.12 #230

HinTak opened this issue Jan 29, 2024 · 8 comments

Comments

@HinTak
Copy link
Collaborator

HinTak commented Jan 29, 2024

Been getting this warning when I do local builds (python setup.py ...) for a while now:

skia-python/setup.py:8: DeprecationWarning: 

  `numpy.distutils` is deprecated since NumPy 1.23.0, as a result
  of the deprecation of `distutils` itself. It will be removed for
  Python >= 3.12. For older Python versions it will remain present.
  It is recommended to use `setuptools < 60.0` for those Python versions.
  For more details, see:
    https://numpy.org/devdocs/reference/distutils_status_migration.html 


  from numpy.distutils.ccompiler import CCompiler_compile
/usr/lib/python3.12/site-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
!!

        ********************************************************************************
        Requirements should be satisfied by a PEP 517 installer.
        If you are using pip, you can try `pip install --use-pep517`.
        ********************************************************************************

!!
  dist.fetch_build_eggs(dist.setup_requires)
WARNING: The wheel package is not available.

Nothing urgent yet, but possibly needs some work for python 3.13.

@HinTak HinTak changed the title deprecation of distutilsupstream deprecation of distutilsupstream for python >= 3.12 Jan 29, 2024
@kyamagu
Copy link
Owner

kyamagu commented Jan 30, 2024

Perhaps it's a good time to migrate the build configuration to python -m build with the pyproject.toml configuration.
https://setuptools.pypa.io/en/latest/userguide/ext_modules.html

As far as I remember, the use of numpy distutils is to speed up the wheel compilation. Maybe not needed.

@HinTak
Copy link
Collaborator Author

HinTak commented Jan 30, 2024

Okay, that makes sense - I was wondering why it is try: ... except: pass doing nothing for not found. In that case it is just cosmetic, so I'd suggest adding a python version check to by-pass those few lines, to suppress the warning. I can add that at some point in time.

@kyamagu
Copy link
Owner

kyamagu commented Jan 30, 2024

At this point, I would completely remove the numpy.distutils hack. It seems pip supports parallel jobs as of now.

@HinTak
Copy link
Collaborator Author

HinTak commented Jan 30, 2024

I removed the numpy section and it looks fine, but there is actually a 2nd deprecatioin after that (it is in above, just overlooked):

/usr/lib/python3.12/site-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.

@kyamagu
Copy link
Owner

kyamagu commented Jan 31, 2024

@HinTak Can you try python -m build --format wheel? Directly calling python setup.py build is deprecated.

@HinTak
Copy link
Collaborator Author

HinTak commented Jan 31, 2024

Okay - I'll give it a try. Despite the deprecation warning about 3.12, it is still working on 3.12 at the moment...

@HinTak
Copy link
Collaborator Author

HinTak commented Jan 31, 2024

The first time I tried python -m build --wheel (it is --wheel, not --format wheel), I got "No such module build". Obviously I have never built python package that way before, despite about a decade of misc python usage :-).

It seems both of these deprecation messages came from python setup.py ... . Switching to python -m build ..., both of them disappeared. But it is a lot slower. The stackoverflow url you refers to says "Sometimes pip uses make to build dependencies" so defining MAKEFLAGS works. That's not the case here. Switching to -m build ... loses not only parallel build for me, but also seems to disable ccache (probably because of using virtualenv). So it is a lot slow for me for both fresh build and incremental build.

Since both came from python setup.py ..., I am okay to just close this (as it is my personal preference...) - I'll just continue this way as long as it works for me, ignore the warnings, until it does not. The parallel build setting could do better though. -m build --wheel is not using multi-CPUs. (Skia itself is - ninja auto-detect number of CPUs, I think).

@kyamagu
Copy link
Owner

kyamagu commented Feb 1, 2024

Sure, you can ignore the warning for a moment

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

2 participants