vcswatch reports that
this package seems to have a new changelog entry (version
6.1, distribution
UNRELEASED) and new commits
in its VCS. You should consider whether it's time to make
an upload.
Here are the relevant commit messages:
commit ddb652b688dd293eafe786d245371a603946054d
Merge: 32102e5 5965aca
Author: Paride Legovini <paride@debian.org>
Date: Tue Oct 6 23:06:31 2026 +0200
Merge branch 'paride/refactor-exec-on-testbed' into 'master'
Refactor in-testbed execution around a subprocess-style API
See merge request ci-team/autopkgtest!703
commit 5965acab0f5b0b9174d835ea3ee9e05acd677329
Author: Paride Legovini <paride@debian.org>
Date: Tue Oct 6 18:16:19 2026 +0200
Refactor in-testbed execution around a subprocess-style API
Replace tuple results and check_exec() with CompletedProcess results and
explicit check/allow_stderr policies. Centralize command wrapping for cwd,
user and environment settings, along with process and pipe cleanup.
Separate streamed execution with inactivity monitoring from ordinary
commands. Read available bytes instead of lines so partial output cannot
block timeout checks, and bound exceptional process cleanup waits.
Use native subprocess timeouts and move configured limits into
autopkgtest_timeouts. Keep the monotonic global deadline in the runner,
cap build and test execution, and skip remaining tests before preparing
their testbeds once the budget is exhausted.
commit 32102e51ae2616d5a20b8ebb121257c60f3190a3
Merge: db7ec8d 12121a6
Author: Paride Legovini <paride@debian.org>
Date: Tue Oct 6 18:26:44 2026 +0200
Merge branch 'paride/separate-downtmp-creation' into 'master'
Simplify testbed scratch directory permissions and handling
See merge request ci-team/autopkgtest!698
commit db7ec8d1309d3fd47a32f010fa1686dfb522947f
Merge: 3358e39 407db8d
Author: Paride Legovini <paride@debian.org>
Date: Fri Oct 2 13:38:38 2026 +0200
Merge branch 'prep-to-local-dpkg-source' into 'master'
Preparation work for source tree handling changes
See merge request ci-team/autopkgtest!702
commit 407db8d2af61906743cca50a65cbd13ffec99765
Author: Paride Legovini <paride@debian.org>
Date: Fri Oct 2 11:55:15 2026 +0200
Make run_apt_command public
Gbp-Dch: Ignore
commit 3224736bedaa792d128757a6651348e363cf9870
Author: Paride Legovini <paride@debian.org>
Date: Fri Oct 2 11:50:11 2026 +0200
run_apt_command: allow setting cwd for apt commands
Gbp-Dch: Ignore
commit d1f54be1f171b6b85f44132ac114a88cb5c54ba2
Author: Paride Legovini <paride@debian.org>
Date: Fri Oct 2 11:45:17 2026 +0200
Do not allow the output directory to be in the source tree
commit ac91374e84fa57293d5399b1c12cca1ab641f832
Author: Paride Legovini <paride@debian.org>
Date: Fri Oct 2 11:40:17 2026 +0200
satisfy_dependencies_string: drop diagnostic label argument
Gbp-Dch: Ignore
commit 3358e39523d5cc23e95cc69df8003a9673252517
Merge: ad76b3b 2f285c7
Author: Paride Legovini <paride@debian.org>
Date: Wed Sep 30 11:32:35 2026 +0200
Merge branch 'nova-no-nova-reboot' into 'master'
nova: drop "nova reboot" code path from wait-reboot implementation
See merge request ci-team/autopkgtest!557
commit 2f285c7e3aec959f5d1c1b3ff1ebfb8d162c5e22
Author: Paride Legovini <paride@debian.org>
Date: Fri Jun 20 14:38:44 2025 +0200
nova: drop "nova reboot" code path from wait-reboot implementation
This brings the behavior of wait-reboot back to what is was before
092ad6b383. Adding a `nova reboot` in wait-reboot is problematic for
reasons outlined in 14fd2c078, but also wrong: wait-reboot should not
issue a reboot command, but just wait for the testbed to come back
up after a reboot command has _already_ been issued. Doing an extra
`nova reboot` causes confusing double reboots and difficult to debug
race conditions.
The Canonical specific issues outlined in 14fd2c078 do not seems to be
relevant anymore.
I am not aware of --nova-reboot currently being used anywhere.
commit ad76b3bfc45537554cb777c05386a2ba64b4e9ac
Merge: 23fdcf5 e095327
Author: Paride Legovini <paride@debian.org>
Date: Wed Sep 30 11:14:04 2026 +0200
Merge branch 'master' into 'master'
Two patches for autopkgtest
See merge request ci-team/autopkgtest!700
commit e095327f1a8c8002bb2276ab260c9077bfe2c67e
Author: Pierre-Elliott Bécue <pierre-elliott.becue@canonical.com>
Date: Wed Sep 30 08:39:58 2026 +0200
adt_testbed: debug_fail runs now preserve lastsend
Before, it was always overwritten with auxverb_debug_fail, which doesn't help
understanding when the failure happens for the caller of debug_fail
commit 56cf959aca6c486d334bf575d314960b9ac35fd1
Author: Pierre-Elliott Bécue <pierre-elliott.becue@canonical.com>
Date: Wed Sep 30 08:39:17 2026 +0200
virts: homogenise profile sourcing with incus by silencing also stdout
Profile sourcing should also silence stdout to avoid contaminating the
testbed's stdout if the profile is verbose
commit 23fdcf5e7e47b5c30a13112e15a38216de5ca02b
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 18:06:15 2026 +0200
Document all the virt servers options in their manpages
commit 6679826f483d12474c57a2213c54337389185d26
Merge: e61a92b 64f52c9
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 17:42:24 2026 +0200
Merge branch 'paride/fail-fast' into 'master'
New cli option: --fail-fast to skip tests after the first failure
See merge request ci-team/autopkgtest!673
commit e61a92b4928cc3a6a06500428fb2721f60612bb1
Merge: 32bc738 0a2a6ed
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 17:39:41 2026 +0200
Merge branch 'paride/ci-aa-unchanged' into 'master'
ci: use lxc.apparmor.profile = unchanged in the lxc jobs
See merge request ci-team/autopkgtest!699
commit 0a2a6ed65392a78cd428c4cc8ba0c8b114aa1dfb
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 16:54:13 2026 +0200
ci: use lxc.apparmor.profile = unchanged in the lxc jobs
"lxc.apparmor.profile = unconfined" does not avoid the intermittent
"Already AppArmor confined, but new label requested" failure.
Let's try with "unchanged", which should make LXC skip its AppArmor
handling entirely.
Gbp-Dch: Ignore
commit 64f52c920ed145b00725d81d35c8f723825be09a
Author: Paride Legovini <paride@debian.org>
Date: Wed Jul 8 14:59:52 2026 +0200
New cli option: --fail-fast to skip tests after the first failure
commit 12121a6c3d4678a4fb3e361d1e84901a1f73cc38
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 13:41:19 2026 +0200
virt: document security implications of host-shared scratch
Note: this does not document a new security weakness: the a-v-lxc used
a mode 777 shared downtmp since ead4c1a6dc (2014), and that was never
changed. When a-v-docker was introduced in 4779b706dc, it just carried
over the same approach. In particular, note that 75f3e42668c did not
concern permissions of the shared downtmp of these virt servers. This
change just documents the status quo.
commit 56dffcb8e70b0dc883e39d6eee1e74f5c3b92ee3
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 13:01:49 2026 +0200
Drop isolation-dependent artifact directory permissions
Following work done in e51b023ea, create AUTOPKGTEST_ARTIFACTS with mode
755, regardless of isolation restrictions. Remove the unused --isolation
wrapper option and the corresponding documentation.
commit e51b023eaf5e767e96f5641f6349fa62243260e1
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 28 19:23:52 2026 +0200
Use mode 755 for non-shared testbed scratch directories
Mode 755 used to be the case up to 76f1f877f, when the downtmp mode was
changes to 1777 to allow the downtmp to be shared with the host. Let's
go back to the old, safer default, resorting to mode 777 only where virt
servers were previously doing a direct:
VirtSubproc.check_exec(["mkdir", "-m", "777", d], downp=True)
to create the downtmp, bypassing downtmp_mktemp().
commit 005c5e9fec4f859b767f812e50830262ad09c4c8
Author: Paride Legovini <paride@debian.org>
Date: Sun Sep 27 19:47:02 2026 +0200
Separate downtmp creation from capability handling
Let virt backends choose scratch directory permissions and manage their
own downtmp-host capability. Keep downtmp_mktemp focused on directory
creation and downtmp_remove on removal. Drop the runner's unused
shared_downtmp state.
commit 32bc73819ba32945d7e0679710271619fac2b556
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 29 12:11:12 2026 +0200
setup-testbed: add apport to the list of packages to purge
commit 9eefa0104309dcf67ecb1d4ade78c295734035e0
Author: Paride Legovini <paride@debian.org>
Date: Sun Sep 27 16:03:26 2026 +0200
Fix downtmp handling in a-v-lxc and a-v-null
Fix latent bugs in downtmp handling:
- a-v-lxc: fix parameter order in downtmp_mktemp() call.
- a-v-null: avoid advertising downtmp-host twice.
- a-v-null: remove downtmp-host capability on cleanup.
commit d452480c81b0ba37217572932eff19c158f442a2
Author: Paride Legovini <paride@debian.org>
Date: Sat Sep 26 16:45:17 2026 +0200
Update d/changelog 6.1 release (UNRELEASED)
commit 08b1580e8b42e66ef9b712765063cee9843f7de4
Merge: 9c98aa7 145c53a
Author: Paride Legovini <paride@debian.org>
Date: Sat Sep 26 16:39:48 2026 +0200
Merge branch 'paride/rework-copyupdown' into 'master'
Simplify testbed copyup/copydown
See merge request ci-team/autopkgtest!696
commit 9c98aa7ea33faf4efdbe88b1ad17a6b28ecffb28
Author: Paride Legovini <paride@debian.org>
Date: Sat Sep 26 11:01:50 2026 +0200
setup-testbed: minor shellcheck tweaks
Gbp-Dch: Ignore
commit 0ad6a234d3760a28b7004a7820885ca16482e822
Author: Paride Legovini <paride@debian.org>
Date: Sat Sep 26 10:30:43 2026 +0200
apt: move options from conf file to runtime cli options
The goal here is to minimize the amount of customization we do on the
images.
commit d2930d1ca1e0fd1f2029eeea285e5e3d95794421
Author: Paride Legovini <paride@debian.org>
Date: Sat Sep 26 10:23:42 2026 +0200
Only install python3-minimal in QEMU testbed images
commit 145c53a026dd4ddfdcf5dee5bde49dc2e74aa141
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 13:04:26 2026 +0200
drop TempPath, add a write_file() helper
TempPath combined several implicit behaviors: deriving host-side
locations (shared downtmp or output dir), prefixing names with numbers
to avoid collisions, and deleting files from a destructor, complete
with a remote 'rm -rf' fallback when the host unlink failed with
EPERM. Its remaining users are converted to explicit code:
- test stdout/err files are plain TestbedPaths
- the satdep .dsc and the no-build-essential apt config are static
text; they are now written directly into the testbed scratch
directory instead of being created on the host, copied down and
cleaned up again
Add Testbed.write_file() and use it for all the plain file dumps
in Testbed: the satdep .dsc, the apt config, the APT preferences and
the APT sources, replacing the '"$@" > file' printf argv tricks.
The content is always passed as an argument, never through the
script, so it is not subject to shell quoting.
commit 6ccb45f31e67c3520c97bb3b6fa2ee75271b64e6
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 11:21:57 2026 +0200
binaries: get package info via stdout instead of temporary files
Getting package lists and installed-package states out of the testbed
wrote them to a temporary testbed file, copied that up, parsed it on
the host, and cleaned it up.
Instead, capture the output of dpkg-query directly, which removes:
- the TempPath objects, shell redirections and copyup() calls for
autopkgtest-satdep-adjacent temp files: the testbed package lists,
the per-test package lists and the whole /var/lib/dpkg/status copy
used for the binaries reinstall check
- the 'join -v2' subprocess in run_test(): filtering out the pristine
testbed packages is now a set difference
- transferring the entire dpkg status database to read two fields; the
dpkg-query output is much smaller
commit 42f918a26fac5c928b7a1f939c3d0ba9d60aefd7
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 09:26:52 2026 +0200
virt-lxc auxverb: exclude /dev/null from stray process cleanup
The tar copydown receiver redirects stdout to /dev/null. Matching that
against every process's descriptors selects unrelated container services
for termination.
Ignore /dev/null descriptors and match complete descriptor targets when
looking for processes holding stdout or stderr open.
commit bea3b364673e8ef4ffd604d7d6b20907a32f54f4
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 24 23:17:32 2026 +0200
copyupdown: use native subprocess timeouts and reliable cleanup
Manage both ends of the tar pipeline with Popen context managers,
killing unfinished processes before the contexts wait for them.
This also cleans up the sender if receiver startup fails.
Allow copy_timeout for the receiver and a further 10 seconds for
the sender to exit, replacing the signal-based timeout.
commit 8385656682e2c67ecdb3027344c0e143fe1864d9
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 24 16:27:23 2026 +0200
copyupdown: re-add tar fallback when shared-dir copy fails
Re-add fallback to copyupdown-via-tar in case copy via shared directory
fails. This fallback was present before the copyupdown() simplification,
and re-adding it is needed to make tests like LxcRunner.test_user and
PodmanRunner.test_user pass for virt servers that expose a shared
downtmp.
commit 3b063dad547b2062e94cc32287329e0a609fd7fa
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 24 13:02:40 2026 +0200
build_source: use one fixed location for the source tree
The source tree now lives in <scratch>/tests-tree: every source kind
extracts or clones directly into it, the optional build happens in
place, and the per-test fresh copy is restored to the same location.
The fixed location makes several things unnecessary, which are dropped:
- the build.XXX staging directory and the cd [a-z0-9]* glob (the glob
also matched the files downloaded by apt-get source)
- the srctree-* staging directory and the in-testbed copy for source
trees: the tree is copied down directly
- the extract-time chmod -R a+rX: the extraction runs as the test user,
so the tree is already readable by whoever runs the tests
- the fd 3 results protocol of source_rules_command(): the tree location
it reported is now a known constant, and the package name and version
are parsed on the host from the changelog of the tree copy that is
uploaded right after the build
The built .debs now land in the scratch root, the parent of the tests
tree, and run_tests() no longer needs to re-point the tests tree's
testbed location after every revert.
commit 6b636de35068e1ac308fda7ce53d0d26f2a00287
Author: Paride Legovini <paride@debian.org>
Date: Wed Sep 23 10:06:43 2026 +0200
source copydown: drop redundant recursive chown
Since every test now gets a freshly copied tests tree with chown=True,
the tree of a user test is always writable already.
commit 69785a9da3c41568f299df8da94f168b40c8333f
Author: Paride Legovini <paride@debian.org>
Date: Wed Sep 23 10:03:45 2026 +0200
run_test: always copy down a fresh tests tree
Tests are documented not to affect later tests through modifications
of the tests tree. Reverting testbeds already guarantee this by wiping
the scratch directory between tests; now remove the tree before
copying it down, so that non-reverting testbeds (null, chroot, ssh
without revert) provide a fresh tree per test as well.
Drop the now-unused skip_if_exists argument from copydown(): its only
caller was the tests tree copydown.
commit 5036d7257b1b8e8177fed9bdfeb4e8f2ed602e0b
Author: Paride Legovini <paride@debian.org>
Date: Wed Sep 23 08:45:49 2026 +0200
copydown rename check_existing to skip_if_exists for clarity
commit 1deb1c6b665ad81026f6a99105431d9ee90765af
Author: Paride Legovini <paride@debian.org>
Date: Wed Sep 23 08:37:42 2026 +0200
copydown: refuse chown of existing destination directories
commit d6dd29961737a29646a0d42a6cd784813af91826
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 22:57:01 2026 +0200
Do not recursively chown --copy destinations
The destination of --copy can be an existing system directory. Copying
a directory into it merges the source contents, but the subsequent chown
-R changes ownership of the entire destination tree, including unrelated
existing files.
For example, copying a directory to /etc could make the whole /etc
owned by the normal test user.
commit 422059bb9c9f8e056af283ecfbc64994fc3e5d76
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 20:38:19 2026 +0200
Do not chown-to-normal-user files to be consumed by apt
The legacy satdep files and local binary repository are consumed only by
privileged apt operations. No need to chown them to the normal user.
commit 7105de5f979652602b01db85765c534b78b6879f
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 20:15:33 2026 +0200
copydown: default to chown=False
Make copydown "just copy" by default, with the chown being an extra step
to be requested explicitly.
Make all callers that relied on the previous default pass chown=True, so
this change does not alter existing behavior.
commit 4558ea0903dee8d63476841dc3866d4bf64752be
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 19:47:41 2026 +0200
Mark the rw-build-tree restriction as obsolete
The restriction has had no effect for a long time: in practice tests
have consistently been given a writable source tree, even without
declaring it. Deprecating the restriction makes the specification
match this long-standing status quo.
For the archaeologist, historical notes on rw-build-tree:
The restriction name is (was) a historical misnomer: the restriction
only makes the source tree writable, and does not imply build-needed.
This is because the rw-build-tree restriction predates the current
default of running tests from an unbuilt source tree:
- In 2007, tests were originally guaranteed to run in a source tree that
had been built, making 'build tree' a natural name.
- Later, no-build-needed was added as an opt-out.
- In 2011, the default was reversed and build-needed became the explicit
restriction for tests requiring a build.
- The rw-build-tree name was retained for compatibility.
commit 2499addc849d39e601bc8415e3b9250d7852d70b
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 19:41:14 2026 +0200
copydown: require existing destination parent
This fixes a bug there the `chown -R` that copydown() does did not apply
to parent directories of the copied file/directory that were not
existing, and got created by the `mkdir -p` this commit drops.
Other than fixing a bug, this makes copydown() behave more like standard
tool, e.g. when running `cp foo /bar/baz/`, the `/bar/baz` destination
directory must already exist: it is not automatically created by cp.
commit 783ede301bebc4be888a194a5cf6b9708f3df61f
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 18:36:27 2026 +0200
copyupdown: simplify copying to/from testbed
Only copy via shared downtmp if either source or destination is in the
shared directory, i.e. do not use the shared downtmp as a scratch space.
This greatly simplifies the code at the cost of losing one niche
optimization. In general: refactor copyupdown() and helpers.
commit cbe1e535bbdb951c26fe856b26700438662165c5
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 16:08:19 2026 +0200
copydown: rely on preserved copy modes
Drop copydown's explicit mode override now that copyupdown preserves
file modes.
commit ed87fd6bf03661dfdad239753e3412bd555af44e
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 24 17:15:27 2026 +0200
copyupdown: when using tar, compress data stream via gzip
This helps with virt servers like Incus and LXD, when the testbed
instance lives on a non-local remote.
commit a66eb9f985dc61c8dbccca818cc9f41ac9498ee2
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 15:47:57 2026 +0200
copyupdown: also transfer individual files with tar
Always use tar to copy files and directories, instead of resorting to
a cat(1) pipe for individual files. Tar allows to preserve file modes,
allowing us to stop calling chmod separately. Moreover, a single code
path for file transfers makes simpler to reason about.
Explicitly require absolute copy paths so source and destination parents
are unambiguous. This was already the case in practice, as behavior on
relative paths was undefined and had inconsistencies and lingering bugs.
commit ed224d5646d3a5c24407cfa84f57265f02f4d081
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 12:37:29 2026 +0200
copyupdown: deobfuscate function
This makes the function more easily readable, not fundamentally changing
its structure or logic.
commit 35741f9dab1acf82a66ce43be321c22d0ef36b24
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 12:24:14 2026 +0200
copyupdown: merge copyupdown() and copyupdown_internal()
In c9e3e55ee we stopped using copyupdown_internal() separately from
copyupdown(). Merge the two functions to improve readability.
commit 6a85ed844c996aa7eb3c711e22e0cf7e90f8182e
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 15:35:21 2026 +0200
virt-lxc: avoid lxc-ls race during concurrent runs
lxc-ls can report an error when another run destroys a container while
it is reading that container's config. The virt server treats stderr as
fatal, causing unrelated concurrent tests to fail. Generate the existing
random name without listing containers.
commit 7f3a6f60470addc4d4efb6243a3123bf6bb7878c
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 12:17:17 2026 +0200
virt-qemu: drop python2 support
commit 22cb08fae829c9f69fc2e33cd156225ebbd0344e
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 11:04:37 2026 +0200
Update d/changelog 6.1 release (UNRELEASED)
commit 430fc4907781f9b53b961c636501c4704d00de34
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 10:54:44 2026 +0200
tests: fix test_reboot_ro on merged-usr systems
cp -a /sbin $M copies the /sbin symlink itself on merged-usr systems,
leaving a dangling symlink in the tmpfs copy, so the subsequent bind
mount failed with "special device $M/sbin does not exist" and the
setup commands exited with error.
commit bdeaff9b60240b98463a9377ea85b545fe5c2346
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 10:42:30 2026 +0200
tests: call blkid by absolute path in test_options_and_baseimage
Since 4c2ce231 the test wrapper sources /etc/profile, which gives
non-root users a PATH without /usr/sbin; blkid lives in /usr/sbin, so
the blkid -p /dev/baseimage probe failed with "blkid: not found" when
running the test as a normal user.
commit 97f72353bef5a18c25a9ecdee479782715473c47
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 10:42:27 2026 +0200
virt-qemu: set the baseimage serial as a device property
QEMU 3.0 removed the serial= option from drives, so drive_add failed
with "Block format 'qcow2' does not support the option 'serial'" and
the subsequent device_add failed with "can't find value
'drive-baseimage'".
commit a6c6678d842de6da62ff5494a2a0fe1553267a60
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 25 10:42:24 2026 +0200
virt-qemu: add final newline to baseimage udev rules command
The first command sent by setup_baseimage() was concatenated with the
PS1 export without a trailing newline, so the shell never executed it
and the expect() of the prompt timed out, killing the virt server with
"testbed failure: eof from the virtualisation server".
Closes: #1134551
commit 3c083c1ff938682e91fa3f87cebcada3dd69f595
Merge: a1e04be f3c7293
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 19:55:10 2026 +0200
Merge branch 'paride/native-parse-rfc822' into 'master'
testdesc: delegate parsing d/t/control comments to python-debian
See merge request ci-team/autopkgtest!694
commit a1e04be6d07dc66d6d4f52bf9f018626acf0e283
Merge: 5d182bd 5515228
Author: Paride Legovini <paride@debian.org>
Date: Tue Sep 22 15:00:26 2026 +0200
Merge branch 'paride/copydown-drop-chmod-fallback' into 'master'
copydown: drop obsolete chmod fallback
See merge request ci-team/autopkgtest!695
commit 5515228d0e1ac4422f80b74bd7f24c124f9c38c5
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 18:26:52 2026 +0200
copydown: drop obsolete chmod fallback
The fallback was added when a-virt-qemu used a 9p-backed shared downtmp,
see d95e99b. Since b05df5dd, a-virt-qemu stopped using a shared downtmp,
keeping the downtmp on the guest filesystem instead, so the fallback is
not needed anymore for this virt server.
The docker/podman virt-server does use a shared downtmp, but it maps
container root and the normal user uid such that chown works.
Another indicator that the fallback is useless is the fact that in
autopkgtest 5.48 and 5.49 (released in Debian stable), the gating on
--insecure is broken, as the assertion was done on the nonexistent
self.insecure object, instead of self.testbed.insecure. This was fixed
in 7de6c59b. No bug was reported for this.
Drop the fallback entirely. Add a qemu test for copied-tree ownership.
commit 5d182bdb8c55448de72d612fd114cc4549a5c6ab
Merge: f72de96 6e620a3
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 15:42:59 2026 +0200
Merge branch 'paride/doc-virt-server-quit' into 'master'
protocol spec: on 'quit', virt-servers do not reply 'ok'
See merge request ci-team/autopkgtest!693
commit f72de96fba535cc66fe0756589771c9a23f6710e
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 14:26:28 2026 +0200
a-v-ssh: drop maas ssh-setup script
The script is unmaintained, unused, and likely broken. I don't think it
got really used on Canonical infrastructure outside of experiments, and
there are no plans to do so.
commit f3c729333f11a01bad478f99150d32436c35716b
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 13:08:26 2026 +0200
testdesc: delegate parsing d/t/control comments to python-debian
Autopkgtest doing its own comment parsing was introduced as a workaround
for python-debian bug #743174, which got fixed in version 0.1.23 (2014).
We can safely drop the workaround, and delegate comments parsing to the
Deb822 parser from python-debian.
This also means that we now follow the standard deb822(5) rules for
comments, which is desirable, but the change can potentially make
autopkgtest fail on d/t/control files currently considered valid. In
practice, the change consists in the fact that that we now only allow
comment *lines*, i.e. lines starting with '#', e.g.
# this was a comment line; it still is
# this was a comment line; it now stays literal
foo # this was an inline comment; it now stays literal
I did some some research on codesearch.debian.net to assess potential
fallout, and I found essentially none.
Closes: #1021497
commit 257a4891ad23e74f6b34f70e5d61009377b479ea
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 11:44:40 2026 +0200
Update d/changelog 6.1 release (UNRELEASED)
commit 6e620a371a6af29043a85f98038da043c3fa5033
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 11:16:56 2026 +0200
Handle virt-server exit using subprocess.communicate()
The new approach is slightly more robust (the previous one could cause
the virt-server to hit a SIGPIPE in case it tries to write to stdout,
given the self.sp.stdout.close() - not something we have seen in
practice).
In general, subprocess communicate() is more likely to do the right
thing in terms of file descriptor handling and wait for exit than us
calling the lower level close() and wait().
commit 3b7927fcd75b2bf025dcd5ec484dcaf0b3bb2882
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 11:13:30 2026 +0200
protocol spec: on 'quit', virt-servers do not reply 'ok'
This adapts the spec to how virt-server actually behave.
Closes: #1092808
Gbp-Dch: Full
commit e9c735cb523ae32e9ec86ae726100de2e660df53
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 11:28:08 2026 +0200
pre-commit: update pinned ruff hook version
Gbp-Dch: Ignore
commit 677abc47018fcec404e53cf101a318d01231585a
Merge: 374fc01 4fbafc5
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 21 10:37:24 2026 +0200
Merge branch 'paride/qemu-use-host-cpu' into 'master'
qemu: use host CPU passthrough for KVM
See merge request ci-team/autopkgtest!691
commit 374fc01dc095250dc6519204dc4c134ecc3d91d6
Merge: 28dca49 5bcb304
Author: Paride Legovini <paride@debian.org>
Date: Sun Sep 20 19:31:55 2026 +0200
Merge branch 'timeout-test-noprogress' into 'master'
Introduce timeout for lack of forward progress
See merge request ci-team/autopkgtest!456
commit 5bcb304aaab8510cc5a50d2df3c05ba89318b03e
Author: Christian Kastner <ckk@debian.org>
Date: Wed Dec 17 12:06:46 2025 +0100
Introduce timeout (25mins) for lack of forward progress
In cases where the global --timeout-test is necessarily large (hours),
it may be possible to detect a hung test and bail out earlier, rather
than wait for the global timeout to expire, thus freeing resources.
Some hung tests can be detected by a lack of forward progress, meaning
they stopped producing output.
This introduces a --timeout-test-noprogress for this case: if nothing
has been written to stdout or stderr for longer than this period,
VirtSubproc.Timeout is raised, which then triggers the already
existing test timeout functionality.
For this to work, we need to direct output to pipes, because (among
other things) Popen.communicate() waits for the process to exit, which
is precisely what we don't want.
The default of this timeout is set to 25mins.
commit 28dca49f209fe42103543da93e3a8444b13d0a9b
Merge: 5ef0cf0 7662e6d
Author: Paride Legovini <paride@debian.org>
Date: Sun Sep 20 16:33:27 2026 +0200
Merge branch 'paride/simplify-arch-matching' into 'master'
testdesc: improve architecture matching logic
See merge request ci-team/autopkgtest!690
commit 5ef0cf09d41d8d952f9c37ab399dec6590fcd7f5
Author: Paride Legovini <paride@debian.org>
Date: Sun Sep 20 14:50:40 2026 +0200
Salsa CI: suppress lintian debian-news-entry-has-unknown-version
Suppressing the tag allows having a d/NEWS entry for a version for
which the corresponding d/changelog stanza has not been created yet.
commit 7662e6d46e5debd30b8afd9a2af08c3b35b0dd58
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 18 18:23:44 2026 +0200
testdesc: handle unknown architectures with old python-debian
commit 5816bdf492421a18882c8ae5805c7e63d9e10d4f
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 18 14:51:30 2026 +0200
testdesc: fail on wrong restriction: Architecture: all
Technically `Architecture: all` is not wrong, but it will restrict the
test to run only on an architecture named `all` (literal), which in
practice means that the test would always be SKIPped.
Erroring out with InvalidControl() is a safeguard for users, so that
`all` is not specified by mistake instead of `any`.
commit 52df80a23e4be5b12a24b780e19086669028ad88
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 18 14:42:29 2026 +0200
testdesc: simplify architecture restriction matching
Delegate more of the architecture matching logic to the standard
architecture_is_concerned() from python-debian.
commit cfadb32061b12e6b547f38e436587d2edaed6a30
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 18 10:06:43 2026 +0200
testdesc: reject invalid architecture syntax
Closes: #1113955
commit fb590516bea0d44ff923e7c9a7e0d2676515637a
Merge: beccf34 91303f0
Author: Paride Legovini <paride@debian.org>
Date: Sun Sep 20 13:50:21 2026 +0200
Merge branch 'ruff' into 'master'
ruff: refactoring for increased readability
See merge request ci-team/autopkgtest!692
commit 91303f03b75d7d36146b3e0edcf7432fd29d0d45
Author: Benjamin Drung <benjamin.drung@canonical.com>
Date: Fri Sep 18 22:32:48 2026 +0200
ruff: refactoring for increased readability
Commit e3d427d0a7f469249d87077b79e19365c29e7909 ("ruff: fix remaining
violations") replaced most % formatting by f-strings.
Convert more code to use f-strings and refactor the code to make it more
readable.
commit 4fbafc58b8357a49be887d557a9332a158764506
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 18 17:03:31 2026 +0200
qemu: use host CPU passthrough for KVM
Since autopkgtest 3.20 (2016), x86_64 guests have used the baseline
kvm64 cpu model with the vmx and lahf_lm flags enabled. This kept the
virtual CPU reproducible across hosts while exposing the minimum
features then needed for nested KVM.
AMD was switched to host passthrough in 3.20.3 (2016), because kvm64
model did not work reliably there. QEMU now considers kvm64 a legacy
model [1], and current KVM documentation recommends host passthrough
[2]. Using kvm64 hides modern cpu capabilities and can make guest load
run very slowly.
Use host passthrough for native x86_64 KVM on both Intel and AMD.
The explicit user-provided -cpu option is still honored.
[1] https://www.qemu.org/docs/master/system/qemu-cpu-models.html#other-non-recommended-x86-cpus
"Legacy models just for historical compatibility with ancient QEMU versions."
[2] https://www.qemu.org/docs/master/system/i386/cpu.html#two-ways-to-configure-cpu-models-with-qemu-kvm
"This is the recommended CPU to use"
Closes: #1123760
commit beccf34b4ce24b15f11fc2b49d4db5779a90db27
Merge: e986b30 8135a54
Author: Paride Legovini <paride@debian.org>
Date: Fri Sep 18 14:42:55 2026 +0200
Merge branch 'paride/register-doc-base' into 'master'
doc: register HTML documentation with doc-base
See merge request ci-team/autopkgtest!689
commit 8135a544135aab049e1757edf685cc4232a9616b
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 23:52:15 2026 +0200
doc: register HTML documentation with doc-base
Closes: #1029414
commit 05399f49461ec80f412d575d58095316be9b3d8c
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 23:52:02 2026 +0200
doc: fail the build on rst warnings
commit ac4a39402f5c902209612e826606c940a6e3b9c7
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 23:51:56 2026 +0200
doc: fix sysvinit example formatting
commit e986b30839c75a3d08320c369baf65f319d29d00
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 22:21:56 2026 +0200
autopkgtest.1: clarify override control path
Closes: #1135606
commit 5aea6e56ccc4cd19e76304b75501c81828ce88b2
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 22:14:12 2026 +0200
Update name of schroot virt server across project
Closes: #1096110
commit 27b6afdd31398f46be7c53069da49e9c9a98b4ea
Merge: ca0d7c2 9c0edea
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 22:05:34 2026 +0200
Merge branch 'paride/virtsubproc-term-before-kill' into 'master'
VirtSubproc: terminate processes before killing them
See merge request ci-team/autopkgtest!688
commit 9c0edea17ecce8462be7d9222825586ed8eaf525
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 18:14:56 2026 +0200
VirtSubproc: terminate processes before killing them
In execute_timeout(), when the timeout is reached, send a SIGTERM
instead of a SIGKILL.
Sending a SIGKILL is problematic when the command uses sudo, as sudo
cannot catch the signal and forward it to its privileged child. This was
worked around in 63eb7e60c by adding an extra timeout layer, making sudo
invocations like:
check_exec(sudoify(argv, 300), outp=True, timeout=310)
Note the two timeouts: one for check_exec(), one for the inner
timeout(1). Other than being ugly, this layering caused #1011509, which
778f0aac6df fixed by running "timeout sudo" instead of "sudo timeout".
It also left a gap: 63eb7e60c only wrapped lxc-start and friends, so
sudoify() calls without a timeout still rely on the SIGKILL that sudo
cannot forward. That is #987046, hit via wait_booted().
A better solution is: on timeout, send a SIGTERM first so sudo can
forward it, wait up to 10 seconds, and only then fall back to SIGKILL.
This also makes the extra timeout(1) layer redundant, so drop it, and
also drop the sudoify() timeout parameter.
Closes: #987046
commit ca0d7c23f9df5159d76e7f10b1288a1e9adec3ea
Merge: 1808545 0ab80b7
Author: Paride Legovini <paride@debian.org>
Date: Thu Sep 17 16:20:10 2026 +0200
Merge branch 'paride/no-built-tree-special-treatment' into 'master'
Drop built-tree special-casing; rename tree kind to source-tree
See merge request ci-team/autopkgtest!687
commit 1808545eeb26529eed1997a4960480b7e81d1068
Merge: 1b1edf6 4beb1a4
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 15:42:14 2026 +0200
Merge branch 'paride/reset-is-revert' into 'master'
Consolidate testbed "reset" naming onto "revert"
See merge request ci-team/autopkgtest!686
commit 0ab80b7369601dd35918c44b0345763f30a1652a
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 14:15:39 2026 +0200
Drop built-tree special-casing; rename tree kind to source-tree
Previously a source tree directory was classified as either an
"unbuilt-tree" or a "built-tree" (the latter when debian/files was
present), with built trees being treated slightly differently, with one
user-visible difference: built trees got --no-built-binaries by default.
Most of the time this "feature" is a source of confusion.
Drop that distinction: every source tree passed to autopkgtest is now
treated uniformly. Since there is no longer a built-vs-unbuilt
distinction, rename the remaining "unbuilt-tree" kind to "source-tree"
for clarity.
commit 4beb1a4c4b41a2aa9bd0d520c6fb880be056e76c
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 13:50:41 2026 +0200
Consolidate testbed "reset" naming onto "revert"
Function names, docstrings and log messages used both "reset" and
"revert" for the operation of bringing the testbed back to a clean
state, which is confusing. Consolidate on "revert".
Historically the two terms encoded a distinction:
- "revert" was the low-level mechanism: the virt-server capability and
protocol command that rolls the testbed back to a pristine state.
- "reset" was a higher-level, "smart" autopkgtest concept. The old
Testbed.reset() tracked testbed state (self.modified, deps_installed,
needs_reset()) and only issued a revert when necessary. Moreover, an
apt-only path provided a manual apt-config cleanup as a fallback for
testbeds that lack the revert capability.
That distinction was essentially removed when the apt-only path got
moved to DebBinaries, and even more when when Testbed.reset() was
simplified to always revert if the capability is present (commit "Always
revert testbed before running individual tests"). At that point reset()
became a thin wrapper over revert, so keeping a separate word is no
longer useful and creates confusion.
commit 1b1edf69b4ccc0114f234ed5c9da2aeb24763681
Merge: da6833e ff214e8
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 13:52:50 2026 +0200
Merge branch 'paride/setup-testbed-always-deb822' into 'master'
setup-testbed: always write deb822 apt sources
See merge request ci-team/autopkgtest!685
commit da6833ea430fa3ef2606a5fd583c6eb1bd177b65
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 13:21:49 2026 +0200
pre-commit: update hooks
Gbp-Dch: Ignore
commit 4e71fbf060f496d8e3f64a7be59647d5295d7c90
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 13:16:59 2026 +0200
a-virt-lxd: bring back --vm to force a VM over a container
Image type auto-detection does not work on simplestreams remotes, where
a VM image can share its alias with a container image and thus cannot be
requested specifically. Restore --vm as an explicit override: when given
it skips type detection, adds the isolation-machine capability, and is
passed through to launch so the VM variant is selected.
Thanks: Alessandro Astone
commit ff214e885c76b9d3674fa40d85b7c979ab19e083
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 11:51:13 2026 +0200
setup-testbed: always write deb822 apt sources
The auto-detection branch used to preserve the style of the base
image's apt sources, writing either deb822 .sources or one-line-style
deb entries in sources.list. All supported testbeds now understand
deb822 sources, so drop the one-line-style output branches and always
write deb822.
Reading the base image's existing sources to auto-detect $RELEASE and
$MIRROR still handles both formats, as some base images continue to
ship a one-line sources.list.
commit 197df27c677a894f4c77e95a823dcd3a5393b168
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 11:30:51 2026 +0200
setup-testbed: drop code specific to upstart
Upstart is not used by any distribution supported by autopkgtest.
commit 721f993112d2f8627bd1a79748371185c7528062
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 10:26:33 2026 +0200
virt-unshare: drop no-op downtmp-host filter in hook_cleanup
A downtmp-host= entry is never added to capabilities for this backend.
commit 2dc9dc17e5db6980e9f9333a6dae1dee0ec5aff7
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 10:25:57 2026 +0200
virt-docker: drop dead hook_forked_inchild() no-op
Support for this hook was dropped project-wide long ago (see
debian/changelog: "Drop support for hook_forked_inchild() in
virt-runners. This has never been used.").
commit 83ca242242b50b3ea4ae902c0518b9415d19ac7a
Merge: 6a070d1 3336b2f
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 11:03:22 2026 +0200
Merge branch 'paride/no-more-trusty' into 'master'
Update baseline testbed requirements; drop legacy code
See merge request ci-team/autopkgtest!684
commit 3336b2f326bab1aff3f2d1478aeaf71ea49f8061
Author: Paride Legovini <paride@debian.org>
Date: Mon Sep 14 09:05:33 2026 +0200
tests: avoid apt segfault in test_persistent_apt_failure on old apt
Corrupt an apt.conf.d fragment rather than sources.list: a malformed
sources.list makes "apt-get build-dep" segfault on old apt (e.g.
bionic's 1.6), which is the code path used when apt lacks "satisfy".
A broken apt.conf produces the same permanent error across all apt
versions.