Merge ~ubuntu-release/autopkgtest/+git/development:cross-arch-architecture-filtering into ~ubuntu-release/autopkgtest/+git/development:master

Proposed by Steve Langasek
Status: Merged
Merged at revision: 14935a6ddce14c5299ee995035938f8ca0775d6d
Proposed branch: ~ubuntu-release/autopkgtest/+git/development:cross-arch-architecture-filtering
Merge into: ~ubuntu-release/autopkgtest/+git/development:master
Diff against target: 34 lines (+7/-2)
1 file modified
lib/testdesc.py (+7/-2)
Reviewer Review Type Date Requested Status
Lukas Märdian (community) Needs Fixing
Review via email: mp+423176@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Lukas Märdian (slyon) wrote :

FTR: The failure was introduced by this change in Debian:
https://salsa.debian.org/debian/libgpg-error/-/commit/0c11fe4ae16c2800e13758ff1ee64c561354e628

It started to fail for i386 on autopkgtest.u.c:
https://autopkgtest.ubuntu.com/packages/libgpg-error/kinetic/i386
https://autopkgtest.ubuntu.com/results/autopkgtest-kinetic/kinetic/i386/libg/libgpg-error/20220523_114919_e3142@/log.gz

The relevant log is this:
```
The following packages have unmet dependencies:
 builddeps:/tmp/autopkgtest.VMjBik/1-autopkgtest-satdep.dsc:i386 : Depends: gcc-mingw-w64-x86-64:i386 but it is not installable
E: Unable to correct problems, you have held broken packages.
win64 FAIL badpkg
[...]
autopkgtest [11:49:03]: @@@@@@@@@@@@@@@@@@@@ summary
win32 SKIP Test lists explicitly supported architectures, but the current architecture amd64 isn't listed.
win64 FAIL badpkg
blame: libgpg-error
badpkg: Test dependencies are unsatisfiable. A common reason is that your testbed is out of date with respect to the archive, and you need to use a current testbed or run apt-get update or use -U.
build PASS
```

As can be seen, the i386/win32 test is skipped while amd64/win64 is executed and fails with "badpkg" error due to not being able to install "gcc-mingw-w64-x86-64:i386".

Revision history for this message
Lukas Märdian (slyon) wrote (last edit ):

I think the fix is not broad enough, as it only adopts for cross_arch testbed if d/control defines the "Tests:" stanza, but not for the "Test-Command:" stanza, which is being used for libgpg-error.

So running the libgpg-error test on this branch of autopkgtest still fails the same way. This should be fixed by the following patch:
https://paste.ubuntu.com/p/c56ppVD4s3/

review: Needs Fixing
Revision history for this message
Lukas Märdian (slyon) wrote :

I think the patch pasted above should fix the root-cause in autopkgtest, but unfortunately, the libgpg-error/i386 test still fails. Now that the "win64" test is skipped and "win32" executed, "win32" fails with a "badpkg" error, which probably needs solving in the archive.

$ PYTHONPATH=lib/ runner/autopkgtest libgpg-error --apt-pocket=proposed=src:libgpg-error -a i386 -U -- qemu /data/autopkgtest-kinetic-amd64.img
[...]
win64 SKIP Test lists explicitly supported architectures, but the current architecture i386 isn't listed.
[...]
The following packages have unmet dependencies:
 builddeps:/tmp/autopkgtest.8Maso6/1-autopkgtest-satdep.dsc:i386 : Depends: gcc-mingw-w64-i686:i386 but it is not installable
                                                                   Depends: wine32:i386 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
win32 FAIL badpkg
blame: libgpg-error
badpkg: Test dependencies are unsatisfiable. A common reason is that your testbed is out of date with respect to the archive, and you need to use a current testbed or run apt-get update or use -U.

Full log: https://paste.ubuntu.com/p/JYHrJpMGbn/

Revision history for this message
Steve Langasek (vorlon) wrote :

thanks, have included your fix for the Test-Command: case.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/lib/testdesc.py b/lib/testdesc.py
index c8c9741..c0ac486 100644
--- a/lib/testdesc.py
+++ b/lib/testdesc.py
@@ -606,6 +606,11 @@ def parse_debian_source(srcdir, testbed_caps, testbed_arch, control_path=None,
606 architectures = record.get('Architecture', '').replace(606 architectures = record.get('Architecture', '').replace(
607 ',', ' ').split()607 ',', ' ').split()
608608
609 if cross_arch:
610 target_arch = cross_arch
611 else:
612 target_arch = testbed_arch
613
609 if 'Tests' in record:614 if 'Tests' in record:
610 test_names = record['Tests'].replace(',', ' ').split()615 test_names = record['Tests'].replace(',', ' ').split()
611 if len(test_names) == 0:616 if len(test_names) == 0:
@@ -626,7 +631,7 @@ def parse_debian_source(srcdir, testbed_caps, testbed_arch, control_path=None,
626 for n in test_names:631 for n in test_names:
627 try:632 try:
628 _debian_check_unknown_fields(n, record)633 _debian_check_unknown_fields(n, record)
629 _check_architecture(n, testbed_arch, architectures)634 _check_architecture(n, target_arch, architectures)
630635
631 test = Test(n, os.path.join(test_dir, n), None,636 test = Test(n, os.path.join(test_dir, n), None,
632 restrictions, features, depends, [], [], synth_depends)637 restrictions, features, depends, [], [], synth_depends)
@@ -650,7 +655,7 @@ def parse_debian_source(srcdir, testbed_caps, testbed_arch, control_path=None,
650 else:655 else:
651 name = feature_test_name656 name = feature_test_name
652 _debian_check_unknown_fields(name, record)657 _debian_check_unknown_fields(name, record)
653 _check_architecture(name, testbed_arch, architectures)658 _check_architecture(name, target_arch, architectures)
654 test = Test(name, None, command, restrictions, features,659 test = Test(name, None, command, restrictions, features,
655 depends, [], [], synth_depends)660 depends, [], [], synth_depends)
656 test.check_testbed_compat(testbed_caps, ignore_restrictions)661 test.check_testbed_compat(testbed_caps, ignore_restrictions)

Subscribers

People subscribed via source and target branches