[PHP] fix: split host browser and SharedFS runtime fixes#757
Open
brandonpayton wants to merge 23 commits into
Open
Conversation
(cherry picked from commit d746770)
(cherry picked from commit 1e88b92)
(cherry picked from commit 6f9ccbc)
(cherry picked from commit 4956be4)
(cherry picked from commit 3851178)
(cherry picked from commit 62afa32)
(cherry picked from commit 38a0e78)
(cherry picked from commit 9a2a645)
(cherry picked from commit b112bdc)
Implement POSIX O_CREAT|O_EXCL handling in the shared browser filesystem so open fails with EEXIST when the final pathname already exists, including final symlinks. This prevents standard temp-file creation routines from reusing an existing file under collision. Also keep generated PHPT artifacts out of the browser test VFS image so chunked test resumes start from source fixtures rather than stale outputs. (cherry picked from commit 2468fd1)
(cherry picked from commit 20fae8b)
(cherry picked from commit 286c8ef)
(cherry picked from commit 63a9353)
(cherry picked from commit 3c68749)
(cherry picked from commit 0449eb9)
(cherry picked from commit f0a021a)
(cherry picked from commit f92b00d)
(cherry picked from commit 374ff84)
(cherry picked from commit c3705c4)
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| libcurl | wasm32 | built | 05131d85 |
| libcxx | wasm32 | built | 8da1dda5 |
| libcxx | wasm64 | built | 3f9d7318 |
| libiconv | wasm32 | built | 98ae39cc |
| libiconv | wasm64 | built | 364f191d |
| libpng | wasm32 | built | 57911579 |
| libxml2 | wasm32 | built | c9190593 |
| libxml2 | wasm64 | built | 29606a80 |
| openssl | wasm32 | built | b830c422 |
| openssl | wasm64 | built | 0ad8e76e |
| sqlite | wasm32 | built | 22892317 |
| sqlite | wasm64 | built | a488b172 |
| zlib | wasm32 | built | 6258205e |
| zlib | wasm64 | built | 10905a61 |
| bc | wasm32 | built | f45b6fc6 |
| bzip2 | wasm32 | built | ccaed6f7 |
| coreutils | wasm32 | built | 9c2f9610 |
| curl | wasm32 | built | 2a9910ba |
| dash | wasm32 | built | dad4f1d0 |
| diffutils | wasm32 | built | 243e8f6c |
| dinit | wasm32 | built | 8692ce28 |
| fbdoom | wasm32 | built | 4de08e20 |
| file | wasm32 | built | 37c5ed26 |
| findutils | wasm32 | built | abaccfbd |
| gawk | wasm32 | built | 5870aeeb |
| git | wasm32 | built | 3a505148 |
| grep | wasm32 | built | 873a4b9d |
| gzip | wasm32 | built | bbf648b6 |
| kandelo-sdk | wasm32 | built | 6054195f |
| kernel | wasm32 | failed | — |
| less | wasm32 | built | cff77508 |
| lsof | wasm32 | built | b2808d0b |
| m4 | wasm32 | built | eeecbe81 |
| make | wasm32 | built | 73a97016 |
| mariadb | wasm32 | built | d51494dd |
| mariadb | wasm64 | built | 019f4e3b |
| modeset | wasm32 | built | 26449a18 |
| msmtpd | wasm32 | built | 8d5e57c3 |
| nano | wasm32 | built | e11bb2fe |
| ncurses | wasm32 | built | 077d7b78 |
| netcat | wasm32 | built | 81674bbc |
| nginx | wasm32 | built | a39e497d |
| php | wasm32 | built | 5a58aac5 |
| posix-utils-lite | wasm32 | built | b6e3e07f |
| sed | wasm32 | built | 2dbe649f |
| spidermonkey | wasm32 | built | 022c3dd5 |
| tar | wasm32 | built | 79facabd |
| tcl | wasm32 | built | 950a960f |
| unzip | wasm32 | built | 87cc1e61 |
| userspace | wasm32 | built | 3ca5b0d1 |
| vim | wasm32 | built | 0d676ada |
| wget | wasm32 | built | de9df728 |
| xz | wasm32 | built | 52fe1260 |
| zip | wasm32 | built | a4a53388 |
| zstd | wasm32 | built | 346b97c8 |
| bash | wasm32 | built | 9d94677c |
| mariadb-test | wasm32 | built | 00b542dd |
| mariadb-vfs | wasm32 | built | 83005b2b |
| mariadb-vfs | wasm64 | built | a79c1b0d |
| nethack | wasm32 | built | 799bbd26 |
| node | wasm32 | built | d57f5d71 |
| spidermonkey-node | wasm32 | built | fbcde318 |
| vim-browser-bundle | wasm32 | built | 22e962ba |
| nethack-browser-bundle | wasm32 | built | a1711c12 |
| rootfs | wasm32 | built | c314bfde |
| shell | wasm32 | built | 6ddcec14 |
| node-vfs | wasm32 | built | 685a8cbd |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes fork-headed PR #738. This replacement keeps the same head commit (62a5771) but moves the PR head onto an Automattic/kandelo branch.
Why this is needed
Browser PHPT execution stresses host-backed mounts, SharedFS metadata, directory mutation behavior, DNS and output ordering, socket peeking, browser child output, exclusive creates, and VM interrupt timers. These are the host and runtime pieces needed for PHP tests to behave the same in browser and Node paths.
Why this shape makes sense
The group is large because the failures all live at the host, browser, and SharedFS boundary and are hard to validate independently without the same PHPT browser workload. Keeping them in one stacked layer makes the review surface explicit while preserving individual commits.
Why this is the correct fix
The changes tighten shared filesystem and browser-host semantics instead of weakening PHPT expectations. They make timestamps, directory reads, rename and unlink behavior, host-backed paths, child output, and interrupt delivery match the runtime contracts PHP relies on.
Stack
Base: integration/kd-6nz-php-phpt-fork-process-shm-base, after the fork/process/shared-memory replacement layer.
Verification
Branch-location correction only. Replacement head SHA matches fork-headed PR #738 exactly.