<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">