<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56816>56816</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            New libc++abi (possibly libc++ too) test configs do not pass sufficient envvars to .sh.cpp tests
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++abi
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mgorny
      </td>
    </tr>
</table>

<pre>
    I've been investigating the following test failure with the 15.x branch:

```
FAIL: llvm-libc++abi-shared.cfg.in :: incomplete_type.sh.cpp (29 of 71)
******************** TEST 'llvm-libc++abi-shared.cfg.in :: incomplete_type.sh.cpp' FAILED ********************
[...]
Command Output (stdout):                                                                                                               
--                                                                                                                                     
$ ":" "RUN: at line 22"                                                                                                                
$ "/usr/lib/ccache/bin/x86_64-pc-linux-gnu-clang++" "--target=x86_64-pc-linux-gnu" "-nostdinc++" "-I" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/libcxxabi/include" "-I" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/runtimes_build-abi_x86_64.amd64/include/c++/v1" "-I" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/runtimes_build-abi_x86_64.amd64/include/x86_64-pc-linux-gnu/c++/v1" "-I" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/libcxxabi/../libcxx/test/support" "-I" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/libcxxabi/../libcxx/src" "-D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS" "-std=c++2b" "-Werror" "-Wall" "-Wextra" "-Wshadow" "-Wundef" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-c++11-extensions" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wno-user-defined-literals" "-Wno-tautological-compare" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-D_LIBCPP_ENABLE_ASSERTIONS=1" "-D_LIBCPP_DISABLE_AVAILABILITY" "-fcoroutines-ts" "-Werror=thread-safety" "-Wuser-defined-warnings" "-Wno-unreachable-code" "-c" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/libcxxabi/test/incomplete_type.sh.cpp" "-o" "/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/work/runtimes_build-abi_x86_64.amd64/Output/incomplete_type.sh.cpp.dir/t.tmp.one.o"
# command stderr:
ccache: error: Failed to create temporary file for /var/lib/portage/home/.cache/ccache/tmp/tmp.cpp_stdout.XXXXXX: Permission denied

error: command failed with exit status: 1
```

It seems that the problem is that the new test configs (`llvm-libc++abi-shared.cfg.in` here) do not set `config.environment` like the legacy config did. As a result, lit only passes a small subset of envvars to the test commands. In this particular case, it strips `HOME`, `XDG_CACHE_HOME` and `CCACHE_DIR`, and ccache tries to write into the wrong directory as a result. If I add a quick debug, at the point of configuration, `config.environment` is stripped down to:

```python
{'PATH': '/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/temp/python3.10/bin:/usr/lib/ccache/bin:/usr/lib/portage/python3.11/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/15/bin:/usr/lib/llvm/15/bin:/usr/lib/llvm/14/bin', 'LLVM_DISABLE_CRASH_REPORT': '1', 'TERM': 'tmux-256color', 'LD_PRELOAD': 'libsandbox.so', 'TMPDIR': '/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/temp', 'TMP': '/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/temp', 'TEMP': '/tmp/portage/sys-libs/libcxxabi-15.0.0.9999/temp'}
```

I suspect libc++ may be suffering from the same problem but I haven't gotten that far yet.

CC @ldionne
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFWFtz2jgU_jXworEHm2DCAw8ETMNMbgO0mz4xsi1AW1vySnKA_fX7yTZg0mR3ps22jseXo-Nz13cOiWRyGM5afv-FkYgxQbh4YdrwDTVcbIjZMrKWaSp35RtWyJrytFCM7LjZlutez92TSFERb1vdUaszaXWO16BTn-XrdDS7AwdJ05fMSXkUt_wbnDTijt5SxRI3Xm9cLogVAz4uYpnlKTNsZQ45c_XWjfOctPxrf0DkmvS9lj-oNfk_fpJluFhCav_n7IIAYj0MJ-RnrKn96d24rtvqTarXscwyKhLyWJi8MDYC2iSyMNZ_GPRrj8okx_nFat8-jum_QlB8mx_ft0_zzw82MNSQlAtGsAT6bzXNnxZa4Yr6wjWOabxleIi4wHV_HayCKyePUX6i2DsbUThxSsWmqsTaKccxVG2YaXUnb3xwZBIStYESvfx0Vj9AmclQq9NcKkM31gR90LbqdWVcvN_bwsem7uBvgAP0nVTfmst4hoa0SNiHyleFMDxjehUVPE0c8K0qR12aJcFVU-v05N_0xfttRryZhv_PtGb8gQ5HgpUJZLaiitzK_UVKtYqPmiaru9nN-OlpFT6Mbu7C1fj52euv5uH945dwsvr8ED4_heMlHqefH8bL2ePD4vglihX1XIfMj47kP5hSUp3eaJqeV_ZG0dMbEDqRu9NrIRK2Pr0J6RSi0Cxx4gpBbZ6Yg11UZEyYJh81RvGoQCCb1JxpzTP-N7qfk8kX1lyrbfY8BxYxobkUF98KyfYxy41jm8SlKpnx2KEp34jXZsBY5cAFmGmNNUzR9EKqoYWRqdzwmKbWqxwN6hwMSPyOWEfghSpOo_Q7Onhphl6mGguKAZ4sM4Ql7I1wptKqt441wn0qgtvRYvXwuHqajz7dj1aLr4tleL-6DUeTcP5ewYwWi3BeFUZ34n3HNZktKrYv6LCjm9ndbPn1yLSOpUIvRMS0Y86xqgqoOzFbeJM4mq6ZOZx9bMZ5R5VAhvWlo28H4VjyH7an6q373lBRaZW_Btmq-eJda9yE2xZmXNjgSsFca9axzXVJvccItjSCf5oF616HdlynZESmmCFZQowkMaJsGCbLDB5RdSBrrGDkVMTCJz13zLPDW5nZm3tsoadeWkXG2gZbV9WE5D6Xh1X6xFTGtd2mJGGCs6Q5qp5MOzqxrkwsp1y25wZeUVNoy-K9Od1W1xkYGcs0JmMMH3Y8zpVEDWWEN2iC7aphOpZizTfaTnQQ9F8DKFjIltmtPSCJJEJaZRgHg04lx2XihStZgQp4U_6NlfpStqHxodZGEp64ZKQJJYrpIkW-x2A1RIr0QHKqNbNrOgPoEl1EVgWmbchGPrRNmhVZm18GS7tkJkCFi0ATw-MipYrEVDMruoyd4rm2ht4-3oc2ZKDj9jz5tBqPxrfhqqYTG3rcxxV1MpvXzJZeJZpAFivN2CngI6bx2qIdPLfOKRYbiUqiZw9h35rMCE0SkP4qePwNJRAVm1JynSYJQdbPKkiFwg8gKWo73w4v3C0dAwgiHTtEQL73Ayg_mC2kVcQ-ktt_Gi1vcbP1ZG8_tK_trrHflMK7rtepB0o7Br8_bn63etZ5kgQEnrIKJrYszZnSF59Z9LcmvhZX01-RX7OdXs8LpweZm_fMtLsDN6_30wxXx8G7X-bX79_dfbk_9ZjxfLS4xezy9DhfnjPknbmX4fz-vGAyDH5-L4jRlVVD5AT9L7x7HE3OrDadKORI7l0tG_Lun2yhf0gxNGR-sMDw4yT2J_-GoMAcnWMPkzMSkoweSMSwsl4zZf8VsVYyK_etxvBywljMb9jmW_rCbHIN2UiDyazC3TUg6cCM29Q1hmtXnTTBTheszYZe0Bt4_cAbXLeTYTcZdAe0bbhJ2fABiH2BzBayc4l2EgE0G5YaKS08X6B7jdUWWksXeMwBIU1EPf5vw36m24VKh1tj8nrT4dygDRWRC7w9l3HZLeD5n4iVbdlaF3Z4nfaCay9ob4d-4q-v-zQOutSPg2jgdYMrfxBR34sHHf_aa6c0Yqketnr2V-KFc7at9yZtPvQ7vt_pdztexwu6fZddXwX9IGbxIO4MAqDEVYdlaJSutcWVatNWw9IsYKu2keVw57wI_zGgMlaqhHyMsluphtlGKnFolw4MS-v_AXjed5o">