conda-build icon indicating copy to clipboard operation
conda-build copied to clipboard

Unhandled exception in _guess_patch_strip_level

Open peterjc opened this issue 1 year ago • 2 comments

Checklist

  • [X] I added a descriptive title
  • [X] I searched open reports and couldn't find a duplicate

What happened?

Attempting to add a (Windows only) patch to a conda-forge recipe as part of https://github.com/conda-forge/jove-feedstock/pull/12 got an unexpected failure:

Source cache directory is: D:\bld\src_cache
INFO:conda_build.source:Source cache directory is: D:\bld\src_cache
Downloading source to cache: 4.17.5.2_e28836e230.tar.gz
INFO:conda_build.source:Downloading source to cache: 4.17.5.2_e28836e230.tar.gz
Downloading https://github.com/jonmacs/jove/archive/4.17.5.2.tar.gz
INFO:conda_build.source:Downloading https://github.com/jonmacs/jove/archive/4.17.5.2.tar.gz
INFO:conda_build.source:Success
Success
Extracting download
Applying patch: D:\a\1\s\recipe\windows.patch
Traceback (most recent call last):
  File "C:\Miniforge\Scripts\conda-mambabuild-script.py", line 9, in <module>
    sys.exit(main())
  File "C:\Miniforge\lib\site-packages\boa\cli\mambabuild.py", line 256, in main
    call_conda_build(action, config)
  File "C:\Miniforge\lib\site-packages\boa\cli\mambabuild.py", line 228, in call_conda_build
    result = api.build(
  File "C:\Miniforge\lib\site-packages\conda_build\api.py", line 180, in build
    return build_tree(
  File "C:\Miniforge\lib\site-packages\conda_build\build.py", line 3097, in build_tree
    packages_from_this = build(metadata, stats,
  File "C:\Miniforge\lib\site-packages\conda_build\build.py", line 2136, in build
    try_download(m, no_download_source=False, raise_error=True)
  File "C:\Miniforge\lib\site-packages\conda_build\render.py", line 643, in try_download
    source.provide(metadata)
  File "C:\Miniforge\lib\site-packages\conda_build\source.py", line 902, in provide
    patch_attributes_output += [apply_one_patch(src_dir, metadata.path, patch, metadata.config, git)]
  File "C:\Miniforge\lib\site-packages\conda_build\source.py", line 797, in apply_one_patch
    patch_attributes = _get_patch_attributes(path, patch_exe, git, src_dir, stdout, stderr, tmpdir)
  File "C:\Miniforge\lib\site-packages\conda_build\source.py", line 595, in _get_patch_attributes
    strip_level, strip_level_guessed = _guess_patch_strip_level(files, src_dir)
  File "C:\Miniforge\lib\site-packages\conda_build\source.py", line 526, in _guess_patch_strip_level
    histo = {i: 0 for i in range(maxlevel + 1)}
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

The patch file was just:

65c65
< JTMPDIR = /var/tmp
---
> JTMPDIR = %TMP%

Note I omitted the filename (an error in hindsight as the conda-build system won't know which file to apply it to), but the failure could be handled better.

Conda Info

No response

Conda Config

No response

Conda list

No response

Additional Context

Logging quoted from Azure, https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=676262&view=logs&jobId=a70f640f-cc53-5cd3-6cdc-236a1aa90802&j=a70f640f-cc53-5cd3-6cdc-236a1aa90802&t=f5d15007-a01c-5ad8-c9ce-4d519d3b275f

peterjc avatar Mar 20 '23 10:03 peterjc