[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