pdm-project / pdm-backend

The build backend used by PDM that supports latest packaging standards.
https://backend.pdm-project.org
MIT License
70 stars 34 forks source link

2.0.6: Unable to build wheel using pypa/build #163

Closed dvzrv closed 1 year ago

dvzrv commented 1 year ago

Hi! I'm currently trying to package this project for Arch Linux.

I am running into issues trying to build the wheel using pypa/build on the (non-devendored) pypi sdist tarball:

$ python -m build --wheel --skip-dependency-check --no-isolation
* Building wheel...
Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
    main()
  File "/usr/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 335, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
  File "/usr/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
    return _build_backend().build_wheel(wheel_directory, config_settings,
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/__init__.py", line 53, in build_wheel
    with WheelBuilder(Path.cwd(), config_settings) as builder:
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/wheel.py", line 72, in __init__
    super().__init__(location, config_settings)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/base.py", line 99, in __init__
    self.config = Config.from_pyproject(self.location)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/config.py", line 70, in from_pyproject
    return cls(root, data)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/config.py", line 37, in __init__
    self.validate(data)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/config.py", line 54, in validate
    validator(data)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/api.py", line 244, in __call__
    compiled = FJS.compile(self.schema, self.handlers, dict(self.formats))
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/__init__.py", line 178, in compile
    global_state = code_generator.global_state
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/draft04.py", line 72, in global_state
    res = super().global_state
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 81, in global_state
    self._generate_func_code()
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 116, in _generate_func_code
    self.generate_func_code()
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 130, in generate_func_code
    self.generate_validation_function(uri, name)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 140, in generate_validation_function
    self.generate_func_code_block(definition, 'data', 'data', clear_variables=True)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 155, in generate_func_code_block
    count = self._generate_func_code_block(definition)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/draft06.py", line 35, in _generate_func_code_block
    self.run_generate_functions(definition)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 177, in run_generate_functions
    func()
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/draft04.py", line 156, in generate_any_of
    self.generate_func_code_block(definition_item, self._variable, self._variable_name, clear_variables=True)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 155, in generate_func_code_block
    count = self._generate_func_code_block(definition)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/draft06.py", line 35, in _generate_func_code_block
    self.run_generate_functions(definition)
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/generator.py", line 177, in run_generate_functions
    func()
  File "/build/python-pdm-backend/src/pdm_backend-2.0.6/src/pdm/backend/_vendor/validate_pyproject/_vendor/fastjsonschema/draft04.py", line 277, in generate_format
    raise JsonSchemaDefinitionException('Unknown format: {}'.format(format_))
pdm.backend._vendor.validate_pyproject._vendor.fastjsonschema.exceptions.JsonSchemaDefinitionException: Unknown format: pep561-stub-name

ERROR Backend subprocess exited when trying to invoke build_wheel

FWIW: When devendoring the vendored libs, I am able to build the wheel and run (most) of the tests.

frostming commented 1 year ago

It's weird, the vendored version of validate-pyproject(0.10.1) doesn't have the validation rule pep561-stub-name, it was introduced in 0.12.1. It might be your global installed package breaks the isolation. Plus I couldn't reproduce following the exact steps.

frostming commented 1 year ago

Anyway, I removed the vendor validate-pyproject as it is no longer needed. Closing this issue now.