<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120736>120736</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc] `ninja check-libc`: AttributeError: module 'yaml' has no attribute 'safe_load'
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vinay-deshmukh
</td>
</tr>
</table>
<pre>
I was following instructions on: https://libc.llvm.org/full_host_build.html#id3
(with slightly modified cmake command, i.e. without Sphinx):
```sh
cmake \
-B ~/build-folder \
-S runtimes \
-G Ninja \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_ENABLE_RUNTIMES="libc;compiler-rt" \
-DLLVM_LIBC_FULL_BUILD=ON \
-DCMAKE_BUILD_TYPE=Debug \
-DLLVM_LIBC_INCLUDE_SCUDO=ON \
-DCOMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC=ON \
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
-DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DLIBC_CMAKE_VERBOSE_LOGGING=ON
```
And then:
```sh
ninja -C ~/build-folder check-libc
```
Which fails with:
```
Traceback (most recent call last):
File "~/llvm-project/libc/hdrgen/yaml_to_classes.py", line 284, in <module>
main()
File "~/llvm-project/libc/hdrgen/yaml_to_classes.py", line 261, in main
header = load_yaml_file(args.yaml_file, header_class, args.entry_points)
File "~/llvm-project/libc/hdrgen/yaml_to_classes.py", line 123, in load_yaml_file
yaml_data = yaml.safe_load(f)
AttributeError: module 'yaml' has no attribute 'safe_load'
ninja: build stopped: subcommand failed.
```
Near:
https://github.com/llvm/llvm-project/blob/5f0db7c11264fa235d73730b2b93a31407dfbef3/libc/hdrgen/yaml_to_classes.py#L120-L121
When I add the following code, just before the `yaml.safe_load`,
```py
print(dir(yaml))
print((yaml).__path__)
```
I get the output:
```
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
_NamespacePath(['~/llvm-project/libc/hdrgen/yaml'])
```
Which probably means, that `import yaml` is trying to "import" the https://github.com/llvm/llvm-project/tree/main/libc/hdrgen/yaml directory instead of `PyYaml`
However, given that
Note: I do have `PyYaml` installed within a conda environment which is activated, so I don't think this is an issue with my python setup:
For instance, the following works as expected:
```sh
❯ /usr/bin/env python3
Python 3.13.1 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 10:35:08) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import yaml
>>> 'safe_load' in dir(yaml)
True
```
Given that the CI has been passing for months, it seems that I might be missing some sort of extra setup so that `/usr/bin/env python3` looks at the right path to import `yaml` (which might need to be added to https://libc.llvm.org/full_host_build.html#configure-the-build-for-development)
Also looked at:
https://libc.llvm.org/dev/header_generation.html#common-errors, but this page didn't seem to mention my issue
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysV0tv2zrT_jXMZmBDouLbwgv5lhqf6wS5nPasBEocWWwoUiApp958v_0FKSV14pwXPS9qGG1MDWeeuTwzI2atOCjEORktyGh1xVpXaTM_CsVOA462qtvn6irX_DTfwguzUGop9YtQBxDKOtMWTmhlQSuSpFA511iSpIRuCN1IkRdDKY_1UJsDoZuylTKrtHVZ3grJh5WrJaGJ4AmJUv-l0xfhKrBSHConT1BrLkqBHIqaPSMUuq6Z4oQuQQxxCF5Ytw4emkqon4TOvOVO0zjqvrYiUdrdJqMlidLBAv6f0E0AMCi15GhenzyAaZUTNdr-BAAGN7AX6gc7O1ktv6b_t86W2fL26912t74nyaqQTB0-kfn-_UKK0AWhi3PZ3e6vr9l6ny526-z-af-4_bp-IMmKUOoDSJJFoetGSDQD4wilF1d328Uy2zztdtniabtbkWR1u7_EEp5lj3_frUmyWmHeHj5XtN0vd0-rdfawfFrdXurqvcnuH3uNQS57eEz3q3R3u19n37aPX7I3fb-h4ebbXZY-pHsvutnA559_0HBhvQf1Jb1fr94rvIjI-vvd7f3ja4L8_1_T_erhAnEIS3flr_X94vZhne1ub262-5sg-qHiup-p4uAqVP9QkSrU1GB5WYtFhcXzICT-Qum3ShQVlExIG2r_UjmJ0kfDCsxZ8QyETmttHRgsUDkomJQgmXVvRAHYCIlAKPUwPFEHjdE_sHA9eQndVNwcUBG6ObFaZk5nhWTWoh02J0Kpp6IUCoFOrwMtFZBkWWveSiTJuosg1EwoQqfe7p81Oo57o8FCZ6xCFjidrEBqxrOgohQSCZ0yc7DDs4NlL93p97-DBCpnTlmjhXL2j4OOadKD_gCvgx9-c-ZY8MD_GlpWYuaFCZ2WHZ7UOSPy1uHaGG185-1iDoRO_B1CJ1AxC0oDexX1z85UTV7L0N8OJQjW6aZB7g9sm_fdNtQb8uFlOe6RBdMkSt_3_YNwVZsPC133wbqMWS51TuhmVEY8nxRxTMfXJaPJiE-SSRLlNJ8lLImvowkvcyyT34xysotpNNjFNH4lDCrYAuOBjGejq9A8pP9Hax3kWGqDQYKMow8hH0eELj-wrDn1yfKfxgjlCJ1yYQiddsGfvVbNe5Ffz4dZ1jBXZVkn-CGwWzigC3h065rWfcpzP6_pJMu4LryaiXcnHPhien_iHUHz_kyx-oNUw4pndrg47FD-OrEN9gZHKxKl2Z7VaBtW4B1zlXcy4PpNmvRqPgvCW79rjM5Z7rcBZCqQ1FXM-VSJutHGBZKQcQTCgjMnn16nPVW7x35i-lD-6xJ1BpHQTde8PkUPXBgsnDansAsh46BLD-zu9HeHqfPji37BIxoP_SCOqHoHXt3ca4eeR1vgGip2xHcqgmomJfLQ84UCBoVWnAGqozBa1b65v4RQCQuscOLIHIYtyeqgVBE68fUk1LP_1wY5BcLaFoNSqE_QnFylFVh0bfNWcBttOvuqwC7y5yx60ebZArOAPxssXOgcn007sqZktiLpBgjdtNZ4_oegojr2dv0GeNchSIZxMoyBTJbQlySH_ASpYsFtD2OrimEQ8CMu5GcJKywgjoFGNEyiOCJJmoxIkkZ-8AAZLZZhSYuvh9FwDGS0Aq2AM_MSRsfjqQn9vULZ9O2aUFro5mT8Mnp2ZJALPxcoaANhSStQWfQHpTZQ-14iVKlNzfxqHBpnsu6-cF6y5-cferMfD-8bih_sLV7S5OZXQfnkLLeh7-eIChq_26tDj0q5KpBHOLCIte3ubKH27kGOUItO3OoawXqUugT86QzrisJX0yvz_ksexxFIrX1ddIhC-MD3EU_L3v--z3phv_SH4u2AKETuBXP0bbv7-397rSi0KsWhNThwFQ5elywz4HhEqRtPm77xdBubtDogRw7MfTrXPhrmePQtoVshDqjQdBl_A1DXWg3Qj-gQ-rx1Hf8adkDggnfE9OnwbnpEQitPxkBNEqVXfJ7wWTJjVziPJ8n1JEqmSXxVzYsJTq8ZljSPRzmWcZ6X5YzNkM3y2SxOiisx90yIKY3i6zii0-GkxDyJWJ5wyqbxqCTXEdZMyDeHroLReUyjSTK-kixHacNbYf8eQql_PzTz0Cbz9mDJdSSFdfaXBiecDG-S4cJo5fPcrbpna-3YMxPgT6wwV62R83_d2IOfltBN7-pxTv8TAAD__1Wnm0w">