Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing C++ Standard Library Headers When Building Wheels On Mac #409

Open
pb-dod opened this issue Apr 9, 2024 · 0 comments
Open

Missing C++ Standard Library Headers When Building Wheels On Mac #409

pb-dod opened this issue Apr 9, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@pb-dod
Copy link

pb-dod commented Apr 9, 2024

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

  1. pip install codecov-cli from a machine without a version of CommandLineTools that includes the required C++ dependencies .
  2. 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:

  1. Completely removed the existing Command Line Tools using the command:

    sudo rm -rf /Library/Developer/CommandLineTools
  2. 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?

@thomasrockhu-codecov thomasrockhu-codecov added the bug Something isn't working label Apr 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants