about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/pysam/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/pysam/default.nix')
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysam/default.nix73
1 files changed, 65 insertions, 8 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/pysam/default.nix b/nixpkgs/pkgs/development/python-modules/pysam/default.nix
index 38b55c4563da..2f40a2973332 100644
--- a/nixpkgs/pkgs/development/python-modules/pysam/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysam/default.nix
@@ -6,6 +6,7 @@
 , curl
 , cython
 , htslib
+, libdeflate
 , lzma
 , pytest
 , samtools
@@ -14,7 +15,7 @@
 
 buildPythonPackage rec {
   pname   = "pysam";
-  version = "0.15.4";
+  version = "0.16.0.1";
 
   # Fetching from GitHub instead of PyPi cause the 0.13 src release on PyPi is
   # missing some files which cause test failures.
@@ -23,26 +24,82 @@ buildPythonPackage rec {
     owner = "pysam-developers";
     repo = "pysam";
     rev = "v${version}";
-    sha256 = "04w6h6mv6lsr74hj9gy4r2laifcbhgl2bjcr4r1l9r73xdd45mdy";
+    sha256 = "168bwwm8c2k22m7paip8q0yajyl7xdxgnik0bgjl7rhqg0majz0f";
   };
 
   nativeBuildInputs = [ samtools ];
-  buildInputs = [ bzip2 curl cython lzma zlib ];
+  buildInputs = [
+    bzip2
+    curl
+    cython
+    libdeflate
+    lzma
+    zlib
+  ];
+
+  # Use nixpkgs' htslib instead of the bundled one
+  # See https://pysam.readthedocs.io/en/latest/installation.html#external
+  # NOTE that htslib should be version compatible with pysam
+  preBuild = ''
+    export HTSLIB_MODE=shared
+    export HTSLIB_LIBRARY_DIR=${htslib}/lib
+    export HTSLIB_INCLUDE_DIR=${htslib}/include
+  '';
 
-  checkInputs = [ pytest bcftools htslib ];
-  checkPhase = "py.test";
+  checkInputs = [
+    pytest
+    bcftools
+    htslib
+  ];
 
-  # tests require samtools<=1.9
-  doCheck = false;
-  preCheck = ''
+  # See https://github.com/NixOS/nixpkgs/pull/100823 for why we aren't using
+  # disabledTests and pytestFlagsArray through pytestCheckHook
+  checkPhase = ''
+    # Needed to avoid /homeless-shelter error
     export HOME=$(mktemp -d)
+
+    # To avoid API incompatibilities, these should ideally show the same version
+    echo "> samtools --version"
+    samtools --version
+    echo "> htsfile --version"
+    htsfile --version
+    echo "> bcftools --version"
+    bcftools --version
+
+    # Create auxiliary test data
     make -C tests/pysam_data
     make -C tests/cbcf_data
+
+    # Delete pysam folder in current directory to avoid importing it during testing
+    rm -rf pysam
+
+    # Deselect tests that are known to fail due to upstream issues
+    # See https://github.com/pysam-developers/pysam/issues/961
+    py.test \
+      --deselect tests/AlignmentFileHeader_test.py::TestHeaderBAM::test_dictionary_access_works \
+      --deselect tests/AlignmentFileHeader_test.py::TestHeaderBAM::test_header_content_is_as_expected \
+      --deselect tests/AlignmentFileHeader_test.py::TestHeaderCRAM::test_dictionary_access_works \
+      --deselect tests/AlignmentFileHeader_test.py::TestHeaderCRAM::test_header_content_is_as_expected \
+      --deselect tests/AlignmentFile_test.py::TestDeNovoConstruction::testBAMWholeFile \
+      --deselect tests/AlignmentFile_test.py::TestEmptyHeader::testEmptyHeader \
+      --deselect tests/AlignmentFile_test.py::TestHeaderWithProgramOptions::testHeader \
+      --deselect tests/AlignmentFile_test.py::TestIO::testBAM2BAM \
+      --deselect tests/AlignmentFile_test.py::TestIO::testBAM2CRAM \
+      --deselect tests/AlignmentFile_test.py::TestIO::testBAM2SAM \
+      --deselect tests/AlignmentFile_test.py::TestIO::testFetchFromClosedFileObject \
+      --deselect tests/AlignmentFile_test.py::TestIO::testOpenFromFilename \
+      --deselect tests/AlignmentFile_test.py::TestIO::testSAM2BAM \
+      --deselect tests/AlignmentFile_test.py::TestIO::testWriteUncompressedBAMFile \
+      --deselect tests/AlignmentFile_test.py::TestIteratorRowAllBAM::testIterate \
+      --deselect tests/StreamFiledescriptors_test.py::StreamTest::test_text_processing \
+      --deselect tests/compile_test.py::BAMTest::testCount \
+      tests/
   '';
 
   pythonImportsCheck = [
     "pysam"
     "pysam.bcftools"
+    "pysam.libchtslib"
     "pysam.libcutils"
     "pysam.libcvcf"
   ];