Add flag to compile Swoole 6.x without io_uring support (#1044)

master 2.7.12
Michael Gooden 2025-01-09 19:46:15 +02:00 committed by GitHub
parent b579578985
commit 3529772073
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 15 deletions

View File

@ -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

View File

@ -1435,6 +1435,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile sqlite-dev zstd-dev"
fi
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
@ -1442,6 +1445,8 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liburing-dev"
fi
;;
esac
;;
swoole@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls libpq5"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libcurl4-gnutls-dev libpq-dev"
@ -4099,23 +4104,33 @@ installRemoteModule() {
# we need sqlite3 >= 3.7.7
installRemoteModule_sqlite=no
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
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
case "$DISTRO" in
debian)