-
-
Notifications
You must be signed in to change notification settings - Fork 30.8k
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
gh-85454: Remove distutils.ccompiler from Tools/c-analyzer #95171
Conversation
corona10
commented
Jul 23, 2022
•
edited by bedevere-bot
Loading
edited by bedevere-bot
- Issue: Deprecate and remove distutils #85454
@@ -168,9 +170,17 @@ def handling_errors(ignore_exc=None, *, log_err=None): | |||
} | |||
|
|||
|
|||
def _get_default_compiler(): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minimalized ported version from
cpython/Lib/distutils/ccompiler.py
Lines 937 to 956 in f4c0348
def get_default_compiler(osname=None, platform=None): | |
"""Determine the default compiler to use for the given platform. | |
osname should be one of the standard Python OS names (i.e. the | |
ones returned by os.name) and platform the common value | |
returned by sys.platform for the platform in question. | |
The default values are os.name and sys.platform in case the | |
parameters are not given. | |
""" | |
if osname is None: | |
osname = os.name | |
if platform is None: | |
platform = sys.platform | |
for pattern, compiler in _default_compilers: | |
if re.match(pattern, platform) is not None or \ | |
re.match(pattern, osname) is not None: | |
return compiler | |
# Default to Unix compiler | |
return 'unix' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It may be worth having a short comment indicating this was derived from the distutils code.
@@ -168,9 +170,17 @@ def handling_errors(ignore_exc=None, *, log_err=None): | |||
} | |||
|
|||
|
|||
def _get_default_compiler(): | |||
if re.match('cygwin.*', sys.platform) is not None: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can just remove cygwin as it is unsupported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have a bunch of Cygwin-related codes (__CYGWIN__
) in CPython code base, Did we decide to remove them?
Even if PEP 11 defined tier-based platforms, I don't interpret them as removing all unsupported platform codes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cygwin is certainly still alive to some extent, so I'd say let's not worry about that in the PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you remove cygwin branch, it will fallback to unix
which is better than special casing it but it's minor and you can ignore this too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you remove cygwin branch, it will fallback to unix which is better than special casing it but it's minor and you can ignore this too.
It's care about Windows/Cygwin case, see: https://docs.python.org/3/library/sys.html.
It can be gone to the wrong fallback logic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM