[php-src] Issue #20267: [only 8.5 rc2] `make -j32` or `make -j4` fail, `make -j` works (missing zend_language_scanner_defs.h)
| From: | henderkes | Date: | Thu, 23 Oct 2025 14:15:40 +0000 |
| Subject: | [php-src] Issue #20267: [only 8.5 rc2] `make -j32` or `make -j4` fail, `make -j` works (missing zend_language_scanner_defs.h) | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-251105@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/20267
Author: henderkes
### Description
The following code:
```php
// untar 8.5.0 rc2, cd into folder
// extract ast extension source into ext/ast
./configure --disable-all --enable-cli --enable-ast
make -j32
```
Resulted in this output:
```
/bin/sh /home/m/static-php-cli/source/php-src/libtool --silent --preserve-dup-deps --tag=CC
--mode=compile gcc -Iext/json/ -I/home/m/static-php-cli/source/php-src/ext/json/
-I/home/m/static-php-cli/source/php-src/main -I/home/m/static-php-cli/source/php-src
-I/home/m/static-php-cli/source/php-src/ext/date/lib
-I/home/m/static-php-cli/source/php-src/ext/lexbor
-I/home/m/static-php-cli/source/php-src/ext/uri/uriparser/include
-I/home/m/static-php-cli/source/php-src/TSRM -I/home/m/static-php-cli/source/php-src/Zend
-I/home/m/static-php-cli/buildroot/include -D_GNU_SOURCE -D_REENTRANT -pthread -fno-common
-Wstrict-prototypes -Wformat-truncation -Wlogical-op -Wduplicated-cond -Wno-clobbered -Wall -Wextra
-Wno-unused-parameter -Wno-sign-compare -fPIC -Os -fPIE -ffp-contract=off -fvisibility=hidden
-pthread -DNDEBUG -DZTS -Wimplicit-fallthrough=1 -DZEND_MAX_EXECUTION_TIMERS -g
-fstack-protector-strong -fno-ident -fPIE -fPIC -Os -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -c
/home/m/static-php-cli/source/php-src/ext/json/json_encoder.c -o ext/json/json_encoder.lo -MMD -MF
ext/json/json_encoder.dep -MT ext/json/json_encoder.lo
/home/m/static-php-cli/source/php-src/ext/ast/ast.c:12:10: fatal error:
zend_language_scanner_defs.h: No such file or directory
12 | #include "zend_language_scanner_defs.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:530: ext/ast/ast.lo] Error 1
make: *** Waiting for unfinished jobs....
```
But I expected this output instead:
```
Build complete.
Don't forget to run 'make test'.
```
I could imagine that this is only an issue because the
ast extension doesn't
declare all of it's dependencies as it's expected to be compiled as a shared extension,
but I still find it very curious that this always works with other php versions and it always works
with make -j instead of make -j32 or even make -j1.
### PHP Version
```plain
PHP 8.5.0 RC2.
8.2, 8.3, 8.4 and 8.5 beta1-3 work.
```
### Operating System
x86_64-linux and aarch64-linux