Issue |
120736
|
Summary |
[libc] `ninja check-libc`: AttributeError: module 'yaml' has no attribute 'safe_load'
|
Labels |
libc
|
Assignees |
|
Reporter |
vinay-deshmukh
|
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
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs