Skip to content

Commit

Permalink
Add flag to compile Swoole 6.x without io_uring support (#1044)
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelGooden authored Jan 9, 2025
1 parent b579578 commit 3529772
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 15 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,7 @@ Here's the list of all the supported environment variables:
| newrelic | `IPE_NEWRELIC_DAEMON=1` | Install the NewRelic daemon |
| newrelic | `IPE_NEWRELIC_KEEPLOG=1` | Keep the log files of NewRelic setup (`/tmp/nrinstall-….tar`) |
| newrelic | `NR_INSTALL_KEY` | Your New Relic license key |
| swoole | `IPE_SWOOLE_WITHOUT_IOURING=1` | The io_uring kernel functionality is considered unsafe by security experts (see [here](https://security.googleblog.com/2023/06/learnings-from-kctf-vrps-42-linux.html) and [here](https://i.blackhat.com/BH-US-23/Presentations/US-23-Lin-bad_io_uring.pdf)). By default Swoole 6 and later is configured with io_uring support, use this environment variable to skip configuring io_uring |

## Special requirements

Expand Down
45 changes: 30 additions & 15 deletions install-php-extensions
Original file line number Diff line number Diff line change
Expand Up @@ -1435,12 +1435,17 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile sqlite-dev zstd-dev"
fi
fi
# iouring support in swoole 6 requires liburing 2.5+: available since Alpine 3.19
# but with Alpine 3.19 we have a "invalid use of incomplete type 'const struct statx'" error
if test $DISTRO_MAJMIN_VERSION -ge 320; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liburing"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liburing-dev"
fi
case "${IPE_SWOOLE_WITHOUT_IOURING:-}" in
1 | y* | Y*) ;;
*)
# iouring support in swoole 6 requires liburing 2.5+: available since Alpine 3.19
# but with Alpine 3.19 we have a "invalid use of incomplete type 'const struct statx'" error
if test $DISTRO_MAJMIN_VERSION -ge 320; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liburing"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liburing-dev"
fi
;;
esac
;;
swoole@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls libpq5"
Expand Down Expand Up @@ -4099,21 +4104,31 @@ installRemoteModule() {
# we need sqlite3 >= 3.7.7
installRemoteModule_sqlite=no
fi
# iouring support in swoole 6 requires liburing 2.5+: available since Alpine 3.19
# but with Alpine 3.19 we have a "invalid use of incomplete type 'const struct statx'" error
if test $DISTRO_MAJMIN_VERSION -ge 320; then
installRemoteModule_iouring=yes
fi
case "${IPE_SWOOLE_WITHOUT_IOURING:-}" in
1 | y* | Y*) ;;
*)
# iouring support in swoole 6 requires liburing 2.5+: available since Alpine 3.19
# but with Alpine 3.19 we have a "invalid use of incomplete type 'const struct statx'" error
if test $DISTRO_MAJMIN_VERSION -ge 320; then
installRemoteModule_iouring=yes
fi
;;
esac
;;
debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
# we need sqlite3 >= 3.7.7
installRemoteModule_sqlite=no
fi
if test $DISTRO_VERSION_NUMBER -ge 13; then
# iouring support in swoole 6 requires liburing 2.5+: available since Debian Trixie (13)
installRemoteModule_iouring=yes
fi
case "${IPE_SWOOLE_WITHOUT_IOURING:-}" in
1 | y* | Y*) ;;
*)
if test $DISTRO_VERSION_NUMBER -ge 13; then
# iouring support in swoole 6 requires liburing 2.5+: available since Debian Trixie (13)
installRemoteModule_iouring=yes
fi
;;
esac
;;
esac
installRemoteModule_zstd=yes
Expand Down

0 comments on commit 3529772

Please sign in to comment.