Bug #80171 [Com]: reentrancy.c:139:23: error: too few arguments to function call

From: Date: Fri, 02 Oct 2020 10:01:10 +0000
Subject: Bug #80171 [Com]: reentrancy.c:139:23: error: too few arguments to function call
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-229337@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80171&edit=1

 ID:                 80171
 Comment by:         smillerdev at me dot com
 Reported by:        smillerdev at me dot com
 Summary:            reentrancy.c:139:23: error: too few arguments to
                     function call
 Status:             Open
 Type:               Bug
 Package:            Compile Failure
 Operating System:   macOS 10.15
 PHP Version:        7.3.23
 Block user comment: N
 Private report:     N

 New Comment:

> Where does the -Werror flag come from in your case? Is this a new default flag in macos 10.15?

As far as I know it's added by Homebrew. That has been the case for tons of software years
though, without any issues.


Previous Comments:
------------------------------------------------------------------------
[2020-10-02 09:46:50] nikic@php.net

Relevant part:

conftest.c:277:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main() {
^
conftest.c:284:5: error: implicitly declaring library function 'exit' with type 'void
(int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]
    exit(1);
    ^
conftest.c:284:5: note: include the header <stdlib.h> or explicitly provide a declaration for
'exit'
conftest.c:286:5: error: implicit declaration of function 'close' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
    close(dir);
    ^
conftest.c:289:3: error: implicit declaration of function 'close' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
  close(dir);
  ^
1 warning and 3 errors generated.
configure:15832: $? = 1
configure: program exited with status 1

It fails due to implicit declaration warnings that become errors under -Werror.

While we can fix the missing includes, running configure with -Werror will also break other checks
-- and if I remember correct, some of them are ones done by autoconf itself, so we cannot easily
address them. This is why we have an --enable-werror option that enables -Werror only for the build
of PHP itself, not for configure checks.

Where does the -Werror flag come from in your case? Is this a new default flag in macos 10.15?

------------------------------------------------------------------------
[2020-10-02 09:38:29] smillerdev at me dot com

I'm personally running the macOS 11.0 beta, but the error is the same. Here is a gist with the
log. I can't get it from the CI servers, but I can ask someone to run it on 10.15 if needed.

https://gist.github.com/SMillerDev/638547b3840380fac9f9fd8e0eefb5f6

------------------------------------------------------------------------
[2020-10-02 09:21:06] nikic@php.net

PHP >= 7.4 sidesteps the issue by removing use of readdir_r: https://github.com/php/php-src/commit/2b28f7189144a21e753dbc09efadd571121a82b9

It looks like PHP_READDIR_R_TYPE is detecting the wrong readdir_r signature for your case. Could you
provide the config.log dump?

------------------------------------------------------------------------
[2020-10-02 08:56:23] smillerdev at me dot com

Description:
------------
Compiling PHP on the latest macOS 10.15 fails in Homebrew CI because Apple changed the way readdir_r
is defined as far as I can tell.

https://github.com/Homebrew/homebrew-core/pull/61828
https://github.com/Homebrew/homebrew-core/pull/61820

Actual result:
--------------
/private/tmp/php@7.2-20201002-12382-1t37dvh/php-7.2.34/main/reentrancy.c:139:23: error: too few
arguments to function call, expected 3, have 2
        readdir_r(dirp, entry);
        ~~~~~~~~~            ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/dirent.h:110:1: note:
'readdir_r' declared here
int readdir_r(DIR *, struct dirent *, struct dirent **) __DARWIN_INODE64(readdir_r);
^
1 error generated.
make: *** [main/reentrancy.lo] Error 1


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=80171&edit=1


Thread (13 messages)

« previous php.bugs (#229337) next »