Missing C++ Standard Library Headers When Building Wheels On Mac
@thomasrockhu-codecov is already working on this.
Since Oct 10, 2024.
- Dominant language
- Python
- Stars
- 89
- Forks
- 64
- PR merge metrics
- No merged PRs in 30d
Description
Description
I've encountered a build failure on MacOS when attempting to pip install codecov-cli, which compiles these C++ components due to the lack of a pre-built wheel: https://github.com/codecov/codecov-cli/blob/v0.5.0/setup.py#L34-L54
The specific error indicates that the <vector> header file from the C++ Standard Library cannot be found, along with other C++ specific dependencies.
Error Details
The error message received during the wheel build process is as follows:
fatal error: 'vector' file not found
#include <vector>
^~~~~~~~
This suggests that the build environment is not correctly configured to locate the C++ standard library headers required for compilation.
Environment
OS: MacOS
This setup seems to work:
$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Here's an example of a broken setup (no mention of c++):
$ gcc --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Steps to Reproduce
pip install codecov-clifrom a machine without a version of CommandLineTools that includes the required C++ dependencies .- Observe the failure during the wheel-building step with the error message indicating the missing
<vector>header.
Resolution Steps
I performed the following steps to resolve the issue:
-
Completely removed the existing Command Line Tools using the command:
sudo rm -rf /Library/Developer/CommandLineTools -
Reinstalled the Command Line Tools by invoking:
xcode-select --install
The fresh installation of the Command Line Tools seems to include the necessary C++ compiler and standard library headers.
Question
Is there any easier way to prevent this issue without requiring a reinstall of xcode Command Line Tools?
Do I need to start enforcing a minimum version of xcode on developer machines? Or is there work in progress to get a working wheel file?
In setup.py, should the language='c++' be set for the Extension to explicitly require a working C++ compiler?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.