Skip to content
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

CRLF causes confusing bugs in compilation #17836

Closed
DanielEScherzer opened this issue Feb 17, 2025 · 15 comments
Closed

CRLF causes confusing bugs in compilation #17836

DanielEScherzer opened this issue Feb 17, 2025 · 15 comments

Comments

@DanielEScherzer
Copy link
Member

Description

  • Clone of 6ccb35ec9444ecf43378c8eeb23ae3266aaa4d41 with clean git status
  • Environment/existing PHP: 8.3.9
  • make clean
  • make distclean
  • ./buildconf
root@a8efcafe4e96:/usr/src/php# ./buildconf
buildconf: Checking installation
buildconf: autoconf version 2.71 (ok)
buildconf: Cleaning cache and configure files
buildconf: Rebuilding configure
buildconf: Rebuilding main/php_config.h.in
buildconf: Run ./configure to proceed with customizing the PHP build.
  • ./configure --enable-debug (config.log copied in /var/www/html/20250216-config.log in case any of the contents would be useful)
  • make install > /var/www/html/install.log (normally I would use -j16 but wanted to make sure none of the errors were caused by splitting up the jobs)

Noted in the standard output (line 598):

  • ERROR (/usr/src/php/Zend/zend_vm_def.h:26): Invalid ZEND_VM_HELPER definition.

Standard error:

root@a8efcafe4e96:/usr/src/php# make install > /var/www/html/install.log
/usr/bin/ld: cannot find ext/pcre/: file format not recognized
/usr/bin/ld: cannot find .o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_auto_possess.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_chartables.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_chkdint.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_compile.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_compile_class.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_config.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_context.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_convert.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_dfa_match.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_error.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_extuni.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_find_bracket.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_jit_compile.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_maketables.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_match_data.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_match.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_newline.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_ord2utf.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_pattern_info.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_script_run.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_serialize.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_string_utils.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_study.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_substitute.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_substring.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_tables.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_ucd.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_valid_utf.o: No such file or directory
/usr/bin/ld: cannot find ext/pcre/pcre2lib/pcre2_xclass.o: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:265: sapi/cli/php] Error 1

But I expected this output instead:

[no errors]

Also, ext/pcre/ also has a weird entry:

root@a8efcafe4e96:/usr/src/php# ls -la ext/pcre/
total 364
-rw-r--r-- 1 root root   4258 Feb 17 03:19 ''$'\r''.dep'
drwxrwxrwx 1 root root   4096 Feb 17 03:20  .
drwxrwxrwx 1 root root   4096 Feb 14 05:02  ..
drwxr-xr-x 1 root root   4096 Feb 17 03:20  .libs
-rwxrwxrwx 1 root root     40 Aug 27 23:28  CREDITS
-rwxrwxrwx 1 root root   1327 Feb 17 01:51  config.w32
-rwxrwxrwx 1 root root   4436 Feb 17 01:51  config0.m4
drwxrwxrwx 1 root root   4096 Feb 17 03:20  pcre2lib
-rwxrwxrwx 1 root root  91160 Feb 17 01:51  php_pcre.c
-rwxrwxrwx 1 root root   1934 Aug 27 23:28  php_pcre.def
-rw-r--r-- 1 root root   3840 Feb 17 03:20  php_pcre.dep
-rwxrwxrwx 1 root root   3786 Feb 13 02:28  php_pcre.h
-rw-r--r-- 1 root root    324 Feb 17 03:20  php_pcre.lo
-rw-r--r-- 1 root root 229808 Feb 17 03:20  php_pcre.o
-rwxrwxrwx 1 root root   3475 Feb 13 02:28  php_pcre.stub.php
-rwxrwxrwx 1 root root   6375 Feb 17 01:12  php_pcre_arginfo.h
drwxrwxrwx 1 root root   4096 Feb 17 01:51  tests

Environment

I am running in a docker image (php:8.3.9-apache with some extra packages installed)

root@a8efcafe4e96:/usr/src/php# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 12 (bookworm)
Release:        12
Codename:       bookworm
root@a8efcafe4e96:/usr/src/php# uname -a
Linux a8efcafe4e96 5.15.133.1-microsoft-standard-WSL2 #1 SMP Thu Oct 5 21:02:42 UTC 2023 x86_64 GNU/Linux

PHP Version

6ccb35e

Operating System

No response

@DanielEScherzer
Copy link
Member Author

I didn't include the full standard output of make install but the last line looks off, specifically the floating .o in
...ext/libxml/libxml.o ext/libxml/mime_sniff.o ext/pcre/ .o ext/pcre/pcre2lib/pcre2_auto_possess.o...

Full last line:

/bin/bash /usr/src/php/libtool --silent --preserve-dup-deps --tag=CC --mode=link cc -export-dynamic -fno-common -Wstrict-prototypes -Wformat-truncation -Wlogical-op -Wduplicated-cond -Wno-clobbered -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -g -ffp-contract=off -fvisibility=hidden -UNDEBUG -O0 -Wimplicit-fallthrough=1 -DZEND_SIGNALS   -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152 -Wl,-O1 -pie   ext/date/php_date.o ext/date/lib/astro.o ext/date/lib/dow.o ext/date/lib/parse_date.o ext/date/lib/parse_tz.o ext/date/lib/parse_posix.o ext/date/lib/timelib.o ext/date/lib/tm2unixtime.o ext/date/lib/unixtime2tm.o ext/date/lib/parse_iso_intervals.o ext/date/lib/interval.o ext/libxml/libxml.o ext/libxml/mime_sniff.o ext/pcre/ .o ext/pcre/pcre2lib/pcre2_auto_possess.o ext/pcre/pcre2lib/pcre2_chartables.o ext/pcre/pcre2lib/pcre2_chkdint.o ext/pcre/pcre2lib/pcre2_compile.o ext/pcre/pcre2lib/pcre2_compile_class.o ext/pcre/pcre2lib/pcre2_config.o ext/pcre/pcre2lib/pcre2_context.o ext/pcre/pcre2lib/pcre2_convert.o ext/pcre/pcre2lib/pcre2_dfa_match.o ext/pcre/pcre2lib/pcre2_error.o ext/pcre/pcre2lib/pcre2_extuni.o ext/pcre/pcre2lib/pcre2_find_bracket.o ext/pcre/pcre2lib/pcre2_jit_compile.o ext/pcre/pcre2lib/pcre2_maketables.o ext/pcre/pcre2lib/pcre2_match_data.o ext/pcre/pcre2lib/pcre2_match.o ext/pcre/pcre2lib/pcre2_newline.o ext/pcre/pcre2lib/pcre2_ord2utf.o ext/pcre/pcre2lib/pcre2_pattern_info.o ext/pcre/pcre2lib/pcre2_script_run.o ext/pcre/pcre2lib/pcre2_serialize.o ext/pcre/pcre2lib/pcre2_string_utils.o ext/pcre/pcre2lib/pcre2_study.o ext/pcre/pcre2lib/pcre2_substitute.o ext/pcre/pcre2lib/pcre2_substring.o ext/pcre/pcre2lib/pcre2_tables.o ext/pcre/pcre2lib/pcre2_ucd.o ext/pcre/pcre2lib/pcre2_valid_utf.o ext/pcre/pcre2lib/pcre2_xclass.o ext/pcre/php_pcre.o ext/sqlite3/sqlite3.o ext/ctype/ctype.o ext/dom/attr.o ext/dom/cdatasection.o ext/dom/characterdata.o ext/dom/comment.o ext/dom/document.o ext/dom/documentfragment.o ext/dom/documenttype.o ext/dom/dom_iterators.o ext/dom/domexception.o ext/dom/domimplementation.o ext/dom/element.o ext/dom/entity.o ext/dom/entityreference.o ext/dom/html_collection.o ext/dom/html_document.o ext/dom/html5_parser.o ext/dom/html5_serializer.o ext/dom/infra.o ext/dom/inner_outer_html_mixin.o ext/dom/namednodemap.o ext/dom/namespace_compat.o ext/dom/node.o ext/dom/nodelist.o ext/dom/notation.o ext/dom/parentnode/css_selectors.o ext/dom/parentnode/tree.o ext/dom/php_dom.o ext/dom/private_data.o ext/dom/processinginstruction.o ext/dom/text.o ext/dom/token_list.o ext/dom/xml_document.o ext/dom/xml_serializer.o ext/dom/xpath_callbacks.o ext/dom/xpath.o ext/dom/lexbor/lexbor/core/array_obj.o ext/dom/lexbor/lexbor/core/array.o ext/dom/lexbor/lexbor/core/avl.o ext/dom/lexbor/lexbor/core/bst.o ext/dom/lexbor/lexbor/core/conv.o ext/dom/lexbor/lexbor/core/diyfp.o ext/dom/lexbor/lexbor/core/dobject.o ext/dom/lexbor/lexbor/core/dtoa.o ext/dom/lexbor/lexbor/core/hash.o ext/dom/lexbor/lexbor/core/mem.o ext/dom/lexbor/lexbor/core/mraw.o ext/dom/lexbor/lexbor/core/print.o ext/dom/lexbor/lexbor/core/serialize.o ext/dom/lexbor/lexbor/core/shs.o ext/dom/lexbor/lexbor/core/str.o ext/dom/lexbor/lexbor/core/strtod.o ext/dom/lexbor/lexbor/css/css.o ext/dom/lexbor/lexbor/css/log.o ext/dom/lexbor/lexbor/css/parser.o ext/dom/lexbor/lexbor/css/selectors/pseudo_state.o ext/dom/lexbor/lexbor/css/selectors/pseudo.o ext/dom/lexbor/lexbor/css/selectors/selector.o ext/dom/lexbor/lexbor/css/selectors/selectors.o ext/dom/lexbor/lexbor/css/selectors/state.o ext/dom/lexbor/lexbor/css/state.o ext/dom/lexbor/lexbor/css/syntax/anb.o ext/dom/lexbor/lexbor/css/syntax/parser.o ext/dom/lexbor/lexbor/css/syntax/state.o ext/dom/lexbor/lexbor/css/syntax/syntax.o ext/dom/lexbor/lexbor/css/syntax/token.o ext/dom/lexbor/lexbor/css/syntax/tokenizer.o ext/dom/lexbor/lexbor/css/syntax/tokenizer/error.o ext/dom/lexbor/lexbor/dom/interface.o ext/dom/lexbor/lexbor/dom/interfaces/attr.o ext/dom/lexbor/lexbor/dom/interfaces/cdata_section.o ext/dom/lexbor/lexbor/dom/interfaces/character_data.o ext/dom/lexbor/lexbor/dom/interfaces/comment.o ext/dom/lexbor/lexbor/dom/interfaces/document_fragment.o ext/dom/lexbor/lexbor/dom/interfaces/document_type.o ext/dom/lexbor/lexbor/dom/interfaces/document.o ext/dom/lexbor/lexbor/dom/interfaces/element.o ext/dom/lexbor/lexbor/dom/interfaces/node.o ext/dom/lexbor/lexbor/dom/interfaces/processing_instruction.o ext/dom/lexbor/lexbor/dom/interfaces/shadow_root.o ext/dom/lexbor/lexbor/dom/interfaces/text.o ext/dom/lexbor/lexbor/encoding/big5.o ext/dom/lexbor/lexbor/encoding/decode.o ext/dom/lexbor/lexbor/encoding/encode.o ext/dom/lexbor/lexbor/encoding/encoding.o ext/dom/lexbor/lexbor/encoding/euc_kr.o ext/dom/lexbor/lexbor/encoding/gb18030.o ext/dom/lexbor/lexbor/encoding/iso_2022_jp_katakana.o ext/dom/lexbor/lexbor/encoding/jis0208.o ext/dom/lexbor/lexbor/encoding/jis0212.o ext/dom/lexbor/lexbor/encoding/range.o ext/dom/lexbor/lexbor/encoding/res.o ext/dom/lexbor/lexbor/encoding/single.o ext/dom/lexbor/lexbor/html/encoding.o ext/dom/lexbor/lexbor/html/interface.o ext/dom/lexbor/lexbor/html/interfaces/anchor_element.o ext/dom/lexbor/lexbor/html/interfaces/area_element.o ext/dom/lexbor/lexbor/html/interfaces/audio_element.o ext/dom/lexbor/lexbor/html/interfaces/base_element.o ext/dom/lexbor/lexbor/html/interfaces/body_element.o ext/dom/lexbor/lexbor/html/interfaces/br_element.o ext/dom/lexbor/lexbor/html/interfaces/button_element.o ext/dom/lexbor/lexbor/html/interfaces/canvas_element.o ext/dom/lexbor/lexbor/html/interfaces/d_list_element.o ext/dom/lexbor/lexbor/html/interfaces/data_element.o ext/dom/lexbor/lexbor/html/interfaces/data_list_element.o ext/dom/lexbor/lexbor/html/interfaces/details_element.o ext/dom/lexbor/lexbor/html/interfaces/dialog_element.o ext/dom/lexbor/lexbor/html/interfaces/directory_element.o ext/dom/lexbor/lexbor/html/interfaces/div_element.o ext/dom/lexbor/lexbor/html/interfaces/document.o ext/dom/lexbor/lexbor/html/interfaces/element.o ext/dom/lexbor/lexbor/html/interfaces/embed_element.o ext/dom/lexbor/lexbor/html/interfaces/field_set_element.o ext/dom/lexbor/lexbor/html/interfaces/font_element.o ext/dom/lexbor/lexbor/html/interfaces/form_element.o ext/dom/lexbor/lexbor/html/interfaces/frame_element.o ext/dom/lexbor/lexbor/html/interfaces/frame_set_element.o ext/dom/lexbor/lexbor/html/interfaces/head_element.o ext/dom/lexbor/lexbor/html/interfaces/heading_element.o ext/dom/lexbor/lexbor/html/interfaces/hr_element.o ext/dom/lexbor/lexbor/html/interfaces/html_element.o ext/dom/lexbor/lexbor/html/interfaces/iframe_element.o ext/dom/lexbor/lexbor/html/interfaces/image_element.o ext/dom/lexbor/lexbor/html/interfaces/input_element.o ext/dom/lexbor/lexbor/html/interfaces/label_element.o ext/dom/lexbor/lexbor/html/interfaces/legend_element.o ext/dom/lexbor/lexbor/html/interfaces/li_element.o ext/dom/lexbor/lexbor/html/interfaces/link_element.o ext/dom/lexbor/lexbor/html/interfaces/map_element.o ext/dom/lexbor/lexbor/html/interfaces/marquee_element.o ext/dom/lexbor/lexbor/html/interfaces/media_element.o ext/dom/lexbor/lexbor/html/interfaces/menu_element.o ext/dom/lexbor/lexbor/html/interfaces/meta_element.o ext/dom/lexbor/lexbor/html/interfaces/meter_element.o ext/dom/lexbor/lexbor/html/interfaces/mod_element.o ext/dom/lexbor/lexbor/html/interfaces/o_list_element.o ext/dom/lexbor/lexbor/html/interfaces/object_element.o ext/dom/lexbor/lexbor/html/interfaces/opt_group_element.o ext/dom/lexbor/lexbor/html/interfaces/option_element.o ext/dom/lexbor/lexbor/html/interfaces/output_element.o ext/dom/lexbor/lexbor/html/interfaces/paragraph_element.o ext/dom/lexbor/lexbor/html/interfaces/param_element.o ext/dom/lexbor/lexbor/html/interfaces/picture_element.o ext/dom/lexbor/lexbor/html/interfaces/pre_element.o ext/dom/lexbor/lexbor/html/interfaces/progress_element.o ext/dom/lexbor/lexbor/html/interfaces/quote_element.o ext/dom/lexbor/lexbor/html/interfaces/script_element.o ext/dom/lexbor/lexbor/html/interfaces/select_element.o ext/dom/lexbor/lexbor/html/interfaces/slot_element.o ext/dom/lexbor/lexbor/html/interfaces/source_element.o ext/dom/lexbor/lexbor/html/interfaces/span_element.o ext/dom/lexbor/lexbor/html/interfaces/style_element.o ext/dom/lexbor/lexbor/html/interfaces/table_caption_element.o ext/dom/lexbor/lexbor/html/interfaces/table_cell_element.o ext/dom/lexbor/lexbor/html/interfaces/table_col_element.o ext/dom/lexbor/lexbor/html/interfaces/table_element.o ext/dom/lexbor/lexbor/html/interfaces/table_row_element.o ext/dom/lexbor/lexbor/html/interfaces/table_section_element.o ext/dom/lexbor/lexbor/html/interfaces/template_element.o ext/dom/lexbor/lexbor/html/interfaces/text_area_element.o ext/dom/lexbor/lexbor/html/interfaces/time_element.o ext/dom/lexbor/lexbor/html/interfaces/title_element.o ext/dom/lexbor/lexbor/html/interfaces/track_element.o ext/dom/lexbor/lexbor/html/interfaces/u_list_element.o ext/dom/lexbor/lexbor/html/interfaces/unknown_element.o ext/dom/lexbor/lexbor/html/interfaces/video_element.o ext/dom/lexbor/lexbor/html/interfaces/window.o ext/dom/lexbor/lexbor/html/parser.o ext/dom/lexbor/lexbor/html/token_attr.o ext/dom/lexbor/lexbor/html/token.o ext/dom/lexbor/lexbor/html/tokenizer.o ext/dom/lexbor/lexbor/html/tokenizer/error.o ext/dom/lexbor/lexbor/html/tokenizer/state_comment.o ext/dom/lexbor/lexbor/html/tokenizer/state_doctype.o ext/dom/lexbor/lexbor/html/tokenizer/state_rawtext.o ext/dom/lexbor/lexbor/html/tokenizer/state_rcdata.o ext/dom/lexbor/lexbor/html/tokenizer/state_script.o ext/dom/lexbor/lexbor/html/tokenizer/state.o ext/dom/lexbor/lexbor/html/tree.o ext/dom/lexbor/lexbor/html/tree/active_formatting.o ext/dom/lexbor/lexbor/html/tree/error.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/after_after_body.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/after_after_frameset.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/after_body.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/after_frameset.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/after_head.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/before_head.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/before_html.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/foreign_content.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_body.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_caption.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_cell.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_column_group.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_frameset.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_head_noscript.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_head.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_row.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_select_in_table.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_select.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_table_body.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_table_text.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_table.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_template.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/initial.o ext/dom/lexbor/lexbor/html/tree/insertion_mode/text.o ext/dom/lexbor/lexbor/html/tree/open_elements.o ext/dom/lexbor/lexbor/ns/ns.o ext/dom/lexbor/lexbor/ports/posix/lexbor/core/memory.o ext/dom/lexbor/lexbor/selectors-adapted/selectors.o ext/dom/lexbor/lexbor/tag/tag.o ext/fileinfo/fileinfo.o ext/fileinfo/php_libmagic.o ext/fileinfo/libmagic/apprentice.o ext/fileinfo/libmagic/apptype.o ext/fileinfo/libmagic/ascmagic.o ext/fileinfo/libmagic/buffer.o ext/fileinfo/libmagic/cdf_time.o ext/fileinfo/libmagic/cdf.o ext/fileinfo/libmagic/compress.o ext/fileinfo/libmagic/der.o ext/fileinfo/libmagic/encoding.o ext/fileinfo/libmagic/fsmagic.o ext/fileinfo/libmagic/funcs.o ext/fileinfo/libmagic/is_csv.o ext/fileinfo/libmagic/is_json.o ext/fileinfo/libmagic/is_simh.o ext/fileinfo/libmagic/is_tar.o ext/fileinfo/libmagic/magic.o ext/fileinfo/libmagic/print.o ext/fileinfo/libmagic/readcdf.o ext/fileinfo/libmagic/softmagic.o ext/filter/filter.o ext/filter/sanitizing_filters.o ext/filter/logical_filters.o ext/filter/callback_filter.o ext/hash/sha3/generic64lc/KeccakP-1600-opt64.o ext/hash/sha3/generic64lc/KeccakHash.o ext/hash/sha3/generic64lc/KeccakSponge.o ext/hash/hash_adler32.o ext/hash/hash_crc32.o ext/hash/hash_fnv.o ext/hash/hash_gost.o ext/hash/hash_haval.o ext/hash/hash_joaat.o ext/hash/hash_md.o ext/hash/hash_murmur.o ext/hash/hash_ripemd.o ext/hash/hash_sha_ni.o ext/hash/hash_sha_sse2.o ext/hash/hash_sha.o ext/hash/hash_sha3.o ext/hash/hash_snefru.o ext/hash/hash_tiger.o ext/hash/hash_whirlpool.o ext/hash/hash_xxhash.o ext/hash/hash.o ext/hash/murmur/PMurHash.o ext/hash/murmur/PMurHash128.o ext/iconv/iconv.o ext/json/json_encoder.o ext/json/json_parser.o ext/json/json_scanner.o ext/json/json.o ext/pdo/pdo.o ext/pdo/pdo_dbh.o ext/pdo/pdo_stmt.o ext/pdo/pdo_sql_parser.o ext/pdo/pdo_sqlstate.o ext/pdo_sqlite/pdo_sqlite.o ext/pdo_sqlite/sqlite_driver.o ext/pdo_sqlite/sqlite_statement.o ext/pdo_sqlite/sqlite_sql_parser.o ext/phar/dirstream.o ext/phar/func_interceptors.o ext/phar/phar_object.o ext/phar/phar_path_check.o ext/phar/phar.o ext/phar/stream.o ext/phar/tar.o ext/phar/util.o ext/phar/zip.o ext/posix/posix.o ext/random/csprng.o ext/random/engine_mt19937.o ext/random/engine_pcgoneseq128xslrr64.o ext/random/engine_secure.o ext/random/engine_user.o ext/random/engine_xoshiro256starstar.o ext/random/gammasection.o ext/random/random.o ext/random/randomizer.o ext/random/zend_utils.o ext/reflection/php_reflection.o ext/session/mod_user_class.o ext/session/session.o ext/session/mod_files.o ext/session/mod_mm.o ext/session/mod_user.o ext/simplexml/simplexml.o ext/spl/php_spl.o ext/spl/spl_array.o ext/spl/spl_directory.o ext/spl/spl_dllist.o ext/spl/spl_exceptions.o ext/spl/spl_fixedarray.o ext/spl/spl_functions.o ext/spl/spl_heap.o ext/spl/spl_iterators.o ext/spl/spl_observer.o ext/standard/array.o ext/standard/assert.o ext/standard/base64.o ext/standard/basic_functions.o ext/standard/browscap.o ext/standard/crc32_x86.o ext/standard/crc32.o ext/standard/credits.o ext/standard/crypt.o ext/standard/css.o ext/standard/datetime.o ext/standard/dir.o ext/standard/dl.o ext/standard/dns.o ext/standard/exec.o ext/standard/file.o ext/standard/filestat.o ext/standard/filters.o ext/standard/flock_compat.o ext/standard/formatted_print.o ext/standard/fsock.o ext/standard/ftok.o ext/standard/ftp_fopen_wrapper.o ext/standard/head.o ext/standard/hrtime.o ext/standard/html.o ext/standard/http_fopen_wrapper.o ext/standard/http.o ext/standard/image.o ext/standard/incomplete_class.o ext/standard/info.o ext/standard/iptc.o ext/standard/levenshtein.o ext/standard/libavifinfo/avifinfo.o ext/standard/link.o ext/standard/mail.o ext/standard/math.o ext/standard/md5.o ext/standard/metaphone.o ext/standard/microtime.o ext/standard/net.o ext/standard/pack.o ext/standard/pageinfo.o ext/standard/password.o ext/standard/php_fopen_wrapper.o ext/standard/proc_open.o ext/standard/quot_print.o ext/standard/scanf.o ext/standard/sha1.o ext/standard/soundex.o ext/standard/streamsfuncs.o ext/standard/string.o ext/standard/strnatcmp.o ext/standard/syslog.o ext/standard/type.o ext/standard/uniqid.o ext/standard/url_scanner_ex.o ext/standard/url.o ext/standard/user_filters.o ext/standard/uuencode.o ext/standard/var_unserializer.o ext/standard/var.o ext/standard/versioning.o ext/standard/crypt_blowfish.o ext/standard/crypt_freesec.o ext/standard/crypt_sha256.o ext/standard/crypt_sha512.o ext/standard/php_crypt_r.o ext/tokenizer/tokenizer.o ext/tokenizer/tokenizer_data.o ext/xml/xml.o ext/xml/compat.o ext/xmlreader/php_xmlreader.o ext/xmlwriter/php_xmlwriter.o Zend/asm/make_x86_64_sysv_elf_gas.o Zend/asm/jump_x86_64_sysv_elf_gas.o TSRM/TSRM.o main/explicit_bzero.o main/fopen_wrappers.o main/getopt.o main/main.o main/network.o main/output.o main/php_content_types.o main/php_ini_builder.o main/php_ini.o main/php_odbc_utils.o main/php_open_temporary_file.o main/php_scandir.o main/php_syslog.o main/php_ticks.o main/php_variables.o main/reentrancy.o main/rfc1867.o main/safe_bcmp.o main/SAPI.o main/snprintf.o main/spprintf.o main/strlcat.o main/strlcpy.o main/debug_gdb_scripts.o main/streams/cast.o main/streams/filter.o main/streams/glob_wrapper.o main/streams/memory.o main/streams/mmap.o main/streams/plain_wrapper.o main/streams/streams.o main/streams/transports.o main/streams/userspace.o main/streams/xp_socket.o Zend/Optimizer/block_pass.o Zend/Optimizer/compact_literals.o Zend/Optimizer/compact_vars.o Zend/Optimizer/dce.o Zend/Optimizer/dfa_pass.o Zend/Optimizer/escape_analysis.o Zend/Optimizer/nop_removal.o Zend/Optimizer/optimize_func_calls.o Zend/Optimizer/optimize_temp_vars_5.o Zend/Optimizer/pass1.o Zend/Optimizer/pass3.o Zend/Optimizer/sccp.o Zend/Optimizer/scdf.o Zend/Optimizer/zend_call_graph.o Zend/Optimizer/zend_cfg.o Zend/Optimizer/zend_dfg.o Zend/Optimizer/zend_dump.o Zend/Optimizer/zend_func_info.o Zend/Optimizer/zend_inference.o Zend/Optimizer/zend_optimizer.o Zend/Optimizer/zend_ssa.o Zend/zend_alloc.o Zend/zend_API.o Zend/zend_ast.o Zend/zend_atomic.o Zend/zend_attributes.o Zend/zend_builtin_functions.o Zend/zend_call_stack.o Zend/zend_closures.o Zend/zend_compile.o Zend/zend_constants.o Zend/zend_cpuinfo.o Zend/zend_default_classes.o Zend/zend_dtrace.o Zend/zend_enum.o Zend/zend_exceptions.o Zend/zend_execute_API.o Zend/zend_execute.o Zend/zend_extensions.o Zend/zend_fibers.o Zend/zend_float.o Zend/zend_frameless_function.o Zend/zend_gc.o Zend/zend_gdb.o Zend/zend_generators.o Zend/zend_hash.o Zend/zend_highlight.o Zend/zend_hrtime.o Zend/zend_inheritance.o Zend/zend_ini_parser.o Zend/zend_ini_scanner.o Zend/zend_ini.o Zend/zend_interfaces.o Zend/zend_iterators.o Zend/zend_language_parser.o Zend/zend_language_scanner.o Zend/zend_lazy_objects.o Zend/zend_list.o Zend/zend_llist.o Zend/zend_max_execution_timer.o Zend/zend_multibyte.o Zend/zend_object_handlers.o Zend/zend_objects_API.o Zend/zend_objects.o Zend/zend_observer.o Zend/zend_opcode.o Zend/zend_operators.o Zend/zend_property_hooks.o Zend/zend_ptr_stack.o Zend/zend_signal.o Zend/zend_smart_str.o Zend/zend_sort.o Zend/zend_stack.o Zend/zend_stream.o Zend/zend_string.o Zend/zend_strtod.o Zend/zend_system_id.o Zend/zend_variables.o Zend/zend_virtual_cwd.o Zend/zend_vm_opcodes.o Zend/zend_weakrefs.o Zend/zend.o main/internal_functions_cli.o sapi/cli/php_cli.o sapi/cli/php_http_parser.o sapi/cli/php_cli_server.o sapi/cli/ps_title.o sapi/cli/php_cli_process_title.o -lm -lxml2 -lsqlite3 -lxml2 -lsqlite3 -lxml2 -lxml2 -lxml2 -lxml2  -o sapi/cli/php

@cmb69
Copy link
Member

cmb69 commented Feb 17, 2025

Did you try with git clean -fdx before attempting to build?

@DanielEScherzer
Copy link
Member Author

I hadn't previously, but it didn't change anything:

  • make clean
  • make distclean
  • git clean -fdx (output below)
  • ./buildconf (same result as before, just now from root@1ea144dc1c1d:/usr/src/php# rather than root@a8efcafe4e96:/usr/src/php#)
  • ./configure --enable-debug (log copied to /var/www/html/20250217-config.log for later reference)
  • make install > /var/www/html/20250217-make.log

Exact same standard error for make install, diff shows identical standard output too

`git clean -fdx`
git clean -fdx
Removing Zend/tests/attributes/NonpublicConstructor/
Removing Zend/tests/attributes/decorator/
Removing Zend/tests/attributes/deprecated/constants/
Removing Zend/tests/stack_limit/gh16041_002.diff
Removing Zend/tests/stack_limit/gh16041_002.exp
Removing Zend/tests/stack_limit/gh16041_002.log
Removing Zend/tests/stack_limit/gh16041_002.out
Removing Zend/tests/stack_limit/gh16041_002.php
Removing Zend/tests/stack_limit/gh16041_002.sh
Removing Zend/zend_ini_parser.c
Removing Zend/zend_ini_parser.h
Removing Zend/zend_ini_parser.output
Removing Zend/zend_ini_scanner.c
Removing Zend/zend_ini_scanner_defs.h
Removing Zend/zend_language_parser.c
Removing Zend/zend_language_parser.h
Removing Zend/zend_language_parser.output
Removing Zend/zend_language_scanner.c
Removing Zend/zend_language_scanner_defs.h
Removing autom4te.cache/
Removing build/PHP-Parser-5.0.0/
Removing build/PHP-Parser-5.3.1/
Removing config.nice
Removing configure
Removing docs/build/
Removing docs/source/.~
Removing ext/dba/tests/dba_tcadb.diff
Removing ext/dba/tests/dba_tcadb.exp
Removing ext/dba/tests/dba_tcadb.log
Removing ext/dba/tests/dba_tcadb.out
Removing ext/dba/tests/dba_tcadb.php
Removing ext/dba/tests/dba_tcadb.sh
Removing ext/dba/tests/dba_tcadb_creation_matrix.diff
Removing ext/dba/tests/dba_tcadb_creation_matrix.exp
Removing ext/dba/tests/dba_tcadb_creation_matrix.log
Removing ext/dba/tests/dba_tcadb_creation_matrix.out
Removing ext/dba/tests/dba_tcadb_creation_matrix.php
Removing ext/dba/tests/dba_tcadb_creation_matrix.sh
Removing ext/dom/lexbor/lexbor/css/tokenizer/
Removing ext/ffi/tests/gh14286_2.diff
Removing ext/ffi/tests/gh14286_2.exp
Removing ext/ffi/tests/gh14286_2.log
Removing ext/ffi/tests/gh14286_2.out
Removing ext/ffi/tests/gh14286_2.php
Removing ext/ffi/tests/gh14286_2.sh
Removing ext/filter/tests/bug42718.diff
Removing ext/filter/tests/bug42718.exp
Removing ext/filter/tests/bug42718.log
Removing ext/filter/tests/bug42718.out
Removing ext/filter/tests/bug42718.php
Removing ext/filter/tests/bug42718.sh
Removing ext/filter/tests/bug49184.diff
Removing ext/filter/tests/bug49184.exp
Removing ext/filter/tests/bug49184.log
Removing ext/filter/tests/bug49184.out
Removing ext/filter/tests/bug49184.php
Removing ext/filter/tests/bug49184.sh
Removing ext/filter/tests/bug67167.02.diff
Removing ext/filter/tests/bug67167.02.exp
Removing ext/filter/tests/bug67167.02.log
Removing ext/filter/tests/bug67167.02.out
Removing ext/filter/tests/bug67167.02.php
Removing ext/filter/tests/bug67167.02.sh
Removing ext/gd/tests/bug50194.out.png
Removing ext/gd/tests/test_image_equals_file_palette.out.png
Removing ext/intl/tests/dateformat_format_variant3.diff
Removing ext/intl/tests/dateformat_format_variant3.exp
Removing ext/intl/tests/dateformat_format_variant3.log
Removing ext/intl/tests/dateformat_format_variant3.out
Removing ext/intl/tests/dateformat_format_variant3.php
Removing ext/intl/tests/dateformat_format_variant3.sh
Removing ext/json/json_parser.tab.c
Removing ext/json/json_parser.tab.h
Removing ext/json/json_scanner.c
Removing ext/json/php_json_scanner_defs.h
Removing ext/opcache/jit/zend_jit_x86.c
Removing ext/opcache/minilua
Removing ext/opcache/tests/opt/verify_return_type.diff
Removing ext/opcache/tests/opt/verify_return_type.exp
Removing ext/opcache/tests/opt/verify_return_type.log
Removing ext/opcache/tests/opt/verify_return_type.out
Removing ext/opcache/tests/opt/verify_return_type.php
Removing ext/opcache/tests/opt/verify_return_type.sh
Removing ext/openssl/tests/session_meta_capture_tlsv13-ca.pem.tmp
Removing ext/openssl/tests/session_meta_capture_tlsv13.pem.tmp
Removing ext/pcntl/tests/pcntl_setns_newpid.diff
Removing ext/pcntl/tests/pcntl_setns_newpid.exp
Removing ext/pcntl/tests/pcntl_setns_newpid.log
Removing ext/pcntl/tests/pcntl_setns_newpid.out
Removing ext/pcntl/tests/pcntl_setns_newpid.php
Removing ext/pcntl/tests/pcntl_setns_newpid.sh
Removing ext/pdo/pdo_sql_parser.c
Removing ext/pdo_firebird/tests/bug_73234.diff
Removing ext/pdo_firebird/tests/bug_73234.exp
Removing ext/pdo_firebird/tests/bug_73234.log
Removing ext/pdo_firebird/tests/bug_73234.out
Removing ext/pdo_firebird/tests/bug_73234.php
Removing ext/pdo_firebird/tests/bug_73234.sh
Removing ext/pdo_firebird/tests/pdo_039.diff
Removing ext/pdo_firebird/tests/pdo_039.exp
Removing ext/pdo_firebird/tests/pdo_039.log
Removing ext/pdo_firebird/tests/pdo_039.out
Removing ext/pdo_firebird/tests/pdo_039.php
Removing ext/pdo_firebird/tests/pdo_039.sh
Removing ext/pdo_mysql/mysql_sql_parser.c
Removing ext/pdo_pgsql/pgsql_sql_parser.c
Removing ext/pdo_sqlite/sqlite_sql_parser.c
Removing ext/pdo_sqlite/tests/pdo_022.diff
Removing ext/pdo_sqlite/tests/pdo_022.exp
Removing ext/pdo_sqlite/tests/pdo_022.log
Removing ext/pdo_sqlite/tests/pdo_022.out
Removing ext/pdo_sqlite/tests/pdo_022.php
Removing ext/pdo_sqlite/tests/pdo_022.sh
Removing ext/phar/phar_path_check.c
Removing ext/phar/tests/bug54289/out/
Removing ext/session/tests/user_session_module/bug71162.diff
Removing ext/session/tests/user_session_module/bug71162.exp
Removing ext/session/tests/user_session_module/bug71162.log
Removing ext/session/tests/user_session_module/bug71162.out
Removing ext/session/tests/user_session_module/bug71162.php
Removing ext/session/tests/user_session_module/bug71162.sh
Removing ext/standard/tests/file/bug36365.diff
Removing ext/standard/tests/file/bug36365.exp
Removing ext/standard/tests/file/bug36365.log
Removing ext/standard/tests/file/bug36365.out
Removing ext/standard/tests/file/bug36365.php
Removing ext/standard/tests/file/bug36365.sh
Removing ext/standard/tests/file/file_get_contents_basic1.tmp
Removing ext/standard/tests/general_functions/proc_only_mb0.php
Removing ext/standard/tests/general_functions/proc_only_mb1.php
Removing ext/standard/url_scanner_ex.c
Removing ext/standard/var_unserializer.c
Removing ext/tidy/tests/parsing_file_too_large.diff
Removing ext/tidy/tests/parsing_file_too_large.exp
Removing ext/tidy/tests/parsing_file_too_large.log
Removing ext/tidy/tests/parsing_file_too_large.out
Removing ext/tidy/tests/parsing_file_too_large.php
Removing ext/tidy/tests/parsing_file_too_large.sh
Removing include/
Removing libs/
Removing main/php_config.h.in
Removing modules/
Removing sapi/cgi/tests/012_bad.test.php
Removing sapi/cgi/tests/012_good.test.php
Removing sapi/cli/tests/024_bad.test.php
Removing sapi/cli/tests/024_good.test.php
Removing sapi/fpm/php-fpm
Removing sapi/fpm/www.conf
Removing sapi/phpdbg/phpdbg_lexer.c
Removing sapi/phpdbg/phpdbg_parser.c
Removing sapi/phpdbg/phpdbg_parser.h
Removing sapi/phpdbg/phpdbg_parser.output
Removing sapi/phpdbg/tests/breakpoints_001.diff
Removing sapi/phpdbg/tests/breakpoints_001.exp
Removing sapi/phpdbg/tests/breakpoints_001.log
Removing sapi/phpdbg/tests/breakpoints_001.out
Removing sapi/phpdbg/tests/breakpoints_001.php
Removing sapi/phpdbg/tests/breakpoints_001.sh
Removing sapi/phpdbg/tests/breakpoints_002.diff
Removing sapi/phpdbg/tests/breakpoints_002.exp
Removing sapi/phpdbg/tests/breakpoints_002.log
Removing sapi/phpdbg/tests/breakpoints_002.out
Removing sapi/phpdbg/tests/breakpoints_002.php
Removing sapi/phpdbg/tests/breakpoints_002.sh
Removing sapi/phpdbg/tests/breakpoints_003.diff
Removing sapi/phpdbg/tests/breakpoints_003.exp
Removing sapi/phpdbg/tests/breakpoints_003.log
Removing sapi/phpdbg/tests/breakpoints_003.out
Removing sapi/phpdbg/tests/breakpoints_003.php
Removing sapi/phpdbg/tests/breakpoints_003.sh
Removing sapi/phpdbg/tests/breakpoints_004.diff
Removing sapi/phpdbg/tests/breakpoints_004.exp
Removing sapi/phpdbg/tests/breakpoints_004.log
Removing sapi/phpdbg/tests/breakpoints_004.out
Removing sapi/phpdbg/tests/breakpoints_004.php
Removing sapi/phpdbg/tests/breakpoints_004.sh
Removing sapi/phpdbg/tests/breakpoints_005.diff
Removing sapi/phpdbg/tests/breakpoints_005.exp
Removing sapi/phpdbg/tests/breakpoints_005.log
Removing sapi/phpdbg/tests/breakpoints_005.out
Removing sapi/phpdbg/tests/breakpoints_005.php
Removing sapi/phpdbg/tests/breakpoints_005.sh
Removing sapi/phpdbg/tests/breakpoints_006.diff
Removing sapi/phpdbg/tests/breakpoints_006.exp
Removing sapi/phpdbg/tests/breakpoints_006.log
Removing sapi/phpdbg/tests/breakpoints_006.out
Removing sapi/phpdbg/tests/breakpoints_006.php
Removing sapi/phpdbg/tests/breakpoints_006.sh
Removing sapi/phpdbg/tests/breakpoints_008.diff
Removing sapi/phpdbg/tests/breakpoints_008.exp
Removing sapi/phpdbg/tests/breakpoints_008.log
Removing sapi/phpdbg/tests/breakpoints_008.out
Removing sapi/phpdbg/tests/breakpoints_008.php
Removing sapi/phpdbg/tests/breakpoints_008.sh
Removing sapi/phpdbg/tests/breakpoints_009.diff
Removing sapi/phpdbg/tests/breakpoints_009.exp
Removing sapi/phpdbg/tests/breakpoints_009.log
Removing sapi/phpdbg/tests/breakpoints_009.out
Removing sapi/phpdbg/tests/breakpoints_009.php
Removing sapi/phpdbg/tests/breakpoints_009.sh
Removing sapi/phpdbg/tests/bug73704.diff
Removing sapi/phpdbg/tests/bug73704.exp
Removing sapi/phpdbg/tests/bug73704.log
Removing sapi/phpdbg/tests/bug73704.out
Removing sapi/phpdbg/tests/bug73704.php
Removing sapi/phpdbg/tests/bug73704.sh
Removing sapi/phpdbg/tests/bug76801.diff
Removing sapi/phpdbg/tests/bug76801.exp
Removing sapi/phpdbg/tests/bug76801.log
Removing sapi/phpdbg/tests/bug76801.out
Removing sapi/phpdbg/tests/bug76801.php
Removing sapi/phpdbg/tests/bug76801.sh
Removing sapi/phpdbg/tests/bug78297.diff
Removing sapi/phpdbg/tests/bug78297.exp
Removing sapi/phpdbg/tests/bug78297.log
Removing sapi/phpdbg/tests/bug78297.out
Removing sapi/phpdbg/tests/bug78297.php
Removing sapi/phpdbg/tests/bug78297.sh
Removing sapi/phpdbg/tests/clean_001.diff
Removing sapi/phpdbg/tests/clean_001.exp
Removing sapi/phpdbg/tests/clean_001.log
Removing sapi/phpdbg/tests/clean_001.out
Removing sapi/phpdbg/tests/clean_001.php
Removing sapi/phpdbg/tests/clean_001.sh
Removing sapi/phpdbg/tests/clear_001.diff
Removing sapi/phpdbg/tests/clear_001.exp
Removing sapi/phpdbg/tests/clear_001.log
Removing sapi/phpdbg/tests/clear_001.out
Removing sapi/phpdbg/tests/clear_001.php
Removing sapi/phpdbg/tests/clear_001.sh
Removing sapi/phpdbg/tests/exceptions_001.diff
Removing sapi/phpdbg/tests/exceptions_001.exp
Removing sapi/phpdbg/tests/exceptions_001.log
Removing sapi/phpdbg/tests/exceptions_001.out
Removing sapi/phpdbg/tests/exceptions_001.php
Removing sapi/phpdbg/tests/exceptions_001.sh
Removing sapi/phpdbg/tests/exceptions_002.diff
Removing sapi/phpdbg/tests/exceptions_002.exp
Removing sapi/phpdbg/tests/exceptions_002.log
Removing sapi/phpdbg/tests/exceptions_002.out
Removing sapi/phpdbg/tests/exceptions_002.php
Removing sapi/phpdbg/tests/exceptions_002.sh
Removing sapi/phpdbg/tests/generator_run.diff
Removing sapi/phpdbg/tests/generator_run.exp
Removing sapi/phpdbg/tests/generator_run.log
Removing sapi/phpdbg/tests/generator_run.out
Removing sapi/phpdbg/tests/generator_run.php
Removing sapi/phpdbg/tests/generator_run.sh
Removing sapi/phpdbg/tests/gh13681.diff
Removing sapi/phpdbg/tests/gh13681.exp
Removing sapi/phpdbg/tests/gh13681.log
Removing sapi/phpdbg/tests/gh13681.out
Removing sapi/phpdbg/tests/gh13681.php
Removing sapi/phpdbg/tests/gh13681.sh
Removing sapi/phpdbg/tests/gh14553.diff
Removing sapi/phpdbg/tests/gh14553.exp
Removing sapi/phpdbg/tests/gh14553.log
Removing sapi/phpdbg/tests/gh14553.out
Removing sapi/phpdbg/tests/gh14553.php
Removing sapi/phpdbg/tests/gh14553.sh
Removing sapi/phpdbg/tests/gh15210_002.diff
Removing sapi/phpdbg/tests/gh15210_002.exp
Removing sapi/phpdbg/tests/gh15210_002.log
Removing sapi/phpdbg/tests/gh15210_002.out
Removing sapi/phpdbg/tests/gh15210_002.php
Removing sapi/phpdbg/tests/gh15210_002.sh
Removing sapi/phpdbg/tests/gh16181.diff
Removing sapi/phpdbg/tests/gh16181.exp
Removing sapi/phpdbg/tests/gh16181.log
Removing sapi/phpdbg/tests/gh16181.out
Removing sapi/phpdbg/tests/gh16181.php
Removing sapi/phpdbg/tests/gh16181.sh
Removing sapi/phpdbg/tests/include_once_001.diff
Removing sapi/phpdbg/tests/include_once_001.exp
Removing sapi/phpdbg/tests/include_once_001.log
Removing sapi/phpdbg/tests/include_once_001.out
Removing sapi/phpdbg/tests/include_once_001.php
Removing sapi/phpdbg/tests/include_once_001.sh
Removing sapi/phpdbg/tests/include_once_002.diff
Removing sapi/phpdbg/tests/include_once_002.exp
Removing sapi/phpdbg/tests/include_once_002.log
Removing sapi/phpdbg/tests/include_once_002.out
Removing sapi/phpdbg/tests/include_once_002.php
Removing sapi/phpdbg/tests/include_once_002.sh
Removing sapi/phpdbg/tests/info_001.diff
Removing sapi/phpdbg/tests/info_001.exp
Removing sapi/phpdbg/tests/info_001.log
Removing sapi/phpdbg/tests/info_001.out
Removing sapi/phpdbg/tests/info_001.php
Removing sapi/phpdbg/tests/info_001.sh
Removing sapi/phpdbg/tests/normal_exit.diff
Removing sapi/phpdbg/tests/normal_exit.exp
Removing sapi/phpdbg/tests/normal_exit.log
Removing sapi/phpdbg/tests/normal_exit.out
Removing sapi/phpdbg/tests/normal_exit.php
Removing sapi/phpdbg/tests/normal_exit.sh
Removing sapi/phpdbg/tests/phpdbg_break_next.diff
Removing sapi/phpdbg/tests/phpdbg_break_next.exp
Removing sapi/phpdbg/tests/phpdbg_break_next.log
Removing sapi/phpdbg/tests/phpdbg_break_next.out
Removing sapi/phpdbg/tests/phpdbg_break_next.php
Removing sapi/phpdbg/tests/phpdbg_break_next.sh
Removing sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.diff
Removing sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.exp
Removing sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.log
Removing sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.out
Removing sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.php
Removing sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.sh
Removing sapi/phpdbg/tests/phpdbg_oplog_001.diff
Removing sapi/phpdbg/tests/phpdbg_oplog_001.exp
Removing sapi/phpdbg/tests/phpdbg_oplog_001.log
Removing sapi/phpdbg/tests/phpdbg_oplog_001.out
Removing sapi/phpdbg/tests/phpdbg_oplog_001.php
Removing sapi/phpdbg/tests/phpdbg_oplog_001.sh
Removing sapi/phpdbg/tests/phpdbg_oplog_002.diff
Removing sapi/phpdbg/tests/phpdbg_oplog_002.exp
Removing sapi/phpdbg/tests/phpdbg_oplog_002.log
Removing sapi/phpdbg/tests/phpdbg_oplog_002.out
Removing sapi/phpdbg/tests/phpdbg_oplog_002.php
Removing sapi/phpdbg/tests/phpdbg_oplog_002.sh
Removing sapi/phpdbg/tests/run_001.php
Removing tests/security/open_basedir_linkinfo.diff
Removing tests/security/open_basedir_linkinfo.exp
Removing tests/security/open_basedir_linkinfo.log
Removing tests/security/open_basedir_linkinfo.out
Removing tests/security/open_basedir_linkinfo.php
Removing tests/security/open_basedir_linkinfo.sh
Removing tmp-php.ini

@cmb69
Copy link
Member

cmb69 commented Feb 17, 2025

Okay.

-rw-r--r-- 1 root root 4258 Feb 17 03:19 ''$'\r''.dep'

This looks indeed fishy, but I have no idea where it comes from. Is the file already there for a clean checkout, or is it generated during compilation?

Regarding that last line of make install: is there some information about that in config.log?

@DanielEScherzer
Copy link
Member Author

It is generated during the compilation, and in VSCode it shows up as .dep so it is pretty visible
I wouldn't know what to look for in the config.log - do you want me to share all 16418 lines?

@nielsdos
Copy link
Member

Weird. Full build from clean checkout without generated files worked on my machine today.
The VM is generated via the host php, yet that seems to fail. Is your host php broken?

@DanielEScherzer
Copy link
Member Author

Weird. Full build from clean checkout without generated files worked on my machine today. The VM is generated via the host php, yet that seems to fail. Is your host php broken?

It shouldn't be, its the same host PHP I've been using to contribute for the last few months, but separate from the VM part, why is the make trying to compile such weird files?

Is there any further information I can provide?

@nielsdos
Copy link
Member

What's php --version giving?
And also, what does php Zend/zend_vm_gen.php output?

@DanielEScherzer
Copy link
Member Author

root@ac228dedb155:/usr/src/php# php --version
PHP 8.3.9 (cli) (built: Jul  6 2024 00:42:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies
root@ac228dedb155:/usr/src/php# php Zend/zend_vm_gen.php 
ERROR (/usr/src/php/Zend/zend_vm_def.h:26): Invalid ZEND_VM_HELPER definition.

@nielsdos
Copy link
Member

I have no clue.
Can you please share the name of your Docker image that you use, so I can pull it on my local system (but actually doing debugging will be for tomorrow though, it's late)

@DanielEScherzer
Copy link
Member Author

Here is the raw dockerfile (I wanted to add some extra packages):

# syntax=docker/dockerfile:1
FROM php:8.3.9-apache

# Add back missing packages
RUN apt-get update
RUN apt-get install -y --no-install-recommends libxml2-dev
RUN apt-get install -y --no-install-recommends libsqlite3-dev
RUN apt-get install -y --no-install-recommends valgrind
RUN apt-get install -y --no-install-recommends bison
RUN apt-get install -y --no-install-recommends nano
RUN apt-get install -y --no-install-recommends sudo
RUN apt-get install -y --no-install-recommends gdb

# Multi-line grep (pcre2grep)
RUN apt-get install -y --no-install-recommends pcre2-utils

# For spell checking
RUN apt-get install -y --no-install-recommends python3
RUN apt-get install -y --no-install-recommends python3-pip
# Its in docker, allow pip installing
RUN pip install scspell3k --break-system-packages

# GDB
RUN mkdir -p /root/.config/gdb
RUN echo "add-auto-load-safe-path /usr/src/php/.gdbinit" > /root/.config/gdb/gdbinit
RUN echo "add-auto-load-safe-path /usr/local/bin/php" >> /root/.config/gdb/gdbinit

# A bunch of packages, from actions/apt-x64/action.yml
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y autoconf gcc make curl \
    unzip bison re2c locales ldap-utils openssl slapd libgmp-dev libicu-dev \
    libtidy-dev libenchant-2-dev libbz2-dev libsasl2-dev libxpm-dev libzip-dev \
    libsqlite3-dev libsqlite3-mod-spatialite libwebp-dev libavif-dev \
    libonig-dev libcurl4-openssl-dev libxml2-dev libxslt1-dev libpq-dev \
    libedit-dev libldap2-dev libsodium-dev libargon2-dev libmm-dev libsnmp-dev \
    postgresql postgresql-contrib snmpd freetds-dev unixodbc-dev llvm clang \
    dovecot-core dovecot-pop3d dovecot-imapd sendmail firebird-dev liblmdb-dev \
    libtokyocabinet-dev libdb-dev libqdbm-dev libjpeg-dev libpng-dev \
    libfreetype6-dev

# For some extra extensions/flags
# --with-readline
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libreadline-dev
# # For some extensions
# # libssl-dev per https://github.com/sfackler/rust-openssl/issues/763
# RUN apt-get install -y --no-install-recommends openssl libssl-dev
# # zlib
# RUN apt-get install -y --no-install-recommends zlib1g zlib1g-dev
# # for bz2
# RUN apt-get install -y --no-install-recommends bzip2 libbz2-dev
# # for curl
# RUN apt-get install -y --no-install-recommends libcurl4-openssl-dev
# # for enchant
# RUN apt-get install -y --no-install-recommends libenchant-2-dev
# # for gd
# RUN apt-get install -y --no-install-recommends libpng-dev
# # for gmp
# RUN apt-get install -y --no-install-recommends libgmp-dev
# # for ldap
# RUN apt-get install -y --no-install-recommends libldap2-dev
# # for mbstring
# RUN apt-get install -y --no-install-recommends libonig-dev
# # for PDO
# RUN apt-get install -y --no-install-recommends firebird-dev
# # for ODBC
# RUN apt-get install -y --no-install-recommends unixodbc-dev
# # for sodium
# RUN apt-get install -y --no-install-recommends libsodium-dev
# # for openssl
# RUN apt-get install -y --no-install-recommends libargon2-dev
# # for tidy
# RUN apt-get install -y --no-install-recommends libtidy-dev
# # for xsl
# RUN apt-get install -y --no-install-recommends libxslt1-dev
# # for zip
# RUn apt-get install -y --no-install-recommends libzip-dev

# For documentation
RUN pip install rstfmt Sphinx sphinx-design sphinxawesome-theme --break-system-packages

# For reference
RUN apt-get install lsb-release

@DanielEScherzer
Copy link
Member Author

Weird. Full build from clean checkout without generated files worked on my machine today. The VM is generated via the host php, yet that seems to fail. Is your host php broken?

It shouldn't be, its the same host PHP I've been using to contribute for the last few months, but separate from the VM part, why is the make trying to compile such weird files?

Windows being stupid 🤦 - switch from CRLF to LF and that part works:

root@5d13e0aa6ecf:/usr/src/php# php Zend/zend_vm_gen.php 
zend_vm_opcodes.h generated successfully.
zend_vm_opcodes.c generated successfully.
zend_vm_execute.h generated successfully.

Based on that, also did

root@5d13e0aa6ecf:/usr/src/php# grep -lIr --exclude-dir=tests --exclude-dir=.git --exclude-dir=.github --exclude=*.jpg $'\r' | xargs
 dos2unix

and another git clean -fdx, then tried again, and it worked.

Can I suggest that we add .gitattributes to help windows developers not get hit with issues like this that have very unhelpful error messages?

@DanielEScherzer DanielEScherzer changed the title Unable to compile latest version CRLF causes confusing bugs in compilation Feb 18, 2025
@cmb69
Copy link
Member

cmb69 commented Feb 18, 2025

Windows being stupid 🤦 - switch from CRLF to LF and that part works:

I wouldn't claim that Windows is stupid in this regard. If you've ever used a typewriter, you know that LF without CR rarely works as intended. :)

Anyway, I have:

>git config --global core.autocrlf
false

Never had any issues with that (usually working on Windows directly).

@nielsdos
Copy link
Member

Can I suggest that we add .gitattributes to help windows developers not get hit with issues like this that have very unhelpful error messages?

Sounds good to me, I suppose it's the eol=lf thing you're thinking of?

@cmb69
Copy link
Member

cmb69 commented Feb 18, 2025

I'd rather suggest * -text if we do anything in .gitattributes. Some Windows files might still need CRLF, and I wouldn't want to mess around with an endless list of file extension specific line endings.

DanielEScherzer added a commit to DanielEScherzer/php-src that referenced this issue Mar 20, 2025
nielsdos added a commit that referenced this issue Mar 21, 2025
* PHP-8.3:
  Fix GH-17836: zend_vm_gen.php shouldn't break on Windows line endings
nielsdos added a commit that referenced this issue Mar 21, 2025
* PHP-8.4:
  Fix GH-17836: zend_vm_gen.php shouldn't break on Windows line endings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants