<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/93375>93375</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
libc++ test runner fails on Python 3.13: `ModuleNotFoundError: No module named 'pipes'`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mgorny
</td>
</tr>
</table>
<pre>
```
$ cmake ../runtimes/ -G Ninja -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind'
[…]
$ ninja
[…]
$ ninja check-cxx
[0/1] Running libcxx tests
llvm-lit: /home/mgorny/git/llvm-project/llvm/utils/lit/lit/TestingConfig.py:152: fatal: unable to parse config file '/home/mgorny/git/llvm-project/build/libcxx/test/lit.site.cfg', traceback: Traceback (most recent call last):
File "/home/mgorny/git/llvm-project/llvm/utils/lit/lit/TestingConfig.py", line 140, in load_from_path
exec(compile(data, path, "exec"), cfg_globals, None)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mgorny/git/llvm-project/build/libcxx/test/lit.site.cfg", line 21, in <module>
import libcxx.test.params, libcxx.test.config
File "/home/mgorny/git/llvm-project/libcxx/utils/libcxx/test/params.py", line 13, in <module>
from libcxx.test.dsl import *
File "/home/mgorny/git/llvm-project/libcxx/utils/libcxx/test/dsl.py", line 11, in <module>
import pipes
ModuleNotFoundError: No module named 'pipes'
FAILED: libcxx/test/CMakeFiles/check-cxx /home/mgorny/git/llvm-project/build/libcxx/test/CMakeFiles/check-cxx
cd /home/mgorny/git/llvm-project/build/libcxx/test && /usr/bin/python3.13 /home/mgorny/git/llvm-project/build/bin/llvm-lit -sv --show-xfail --show-unsupported /home/mgorny/git/llvm-project/build/libcxx/test
ninja: build stopped: subcommand failed.
```
I'm going to try making a pull request to fix it.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVk1v4zYQ_TX0ZWBBHn3YPujg2FYRIDGKbdprQJG0zA1FqiSVjS_57QVFO8Ya2NbNokABQSDt4Zs3j48cUedkq4WoSHFHis2EDv5gbNW1xurjpDH8WJEyPT3phqQrgjmwjr4ISBKCtR20l51wBGuY_gI7qb9SmG4eHv54fN7uVncP2-cvv--e7h-3v5FsQ3CuZMPe3kh2Fwe0kXE86G9Sc4LzU5rijmyRLFKyKkmxueTWIcMtMcAOgr1MQ7JzdEqwnpFiA18GraVuIXIAL5x3MUqp126qpCfZCgjWB9MJgnXUg2DdSk-wHoN6a74Kdp4SrAcvVdBBxZjx_SScl7pdG72XbdIfSbaaFRjA99RTFQaDpo0S4A301DoBbIyFvVQCghw3kmgGqfiYd9QX61BU5JE46UXC9u0ItwZvKRMNZS8h_dN5AgQXnXEerGBCe2BUKVA0gCxJtoryANSRF_4X4gTUNSipBczyNIylBmUof95b0z331B_ONADEm2AEF8x0vVSC4IJTT8OaMQzXgWSMwVABroHt2-dWmYYGJmvYGS3CPx-I7-_v76TY_r-eT8p-mx0ueuPsJDfJ1p3hgxIk216kkV1vrD-dlyRgJT21tHMR4PJrdO-nzXJme7HL9_Rj0muvZH_LPXjnO47cqXNBBD9v7H_iyp26JnqTyL3sxek2ehyDdsbXZtB8a62x4czuDMTloGkneLgm4qKP23N816v7h-0mLLimtn6kLyIUHHh_3JM3X3g_MtePYEc2jP8cPhAsCZYBZHA2REkdHHH0B6OzZJb9a_gIcL7xYepeYTp1B_Nt-ranUp0ng3ZDH3ZG_GQFUYfYwLIVjDHgvOl7wcMPbmiY6TqqOYT8gien3bzqwOP7nuC8g9aENuYNeHuEjr6EGYV-UAqs-HMIsnkDe_kG0icTXmV8mS3pRFSz-awscZ6ny8mhQlqkJaMZn5U853Ne0DzFlPJ5npYUF81EVphinhZYpIuizJfJkuaiTBc543OWI8tJnoqOSpUEHRJj24l0bhDVMsvmxUTRRig3fmMgBkkI3o0Phm8OW43iNUPrSJ4q6by7wHjplagua8ZeDXbQWthRJQdGw6-jCSC4YGzcZfqJk1Omk8Gq6uB970LDwzru7mFoEma6Sy-72uux0uD4WOxrhX8FAAD__-U04hk">