-
-
Notifications
You must be signed in to change notification settings - Fork 30.4k
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
Python 3.11 is unbuildable with GCC on macOS (error: 'HAVE_MKFIFOAT_RUNTIME' undeclared, error: 'HAVE_MKNODAT_RUNTIME' undeclared) #104106
Comments
biergaizi
changed the title
Python 3.11 is unbuildable with GCC on macOS (error: 'HAVE_MKNODAT_RUNTIME' undeclared, error: 'HAVE_MKNODAT_RUNTIME' undeclared)
Python 3.11 is unbuildable with GCC on macOS (error: 'HAVE_MKFIFOAT_RUNTIME' undeclared, error: 'HAVE_MKNODAT_RUNTIME' undeclared)
May 2, 2023
corona10
added a commit
to corona10/cpython
that referenced
this issue
May 3, 2023
corona10
added a commit
to corona10/cpython
that referenced
this issue
May 3, 2023
@biergaizi Can you please check that #104129 solve your issue? --- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -175,6 +175,14 @@
# define HAVE_PWRITEV_RUNTIME (pwritev != NULL)
# endif
+# ifdef HAVE_MKFIFOAT
+# define HAVE_MKFIFOAT_RUNTIME (mkfifoat != NULL)
+# endif
+
+# ifdef HAVE_MKNODAT
+# define HAVE_MKNODAT_RUNTIME (mknodat != NULL)
+# endif
+
#endif
#ifdef HAVE_FUTIMESAT |
No, because this patch contains a typo. |
corona10
added a commit
to corona10/cpython
that referenced
this issue
May 4, 2023
@biergaizi Thanks, I updated the diff, is the changes solve your issue? |
Yes, the revised patch works, |
biergaizi
added a commit
to biergaizi/prefix
that referenced
this issue
May 5, 2023
Currently, dev-lang/python-3.11.3 is unbuildable on macOS due to GCC incompatibility. There exists two "#ifdef" checks for the system calls mkfifoat() and mknodat(), which are not compatible with GCC. Because they're defined using the __builtin_available() function - specific to clang without a fallback for GCC, they're never defined, thus creating the following errors: ./Modules/posixmodule.c:15647:23: error: 'HAVE_MKFIFOAT_RUNTIME' undeclared (first use in this function); did you mean 'HAVE_MKDIRAT_RUNTIME'? ./Modules/posixmodule.c:15651:22: error: 'HAVE_MKNODAT_RUNTIME' undeclared (first use in this function); did you mean 'HAVE_MKDIRAT_RUNTIME'? This bug [1] has already been reported to upstream with a patch [2] waiting to be merged. This commit applies the upstream patch to add the missing GCC fallbacks. [1] python/cpython#104106 [2] python/cpython#104129 Closes: https://bugs.gentoo.org/905618 Signed-off-by: Yifeng Li <tomli@tomli.me>
corona10
added a commit
that referenced
this issue
May 5, 2023
corona10
added a commit
to corona10/cpython
that referenced
this issue
May 5, 2023
pythongh-104129). (cherry picked from commit e5b8b19) Co-authored-by: Dong-hee Na <donghee.na@python.org>
corona10
added a commit
to corona10/cpython
that referenced
this issue
May 5, 2023
@biergaizi Thank you for the report! |
carljm
added a commit
to carljm/cpython
that referenced
this issue
May 5, 2023
* main: (61 commits) pythongh-64595: Argument Clinic: Touch source file if any output file changed (python#104152) pythongh-64631: Test exception messages in cloned Argument Clinic funcs (python#104167) pythongh-68395: Avoid naming conflicts by mangling variable names in Argument Clinic (python#104065) pythongh-64658: Expand Argument Clinic return converter docs (python#104175) pythonGH-103092: port `_asyncio` freelist to module state (python#104196) pythongh-104051: fix crash in test_xxtestfuzz with -We (python#104052) pythongh-104190: fix ubsan crash (python#104191) pythongh-104106: Add gcc fallback of mkfifoat/mknodat for macOS (pythongh-104129) pythonGH-104142: Fix _Py_RefcntAdd to respect immortality (pythonGH-104143) pythongh-104112: link from cached_property docs to method-caching FAQ (python#104113) pythongh-68968: Correcting message display issue with assertEqual (python#103937) pythonGH-103899: Provide a hint when accidentally calling a module (pythonGH-103900) pythongh-103963: fix 'make regen-opcode' in out-of-tree builds (python#104177) pythongh-102500: Add PEP 688 and 698 to the 3.12 release highlights (python#104174) pythonGH-81079: Add case_sensitive argument to `pathlib.Path.glob()` (pythonGH-102710) pythongh-91896: Deprecate collections.abc.ByteString (python#102096) pythongh-99593: Add tests for Unicode C API (part 2) (python#99868) pythongh-102500: Document PEP 688 (python#102571) pythongh-102500: Implement PEP 688 (python#102521) pythongh-96534: socketmodule: support FreeBSD divert(4) socket (python#96536) ...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bug report
Due to missing fallback macro definitions in
Modules/posixmodule.c
(source) forHAVE_MKFIFOAT_RUNTIME
andHAVE_MKNODAT_RUNTIME
, Python 3.11 cannot be built with GCC on macOS, due to the following failures:In
Modules/posixmodule.c
, Python conditionally defines a series of macros that indicate whether a system call is supported based on#ifdef
checks. By default, the clang specific__builtin_available()
compiler built-in function is used to check them. But if__builtin_available()
is unavailable, a fallback is also provided.For example, for
HAVE_FSTATAT_RUNTIME
, we have:The fallback is important because it's not only used to support older Xcode or macOS, but it also provides fallback when GCC is used. The function
__builtin_available()
is clang-only and does not exist in GCC. In the past, this was handled by theelse
portion of theifdef
, so it worked on GCC as well. Unfortunately, whenHAVE_MKFIFOAT_RUNTIME
andHAVE_MKDIRAT_RUNTIME
have been added to the code, a fallback was never provided, thus, compiling Python 3.11 with GCC now fails due to undeclared macros.Your environment
Linked PRs
The text was updated successfully, but these errors were encountered: