Control: severity -1 normal
Control: retitle -1 pairtools -- current repo in salsa FTBFS
Control: clone -1 -2
Control: reassign -2 python3-pysam 0.20.0+ds-2
Control: retitle -2 pysam -- no definition for bam_dup1

On Fri, Dec 30, 2022 at 08:24:42PM +0530, Nilesh Patra wrote:
> On Fri, 30 Dec 2022 20:05:32 +0530 Nilesh Patra <nil...@debian.org> wrote:
> > Source: pairtools
> > Version: 0.3.0-3.2
> > Severity: serious
> > 
> > Pairtools FTBFS with pysam related error. Looks like
> > something is off.
> > 
> > dh_auto_clean
> > I: pybuild base:240: python3.11 setup.py clean 
> > Traceback (most recent call last):                                          
> >                                                                             
> >                                                           
> >   File "/<<PKGBUILDDIR>>/setup.py", line 130, in <module>
> >     ext_modules=get_ext_modules(),
> >                 ^^^^^^^^^^^^^^^^^
> >   File "/<<PKGBUILDDIR>>/setup.py", line 81, in get_ext_modules
> >     extra_link_args=pysam.get_libraries(),
> >                     ^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/pysam/__init__.py", line 100, in 
> > get_libraries
> >     return [os.path.join(dirname, x + so) for x in pysam_libs]
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/pysam/__init__.py", line 100, in 
> > <listcomp>
> >     return [os.path.join(dirname, x + so) for x in pysam_libs]
> >                                   ~~^~~~
> > TypeError: can only concatenate str (not "NoneType") to str
> 
> This patch in pysam gets the build in pairtools going beyond this point, but 
> now the build chokes with:
> 
> | pairtools.cli (unittest.loader._FailedTest.pairtools.cli) ... ERROR         
>                                                                               
>                                                         
> | pairtools.lib (unittest.loader._FailedTest.pairtools.lib) ... ERROR
> |
> | ======================================================================
> | ERROR: pairtools.cli (unittest.loader._FailedTest.pairtools.cli)
> | ----------------------------------------------------------------------
> | ImportError: Failed to import test module: pairtools.cli
> | Traceback (most recent call last):
> |  File "/usr/lib/python3.11/unittest/loader.py", line 440, in _find_test_path
> |    package = self._get_module_from_name(name)
> |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> |  File "/usr/lib/python3.11/unittest/loader.py", line 350, in 
> _get_module_from_name
> |    __import__(name)
> |  File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/pairtools/cli/__init__.py", 
> line 188, in <module>
> |    from . import (
> |  File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/pairtools/cli/dedup.py", line 
> 12, in <module>
> |    from ..lib import fileio, pairsam_format, headerops
> |  File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/pairtools/lib/__init__.py", 
> line 7, in <module>
> |    from . import parse
> |  File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/pairtools/lib/parse.py", line 
> 38, in <module>
> |    from .parse_pysam import get_mismatches_c
> | ImportError: 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/pairtools/lib/parse_pysam.cpython-311-x86_64-linux-gnu.so:
>  undefined symbol: bam_dup1

Turns out this is because there is just a function "declaration" in 
pysam/libchtslib.pxd for bam_dup1.
But the headers imported do not even have the function.

I patched the current package in salsa to get the ball rolling. But this needs 
bioframe.

Also, the below patch still needs to be applied to pysam. pushed to salsa.

> Description: Add patch to return proper sysconf so for current python
> Author: Nilesh Patra <nil...@debian.org>
> Last-Update: 2022-12-30
> --- a/pysam/__init__.py
> +++ b/pysam/__init__.py
> @@ -96,5 +96,7 @@
>      if pysam.config.HTSLIB == "builtin":
>          pysam_libs.append('libchtslib')
>  
> -    so = sysconfig.get_config_var('SO')
> +    so = sysconfig.get_config_var('EXT_SUFFIX')
> +    if not so: 
> +        so = sysconfig.get_config_var('SO')
>      return [os.path.join(dirname, x + so) for x in pysam_libs]
> 

-- 
Best,
Nilesh

Attachment: signature.asc
Description: PGP signature

Reply via email to