8.1.32: Add sendmail and switch build to wasixcc#13
8.1.32: Add sendmail and switch build to wasixcc#13zebreus wants to merge 10 commits into8.1.32-wasixfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This pull request migrates PHP 8.1.32 to use the wasixcc toolchain and adds sendmail support through an external package dependency, matching the changes previously implemented in PR #11. The PR simplifies the build process by removing custom Rust-based sendmail implementation and adopting standard WASI tooling.
Changes:
- Switched build toolchain from clang/LLVM to wasixcc for WASIX compilation
- Replaced custom wasix_sendmail Rust implementation with external sendmail package dependency
- Removed sendmail_username and sendmail_password INI configuration options
- Updated Wasmer configuration to use --volume syntax instead of deprecated --mapdir
- Consolidated GitHub Actions workflow from separate 32-bit and 64-bit jobs into a single matrix-based job
- Removed SMTP-related secrets and environment variables from CI workflows
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| wasmer-64.toml | Added bash and sendmail dependencies |
| wasmer-32.toml | Added bash and sendmail dependencies |
| wasix-test-server.sh | Updated to use --volume instead of --mapdir |
| wasix-execute.sh | Removed obsolete script |
| wasix-execute-eh.sh | Updated to use --volume and removed SMTP configuration |
| wasix-configure.sh | Removed obsolete script |
| wasix-configure-eh.sh | Switched to wasixcc toolchain, added PROG_SENDMAIL, simplified compiler flags |
| wasix-build.sh | Removed obsolete script |
| main/main.c | Removed sendmail_username and sendmail_password INI entries |
| ext/standard/mail.c | Removed custom WASI sendmail implementation |
| ext/standard/config.m4 | Removed WASIX_SENDMAIL_LIBS configuration |
| build/php.m4 | Changed from libstdc++ to libc++ (c++) |
| .github/workflows/wasix-pr.yaml | Consolidated jobs with matrix strategy, removed secrets, switched to wasixcc |
| .github/workflows/release.yaml | Removed secrets passing |
| .github/workflows/release-dev.yaml | Removed secrets passing |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| SENDMAIL_DEFAULT_USERNAME: ${{ secrets.SENDMAIL_DEFAULT_USERNAME }} | ||
| SENDMAIL_DEFAULT_PASSWORD: ${{ secrets.SENDMAIL_DEFAULT_PASSWORD }} | ||
| run: | | ||
| export SYSROOT=$(pwd)/sysroot/wasix-sysroot-eh/sysroot |
There was a problem hiding this comment.
The SYSROOT environment variable is being exported but appears to be unused. The wasixcc toolchain (installed via the wasix-org/wasixcc action) manages its own sysroot internally, and the wasix-configure-eh.sh script no longer references this variable. Consider removing this line to avoid confusion.
| export SYSROOT=$(pwd)/sysroot/wasix-sysroot-eh/sysroot |
wasix-configure-eh.sh
Outdated
| --with-pgsql=$PHP_WASIX_DEPS/pgsql-eh --with-pdo-pgsql=$PHP_WASIX_DEPS/pgsql-eh --enable-intl \ | ||
| --with-pdo-sqlite --enable-ftp --enable-igbinary --with-imagick \ | ||
| --with-pgsql="$PHP_WASIX_DEPS"/pgsql-eh --with-pdo-pgsql="$PHP_WASIX_DEPS"/pgsql-eh --enable-intl \ | ||
| --with-pdo-sqlite --enable-ftp --enable-igbinary --with-imagick --with-iconv="$PHP_WASIX_DEPS"/iconv-eh \ |
There was a problem hiding this comment.
There's a double space after --with-imagick on this line. While this typically doesn't cause issues with shell argument parsing, it's inconsistent with the formatting of other configure options. Consider removing the extra space for consistency.
| --with-pdo-sqlite --enable-ftp --enable-igbinary --with-imagick --with-iconv="$PHP_WASIX_DEPS"/iconv-eh \ | |
| --with-pdo-sqlite --enable-ftp --enable-igbinary --with-imagick --with-iconv="$PHP_WASIX_DEPS"/iconv-eh \ |
|
|
||
| [dependencies] | ||
| "wasmer/bash" = "=1.0.25" | ||
| "sendmail/sendmail" = "0.1.5" |
There was a problem hiding this comment.
The bash dependency uses an exact version match ("=1.0.25") while the sendmail dependency uses a caret version range ("0.1.5", implicitly "^0.1.5"). This inconsistency could lead to different update behaviors. Consider using consistent version constraints across dependencies - either both exact matches or both ranges - unless there's a specific reason for the difference.
| "sendmail/sendmail" = "0.1.5" | |
| "sendmail/sendmail" = "=0.1.5" |
|
|
||
| [dependencies] | ||
| "wasmer/bash" = "=1.0.25" | ||
| "sendmail/sendmail" = "0.1.5" |
There was a problem hiding this comment.
The bash dependency uses an exact version match ("=1.0.25") while the sendmail dependency uses a caret version range ("0.1.5", implicitly "^0.1.5"). This inconsistency could lead to different update behaviors. Consider using consistent version constraints across dependencies - either both exact matches or both ranges - unless there's a specific reason for the difference.
| "sendmail/sendmail" = "0.1.5" | |
| "sendmail/sendmail" = "=0.1.5" |
be6bdd7 to
b692c64
Compare
b692c64 to
793f508
Compare
The same as #11 and #16 but for php but for php 8.1.32