jsondiff icon indicating copy to clipboard operation
jsondiff copied to clipboard

2.0.0: pep517 based build fails with latest `setuptools` 62.0.0

Open kloczek opened this issue 2 years ago • 5 comments

Looks like just released 2.0.0 fail on use pep517 based build with latest setuptools 62.0.0

+ /usr/bin/python3 -sBm build -w --no-isolation
* Getting dependencies for wheel...
running egg_info
creating jsondiff.egg-info
writing jsondiff.egg-info/PKG-INFO
writing dependency_links to jsondiff.egg-info/dependency_links.txt
writing entry points to jsondiff.egg-info/entry_points.txt
writing top-level names to jsondiff.egg-info/top_level.txt
writing manifest file 'jsondiff.egg-info/SOURCES.txt'
reading manifest file 'jsondiff.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'jsondiff.egg-info/SOURCES.txt'
* Building wheel...
running bdist_wheel
running build
running build_py
creating build
creating build/lib
creating build/lib/jsondiff
copying jsondiff/__init__.py -> build/lib/jsondiff
copying jsondiff/cli.py -> build/lib/jsondiff
copying jsondiff/symbols.py -> build/lib/jsondiff
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/jsondiff
copying build/lib/jsondiff/__init__.py -> build/bdist.linux-x86_64/wheel/jsondiff
copying build/lib/jsondiff/cli.py -> build/bdist.linux-x86_64/wheel/jsondiff
copying build/lib/jsondiff/symbols.py -> build/bdist.linux-x86_64/wheel/jsondiff
running install_egg_info
running egg_info
writing jsondiff.egg-info/PKG-INFO
writing dependency_links to jsondiff.egg-info/dependency_links.txt
writing entry points to jsondiff.egg-info/entry_points.txt
writing top-level names to jsondiff.egg-info/top_level.txt
reading manifest file 'jsondiff.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'jsondiff.egg-info/SOURCES.txt'
Copying jsondiff.egg-info to build/bdist.linux-x86_64/wheel/jsondiff-2.0.0-py3.8.egg-info
running install_scripts
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/pep517/in_process/_in_process.py", line 363, in <module>
    main()
  File "/usr/lib/python3.8/site-packages/pep517/in_process/_in_process.py", line 345, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
  File "/usr/lib/python3.8/site-packages/pep517/in_process/_in_process.py", line 261, in build_wheel
    return _build_backend().build_wheel(wheel_directory, config_settings,
  File "/usr/lib/python3.8/site-packages/setuptools/build_meta.py", line 244, in build_wheel
  File "/usr/lib/python3.8/site-packages/setuptools/build_meta.py", line 229, in _build_with_temp_dir
  File "/usr/lib/python3.8/site-packages/setuptools/build_meta.py", line 281, in run_setup
  File "/usr/lib/python3.8/site-packages/setuptools/build_meta.py", line 174, in run_setup
  File "setup.py", line 8, in <module>
    setup(
  File "/usr/lib/python3.8/site-packages/setuptools/__init__.py", line 87, in setup
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 148, in setup
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 163, in run_commands
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 967, in run_commands
  File "/usr/lib/python3.8/site-packages/setuptools/dist.py", line 1214, in run_command
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 986, in run_command
  File "/usr/lib/python3.8/site-packages/wheel/bdist_wheel.py", line 335, in run
    self.run_command('install')
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 313, in run_command
    help = {}
  File "/usr/lib/python3.8/site-packages/setuptools/dist.py", line 1214, in run_command
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 986, in run_command
  File "/usr/lib/python3.8/site-packages/setuptools/command/install.py", line 68, in run
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/command/install.py", line 682, in run
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 313, in run_command
    help = {}
  File "/usr/lib/python3.8/site-packages/setuptools/dist.py", line 1214, in run_command
  File "/usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 986, in run_command
  File "/usr/lib/python3.8/site-packages/setuptools/command/install_scripts.py", line 19, in run
ModuleNotFoundError: No module named 'setuptools.command.easy_install'

kloczek avatar Apr 10 '22 19:04 kloczek

I am not really familiar with the new school build tooling yet, so if you can provide a PR would help!

fzumstein avatar Apr 10 '22 20:04 fzumstein

To be honet I have no idea how to fix that issue and setuptools >= 60.0.0 introduced a lot of new features and cut of as well some legacy stuff .. which I think that those missing now legacy bits are affecting pep517 based build. You need to contact setuptools developer. There is as well github discussion forum https://github.com/pypa/setuptools/discussions

kloczek avatar Apr 10 '22 20:04 kloczek

Is there a reason though why you need to build it yourself? The wheel has been uploaded to PyPI and if you need a workaround for now, just do python setup.py sdist bdist_wheel

fzumstein avatar Apr 10 '22 20:04 fzumstein

Is there a reason though why you need to build it yourself

Yes it is. I'm working on whole Linux distribution and in case any issues when it will be necessary to apply some fix I need clean build procedure in which such patch can be easyly added. .whl files are not patchable ..

Executinf sdist and bdist_wheel soon will be deprecated and replaced by PEP517 https://peps.python.org/pep-0517/

kloczek avatar Apr 13 '22 23:04 kloczek

FYI in this case it could be setuptools issue. Will back with some results tomorrow (I need to update my setuptools rpm package to lates version).

kloczek avatar Apr 13 '22 23:04 kloczek

I am unable to reproduce this issue with any version of setuptools (tried 62.0 -> latest) between the 2.0.0 tag and the tip of main. However, if we port setup.py to pyproject.toml we get a patchable distribution (tar.gz) for free.

corytodd avatar Jun 03 '23 17:06 corytodd

Can you take a look at #65 and let me know if that is approaching something usable for you? I may have misunderstood your requirements so please let me know if I'm mistaken :)

corytodd avatar Jun 04 '23 03:06 corytodd

This might be resolved by #65 . Feel free to re-open if it doesn't.

corytodd avatar Sep 10 '23 18:09 corytodd

👍 Cannot apply that PR on top of last release. Will recheck that when new version will be released.

kloczek avatar Sep 10 '23 18:09 kloczek

(hopefully new release will be soon 😋 )

kloczek avatar Sep 10 '23 18:09 kloczek