-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
./setup.py build
on macOS floods screen with system header warnings
#7759
Comments
Invoking https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html Please could you try via pip, like |
Pip does not print the compiler's stderr (contains warnings and errors) unless there is a problem with the compilation. Because the HEAD builds (you have a CI for that), you never see the issue. So all is fine I try to do something to some C extension code and break the build. At which point I am showered with the same irrelevant warnings, mixed with my actual error; worse, there are no colors. That's bad developer experience and what led me to do |
It does if you include
|
Continuing the suggestion of using |
Can reproduce with
I got a 20 MB log after about 1.5 minutes, so I called stop there. At least it compresses well. ( |
I tried diff --git a/setup.py b/setup.py
index 1bbd2c05c..3a384e38f 100644
--- a/setup.py
+++ b/setup.py
@@ -569,6 +569,9 @@ class pil_build_ext(build_ext):
if sdk_path:
_add_directory(library_dirs, os.path.join(sdk_path, "usr", "lib"))
_add_directory(include_dirs, os.path.join(sdk_path, "usr", "include"))
+
+ for extension in self.extensions:
+ extension.extra_compile_args = [f"--system-header-prefix={sdk_path}"]
elif (
sys.platform.startswith("linux")
or sys.platform.startswith("gnu") and that successfully added the flag, but didn't remove the warnings. |
I've created #7827 to resolve this by silencing the warnings. |
Huh... suboptimal. Maybe EDIT: not lib, include! |
No, that also doesn't reduce the warnings. |
If it helps, I personally use Python from MacPorts by default, and using that version, these warnings aren't generated. |
On my machine, running
./setup.py build
floods the screen with 206 irrelevant warnings from the system'sstdlib.h
, like this:So it looks like clang is not properly recognizing some includes as the system's own; https://stackoverflow.com/questions/48096872/shouldnt-clang-suppress-warnings-from-a-header-file-in-usr-local-include describes how.
This is how I think it happened:
setup.py
side-steps the proper "-isystem" invocation and directly does_add_directory(include_dirs, os.path.join(sdk_path, "usr", "include"))
.-isystem
is not used,clang
does not know it's a system include file.clang
I use comes from/Applications/Xcode.app/Contents/Developer
(according toxcode-select -p
), which is a different one compared to the guy in/Library/Developer/CommandLineTools/usr/bin/
. As a result, the-internal-isystem
knowledge also fails.This is how I think it should be fixed:
[f"--system-header-prefix={sdk_path}"]
.Now
setuptools.CCompiler
does not allow you to inject extra arguments, butsetuptools.Extension
does via theextra_compile_args
member. Your modifiedbuild_ext
should be able to do a dirty hack here: go through all theext_modules
to be built and give them someextra_compile_args
(you're already doing it for fuzzing). You can even preserve the CFLAG suggestions frompkg-config
this way, if you so wish.Right, confirmed my cute little theory. I ran
sudo xcode-select -s /Library/Developer/CommandLineTools
so the clang is from the same place from my SDK. And it's quiet now.It still needs a proper fix.
The text was updated successfully, but these errors were encountered: