pysam-developers / pysam

Pysam is a Python package for reading, manipulating, and writing genomics data such as SAM/BAM/CRAM and VCF/BCF files. It's a lightweight wrapper of the HTSlib API, the same one that powers samtools, bcftools, and tabix.
https://pysam.readthedocs.io/en/latest/
MIT License
773 stars 274 forks source link

Fails to build with Python3.12 #1253

Closed tillea closed 8 months ago

tillea commented 8 months ago

Hi, the Debian packaged pysam received a bug report about build failures with Python3.12. You can find a full build log in our CI. It starts with

x86_64-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -g -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -fwrapv -O2 -g -O2 -ffile-prefix-  map=/builds/med-team/python-pysam/debian/output/source_dir=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/builds/med-team/      python-pysam/debian/output/source_dir/pysam -I/usr/include -I/builds/med-team/python-pysam/debian/output/source_dir/samtools -I/builds/med-team/python-pysam/debian/output/source_dir/samtools/lz4 -I/builds/med-team/python-  pysam/debian/output/source_dir/bcftools -I/builds/med-team/python-pysam/debian/output/source_dir -I/usr/include/python3.12 -c pysam/libchtslib.c -o build/temp.linux-x86_64-cpython-312/pysam/libchtslib.o -Wno-unused -Wno-   strict-prototypes -Wno-sign-compare -Wno-error=declaration-after-statement
pysam/libchtslib.c: In function ‘__pyx_f_5pysam_10libchtslib_set_verbosity’:
pysam/libchtslib.c:1387:32: error: ‘_PyCFrame’ has no member named ‘use_tracing’
 1387 |      (unlikely((tstate)->cframe->use_tracing) &&\
      |                                ^~
pysam/libchtslib.c:958:43: note: in definition of macro ‘unlikely’
  958 |   #define unlikely(x) __builtin_expect(!!(x), 0)
      |                                           ^
pysam/libchtslib.c:1426:15: note: in expansion of macro ‘__Pyx_IsTracing’
 1426 |           if (__Pyx_IsTracing(tstate, 1, 1)) {\
      |               ^~~~~~~~~~~~~~~

It would be great if you could adapt pysam to Python3.12. Kind regards, Andreas.

tillea commented 8 months ago

I've received a hint that when building with cython 3.0.6 the failure above is vanishing. Thus I'm closing this issue.

jmarshall commented 8 months ago

Duplicate of Debian’s previous report, #1242.