Source: mypy
Version: 2.3.1-1
Severity: important
Tags: ftbfs patch
X-Debbugs-Cc: [email protected]
User: [email protected]
Usertags: riscv64

Dear Maintainer,

mypy in unstable and experimential both has ftbfs issue on riscv64, see
https://buildd.debian.org/status/fetch.php?pkg=mypy&arch=riscv64&ver=2.2.0-4&stamp=1788888404&raw=0
https://buildd.debian.org/status/fetch.php?pkg=mypy&arch=riscv64&ver=2.3.1-1&stamp=1788942084&raw=0

Increasing the value of WORKER_START_TIMEOUT to 30 can fix the below
timeout issue:
```

Traceback (most recent call last):
  File "<frozen runpy>", line 203, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/build/reproducible-path/mypy-2.3.1/mypy/__main__.py", line 52, in 
<module>
    console_entry()
  File "/build/reproducible-path/mypy-2.3.1/mypy/__main__.py", line 16, in 
console_entry
    main()
    ~~~~^^
  File "/build/reproducible-path/mypy-2.3.1/mypy/main.py", line 154, in main
    res, messages, blockers = run_build(sources, options, fscache, t0, stdout, 
stderr)
                              
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/reproducible-path/mypy-2.3.1/mypy/main.py", line 244, in 
run_build
    res = build.build(sources, options, None, flush_errors, fscache, stdout, 
stderr)
  File "/build/reproducible-path/mypy-2.3.1/mypy/build.py", line 422, in build
    result = build_inner(
        sources,
    ...<9 lines>...
        metastore,
    )
  File "/build/reproducible-path/mypy-2.3.1/mypy/build.py", line 537, in 
build_inner
    graph = dispatch(sources, manager, stdout, connect_threads)
  File "/build/reproducible-path/mypy-2.3.1/mypy/build.py", line 4145, in 
dispatch
    raise OSError(f"Cannot connect to build worker(s): {', 
'.join(not_connected)}")
OSError: Cannot connect to build worker(s): 0, 1, 2, 3
```

But then the test suite will fail at

```
...
 == Return code: 2 (diff)

Alignment of first line difference:
  E: a.py:2: note: Revealed type is "str"
  A: Traceback (most recent call last):
     ^
Update the test output using --update-data (implies -n0; you can additionally 
use the -k selector to update only specific tests)
=========================== short test summary info ============================
FAILED 
mypy/test/testcmdline.py::PythonCmdlineSuite::cmdline.test::testShadowFileWithNativeParserParallel
==== 1 failed, 14179 passed, 362 skipped, 12 xfailed in 7272.53s (2:01:12) =====

```

Running the full test suite with pytest -n8, parallel workers contend on a 
shared 
filelock while mypyc compiles the librt C extension during tests. On a loaded 
riscv64 sbuild the C build takes >5 min, so a waiting worker hits 
filelock.Timeout 
and the build fails.

I have tested it on milk-v jupiter. Please let me know any issues.

-- 
Regards,
--
  Bo YU

diff -Nru mypy-2.3.1/debian/changelog mypy-2.3.1/debian/changelog
--- mypy-2.3.1/debian/changelog 2026-08-31 11:33:52.000000000 +0000
+++ mypy-2.3.1/debian/changelog 2026-09-11 13:48:32.000000000 +0000
@@ -1,3 +1,10 @@
+mypy (2.3.1-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTBFS on riscv64 due to timeout. (Closes: #-1)
+
+ -- Bo YU <[email protected]>  Fri, 11 Sep 2026 13:48:32 +0000
+
 mypy (2.3.1-1) experimental; urgency=medium
 
   * New upstream version
diff -Nru mypy-2.3.1/debian/patches/series mypy-2.3.1/debian/patches/series
--- mypy-2.3.1/debian/patches/series    2026-08-31 11:33:05.000000000 +0000
+++ mypy-2.3.1/debian/patches/series    2026-09-11 07:51:43.000000000 +0000
@@ -2,3 +2,4 @@
 hint-typeshed-package
 verbose
 intersphinx
+timeout-riscv64
diff -Nru mypy-2.3.1/debian/patches/timeout-riscv64 
mypy-2.3.1/debian/patches/timeout-riscv64
--- mypy-2.3.1/debian/patches/timeout-riscv64   1970-01-01 00:00:00.000000000 
+0000
+++ mypy-2.3.1/debian/patches/timeout-riscv64   2026-09-11 07:56:29.000000000 
+0000
@@ -0,0 +1,28 @@
+Description: fix FTBFS issue on riscv64 due to timeout
+Author: Bo YU <[email protected]>
+Forwarded: not-needed
+Last-Update: 2026-09-11
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/mypy/defaults.py
++++ b/mypy/defaults.py
+@@ -50,7 +50,7 @@
+ # It looks like Windows is slow with processes, causing test flakiness even
+ # with our generous timeouts, so we set them higher.
+ WORKER_START_INTERVAL: Final = 0.01 if sys.platform != "win32" else 0.03
+-WORKER_START_TIMEOUT: Final = 3 if sys.platform != "win32" else 10
++WORKER_START_TIMEOUT: Final = 30 if sys.platform != "win32" else 10
+ WORKER_SHUTDOWN_TIMEOUT: Final = 1 if sys.platform != "win32" else 3
+ 
+ WORKER_CONNECTION_TIMEOUT: Final = 10
+--- a/mypyc/test/librt_cache.py
++++ b/mypyc/test/librt_cache.py
+@@ -164,7 +164,7 @@
+ 
+     binary_suffix = ".pyd" if sys.platform == "win32" else ".so"
+ 
+-    with filelock.FileLock(lock_file, timeout=300):  # 5 min timeout
++    with filelock.FileLock(lock_file, timeout=1200):  # 20 min timeout
+         # Reuse the cache only if the build completed *and* the compiled
+         # binaries still exist. A repo-wide clean of .so/.pyd files can delete
+         # the cached binaries while leaving the marker behind.

Attachment: signature.asc
Description: PGP signature

Reply via email to