[med-svn] [Git][med-team/iva][master] 7 commits: Standards-Version: 4.7.4 (routine-update)

Andreas Tille (@tille) gitlab at salsa.debian.org
Wed Jul 8 13:03:27 BST 2026



Andreas Tille pushed to branch master at Debian Med / iva


Commits:
e8b714f0 by Andreas Tille at 2026-07-08T07:03:39+02:00
Standards-Version: 4.7.4 (routine-update)

- - - - -
af3afd97 by Andreas Tille at 2026-07-08T07:07:43+02:00
Changes made by cme

- - - - -
a3186ef7 by Andreas Tille at 2026-07-08T07:07:45+02:00
Drop 'Rules-Requires-Root: no' from d/control (routine-update)

- - - - -
b14b2785 by Andreas Tille at 2026-07-08T06:07:54+01:00
Set upstream metadata fields: Repository.

Changes-By: lintian-brush
Fixes: lintian: source: upstream-metadata-missing-repository [debian/upstream/metadata]
See-also: https://lintian.debian.org/tags/upstream-metadata-missing-repository.html

- - - - -
cd2a226e by Andreas Tille at 2026-07-08T11:47:01+02:00
Separate iva-examples package containing test data

- - - - -
665462f0 by Andreas Tille at 2026-07-08T11:47:12+02:00
Install autopkgtest as user example in docs as run-unit-test which also Closes: #1141283

- - - - -
14deaa90 by Andreas Tille at 2026-07-08T13:53:32+02:00
Adapt to forkserver in Python3.14 Closes: #1141283

- - - - -


13 changed files:

- + debian/README.test
- debian/changelog
- debian/control
- + debian/iva-examples.links
- + debian/iva.docs
- + debian/patches/check-test-data-and-altdir.patch
- + debian/patches/fix_python3.14_forkserver.patch
- debian/patches/series
- debian/rules
- debian/tests/control
- + debian/tests/run-unit-test
- − debian/tests/test-example
- debian/upstream/metadata


Changes:

=====================================
debian/README.test
=====================================
@@ -0,0 +1,21 @@
+Notes on how this package can be tested.
+────────────────────────────────────────
+
+To run the test you need to
+
+  sudo apt install iva-examples
+
+which contains test data for iva.  Once you installed the example data
+iva can be tested by running the provided test:
+
+  sh run-unit-test
+
+in order to confirm its integrity.
+
+Alternatively you can also try
+
+  WORKDIR=$(mktemp -d)
+  trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
+  iva --test --trimmomatic /usr/share/java/trimmomatic.jar $WORKDIR/test
+
+to use the internal test feature of iva.


=====================================
debian/changelog
=====================================
@@ -5,8 +5,17 @@ iva (1.0.11+ds-7) UNRELEASED; urgency=medium
 
   [ Andreas Tille ]
   * d/watch: version=5
-
- -- Sascha Steinbiss <satta at debian.org>  Sat, 21 Feb 2026 16:47:27 +0100
+  * Standards-Version: 4.7.4 (routine-update)
+  * Reflow Uploaders field (cme)
+  * Remove Priority field (cme)
+  * Drop 'Rules-Requires-Root: no' from d/control (routine-update)
+  * Set upstream metadata fields: Repository.
+  * Separate iva-examples package containing test data
+  * Install autopkgtest as user example in docs as run-unit-test
+  * Adapt to forkserver in Python3.14
+    Closes: #1141283
+
+ -- Andreas Tille <tille at debian.org>  Wed, 08 Jul 2026 11:47:22 +0200
 
 iva (1.0.11+ds-6) unstable; urgency=medium
 


=====================================
debian/control
=====================================
@@ -1,51 +1,54 @@
 Source: iva
+Standards-Version: 4.7.4
 Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
-Uploaders: Andreas Tille <tille at debian.org>,
-           Jorge Soares <j.s.soares at gmail.com>,
-           Sascha Steinbiss <satta at debian.org>
+Uploaders:
+ Andreas Tille <tille at debian.org>,
+ Jorge Soares <j.s.soares at gmail.com>,
+ Sascha Steinbiss <satta at debian.org>,
 Section: science
-Priority: optional
-Build-Depends: debhelper-compat (= 13),
-               dh-sequence-python3,
-               libssl-dev,
-               bioperl,
-               fastaq,
-               kmc,
-               help2man,
-               mummer,
-               python3,
-               python3-setuptools,
-               python3-packaging,
-               python3-numpy,
-               python3-networkx,
-               python3-pysam,
-               python3-pytest,
-               samtools,
-               smalt,
-               default-jdk-headless
-Standards-Version: 4.6.2
+Build-Depends:
+ debhelper-compat (= 14),
+ dh-sequence-python3,
+ libssl-dev,
+ bioperl,
+ fastaq,
+ kmc,
+ help2man,
+ mummer,
+ python3,
+ python3-setuptools,
+ python3-packaging,
+ python3-numpy,
+ python3-networkx,
+ python3-pysam,
+ python3-pytest,
+ samtools,
+ smalt,
+ default-jdk-headless,
 Vcs-Browser: https://salsa.debian.org/med-team/iva
 Vcs-Git: https://salsa.debian.org/med-team/iva.git
 Homepage: https://github.com/sanger-pathogens/iva
-Rules-Requires-Root: no
 
 Package: iva
 Architecture: any
-Depends: ${misc:Depends},
-         ${python3:Depends},
-         ${perl:Depends},
-         fastaq,
-         kmc,
-         mummer,
-         smalt,
-         samtools,
-         python3-numpy,
-         python3-networkx,
-         python3-pysam,
-         default-jre-headless
-Recommends: r-base-core,
-            bioperl,
-            trimmomatic
+Depends:
+ ${misc:Depends},
+ ${python3:Depends},
+ ${perl:Depends},
+ fastaq,
+ kmc,
+ mummer,
+ smalt,
+ samtools,
+ python3-numpy,
+ python3-networkx,
+ python3-pysam,
+ default-jre-headless,
+Recommends:
+ r-base-core,
+ bioperl,
+ trimmomatic,
+Suggests: iva-examples
 Description: iterative virus sequence assembler
  IVA is a de novo assembler designed to assemble
  virus genomes that have no repeat sequences,
@@ -57,3 +60,23 @@ Description: iterative virus sequence assembler
  just read pairs, or additionally you can provide an
  existing set of contigs to be extended. Alternatively,
  it can take reads together with a reference sequence.
+
+Package: iva-examples
+Architecture: all
+Depends:
+ ${misc:Depends},
+Suggests:
+ iva
+Description: iterative virus sequence assembler - test data
+ IVA is a de novo assembler designed to assemble
+ virus genomes that have no repeat sequences,
+ using Illumina read pairs sequenced from mixed
+ populations at extremely high depth.
+ .
+ IVA's main algorithm works by iteratively extending
+ contigs using aligned read pairs. Its input can be
+ just read pairs, or additionally you can provide an
+ existing set of contigs to be extended. Alternatively,
+ it can take reads together with a reference sequence.
+ .
+ Just test data are provided in a separate package.


=====================================
debian/iva-examples.links
=====================================
@@ -0,0 +1 @@
+usr/share/doc/iva/examples	usr/lib/python3/dist-packages/iva/test_run_data


=====================================
debian/iva.docs
=====================================
@@ -0,0 +1,2 @@
+debian/README.test
+debian/tests/run-unit-test


=====================================
debian/patches/check-test-data-and-altdir.patch
=====================================
@@ -0,0 +1,86 @@
+Description: Check test data availability and support alternative location
+ iva/test_run_data is no longer bundled inside the Debian iva package.
+ It's provided via a symlink (usr/lib/python3/dist-packages/iva/test_run_data
+ -> usr/share/doc/iva/examples) from the separate iva-examples package,
+ which is only a Suggests, not a Depends, of iva.
+ .
+ This makes Tester check the data directory exists and is non-empty
+ before doing anything else, printing a clear warning.
+ It also accepts an explicit alternative directory, wired up in
+ scripts/iva as --test_data_dir, and drops the dependency on
+ iva.egg_extract (no longer needed once we have a plain absolute path).
+Author: Andreas Tille <tille at debian.org>
+Forwarded: not-needed
+Last-Update: 2026-07-08
+
+--- a/iva/test_data_runner.py
++++ b/iva/test_data_runner.py
+@@ -13,27 +13,44 @@
+ # You should have received a copy of the GNU General Public License along with
+ # this program. If not, see <http://www.gnu.org/licenses/>.
+ import os
++import shutil
++import sys
+ import iva
+ 
+ class Error (Exception): pass
+ 
+ class Tester:
+-    def __init__(self, outdir, iva_script, trimmo_jar=None, threads=1):
++    def __init__(self, outdir, iva_script, trimmo_jar=None, threads=1, test_data_dir=None):
+         self.outdir = os.path.join(outdir)
+         if os.path.exists(self.outdir):
+             raise Error('Output directory already exists. Cannot continue')
+ 
++        if test_data_dir is None:
++            test_data_dir = os.path.join(os.path.dirname(iva.__file__), 'test_run_data')
++        self.test_data_dir = os.path.abspath(test_data_dir)
++
++        if not os.path.isdir(self.test_data_dir) or not os.listdir(self.test_data_dir):
++            print('Warning: test data not found at', self.test_data_dir + '.', file=sys.stderr)
++            print('On Debian systems, install the iva-examples package (apt install iva-examples),', file=sys.stderr)
++            print('or use --test_data_dir to point iva at an alternative location.', file=sys.stderr)
++            sys.exit(1)
++
+         self.iva_script = iva_script
+         self.trimmo_jar = trimmo_jar
+         self.threads = threads
+ 
+ 
+     def _copy_input_files(self):
+-        extractor = iva.egg_extract.Extractor(os.path.abspath(os.path.join(os.path.dirname(iva.__file__), os.pardir)))
+-        test_files = os.path.join('iva', 'test_run_data')
+-        extractor.copy_dir(test_files, self.outdir)
++        os.mkdir(self.outdir)
++        for fname in os.listdir(self.test_data_dir):
++            src = os.path.join(self.test_data_dir, fname)
++            dst = os.path.join(self.outdir, fname)
++            if os.path.isdir(src):
++                shutil.copytree(src, dst)
++            else:
++                shutil.copy(src, dst)
+         print('Copied input test files into here:', os.path.abspath(self.outdir))
+-         
++
+ 
+     def _run_iva(self):
+         os.chdir(self.outdir)
+--- a/scripts/iva
++++ b/scripts/iva
+@@ -80,6 +80,7 @@ other_group.add_argument('-t', '--thread
+ other_group.add_argument('--kmc_onethread', action='store_true', help='Force kmc to use one thread. By default the value of -t/--threads is used when running kmc')
+ other_group.add_argument('--strand_bias', type=float, help='Set strand bias cutoff of mapped reads when trimming contig ends, in the interval [0,0.5]. A value of x means that a base needs min(fwd_depth, rev_depth) / total_depth <= x. The only time this should be used is with libraries with overlapping reads (ie fragment length < 2*read length), and even then, it can make results worse. If used, try a low value like 0.1 first [%(default)s]', default=0, metavar='FLOAT in [0,0.5]')
+ other_group.add_argument('--test', action='store_true', help='Run using built in test data. All other options will be ignored, except the mandatory output directory, and --trimmomatic and --threads can be also be used')
++other_group.add_argument('--test_data_dir', help='Directory containing test data (reads_1.fq.gz, reads_2.fq.gz, hiv_pcr_primers.fa). Only used with --test. Default is to look for the  data bundled with the installed iva package', metavar='DIRECTORY')
+ other_group.add_argument('--version', action='version', version=iva.common.version)
+ 
+ options = parser.parse_args()
+@@ -87,7 +88,7 @@ options = parser.parse_args()
+ if options.test:
+     print('Running iva in test mode...')
+     this_script = os.path.abspath(__file__)
+-    tester = iva.test_data_runner.Tester(options.outdir, this_script, trimmo_jar=options.trimmomatic, threads=options.threads)
++    tester = iva.test_data_runner.Tester(options.outdir, this_script, trimmo_jar=options.trimmomatic, threads=options.threads, test_data_dir=options.test_data_dir)
+     tester.run()
+     sys.exit()
+ 


=====================================
debian/patches/fix_python3.14_forkserver.patch
=====================================
@@ -0,0 +1,22 @@
+Author: Andreas Tille <tille at debian.org>
+Last-Update: 2026-07-08
+Bug-Debian: https://bugs.debian.org/1141283
+Description: Guard against re-execution during multiprocessing forkserver bootstrap
+ Python 3.14 changed the default multiprocessing start method on Linux
+ from "fork" to "forkserver".  This patch prevents reimporting and re-executing the
+ entire script from scratch
+ 
+--- a/scripts/iva
++++ b/scripts/iva
+@@ -21,6 +21,11 @@ import multiprocessing
+ import pyfastaq
+ import iva
+ 
++# Avoid re-running this whole script when Python's multiprocessing
++# forkserver start method (default since Python 3.14) reimports it
++# under __name__ == '__mp_main__' to bootstrap its background daemon.
++if __name__ != '__main__':
++    sys.exit(0)
+ 
+ parser = argparse.ArgumentParser(
+     usage = '%(prog)s [options] {-f reads_fwd -r reads_rev | --fr reads} <output directory>')


=====================================
debian/patches/series
=====================================
@@ -4,3 +4,5 @@ samtools1.10
 disable-ram-test.patch
 python3.12.patch
 syntax-warning.patch
+check-test-data-and-altdir.patch
+fix_python3.14_forkserver.patch


=====================================
debian/rules
=====================================
@@ -20,6 +20,12 @@ override_dh_auto_build:
 	javac -verbose $(gage_dir)/*.java
 	dh_auto_build --
 
+override_dh_auto_install:
+	dh_auto_install --destdir=debian/iva
+	mkdir -p $(CURDIR)/debian/iva-examples/usr/share/doc/iva/examples
+	mv $(CURDIR)/debian/iva/usr/lib/python3*/dist-packages/iva/test_run_data/* $(CURDIR)/debian/iva-examples/usr/share/doc/iva/examples
+	rmdir $(CURDIR)/debian/iva/usr/lib/python3*/dist-packages/iva/test_run_data
+
 override_dh_installman:
 	mkdir -p $(mandir)
 	PYTHONPATH=. help2man -N -o $(mandir)/iva.1 \


=====================================
debian/tests/control
=====================================
@@ -1,4 +1,4 @@
-Tests: test-example
+Tests: run-unit-test
 Depends: @, trimmomatic, python3-packaging
 Restrictions: skip-not-installable
 # Currently kmc is only available for amd64


=====================================
debian/tests/run-unit-test
=====================================
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+
+pkg=iva
+
+export LC_ALL=C.UTF-8
+if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
+  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
+  # shellcheck disable=SC2064
+  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
+fi
+
+cp -a /usr/share/doc/${pkg}/examples/* "${AUTOPKGTEST_TMP}"
+
+cd "${AUTOPKGTEST_TMP}"
+
+set -x
+/usr/bin/iva --threads 1 --trimmomatic /usr/share/java/trimmomatic.jar --pcr_primers hiv_pcr_primers.fa -f reads_1.fq.gz -r reads_2.fq.gz iva.out
+set +x
+
+echo "Finished running iva"
+CONTIGS=iva.out/contigs.fasta
+if [ -s "$CONTIGS" ]; then
+    echo "Looks OK. Final output contigs file is: $(readlink -f "$CONTIGS")"
+    exit 0
+else
+    echo "Something went wrong! Final output contigs file not found: $(readlink -f "$CONTIGS")" >&2
+    exit 1
+fi
+
+# iva --test --trimmomatic /usr/share/java/trimmomatic.jar "${AUTOPKGTEST_TMP}"/test
+


=====================================
debian/tests/test-example deleted
=====================================
@@ -1,9 +0,0 @@
-#!/bin/sh
-# autopkgtest check: Run example test data through IVA
-# Author: Sascha Steinbiss <sascha at steinbiss.name>
-set -e
-
-WORKDIR=$(mktemp -d)
-trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
-
-iva --test --trimmomatic /usr/share/java/trimmomatic.jar $WORKDIR/test


=====================================
debian/upstream/metadata
=====================================
@@ -22,4 +22,5 @@ Registry:
    Entry: NA
  - Name: conda:bioconda
    Entry: iva
+Repository: https://github.com/sanger-pathogens/iva.git
 Repository-Browse: https://github.com/sanger-pathogens/iva



View it on GitLab: https://salsa.debian.org/med-team/iva/-/compare/04e41f916def11d59f1538ca4fcc2ddb71d44567...14deaa90204151c2e5081da30b9a9b4b54966473

-- 
View it on GitLab: https://salsa.debian.org/med-team/iva/-/compare/04e41f916def11d59f1538ca4fcc2ddb71d44567...14deaa90204151c2e5081da30b9a9b4b54966473
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/20260708/10d73cf7/attachment-0001.htm>


More information about the debian-med-commit mailing list