[med-svn] [Git][med-team/spades][master] 2 commits: Update packaging and patches for SPAdes 4.3.0

Andreas Tille (@tille) gitlab at salsa.debian.org
Wed Oct 21 06:47:47 BST 2026



Andreas Tille pushed to branch master at Debian Med / spades


Commits:
446c4409 by Andreas Tille at 2026-10-21T07:39:41+02:00
Update packaging and patches for SPAdes 4.3.0

- - - - -
04f3dfba by Andreas Tille at 2026-10-21T07:47:08+02:00
Fix SPAdes config include paths for use outside config directory

SPAdes' Boost property_tree config loader resolves #include directives
relative to the current working directory.  unicycler and shovill run
spades-core from their own temporary directories, so the generated
config.info failed to find simplification.info and the assembly aborted.

Rewrite relative includes to absolute paths in the generated per-K configs.

Assisted-By: deepseek-v4.1-flash-free 4.1

- - - - -


14 changed files:

- debian/changelog
- debian/patches/0114_use_debian_provided_libs.patch
- debian/patches/0118_adjust_spades_home_again.patch
- + debian/patches/deactivate_tests_with_no_data.patch
- debian/patches/debuginfo.patch
- debian/patches/fix-bool-cast
- + debian/patches/fix-missing-functional-include.patch
- + debian/patches/fix_config_include_paths.patch
- + debian/patches/samtools_missing_source.patch
- debian/patches/series
- debian/patches/typos.patch
- + debian/patches/use_debian_xxhash.patch
- debian/patches/workdir_for_test.patch
- debian/patches/yaml_load.patch


Changes:

=====================================
debian/changelog
=====================================
@@ -6,6 +6,8 @@ spades (4.3.0+dfsg-1) UNRELEASED; urgency=medium
   * Remove Priority field (cme)
   * Drop 'Rules-Requires-Root: no' from d/control (routine-update)
   * Reformat the Last-Update date as ISO YYYY-MM-DD.
+  * Fix config include paths so SPAdes can run from arbitrary working
+    directories (needed by unicycler and shovill).
 
  -- Andreas Tille <tille at debian.org>  Tue, 20 Oct 2026 17:09:28 +0200
 


=====================================
debian/patches/0114_use_debian_provided_libs.patch
=====================================
@@ -2,8 +2,11 @@ Description: use more Debian packaged libraries
 Author: Sascha Steinbiss <satta at debian.org>,
         Michael R. Crusoe <michael.crusoe at gmail.com>
 Forwarded: not-needed
---- a/assembler/src/cmake/includes.cmake
-+++ b/assembler/src/cmake/includes.cmake
+Assisted-By: deepseek-v4.1-flash-free 4.1
+Index: b/src/cmake/includes.cmake
+===================================================================
+--- a/src/cmake/includes.cmake
++++ b/src/cmake/includes.cmake
 @@ -2,6 +2,8 @@
  
  set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
@@ -13,9 +16,11 @@ Forwarded: not-needed
  include_directories(${SPADES_MAIN_INCLUDE_DIR} ${SPADES_BUILT_INCLUDE_DIR} ${CMAKE_SOURCE_DIR} ${SPADES_MODULES_DIR}) 
  include_directories(SYSTEM "${EXT_DIR}/include")
  include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
---- a/assembler/src/common/modules/path_extend/overlap_analysis.hpp
-+++ b/assembler/src/common/modules/path_extend/overlap_analysis.hpp
-@@ -11,7 +11,7 @@
+Index: b/src/common/modules/path_extend/overlap_analysis.hpp
+===================================================================
+--- a/src/common/modules/path_extend/overlap_analysis.hpp
++++ b/src/common/modules/path_extend/overlap_analysis.hpp
+@@ -12,7 +12,7 @@
  
  #include "utils/logger/logger.hpp"
  
@@ -24,24 +29,38 @@ Forwarded: not-needed
  
  namespace debruijn_graph {
  
---- a/assembler/ext/src/CMakeLists.txt
-+++ b/assembler/ext/src/CMakeLists.txt
-@@ -6,12 +6,10 @@ endif()
- if (SPADES_USE_MIMALLOC)
-   add_subdirectory(mimalloc EXCLUDE_FROM_ALL)
+Index: b/ext/src/CMakeLists.txt
+===================================================================
+--- a/ext/src/CMakeLists.txt
++++ b/ext/src/CMakeLists.txt
+@@ -21,12 +21,8 @@
+   add_subdirectory(${zlib_ng_SOURCE_DIR} ${zlib_ng_BINARY_DIR} EXCLUDE_FROM_ALL)
  endif()
+ 
 -add_subdirectory(nlopt)
- add_subdirectory(ConsensusCore)
- add_subdirectory(bamtools)
+-add_subdirectory(python_libs/pyyaml3)
+-add_subdirectory(bamtools)
  add_subdirectory(samtools)
  add_subdirectory(cppformat)
 -add_subdirectory(ssw)
- add_subdirectory(getopt_pp)
  add_subdirectory(llvm)
+ add_subdirectory(bwa)
  add_subdirectory(gqf)
---- a/assembler/src/common/modules/coverage_model/kmer_coverage_model.cpp
-+++ b/assembler/src/common/modules/coverage_model/kmer_coverage_model.cpp
-@@ -18,7 +18,7 @@
+@@ -34,9 +30,7 @@
+ add_subdirectory(lexy)
+ add_subdirectory(easel)
+ add_subdirectory(hmmer)
+-add_subdirectory(googletest)
+ add_subdirectory(teamcity_gtest)
+-add_subdirectory(spoa)
+ if (SPADES_USE_NCBISDK)
+   add_subdirectory(ncbi EXCLUDE_FROM_ALL)
+ endif()
+Index: b/src/common/modules/coverage_model/kmer_coverage_model.cpp
+===================================================================
+--- a/src/common/modules/coverage_model/kmer_coverage_model.cpp
++++ b/src/common/modules/coverage_model/kmer_coverage_model.cpp
+@@ -19,7 +19,7 @@
  #include <boost/math/distributions/geometric.hpp>
  #include <boost/math/distributions/pareto.hpp>
  
@@ -50,3 +69,104 @@ Forwarded: not-needed
  
  #include <vector>
  
+Index: b/src/CMakeLists.txt
+===================================================================
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -26,6 +26,12 @@
+ # Add some utility macro
+ include(utils)
+ 
++# Bamtools from the Debian package
++find_package(bamtools)
++if (bamtools_FOUND)
++    include_directories(${bamtools_INCLUDE_DIRS})
++endif()
++
+ # Define various dirs
+ set(SPADES_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+ set(SPADES_MAIN_PROJ_DIR ${SPADES_MAIN_SRC_DIR}/projects)
+Index: b/src/projects/spades/wastewater_disentangle.cpp
+===================================================================
+--- a/src/projects/spades/wastewater_disentangle.cpp
++++ b/src/projects/spades/wastewater_disentangle.cpp
+@@ -11,7 +11,7 @@
+ #include "assembly_graph/core/graph_iterators.hpp"
+ #include "assembly_graph/core/graph.hpp"
+ #include "common/sequence/range.hpp"
+-#include "ssw/ssw_cpp.h"
++#include <ssw_cpp.h>
+ 
+ #include <tuple>
+ #include <numeric>
+@@ -484,4 +484,4 @@
+ 
+     }
+ 
+-}
+\ No newline at end of file
++}
+Index: b/src/common/io/sam/CMakeLists.txt
+===================================================================
+--- a/src/common/io/sam/CMakeLists.txt
++++ b/src/common/io/sam/CMakeLists.txt
+@@ -9,4 +9,4 @@
+ 
+ add_library(samio STATIC
+             read.cpp sam_reader.cpp bam_parser.cpp)
+-target_link_libraries(samio BamTools samtools ${ZLIB_LIBRARIES})
++target_link_libraries(samio ${bamtools_LIBRARY} samtools ${ZLIB_LIBRARIES})
+Index: b/src/projects/mts/CMakeLists.txt
+===================================================================
+--- a/src/projects/mts/CMakeLists.txt
++++ b/src/projects/mts/CMakeLists.txt
+@@ -31,7 +31,7 @@
+                read_binning.cpp
+                prop_binning.cpp
+                gzstream/gzstream.C)
+-target_link_libraries(prop_binning common_modules nlopt BamTools ssw getopt_pp zlibstatic ${COMMON_LIBRARIES})
++target_link_libraries(prop_binning common_modules nlopt ${bamtools_LIBRARY} ssw getopt_pp zlibstatic ${COMMON_LIBRARIES})
+ 
+ if (SPADES_STATIC_BUILD)
+   set_target_properties(prop_binning PROPERTIES LINK_SEARCH_END_STATIC 1)
+@@ -41,7 +41,7 @@
+                annotation.cpp
+                stats.cpp)
+ 
+-target_link_libraries(stats common_modules nlopt BamTools ssw getopt_pp ${COMMON_LIBRARIES})
++target_link_libraries(stats common_modules nlopt ${bamtools_LIBRARY} ssw getopt_pp ${COMMON_LIBRARIES})
+ 
+ if (SPADES_STATIC_BUILD)
+   set_target_properties(stats PROPERTIES LINK_SEARCH_END_STATIC 1)
+@@ -51,7 +51,7 @@
+                contig_abundance_counter.cpp
+                contig_abundance.cpp)
+ 
+-target_link_libraries(contig_abundance_counter common_modules nlopt BamTools ssw getopt_pp ${COMMON_LIBRARIES})
++target_link_libraries(contig_abundance_counter common_modules nlopt ${bamtools_LIBRARY} ssw getopt_pp ${COMMON_LIBRARIES})
+ 
+ if (SPADES_STATIC_BUILD)
+   set_target_properties(contig_abundance_counter PROPERTIES LINK_SEARCH_END_STATIC 1)
+Index: b/ext/src/samtools/CMakeLists.txt
+===================================================================
+--- a/ext/src/samtools/CMakeLists.txt
++++ b/ext/src/samtools/CMakeLists.txt
+@@ -29,4 +29,4 @@
+   bam_reheader.c
+   kprobaln.c
+   bam_cat.c)
+-target_link_libraries(samtools BamTools zlibstatic)
++target_link_libraries(samtools ${bamtools_LIBRARY} zlibstatic)
+Index: b/src/projects/ionhammer/CMakeLists.txt
+===================================================================
+--- a/src/projects/ionhammer/CMakeLists.txt
++++ b/src/projects/ionhammer/CMakeLists.txt
+@@ -33,7 +33,7 @@
+ 
+ 
+ 
+-target_link_libraries(spades-ionhammer Blaze modules input utils pipeline mph_index ${COMMON_LIBRARIES})
++target_link_libraries(spades-ionhammer Blaze modules input utils pipeline mph_index ${bamtools_LIBRARY} ${COMMON_LIBRARIES})
+ #target_link_libraries(kmer_evaluator input  utils mph_index  BamTools ${COMMON_LIBRARIES})
+ 
+ if (SPADES_STATIC_BUILD)


=====================================
debian/patches/0118_adjust_spades_home_again.patch
=====================================
@@ -1,16 +1,24 @@
 Subject: Adjust spades_home var to install files under /usr/share/spades
 From: Alex Mestiashvili <amestia at rsh2.donotuse.de>
 Forwarded: not-needed
---- a/assembler/spades_init.py
-+++ b/assembler/spades_init.py
-@@ -31,8 +31,8 @@ def init():
-     # users configuration (spades_init.py and spades binary are in the same directory)
+Assisted-By: deepseek-v4.1-flash-free 4.1
+Index: b/src/projects/spades/pipeline/spades_init.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_init.py
++++ b/src/projects/spades/pipeline/spades_init.py
+@@ -37,9 +37,12 @@
      if isfile(os.path.join(spades_home, "spades-core")):
+         # users configuration (spades_init.py and spades binary are in the same directory)
          install_prefix = dirname(spades_home)
 -        bin_home = join(install_prefix, "bin")
 -        spades_home = join(install_prefix, "share", "spades")
+-        config_dirs = [(join(spades_home, "configs"), "./")]
 +        bin_home = '/usr/libexec/spades'
 +        spades_home = '/usr/share/spades'
++        config_dirs = [(join(spades_home, "configs", "debruijn"), "debruijn"),
++                       (join(spades_home, "configs", "ionhammer"), "ionhammer"),
++                       (join(spades_home, "configs", "hammer"), "hammer"),
++                       (join(spades_home, "configs", "corrector"), "corrector")]
          python_modules_home = spades_home
          ext_python_modules_home = spades_home
- 
+         spades_version = open(join(spades_home, "VERSION"), 'r').readline().strip()


=====================================
debian/patches/deactivate_tests_with_no_data.patch
=====================================
@@ -0,0 +1,357 @@
+Description: omitting many build-time tests as their data files are not shipped
+ anymore in the source tarball
+Author: Pierre Gruet <pgt at debian.org>
+Forwarded: no
+Last-Update: 2024-07-04
+
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/ext/src/zlib-ng/test/CMakeLists.txt
+===================================================================
+--- a/ext/src/zlib-ng/test/CMakeLists.txt
++++ b/ext/src/zlib-ng/test/CMakeLists.txt
+@@ -16,7 +16,7 @@
+ add_executable(example example.c)
+ configure_test_executable(example)
+ target_link_libraries(example zlib)
+-add_test(NAME example COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:example>)
++#add_test(NAME example COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:example>)
+ 
+ add_executable(minigzip minigzip.c)
+ configure_test_executable(minigzip)
+@@ -57,7 +57,7 @@
+ endif()
+ # infcover references zng_inflate_table() and struct inflate_state, which are internal to zlib-ng.
+ if(ZLIBNG_ENABLE_TESTS)
+-    add_test(NAME infcover COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:infcover>)
++#    add_test(NAME infcover COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:infcover>)
+ endif()
+ 
+ add_executable(makefixed ${PROJECT_SOURCE_DIR}/tools/makefixed.c ${PROJECT_SOURCE_DIR}/inftrees.c)
+Index: b/ext/src/zlib-ng/test/cmake/test-cves.cmake
+===================================================================
+--- a/ext/src/zlib-ng/test/cmake/test-cves.cmake
++++ b/ext/src/zlib-ng/test/cmake/test-cves.cmake
+@@ -1,6 +1,7 @@
+ # test-cves.cmake -- Tests targeting common vulnerabilities and exposures
+ 
+-set(CVES CVE-2002-0059 CVE-2004-0797 CVE-2005-1849 CVE-2005-2096)
++set(CVES "")
++#set(CVES CVE-2002-0059 CVE-2004-0797 CVE-2005-1849 CVE-2005-2096)
+ foreach(cve ${CVES})
+     set(CVE_COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:minigzip> -d)
+     add_test(NAME ${cve}
+@@ -11,7 +12,8 @@
+         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
+ endforeach()
+ 
+-set(CVE_COMPRESS_LEVELS 6 1 2)
++set(CVE_COMPRESS_LEVELS "")
++#set(CVE_COMPRESS_LEVELS 6 1 2)
+ foreach(cve_compress_level ${CVE_COMPRESS_LEVELS})
+     add_test(NAME CVE-2018-25032-fixed-level-${cve_compress_level}
+         COMMAND ${CMAKE_COMMAND}
+Index: b/ext/src/zlib-ng/test/cmake/test-data.cmake
+===================================================================
+--- a/ext/src/zlib-ng/test/cmake/test-data.cmake
++++ b/ext/src/zlib-ng/test/cmake/test-data.cmake
+@@ -64,5 +64,5 @@
+ endforeach()
+ 
+ # Additional tests to verify with automatic data type detection arg
+-test_minigzip("detect-text" "data/lcet10.txt" -A)
+-test_minigzip("detect-binary" "data/paper-100k.pdf" -A)
++#test_minigzip("detect-text" "data/lcet10.txt" -A)
++#test_minigzip("detect-binary" "data/paper-100k.pdf" -A)
+Index: b/ext/src/zlib-ng/test/cmake/test-issues.cmake
+===================================================================
+--- a/ext/src/zlib-ng/test/cmake/test-issues.cmake
++++ b/ext/src/zlib-ng/test/cmake/test-issues.cmake
+@@ -1,68 +1,68 @@
+ # test-issues.cmake -- Tests targeting specific GitHub issues
+ 
+-add_test(NAME GH-361
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DTARGET=${MINIGZIP_COMMAND}"
+-    "-DCOMPRESS_ARGS=-c;-k;-4"
+-    -DTEST_NAME=GH-361-test-txt
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-361/test.txt
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME GH-364
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
+-    "-DCOMPRESS_ARGS=1;5;9;3"
+-    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
+-    -DTEST_NAME=GH-364-test-bin
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-364/test.bin
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME GH-382
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DTARGET=${MINIDEFLATE_COMMAND}"
+-    "-DCOMPRESS_ARGS=-c;-m;1;-w;-15;-1;-s;4"
+-    "-DDECOMPRESS_ARGS=-c;-d;-m;1;-w;-15"
+-    -DGZIP_VERIFY=OFF
+-    -DTEST_NAME=GH-382-defneg3-dat
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-382/defneg3.dat
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME GH-536-segfault
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
+-    "-DCOMPRESS_ARGS=6;9744;1;91207"
+-    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
+-    -DCOMPARE=OFF
+-    -DGZIP_VERIFY=OFF
+-    -DTEST_NAME=GH-536-segfault-lcet10-txt
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/lcet10.txt
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME GH-536-incomplete-read
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
+-    "-DCOMPRESS_ARGS=6;88933;1;195840;2;45761"
+-    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
+-    -DCOMPARE=OFF
+-    -DGZIP_VERIFY=OFF
+-    -DTEST_NAME=GH-536-incomplete-read-lcet10-txt
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/lcet10.txt
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME GH-536-zero-stored-block
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
+-    "-DCOMPRESS_ARGS=6;15248;1;1050;2;25217"
+-    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
+-    -DCOMPARE=OFF
+-    -DGZIP_VERIFY=OFF
+-    -DTEST_NAME=GH-536-zero-stored-block-lcet10-txt
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/lcet10.txt
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME GH-751
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DTARGET=${MINIGZIP_COMMAND}"
+-    -DTEST_NAME=GH-751-test-txt
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-751/test.txt
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++#add_test(NAME GH-361
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DTARGET=${MINIGZIP_COMMAND}"
++#    "-DCOMPRESS_ARGS=-c;-k;-4"
++#    -DTEST_NAME=GH-361-test-txt
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-361/test.txt
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME GH-364
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
++#    "-DCOMPRESS_ARGS=1;5;9;3"
++#    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
++#    -DTEST_NAME=GH-364-test-bin
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-364/test.bin
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME GH-382
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DTARGET=${MINIDEFLATE_COMMAND}"
++#    "-DCOMPRESS_ARGS=-c;-m;1;-w;-15;-1;-s;4"
++#    "-DDECOMPRESS_ARGS=-c;-d;-m;1;-w;-15"
++#    -DGZIP_VERIFY=OFF
++#    -DTEST_NAME=GH-382-defneg3-dat
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-382/defneg3.dat
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME GH-536-segfault
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
++#    "-DCOMPRESS_ARGS=6;9744;1;91207"
++#    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
++#    -DCOMPARE=OFF
++#    -DGZIP_VERIFY=OFF
++#    -DTEST_NAME=GH-536-segfault-lcet10-txt
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/lcet10.txt
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME GH-536-incomplete-read
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
++#    "-DCOMPRESS_ARGS=6;88933;1;195840;2;45761"
++#    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
++#    -DCOMPARE=OFF
++#    -DGZIP_VERIFY=OFF
++#    -DTEST_NAME=GH-536-incomplete-read-lcet10-txt
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/lcet10.txt
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME GH-536-zero-stored-block
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
++#    "-DCOMPRESS_ARGS=6;15248;1;1050;2;25217"
++#    "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
++#    -DCOMPARE=OFF
++#    -DGZIP_VERIFY=OFF
++#    -DTEST_NAME=GH-536-zero-stored-block-lcet10-txt
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/lcet10.txt
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME GH-751
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DTARGET=${MINIGZIP_COMMAND}"
++#    -DTEST_NAME=GH-751-test-txt
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-751/test.txt
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+Index: b/ext/src/zlib-ng/test/cmake/test-tools.cmake
+===================================================================
+--- a/ext/src/zlib-ng/test/cmake/test-tools.cmake
++++ b/ext/src/zlib-ng/test/cmake/test-tools.cmake
+@@ -1,80 +1,80 @@
+ # test-tools.cmake -- Tests targeting tool coverage
+ 
+ # Compress and decompress using file_compress/file_decompress, optionally also testing MMAP
+-add_test(NAME minigzip-file_compress
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DTARGET=${MINIGZIP_COMMAND}"
+-    -DFILEMODE=ON
+-    -DGZIP_VERIFY=ON
+-    -DTEST_NAME=minigzip-file_compress
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/paper-100k.pdf
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+-
+-add_test(NAME minideflate-file_compress
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DTARGET=${MINIDEFLATE_COMMAND}"
+-    -DFILEMODE=ON
+-    -DGZIP_VERIFY=OFF
+-    -DTEST_NAME=minideflate-file_compress
+-    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/paper-100k.pdf
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++#add_test(NAME minigzip-file_compress
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DTARGET=${MINIGZIP_COMMAND}"
++#    -DFILEMODE=ON
++#    -DGZIP_VERIFY=ON
++#    -DTEST_NAME=minigzip-file_compress
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/paper-100k.pdf
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
++
++#add_test(NAME minideflate-file_compress
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DTARGET=${MINIDEFLATE_COMMAND}"
++#    -DFILEMODE=ON
++#    -DGZIP_VERIFY=OFF
++#    -DTEST_NAME=minideflate-file_compress
++#    -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/data/paper-100k.pdf
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
+ 
+ # Test --help and invalid parameters for our tools
+ set(TEST_COMMAND ${MINIGZIP_COMMAND} "--help")
+-add_test(NAME minigzip-help
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMMAND=${TEST_COMMAND}"
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
+-
+-set(TEST_COMMAND ${MINIGZIP_COMMAND} "--invalid")
+-add_test(NAME minigzip-invalid
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMMAND=${TEST_COMMAND}"
+-    -DSUCCESS_EXIT=64
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
+-
+-set(TEST_COMMAND ${MINIDEFLATE_COMMAND} "--help")
+-add_test(NAME minideflate-help
+-    COMMAND ${CMAKE_COMMAND}
+-     "-DCOMMAND=${TEST_COMMAND}"
+-     -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
+-
+-set(TEST_COMMAND ${MINIDEFLATE_COMMAND} "--invalid")
+-add_test(NAME minideflate-invalid
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMMAND=${TEST_COMMAND}"
+-    -DSUCCESS_EXIT=64
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
+-
+-set(TEST_COMMAND ${SWITCHLEVELS_COMMAND} "--help")
+-add_test(NAME switchlevels-help
+-    COMMAND ${CMAKE_COMMAND}
+-     "-DCOMMAND=${TEST_COMMAND}"
+-     -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
++#add_test(NAME minigzip-help
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMMAND=${TEST_COMMAND}"
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
++
++#set(TEST_COMMAND ${MINIGZIP_COMMAND} "--invalid")
++#add_test(NAME minigzip-invalid
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMMAND=${TEST_COMMAND}"
++#    -DSUCCESS_EXIT=64
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
++
++#set(TEST_COMMAND ${MINIDEFLATE_COMMAND} "--help")
++#add_test(NAME minideflate-help
++#    COMMAND ${CMAKE_COMMAND}
++#     "-DCOMMAND=${TEST_COMMAND}"
++#     -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
++
++#set(TEST_COMMAND ${MINIDEFLATE_COMMAND} "--invalid")
++#add_test(NAME minideflate-invalid
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMMAND=${TEST_COMMAND}"
++#    -DSUCCESS_EXIT=64
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
++
++#set(TEST_COMMAND ${SWITCHLEVELS_COMMAND} "--help")
++#add_test(NAME switchlevels-help
++#    COMMAND ${CMAKE_COMMAND}
++#     "-DCOMMAND=${TEST_COMMAND}"
++#     -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-redirect.cmake)
+ 
+ # Test generated crc32 tables match tables in source directory
+-add_test(NAME makecrct
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMMAND=${MAKECRCT_COMMAND}"
+-    -DOUTPUT=${PROJECT_BINARY_DIR}/Testing/Temporary/crc32_braid_tbl._h
+-    -DCOMPARE=${PROJECT_SOURCE_DIR}/crc32_braid_tbl.h
+-    -DIGNORE_LINE_ENDINGS=ON
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
++#add_test(NAME makecrct
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMMAND=${MAKECRCT_COMMAND}"
++#    -DOUTPUT=${PROJECT_BINARY_DIR}/Testing/Temporary/crc32_braid_tbl._h
++#    -DCOMPARE=${PROJECT_SOURCE_DIR}/crc32_braid_tbl.h
++#    -DIGNORE_LINE_ENDINGS=ON
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
+ 
+ # Test generated inflate tables match tables in source directory
+-add_test(NAME makefixed
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMMAND=${MAKEFIXED_COMMAND}"
+-    -DOUTPUT=${PROJECT_BINARY_DIR}/Testing/Temporary/inffixed_tbl._h
+-    -DCOMPARE=${PROJECT_SOURCE_DIR}/inffixed_tbl.h
+-    -DIGNORE_LINE_ENDINGS=ON
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
++#add_test(NAME makefixed
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMMAND=${MAKEFIXED_COMMAND}"
++#    -DOUTPUT=${PROJECT_BINARY_DIR}/Testing/Temporary/inffixed_tbl._h
++#    -DCOMPARE=${PROJECT_SOURCE_DIR}/inffixed_tbl.h
++#    -DIGNORE_LINE_ENDINGS=ON
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
+ 
+ # Test generated tree tables match tables in source directory
+-add_test(NAME maketrees
+-    COMMAND ${CMAKE_COMMAND}
+-    "-DCOMMAND=${MAKETREES_COMMAND}"
+-    -DOUTPUT=${PROJECT_BINARY_DIR}/Testing/Temporary/trees_tbl._h
+-    -DCOMPARE=${PROJECT_SOURCE_DIR}/trees_tbl.h
+-    -DIGNORE_LINE_ENDINGS=ON
+-    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
++#add_test(NAME maketrees
++#    COMMAND ${CMAKE_COMMAND}
++#    "-DCOMMAND=${MAKETREES_COMMAND}"
++#    -DOUTPUT=${PROJECT_BINARY_DIR}/Testing/Temporary/trees_tbl._h
++#    -DCOMPARE=${PROJECT_SOURCE_DIR}/trees_tbl.h
++#    -DIGNORE_LINE_ENDINGS=ON
++#    -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)


=====================================
debian/patches/debuginfo.patch
=====================================
@@ -2,9 +2,13 @@ Author: Juhani Numminen <juhaninumminen0 at gmail.com>
 Last-Changed: Thu, 25 Feb 2021 17:54:56 +0200
 Description: want debug info for the deb package
 Forwarded: not-needed
---- a/assembler/src/cmake/flags.cmake
-+++ b/assembler/src/cmake/flags.cmake
-@@ -39,7 +39,7 @@ else()
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/src/cmake/flags.cmake
+===================================================================
+--- a/src/cmake/flags.cmake
++++ b/src/cmake/flags.cmake
+@@ -40,7 +40,7 @@
    if (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
      add_compile_options(-g1)
    else()


=====================================
debian/patches/fix-bool-cast
=====================================
@@ -1,8 +1,12 @@
 From: Michael R. Crusoe <crusoe at debian.org>
 Subject: Make explicit cast to bool
---- a/assembler/src/common/func/pred.hpp
-+++ b/assembler/src/common/func/pred.hpp
-@@ -33,7 +33,7 @@ class TypedPredicate {
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/src/common/func/pred.hpp
+===================================================================
+--- a/src/common/func/pred.hpp
++++ b/src/common/func/pred.hpp
+@@ -40,7 +40,7 @@
                  : data_(std::move(p)) { }
  
          virtual bool operator()(T x) const override {


=====================================
debian/patches/fix-missing-functional-include.patch
=====================================
@@ -0,0 +1,17 @@
+Description: add missing <functional> include for GCC 16
+Author: Andreas Tille <tille at debian.org>
+Forwarded: no
+Assisted-By: deepseek-v4.1-flash-free 4.1
+Last-Update: 2026-10-21
+
+--- a/src/projects/ionhammer/thread_utils.h
++++ b/src/projects/ionhammer/thread_utils.h
+@@ -12,6 +12,8 @@
+ #ifndef PROJECT_THREAD_UTILS_H
+ #define PROJECT_THREAD_UTILS_H
+ 
++#include <functional>
++
+ namespace n_computation_utils {
+ 
+ template <class AdditiveStat>


=====================================
debian/patches/fix_config_include_paths.patch
=====================================
@@ -0,0 +1,54 @@
+Author: Andreas Tille <tille at debian.org>
+Last-Update: 2026-10-21
+Description: Resolve config includes relative to the config directory
+ SPAdes' Boost property_tree based config loader resolves #include
+ directives relative to the current working directory.  Running SPAdes from
+ an arbitrary directory, as unicycler and shovill do, fails with
+ .
+ Exception caught .../configs/config.info(3): cannot open include file simplification.info
+ .
+ Rewrite relative includes to absolute paths in the generated per-K configs.
+Forwarded: not-needed
+
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+--- a/src/projects/spades/pipeline/spades_pipeline/stages/spades_iteration_stage.py
++++ b/src/projects/spades/pipeline/spades_pipeline/stages/spades_iteration_stage.py
+@@ -9,6 +9,7 @@
+ ############################################################################
+ 
+ import os
++import re
+ 
+ from ..commands_parser import Command
+ from ..process_cfg import process_spaces, bool_to_str, substitute_params
+@@ -46,6 +47,21 @@
+         command.append(os.path.join(configs_dir, "hmm_mode.info"))
+ 
+ 
++def make_includes_absolute(configs_dir):
++    include_re = re.compile(r'(#include\s+")([^"/][^"]*)(")')
++    for filename in os.listdir(configs_dir):
++        if not filename.endswith(".info"):
++            continue
++        path = os.path.join(configs_dir, filename)
++        with open(path) as reader:
++            contents = reader.read()
++        contents = include_re.sub(
++            lambda match: match.group(1) + os.path.join(configs_dir, match.group(2)) + match.group(3),
++            contents)
++        with open(path, "w") as writer:
++            writer.write(contents)
++
++
+ def prepare_config_spades(filename, cfg, additional_contigs_fname, K, stage, saves_dir, last_one):
+     subst_dict = dict()
+     subst_dict["K"] = str(K)
+@@ -169,6 +185,7 @@
+         cfg_fn = os.path.join(dst_configs, "config.info")
+         prepare_config_spades(cfg_fn, cfg, additional_contigs_dname, self.K, self.get_stage(self.short_name),
+                               saves_dir, self.last_one)
++        make_includes_absolute(dst_configs)
+ 
+     def get_command(self, cfg):
+         data_dir = os.path.join(cfg.output_dir, "K%d" % self.K)


=====================================
debian/patches/samtools_missing_source.patch
=====================================
@@ -0,0 +1,27 @@
+Description: adding some source files to build the samtools part, otherwise
+ some symbols are missing at compilation time
+Author: Pierre Gruet <pgt at debian.org>
+Forwarded: no
+Last-Update: 2024-07-04
+
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/ext/src/samtools/CMakeLists.txt
+===================================================================
+--- a/ext/src/samtools/CMakeLists.txt
++++ b/ext/src/samtools/CMakeLists.txt
+@@ -21,6 +21,7 @@
+   bam_pileup.c
+   bam_lpileup.c
+   bam_md.c
++  bgzf.c
+   razf.c
+   faidx.c
+   bedidx.c
+@@ -28,5 +29,6 @@
+   sam_header.c
+   bam_reheader.c
+   kprobaln.c
++  knetfile.c
+   bam_cat.c)
+ target_link_libraries(samtools ${bamtools_LIBRARY} zlibstatic)


=====================================
debian/patches/series
=====================================
@@ -1,27 +1,12 @@
-fix-gcc13.patch
-0002_use_debian_packaged_python-joblib.patch
-0003_accept-system-bwa.patch
-0101_cmake_ignore_removed_python-yaml.patch
-0102_cmake_ignore_removed_python-joblib.patch
-0103_use-debian-packaged-bwa.patch
-#do_not_install_third_party_libs.patch
-# use-debian-packaged-samtools.patch
-# bamtools-cmake.patch
-# use-debian-packaged-yaml-cpp.patch   ## <<-- does not work - see patch description
 0114_use_debian_provided_libs.patch
-#0116_stable_link_order.patch
 0118_adjust_spades_home_again.patch
 fix-bool-cast
-python3.patch
 yaml_load.patch
 debuginfo.patch
-debian_bwa_zlib.patch
 workdir_for_test.patch
-disable_local_convertutf.patch
-fix-sigill-on-non-popcnt-cpus.patch
-fix-privacy-breaches.patch
 typos.patch
-python3.12.patch
-raw_regex_pattern.patch
-gcc-15.patch
-Try_to_unbreak.patch
+use_debian_xxhash.patch
+samtools_missing_source.patch
+deactivate_tests_with_no_data.patch
+fix-missing-functional-include.patch
+fix_config_include_paths.patch


=====================================
debian/patches/typos.patch
=====================================
@@ -4,14 +4,18 @@ Forwarded: no
 Last-Update: 2022-06-25
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- spades.orig/assembler/src/common/stages/ss_edge_split.hpp
-+++ spades/assembler/src/common/stages/ss_edge_split.hpp
-@@ -14,7 +14,7 @@
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/src/common/stages/ss_edge_split.hpp
+===================================================================
+--- a/src/common/stages/ss_edge_split.hpp
++++ b/src/common/stages/ss_edge_split.hpp
+@@ -15,7 +15,7 @@
  class SSEdgeSplit: public spades::AssemblyStage {
  
  public:
 -    SSEdgeSplit() : AssemblyStage("Strand-specific Edge Spliting", "ss_edge_splitting") {}
 +    SSEdgeSplit() : AssemblyStage("Strand-specific Edge Splitting", "ss_edge_splitting") {}
  
-     void run(GraphPack& gp, const char *) override;
+     void run(graph_pack::GraphPack& gp, const char *) override;
  };


=====================================
debian/patches/use_debian_xxhash.patch
=====================================
@@ -0,0 +1,125 @@
+Description: changing the path to include files of xxhash as we use the
+ Debian-packaged one
+Author: Pierre Gruet <pgt at debian.org>
+Forwarded: not-needed
+Last-Update: 2024-07-04
+
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/src/common/alignment/kmer_map.hpp
+===================================================================
+--- a/src/common/alignment/kmer_map.hpp
++++ b/src/common/alignment/kmer_map.hpp
+@@ -16,7 +16,7 @@
+ #include <limits>
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ namespace debruijn_graph {
+ class KMerMap {
+Index: b/src/common/kmer_index/kmer_mph/kmer_index.hpp
+===================================================================
+--- a/src/common/kmer_index/kmer_mph/kmer_index.hpp
++++ b/src/common/kmer_index/kmer_mph/kmer_index.hpp
+@@ -15,7 +15,7 @@
+ #include <cmath>
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ namespace kmers {
+ 
+Index: b/src/common/paired_info/concurrent_pair_info_buffer.hpp
+===================================================================
+--- a/src/common/paired_info/concurrent_pair_info_buffer.hpp
++++ b/src/common/paired_info/concurrent_pair_info_buffer.hpp
+@@ -16,7 +16,7 @@
+ #include <cuckoo/cuckoohash_map.hh>
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ namespace omnigraph {
+ 
+Index: b/src/common/paired_info/paired_info_utils.cpp
+===================================================================
+--- a/src/common/paired_info/paired_info_utils.cpp
++++ b/src/common/paired_info/paired_info_utils.cpp
+@@ -18,7 +18,7 @@
+ #include "utils/parallel/openmp_wrapper.h"
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ namespace paired_info {
+ 
+Index: b/src/common/sequence/rtseq.hpp
+===================================================================
+--- a/src/common/sequence/rtseq.hpp
++++ b/src/common/sequence/rtseq.hpp
+@@ -31,7 +31,7 @@
+ #include <iostream>
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ template<size_t max_size_, typename T = seq::seq_element_type>
+ class RuntimeSeq {
+Index: b/src/common/sequence/seq.hpp
+===================================================================
+--- a/src/common/sequence/seq.hpp
++++ b/src/common/sequence/seq.hpp
+@@ -33,7 +33,7 @@
+ #include "seq_common.hpp"
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ #include <string>
+ #include <array>
+Index: b/src/common/sequence/simple_seq.hpp
+===================================================================
+--- a/src/common/sequence/simple_seq.hpp
++++ b/src/common/sequence/simple_seq.hpp
+@@ -28,7 +28,7 @@
+ #include "seq_common.hpp"
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ /**
+  * @param T is max number of nucleotides, type for storage
+Index: b/src/projects/ionhammer/HSeq.hpp
+===================================================================
+--- a/src/projects/ionhammer/HSeq.hpp
++++ b/src/projects/ionhammer/HSeq.hpp
+@@ -19,7 +19,7 @@
+ #include <cstdint>
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ namespace hammer {
+ 
+Index: b/src/test/adt/phm_test.cpp
+===================================================================
+--- a/src/test/adt/phm_test.cpp
++++ b/src/test/adt/phm_test.cpp
+@@ -15,7 +15,7 @@
+ #include <algorithm>
+ 
+ #define XXH_INLINE_ALL
+-#include "xxh/xxhash.h"
++#include <xxhash.h>
+ 
+ #include <gtest/gtest.h>
+ 


=====================================
debian/patches/workdir_for_test.patch
=====================================
@@ -2,12 +2,16 @@ Author: Juhani Numminen <juhaninumminen0 at gmail.com>
 Last-Changed: Thu, 25 Feb 2021 17:54:56 +0200
 Description: set working directory so that the test finds its data
 Forwarded: no
---- a/assembler/src/test/debruijn/CMakeLists.txt
-+++ b/assembler/src/test/debruijn/CMakeLists.txt
-@@ -12,4 +12,5 @@
-                path_extend_test.cpp graphio.cpp overlap_removal_test.cpp graph_alignment_test.cpp
-                test.cpp)
- target_link_libraries(debruijn_test common_modules input ${COMMON_LIBRARIES} teamcity_gtest gtest)
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/src/test/debruijn/CMakeLists.txt
+===================================================================
+--- a/src/test/debruijn/CMakeLists.txt
++++ b/src/test/debruijn/CMakeLists.txt
+@@ -13,4 +13,5 @@
+                path_extend_test.cpp graphio.cpp overlap_removal_test.cpp graph_alignment_test.cpp v_overlaps.cpp
+                contracted_graph_test.cpp barcode_index.cpp test.cpp)
+ target_link_libraries(debruijn_test common_modules input ${COMMON_LIBRARIES} graphio teamcity_gtest gtest)
 -add_test(NAME debruijn_test COMMAND debruijn_test)
 +add_test(NAME debruijn_test COMMAND debruijn_test
 +         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..)


=====================================
debian/patches/yaml_load.patch
=====================================
@@ -5,18 +5,22 @@ Description: Specify yaml loader
 Reviewed-By: Étienne Mollier <emollier at debian.org>
 Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022086
 
---- spades.orig/assembler/spades.py
-+++ spades/assembler/spades.py
-@@ -114,7 +114,7 @@
+Assisted-By: deepseek-v4.1-flash-free 4.1
+
+Index: b/src/projects/spades/pipeline/spades.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades.py
++++ b/src/projects/spades/pipeline/spades.py
+@@ -129,7 +129,7 @@
                       " for RNA-Seq use '--rna'.")
  
          log.info("  Reads:")
 -        dataset_data = pyyaml.load(open(cfg["dataset"].yaml_filename))
 +        dataset_data = pyyaml.load(open(cfg["dataset"].yaml_filename), Loader=pyyaml.FullLoader)
-         dataset_data = support.relative2abs_paths(dataset_data, os.path.dirname(cfg["dataset"].yaml_filename))
-         support.pretty_print_reads(dataset_data, log)
+         dataset_data = file_operations.relative2abs_paths(dataset_data, os.path.dirname(cfg["dataset"].yaml_filename))
+         support.pretty_print_reads(dataset_data)
  
-@@ -334,7 +334,7 @@
+@@ -352,7 +352,7 @@
  
      spades_commands_fpath = os.path.join(cfg["common"].output_dir, "run_spades.yaml")
      with open(spades_commands_fpath) as stream:
@@ -25,7 +29,7 @@ Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022086
  
      restart_from_stage_id = None
      for num in range(len(old_pipeline)):
-@@ -369,7 +369,7 @@
+@@ -388,7 +388,7 @@
  
  def get_first_incomplete_command(filename):
      with open(filename) as stream:
@@ -34,20 +38,24 @@ Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022086
  
      first_incomplete_stage_id = 0
      while first_incomplete_stage_id < len(old_pipeline):
---- spades.orig/assembler/src/tools/reads_utils/reads_quality.py
-+++ spades/assembler/src/tools/reads_utils/reads_quality.py
-@@ -148,7 +148,7 @@
- for dataset in datasets:
- 
-     try:
--        dataset_data = pyyaml.load(open(dataset, 'r'))
-+        dataset_data = pyyaml.load(open(dataset, 'r'), Loader=pyyaml.FullLoader)
-     except pyyaml.YAMLError as exc:
-         support.warning('skipping ' + dataset + ': exception caught while parsing YAML file (' + options_storage.dataset_yaml_filename + '):\n' + str(exc))
-         continue
---- spades.orig/assembler/src/spades_pipeline/options_parser.py
-+++ spades/assembler/src/spades_pipeline/options_parser.py
-@@ -1073,14 +1073,14 @@
+Index: b/src/projects/spades/pipeline/spades_pipeline/commands_parser.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_pipeline/commands_parser.py
++++ b/src/projects/spades/pipeline/spades_pipeline/commands_parser.py
+@@ -119,7 +119,7 @@
+     import pyyaml3 as yaml
+ 
+     with open(yaml_fpath) as stream:
+-        data = yaml.load(stream)
++        data = yaml.load(stream, Loader=yaml.FullLoader)
+     commands = []
+     for kwargs in data:
+         commands.append(Command(**kwargs))
+Index: b/src/projects/spades/pipeline/spades_pipeline/options_parser.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_pipeline/options_parser.py
++++ b/src/projects/spades/pipeline/spades_pipeline/options_parser.py
+@@ -1190,14 +1190,14 @@
      if load_processed_dataset:
          if os.path.isfile(processed_dataset_fpath):
              try:
@@ -64,159 +72,64 @@ Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022086
          except pyyaml.YAMLError:
              _, exc, _ = sys.exc_info()
              support.error(
---- spades.orig/assembler/src/spades_pipeline/scripts/compress_all.py
-+++ spades/assembler/src/spades_pipeline/scripts/compress_all.py
-@@ -38,7 +38,7 @@
-     except:
-         from joblib import Parallel, delayed
- 
--    dataset_data = pyyaml.load(open(input_file))
-+    dataset_data = pyyaml.load(open(input_file), Loader=pyyaml.FullLoader)
-     remove_not_corrected_reads(output_dir)
-     is_changed = False
-     if gzip_output:
-@@ -80,7 +80,7 @@
- 
-     if not_used_yaml_file != "":
-         is_changed = True
--        not_used_dataset_data = pyyaml.load(open(not_used_yaml_file))
-+        not_used_dataset_data = pyyaml.load(open(not_used_yaml_file), Loader=pyyaml.FullLoader)
-         dataset_data += not_used_dataset_data
-         log.info("\n== Info about datasets not used in error correction stage is loaded")
- 
---- spades.orig/assembler/src/spades_pipeline/scripts/postprocessing_script.py
-+++ spades/assembler/src/spades_pipeline/scripts/postprocessing_script.py
-@@ -66,7 +66,7 @@
-     elif sys.version.startswith("3."):
-         import pyyaml3 as pyyaml
- 
--    dataset_data = pyyaml.load(open(args.dataset_yaml_file))
-+    dataset_data = pyyaml.load(open(args.dataset_yaml_file), Loader=pyyaml.FullLoader)
- 
-     # init python_lib_folder
-     python_modules_home = abspath(dirname(realpath(__file__)))
---- spades.orig/assembler/src/spades_pipeline/stages/correction_stage.py
-+++ spades/assembler/src/spades_pipeline/stages/correction_stage.py
-@@ -24,7 +24,7 @@
-         import pyyaml2 as pyyaml
-     elif sys.version.startswith("3."):
-         import pyyaml3 as pyyaml
--    data = pyyaml.load(open(filename))
-+    data = pyyaml.load(open(filename), Loader=pyyaml.FullLoader)
-     data["dataset"] = cfg.dataset
-     data["output_dir"] = cfg.output_dir
-     data["work_dir"] = cfg.tmp_dir
---- spades.orig/assembler/src/spades_pipeline/stages/spades_stage.py
-+++ spades/assembler/src/spades_pipeline/stages/spades_stage.py
-@@ -29,7 +29,7 @@
-             import pyyaml2 as pyyaml
-         elif sys.version.startswith("3."):
-             import pyyaml3 as pyyaml
--        est_params_data = pyyaml.load(open(est_params_filename))
-+        est_params_data = pyyaml.load(open(est_params_filename), Loader=pyyaml.FullLoader)
-         max_read_length = int(est_params_data["nomerge max read length"])
-         log.info("Max read length detected as %d" % max_read_length)
-     if max_read_length == 0:
---- spades.orig/assembler/src/spades_pipeline/truspades/moleculo_filter_contigs.py
-+++ spades/assembler/src/spades_pipeline/truspades/moleculo_filter_contigs.py
-@@ -37,4 +37,4 @@
-         return len(contig.seq) >= self.min_length
- 
- # def Filter(contigs, left_reads, right_reads, length_threshold, pattern):
--#     dataset_data = pyyaml.load(yaml_file, 'r')
-+#     dataset_data = pyyaml.load(yaml_file, 'r', Loader=pyyaml.FullLoader)
---- spades.orig/assembler/src/test/teamcity/teamcity_kmertools/teamcity_gbuilder.py
-+++ spades/assembler/src/test/teamcity/teamcity_kmertools/teamcity_gbuilder.py
-@@ -63,7 +63,7 @@
-     elif sys.version.startswith('3.'):
-         import pyyaml3 as pyyaml
- 
--    info = pyyaml.load(open(info_filename, 'r'))
-+    info = pyyaml.load(open(info_filename, 'r'), Loader=pyyaml.FullLoader)
-     return info
- 
- 
---- spades.orig/assembler/src/test/teamcity/teamcity_kmertools/teamcity_kmercount.py
-+++ spades/assembler/src/test/teamcity/teamcity_kmertools/teamcity_kmercount.py
-@@ -63,7 +63,7 @@
-     elif sys.version.startswith('3.'):
-         import pyyaml3 as pyyaml
- 
--    info = pyyaml.load(open(info_filename, 'r'))
-+    info = pyyaml.load(open(info_filename, 'r'), Loader=pyyaml.FullLoader)
-     return info
- 
- 
---- spades.orig/assembler/src/test/teamcity/teamcity_kmertools/teamcity_kmerestimating.py
-+++ spades/assembler/src/test/teamcity/teamcity_kmertools/teamcity_kmerestimating.py
-@@ -63,7 +63,7 @@
-     elif sys.version.startswith('3.'):
-         import pyyaml3 as pyyaml
- 
--    info = pyyaml.load(open(info_filename, 'r'))
-+    info = pyyaml.load(open(info_filename, 'r'), Loader=pyyaml.FullLoader)
-     return info
- 
- 
---- spades.orig/assembler/src/spades_pipeline/stages/before_start_stage.py
-+++ spades/assembler/src/spades_pipeline/stages/before_start_stage.py
-@@ -29,7 +29,7 @@
+Index: b/src/projects/spades/pipeline/spades_pipeline/stages/before_start_stage.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_pipeline/stages/before_start_stage.py
++++ b/src/projects/spades/pipeline/spades_pipeline/stages/before_start_stage.py
+@@ -28,7 +28,7 @@
          self.tmp_files = []
  
-         if (os.path.isfile(os.path.join(output_dir, "run_spades.yaml"))):
+         if os.path.isfile(os.path.join(output_dir, "run_spades.yaml")):
 -            previous_pipeline = pyyaml.load(open(os.path.join(output_dir, "run_spades.yaml")))
 +            previous_pipeline = pyyaml.load(open(os.path.join(output_dir, "run_spades.yaml")), Loader=pyyaml.FullLoader)
              for previous_stage in previous_pipeline:
                  self.tmp_files += previous_stage["del_after"]
  
---- spades.orig/assembler/src/spades_pipeline/stages/error_correction_stage.py
-+++ spades/assembler/src/spades_pipeline/stages/error_correction_stage.py
+Index: b/src/projects/spades/pipeline/spades_pipeline/stages/correction_stage.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_pipeline/stages/correction_stage.py
++++ b/src/projects/spades/pipeline/spades_pipeline/stages/correction_stage.py
+@@ -25,7 +25,7 @@
+ def prepare_config_corr(filename, cfg, ext_python_modules_home):
+     addsitedir(ext_python_modules_home)
+     import pyyaml3 as pyyaml
+-    data = pyyaml.load(open(filename))
++    data = pyyaml.load(open(filename), Loader=pyyaml.FullLoader)
+     data["dataset"] = cfg.dataset
+     data["output_dir"] = cfg.output_dir
+     data["work_dir"] = cfg.tmp_dir
+Index: b/src/projects/spades/pipeline/spades_pipeline/stages/error_correction_stage.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_pipeline/stages/error_correction_stage.py
++++ b/src/projects/spades/pipeline/spades_pipeline/stages/error_correction_stage.py
 @@ -47,7 +47,7 @@
-             import pyyaml2 as pyyaml
-         elif sys.version.startswith("3."):
-             import pyyaml3 as pyyaml
+     def prepare_config_ih(self, filename, cfg, ext_python_modules_home):
+         addsitedir(ext_python_modules_home)
+         import pyyaml3 as pyyaml
 -        data = pyyaml.load(open(filename))
 +        data = pyyaml.load(open(filename), Loader=pyyaml.FullLoader)
          data["dataset"] = cfg.dataset_yaml_filename
          data["working_dir"] = cfg.tmp_dir
          data["output_dir"] = cfg.output_dir
---- spades.orig/assembler/src/test/teamcity/teamcity_kmertools/teamcity_readfilter.py
-+++ spades/assembler/src/test/teamcity/teamcity_kmertools/teamcity_readfilter.py
-@@ -63,7 +63,7 @@
-     elif sys.version.startswith('3.'):
-         import pyyaml3 as pyyaml
- 
--    info = pyyaml.load(open(info_filename, 'r'))
-+    info = pyyaml.load(open(info_filename, 'r'), Loader=pyyaml.FullLoader)
-     return info
+Index: b/src/projects/spades/pipeline/spades_pipeline/supplemetary/compress_all.py
+===================================================================
+--- a/src/projects/spades/pipeline/spades_pipeline/supplemetary/compress_all.py
++++ b/src/projects/spades/pipeline/spades_pipeline/supplemetary/compress_all.py
+@@ -32,7 +32,7 @@
+     import pyyaml3 as pyyaml
+     from concurrent.futures import ProcessPoolExecutor
  
+-    dataset_data = pyyaml.load(open(input_file))
++    dataset_data = pyyaml.load(open(input_file), Loader=pyyaml.FullLoader)
+     remove_not_corrected_reads(output_dir)
+     is_changed = False
+     if gzip_output:
+@@ -83,7 +83,7 @@
  
---- spades.orig/assembler/src/test/teamcity/teamcity_workflow/workflow_base.py
-+++ spades/assembler/src/test/teamcity/teamcity_workflow/workflow_base.py
-@@ -67,7 +67,7 @@
-     elif sys.version.startswith('3.'):
-         import pyyaml3 as pyyaml
- 
--    info = pyyaml.load(open(info_filename, 'r'))
-+    info = pyyaml.load(open(info_filename, 'r'), Loader=pyyaml.FullLoader)
-     return info
- 
- 
---- spades.orig/assembler/src/test/teamcity/teamcity_workflow/workflow_kmer.py
-+++ spades/assembler/src/test/teamcity/teamcity_workflow/workflow_kmer.py
-@@ -27,7 +27,7 @@
- def get_kmer_list(path):
-     run_spades_yaml = os.path.join(path, "run_spades.yaml")
- 
--    stages = pyyaml.load(open(run_spades_yaml))
-+    stages = pyyaml.load(open(run_spades_yaml), Loader=pyyaml.FullLoader)
-     kmers = []
-     for stage in stages:
-         stage_name = stage['STAGE']
-@@ -62,4 +62,4 @@
-         return 12
- 
+     if not_used_yaml_file != "":
+         is_changed = True
+-        not_used_dataset_data = pyyaml.load(open(not_used_yaml_file))
++        not_used_dataset_data = pyyaml.load(open(not_used_yaml_file), Loader=pyyaml.FullLoader)
+         dataset_data += not_used_dataset_data
+         log.info("\n== Info about datasets not used in error correction stage is loaded")
  
--workflow_base.main(check_test=check_kmer_set)
-\ No newline at end of file
-+workflow_base.main(check_test=check_kmer_set)



View it on GitLab: https://salsa.debian.org/med-team/spades/-/compare/1a0f7bcdedeecbc87dced1803cc7a796053b5f18...04f3dfbadb6e49276cd35286426ad0a663a74ba0

-- 
View it on GitLab: https://salsa.debian.org/med-team/spades/-/compare/1a0f7bcdedeecbc87dced1803cc7a796053b5f18...04f3dfbadb6e49276cd35286426ad0a663a74ba0
You're receiving this email because of your account on salsa.debian.org. Manage all notifications: https://salsa.debian.org/-/profile/notifications | Help: https://salsa.debian.org/help


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20261021/7e67996c/attachment-0001.htm>


More information about the debian-med-commit mailing list