#1145121 apt-xapian-index: FTBFS: FAIL: test_subtests_reported_individually (test.test_support.TestIsolated.test_subtests_reported_individually)

Package:
src:apt-xapian-index
Source:
src:apt-xapian-index
Submitter:
Santiago Vila
Date:
2026-10-12 09:31:02 UTC
Severity:
normal
Tags:
#1145121#5
Date:
2026-08-22 23:25:04 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202608/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:apt-xapian-index, so that this is still
visible in the BTS web page for this package.

Thanks.
--------------------------------------------------------------------------------
[...]
test_captured_stdin (test.test_support.TestSupport.test_captured_stdin) ... ok
test_captured_stdout (test.test_support.TestSupport.test_captured_stdout) ... ok
test_change_cwd (test.test_support.TestSupport.test_change_cwd) ... ok
test_change_cwd__chdir_warning (test.test_support.TestSupport.test_change_cwd__chdir_warning)
Check the warning message when os.chdir() fails. ... WARNING:test.support.os_helper:tests may fail, unable to change the current working directory to '@test_106_tmpæ_does_not_exist': [Errno 2] No such file or directory: '/<<PKGBUILDDIR>>/@test_106_tmpæ_does_not_exist'
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/support/os_helper.py", line 574, in change_cwd
    os.chdir(os.path.realpath(path))
    ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/<<PKGBUILDDIR>>/@test_106_tmpæ_does_not_exist'
Stack (most recent call last):
  File "<frozen runpy>", line 203, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3/dist-packages/nose2/__main__.py", line 14, in <module>
    discover()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 348, in discover
    return main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 90, in __init__
    super().__init__(**kw)
  File "/usr/lib/python3.14/unittest/main.py", line 104, in __init__
    self.runTests()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 311, in runTests
    self.result = runner.run(self.test)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 54, in run
    executor(test, result)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 42, in executor
    return suite(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/case.py", line 725, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/case.py", line 669, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.14/unittest/case.py", line 615, in _callTestMethod
    result = method()
  File "/usr/lib/python3.14/test/test_support.py", line 316, in test_change_cwd__chdir_warning
    with os_helper.change_cwd(path=path, quiet=True):
ok
test_change_cwd__non_existent_dir (test.test_support.TestSupport.test_change_cwd__non_existent_dir)
Test passing a non-existent directory. ... ok
test_change_cwd__non_existent_dir__quiet_true (test.test_support.TestSupport.test_change_cwd__non_existent_dir__quiet_true)
Test passing a non-existent directory with quiet=True. ... WARNING:test.support.os_helper:tests may fail, unable to change the current working directory to '/tmp/tmpmekq5gg3/does_not_exist': [Errno 2] No such file or directory: '/tmp/tmpmekq5gg3/does_not_exist'
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/support/os_helper.py", line 574, in change_cwd
    os.chdir(os.path.realpath(path))
    ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpmekq5gg3/does_not_exist'
Stack (most recent call last):
  File "<frozen runpy>", line 203, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3/dist-packages/nose2/__main__.py", line 14, in <module>
    discover()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 348, in discover
    return main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 90, in __init__
    super().__init__(**kw)
  File "/usr/lib/python3.14/unittest/main.py", line 104, in __init__
    self.runTests()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 311, in runTests
    self.result = runner.run(self.test)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 54, in run
    executor(test, result)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 42, in executor
    return suite(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/case.py", line 725, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/case.py", line 669, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.14/unittest/case.py", line 615, in _callTestMethod
    result = method()
  File "/usr/lib/python3.14/test/test_support.py", line 295, in test_change_cwd__non_existent_dir__quiet_true
    with os_helper.change_cwd(bad_dir, quiet=True) as new_cwd:
ok
test_check__all__ (test.test_support.TestSupport.test_check__all__) ... ok
test_check_syntax_error (test.test_support.TestSupport.test_check_syntax_error) ... ok
test_CleanImport (test.test_support.TestSupport.test_CleanImport) ... ok
test_copy_python_src_ignore (test.test_support.TestSupport.test_copy_python_src_ignore) ... skipped cannot access Python source code directory: '/build/reproducible-path/python3.14-3.14.7'
test_detect_api_mismatch (test.test_support.TestSupport.test_detect_api_mismatch) ... ok
test_detect_api_mismatch__ignore (test.test_support.TestSupport.test_detect_api_mismatch__ignore) ... ok
test_DirsOnSysPath (test.test_support.TestSupport.test_DirsOnSysPath) ... ok
test_fd_count (test.test_support.TestSupport.test_fd_count) ... ok
test_find_unused_port (test.test_support.TestSupport.test_find_unused_port) ... ok
test_forget (test.test_support.TestSupport.test_forget) ... ok
test_gc_collect (test.test_support.TestSupport.test_gc_collect) ... ok
test_get_attribute (test.test_support.TestSupport.test_get_attribute) ... ok
test_get_original_stdout (test.test_support.TestSupport.test_get_original_stdout) ... skipped failing buildbots
test_get_recursion_depth (test.test_support.TestSupport.test_get_recursion_depth) ... ok
test_get_signal_name (test.test_support.TestSupport.test_get_signal_name) ... ok
test_has_strftime_extensions (test.test_support.TestSupport.test_has_strftime_extensions) ... ok
test_HOST (test.test_support.TestSupport.test_HOST) ... ok
test_ignored_deprecations_are_silent (test.test_support.TestSupport.test_ignored_deprecations_are_silent)
Test support.ignore_deprecations_from() silences warnings ... ok
test_import_fresh_module (test.test_support.TestSupport.test_import_fresh_module) ... ok
test_import_module (test.test_support.TestSupport.test_import_module) ... ok
test_linked_to_musl (test.test_support.TestSupport.test_linked_to_musl) ... ok
test_make_bad_fd (test.test_support.TestSupport.test_make_bad_fd) ... ok
test_optim_args_from_interpreter_flags (test.test_support.TestSupport.test_optim_args_from_interpreter_flags) ... ok
test_parse_memlimit (test.test_support.TestSupport.test_parse_memlimit) ... ok
test_print_warning (test.test_support.TestSupport.test_print_warning) ... ok
test_python_is_optimized (test.test_support.TestSupport.test_python_is_optimized) ... ok
test_reap_children (test.test_support.TestSupport.test_reap_children) ... ok
test_recursion (test.test_support.TestSupport.test_recursion) ... ok
test_rmtree (test.test_support.TestSupport.test_rmtree) ... ok
test_set_memlimit (test.test_support.TestSupport.test_set_memlimit) ... ok
test_sortdict (test.test_support.TestSupport.test_sortdict) ... ok
test_swap_attr (test.test_support.TestSupport.test_swap_attr) ... ok
test_swap_item (test.test_support.TestSupport.test_swap_item) ... ok
test_temp_cwd (test.test_support.TestSupport.test_temp_cwd) ... ok
test_temp_cwd__name_none (test.test_support.TestSupport.test_temp_cwd__name_none)
Test passing None to temp_cwd(). ... ok
test_temp_dir (test.test_support.TestSupport.test_temp_dir)
Test that temp_dir() creates and destroys its directory. ... ok
test_temp_dir__existing_dir__quiet_default (test.test_support.TestSupport.test_temp_dir__existing_dir__quiet_default)
Test passing a directory that already exists. ... ok
test_temp_dir__existing_dir__quiet_true (test.test_support.TestSupport.test_temp_dir__existing_dir__quiet_true)
Test passing a directory that already exists with quiet=True. ... WARNING:test.support.os_helper:tests may fail, unable to create temporary directory '/tmp/tmpxj_mhf11': [Errno 17] File exists: '/tmp/tmpxj_mhf11'
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/support/os_helper.py", line 535, in temp_dir
    os.mkdir(path)
    ~~~~~~~~^^^^^^
FileExistsError: [Errno 17] File exists: '/tmp/tmpxj_mhf11'
Stack (most recent call last):
  File "<frozen runpy>", line 203, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3/dist-packages/nose2/__main__.py", line 14, in <module>
    discover()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 348, in discover
    return main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 90, in __init__
    super().__init__(**kw)
  File "/usr/lib/python3.14/unittest/main.py", line 104, in __init__
    self.runTests()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 311, in runTests
    self.result = runner.run(self.test)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 54, in run
    executor(test, result)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 42, in executor
    return suite(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.14/unittest/case.py", line 725, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.14/unittest/case.py", line 669, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.14/unittest/case.py", line 615, in _callTestMethod
    result = method()
  File "/usr/lib/python3.14/test/test_support.py", line 219, in test_temp_dir__existing_dir__quiet_true
    with os_helper.temp_dir(path, quiet=True) as temp_path:
ok
test_temp_dir__forked_child (test.test_support.TestSupport.test_temp_dir__forked_child)
Test that a forked child process does not remove the directory. ... ok
test_temp_dir__path_none (test.test_support.TestSupport.test_temp_dir__path_none)
Test passing no path. ... ok
test_unlink (test.test_support.TestSupport.test_unlink) ... ok
test_unload (test.test_support.TestSupport.test_unload) ... ok

======================================================================
ERROR: test_class_subprocess_dying_after_the_tests_is_reported (test.test_support.TestIsolated.test_class_subprocess_dying_after_the_tests_is_reported)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 957, in test_class_subprocess_dying_after_the_tests_is_reported
    from test._isolated_sample import EXIT_CODE
ModuleNotFoundError: No module named 'test._isolated_sample'

======================================================================
ERROR: test_durations_forwarded_for_class (test.test_support.TestIsolated.test_durations_forwarded_for_class)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 908, in test_durations_forwarded_for_class
    from test._isolated_sample import DURATION_SLEEP
ModuleNotFoundError: No module named 'test._isolated_sample'

======================================================================
ERROR: test_subprocess_dying_after_the_test_is_reported (test.test_support.TestIsolated.test_subprocess_dying_after_the_test_is_reported)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 942, in test_subprocess_dying_after_the_test_is_reported
    from test._isolated_sample import EXIT_CODE
ModuleNotFoundError: No module named 'test._isolated_sample'

======================================================================
FAIL: test_class_outcomes (test.test_support.TestIsolated.test_class_outcomes)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 874, in test_class_outcomes
    self.assertEqual(result.testsRun, 3)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 3

======================================================================
FAIL: test_method_outcomes (test.test_support.TestIsolated.test_method_outcomes)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 862, in test_method_outcomes
    self.assertEqual(result.testsRun, 6)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 6

======================================================================
FAIL: test_skip_reason_propagated (test.test_support.TestIsolated.test_skip_reason_propagated)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 892, in test_skip_reason_propagated
    self.assertEqual([reason for _, reason in result.skipped], ['nope'])
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Lists differ: [] != ['nope']

Second list contains 1 additional elements.
First extra element 0:
'nope'

- []
+ ['nope']

======================================================================
FAIL: test_skipped_without_subprocess_support (test.test_support.TestIsolated.test_skipped_without_subprocess_support)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 977, in test_skipped_without_subprocess_support
    self.assertEqual(len(result.skipped), 1)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 0 != 1

======================================================================
FAIL: test_subclass_bypassing_setupclass_is_reported (test.test_support.TestIsolated.test_subclass_bypassing_setupclass_is_reported)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 938, in test_subclass_bypassing_setupclass_is_reported
    self.assertIn('did not run in a subprocess', result.errors[0][1])
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'did not run in a subprocess' not found in 'ImportError: Failed to import test module: _isolated_sample\nTraceback (most recent call last):\n  File "/usr/lib/python3.14/unittest/loader.py", line 141, in loadTestsFromName\n    module = __import__(module_name)\nModuleNotFoundError: No module named \'test._isolated_sample\'\n\n'

======================================================================
FAIL: test_subclass_of_isolated_class (test.test_support.TestIsolated.test_subclass_of_isolated_class) (sample='SubclassingSample')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 929, in test_subclass_of_isolated_class
    self.assertEqual(result.errors, [])
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
AssertionError: Lists differ: [(<unittest.loader._FailedTest testMethod=[300 chars]\n')] != []

First list contains 1 additional elements.
First extra element 0:
(<unittest.loader._FailedTest testMethod=_isolated_sample>, 'ImportError: Failed to import test module: _isolated_sample\nTraceback (most recent call last):\n  File "/usr/lib/python3.14/unittest/loader.py", line 141, in loadTestsFromName\n    module = __import__(module_name)\nModuleNotFoundError: No module named \'test._isolated_sample\'\n\n')

+ []
- [(<unittest.loader._FailedTest testMethod=_isolated_sample>,
-   'ImportError: Failed to import test module: _isolated_sample\n'
-   'Traceback (most recent call last):\n'
-   '  File "/usr/lib/python3.14/unittest/loader.py", line 141, in '
-   'loadTestsFromName\n'
-   '    module = __import__(module_name)\n'
-   "ModuleNotFoundError: No module named 'test._isolated_sample'\n"
-   '\n')]

======================================================================
FAIL: test_subclass_of_isolated_class (test.test_support.TestIsolated.test_subclass_of_isolated_class) (sample='SubclassSample')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 927, in test_subclass_of_isolated_class
    self.assertEqual(result.testsRun, count)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 2

======================================================================
FAIL: test_subprocess_dying_does_not_hide_the_failure (test.test_support.TestIsolated.test_subprocess_dying_does_not_hide_the_failure)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 951, in test_subprocess_dying_does_not_hide_the_failure
    self.assertEqual(self._names(result.failures), ['test_fails_and_dies'])
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Lists differ: [] != ['test_fails_and_dies']

Second list contains 1 additional elements.
First extra element 0:
'test_fails_and_dies'

- []
+ ['test_fails_and_dies']

======================================================================
FAIL: test_subprocess_traceback_is_cause (test.test_support.TestIsolated.test_subprocess_traceback_is_cause)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 897, in test_subprocess_traceback_is_cause
    self.assertEqual(len(result.failures), 1)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 0 != 1

======================================================================
FAIL: test_subtests_reported_individually (test.test_support.TestIsolated.test_subtests_reported_individually)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.14/test/test_support.py", line 885, in test_subtests_reported_individually
    self.assertEqual(len(result.failures), 1)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 0 != 1
---------------------------------------------------------------------- Ran 63 tests in 2.550s FAILED (failures=10, errors=3, skipped=2) make[1]: *** [debian/rules:17: override_dh_auto_test] Error 1 make[1]: Leaving directory '/<<PKGBUILDDIR>>' make: *** [debian/rules:8: binary] Error 2 dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2 --------------------------------------------------------------------------------
#1145121#10
Date:
2026-09-03 18:40:10 UTC
From:
To:

#1145121#15
Date:
2026-09-23 12:43:10 UTC
From:
To:
Sorry for sending the last mail as HTML.
I now added the log of the successful build.

#1145121#20
Date:
2026-09-23 13:07:08 UTC
From:
To:
Thanks for trying to reproduce the problem.

The build still fails for me, and it also fails here with the same error message:

https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/apt-xapian-index.html

If you can build it, then the build process is not deterministic, which is concerning,
as it would mean that when it builds, it does so by pure chance.

In either case, the failure rate is 100% here, and that's why I always
offer a VM to reproduce to anybody willing to debug it.

Thanks.

#1145121#25
Date:
2026-09-23 13:47:43 UTC
From:
To:
Hi.

I believe there is a conflict between the test suite for the package
and the test suite of python itself, due to the way the tests are
started. See this for a very similar issue:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1146465

I managed to solve this problem by applying the patch below.

But then other python incompatibilities arise. For example, "assert_" is
deprecated and we need to use "assertTrue" instead.

And yet there are more problems which I still don't know how to fix.

Thanks.
--- a/runtests +++ b/runtests @@ -8,13 +8,13 @@ case "$1" in --cov) echo "Run with code coverage..." shift - nose2-3 test --with-coverage --cover-package axi --cover-html --cover-html-dir=test-coverage "$@" + nose2-3 -s test --with-coverage --cover-package axi --cover-html --cover-html-dir=test-coverage "$@" echo "Coverage information found at file://`pwd`/test/test-coverage" ;; --clean) rm -rf test/test-coverage test/.coverage testdb ;; *) - python3 -m nose2 test "$@" + python3 -m nose2 -s test "$@" ;; esac
#1145121#32
Date:
2026-10-05 20:49:51 UTC
From:
To:
Hi,

I asked removal of this package (again),
before reading this bug.

Please note that this package was meant to live
between the debtags database - which is gone
and user-interface (apt, aptitude) who since
dropped all support for tags.

So it is just one useless package floating in the void;
swallowing QA efforts like a black hole

Greetings

#1145121#39
Date:
2026-10-06 11:57:11 UTC
From:
To:
Am 05.10.26 um 22:49 schrieb Alexandre Detiste:
apt-xapian-index provides general support for indexing. After its sudden
removal synaptic had to remove its indexing function. The synaptic
version that re-implemented the indexing function provided by
apt-xapian-index was uploaded just a few days ago (2026-10-05). It
sometimes happens that packages "float in the void" while related
upstream changes are waiting to be consolidated into a new version. I do
not see why this should be a reason for removal.

The function apt-xapian-index provides for synaptic has absolutely
nothing to do with any "debtags" database or "debtags" in general. For
some strange reason apt-xapian-index seens to be eternally tied to those
"debtags" in spite of it providing just indexing functionality.

I do need mentoring with fixing the bugs though.

#1145121#44
Date:
2026-10-12 09:29:26 UTC
From:
To:
Le mar. 6 oct. 2026 à 13:57, Ilu <ilu@solydxk.com> a écrit :

This removal was not sudden at all and involved the removal of many parts;
I remember libept, games-thumbnails, a GUI app to browse these thumbnails;
I even did my part of cleanup work on apt-xapian-index itself before
dropping the ball
realising there was no user left.

The sunsetting of debtags was publicaly announced:
https://lists.debian.org/debian-devel/2023/11/msg00226.html

It even still states so in the package description, please consider update this
to clearly untie apt-xapian-index from it's former debtags indexing role:

""""update-apt-xapian-index allows plugins to be installed in
/usr/share/apt-xapian-index to index all sorts of extra information, such as
Debtags tags, popcon information, package ratings and anything else
that would fit."""

Fixing the description would be the lowest hanging fruit.

Then you can also close the RM bug with the upload.

Greetings

Alexandre