Source: onboard
Version: 1.4.1-8
Severity: serious
Tags: patch ftbfs
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: debian-ri...@lists.debian.org
User: debian-ri...@lists.debian.org
Usertags: riscv64

Dear maintainer,

onboard fails to build with a testsuite error on riscv64 since it has
been enabled in version 1.4.1-6:

| I: pybuild base:311: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_onboard/build; python3.12 -m pytest 
| task-0: ============================= test session starts 
==============================
| task-0: platform linux -- Python 3.12.4, pytest-8.2.2, pluggy-1.5.0
| task-0: rootdir: /<<PKGBUILDDIR>>
| task-0: collected 7 items
| task-0: 
| task-0: Onboard/test/test_LayoutLoaderSVG.py ....                             
   [ 57%]
| task-0: Onboard/test/test_migration.py F.                                     
   [ 85%]
| task-0: Onboard/test/test_translations.py .                                   
   [100%]
| task-0: 
| task-0: =================================== FAILURES 
===================================
| task-0: ____________________ TestMigration.test_migrate_user_model 
_____________________
| task-0: 
| task-0: self = <Onboard.test.test_migration.TestMigration 
testMethod=test_migrate_user_model>
| task-0: 
| task-0:     def test_migrate_user_model(self):
| task-0:         tests = [
| task-0:             [
| task-0:                 # old user.lm becomes new model of system language
| task-0:                 [
| task-0:                     ['user.lm', 1],
| task-0:                 ],
| task-0:                 [
| task-0:                     ['en_US.lm', 1],
| task-0:                 ]
| task-0:             ],
| task-0:             [
| task-0:                 # a backup model is renamed too
| task-0:                 [
| task-0:                     ['user.lm', 1],
| task-0:                     ['user.lm.bak', 2],
| task-0:                 ],
| task-0:                 [
| task-0:                     ['en_US.lm', 1],
| task-0:                     ['en_US.lm.bak', 2],
| task-0:                 ]
| task-0:             ],
| task-0:             [
| task-0:                 # a backup alone is ignored
| task-0:                 [
| task-0:                     ['user.lm.bak', 2],
| task-0:                 ],
| task-0:                 [
| task-0:                     ['user.lm.bak', 2],
| task-0:                 ]
| task-0:             ],
| task-0:             [
| task-0:                 # must not overwrite existing files
| task-0:                 [
| task-0:                     ['user.lm', 1],
| task-0:                     ['user.lm.bak', 2],
| task-0:                     ['en_US.lm', 3],
| task-0:                     ['en_US.lm.bak', 4],
| task-0:                 ],
| task-0:                 [
| task-0:                     ['en_US.lm', 3],
| task-0:                     ['en_US.lm.bak', 4],
| task-0:                     ['user.lm', 1],
| task-0:                     ['user.lm.bak', 2],
| task-0:                 ]
| task-0:             ],
| task-0:             [
| task-0:                 # must not overwrite existing backup model
| task-0:                 [
| task-0:                     ['user.lm', 1],
| task-0:                     ['user.lm.bak', 2],
| task-0:                     ['en_US.lm.bak', 4],
| task-0:                 ],
| task-0:                 [
| task-0:                     ['en_US.lm', 1],
| task-0:                     ['en_US.lm.bak', 4],
| task-0:                     ['user.lm.bak', 2],
| task-0:                 ]
| task-0:             ],
| task-0:             [
| task-0:                 # must not overwrite existing model
| task-0:                 [
| task-0:                     ['user.lm', 1],
| task-0:                     ['user.lm.bak', 2],
| task-0:                     ['en_US.lm', 3],
| task-0:                 ],
| task-0:                 [
| task-0:                     ['en_US.lm', 3],
| task-0:                     ['user.lm', 1],
| task-0:                     ['user.lm.bak', 2],
| task-0:                 ]
| task-0:             ],
| task-0:         ]
| task-0:     
| task-0:         os.mkdir(self._user_dir)    # foil user dir migration
| task-0:         os.mkdir(self._model_dir)
| task-0:     
| task-0:         for i, (_input, _output) in enumerate(tests):
| task-0:             for fn, size in _input:
| task-0:                 self._touch(os.path.join(self._model_dir, fn), size)
| task-0:     
| task-0:             with self._run_onboard() as p:
| task-0: >               self.assertEqual(_output,
| task-0:                                  self._get_model_files(), "test " + 
str(i))
| task-0: E               AssertionError: Lists differ: [['en_US.lm', 1]] != 
[['user.lm', 1]]
| task-0: E               
| task-0: E               First differing element 0:
| task-0: E               ['en_US.lm', 1]
| task-0: E               ['user.lm', 1]
| task-0: E               
| task-0: E               - [['en_US.lm', 1]]
| task-0: E               ?     ^^^^
| task-0: E               
| task-0: E               + [['user.lm', 1]]
| task-0: E               ?    ++ ^
| task-0: E                : test 0
| task-0: 
| task-0: Onboard/test/test_migration.py:125: AssertionError
| task-0: =============================== warnings summary 
===============================
| task-0: 
../../../../../../usr/lib/python3/dist-packages/gi/overrides/Gio.py:239
| task-0:   /usr/lib/python3/dist-packages/gi/overrides/Gio.py:239: 
DeprecationWarning: Gio.Settings.list_keys is deprecated
| task-0:     return key in self.list_keys()
| task-0: 
| task-0: -- Docs: 
https://docs.pytest.org/en/stable/how-to/capture-warnings.html
| task-0: =========================== short test summary info 
============================
| task-0: FAILED 
Onboard/test/test_migration.py::TestMigration::test_migrate_user_model
| task-0: ==================== 1 failed, 6 passed, 1 warning in 6.35s 
====================
| E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_onboard/build; python3.12 -m pytest 

A full build log is available here:
https://buildd.debian.org/status/fetch.php?pkg=onboard&arch=riscv64&ver=1.4.1-8&stamp=1721643296&raw=0

I have debugged the issue and it appears to be a timing issue. onboard
is killed after running for 1 second, which is not enough for it to act
on the riscv64 buildds. Increasing this timeout to 3 second like in the
patch below fixes the issue:

--- onboard-1.4.1.orig/Onboard/test/test_migration.py
+++ onboard-1.4.1/Onboard/test/test_migration.py
@@ -141,7 +141,7 @@ class TestMigration(unittest.TestCase):
             env["LANG"] = "en_US.UTF-8"
 
             p = subprocess.Popen(["./onboard"], env=env)
-            time.sleep(1)
+            time.sleep(3)
             yield p
 
         finally:

Regards
Aurelien

Reply via email to