diff --git a/config/ext.json b/config/ext.json index 852d1da3..d8394913 100644 --- a/config/ext.json +++ b/config/ext.json @@ -846,6 +846,11 @@ "zstd", "unixodbc" ], + "lib-suggests-linux": [ + "zstd", + "unixodbc", + "liburing" + ], "ext-depends": [ "openssl", "curl" diff --git a/config/lib.json b/config/lib.json index 1c366743..079ebc1e 100644 --- a/config/lib.json +++ b/config/lib.json @@ -925,5 +925,20 @@ "zstd.h", "zstd_errors.h" ] + }, + "liburing": { + "source": "liburing", + "pkg-configs": [ + "liburing", + "liburing-ffi" + ], + "static-libs-linux": [ + "liburing.a", + "liburing-ffi.a" + ], + "headers-linux": [ + "liburing/", + "liburing.h" + ] } } diff --git a/config/source.json b/config/source.json index 79e4b153..4a0e0fdb 100644 --- a/config/source.json +++ b/config/source.json @@ -1136,5 +1136,14 @@ "type": "file", "path": "LICENSE" } + }, + "liburing": { + "type": "ghtar", + "repo": "axboe/liburing", + "prefer-stable": true, + "license": { + "type": "file", + "path": "COPYING" + } } } diff --git a/src/SPC/builder/extension/swoole.php b/src/SPC/builder/extension/swoole.php index 487158e5..57158dbe 100644 --- a/src/SPC/builder/extension/swoole.php +++ b/src/SPC/builder/extension/swoole.php @@ -61,7 +61,7 @@ class swoole extends Extension } $arg .= $this->builder->getLib('nghttp2') ? (' --with-nghttp2-dir=' . BUILD_ROOT_PATH) : ''; $arg .= $this->builder->getLib('zstd') ? ' --enable-zstd' : ''; - $arg .= $this->builder->getLib('iouring') ? ' --enable-iouring' : ''; + $arg .= $this->builder->getLib('liburing') ? ' --enable-iouring' : ''; $arg .= $this->builder->getExt('sockets') ? ' --enable-sockets' : ''; // additional feature: swoole-pgsql, it should depend on lib [postgresql], but it will lack of CFLAGS etc. diff --git a/src/SPC/builder/linux/library/liburing.php b/src/SPC/builder/linux/library/liburing.php new file mode 100644 index 00000000..62e32f88 --- /dev/null +++ b/src/SPC/builder/linux/library/liburing.php @@ -0,0 +1,32 @@ +removeConfigureArgs( + '--disable-shared', + '--enable-static', + '--with-pic', + '--enable-pic', + ) + ->addConfigureArgs( + '--use-libc' + ) + ->configure() + ->make(with_clean: false) + ->exec("rm -rf {$this->getLibDir()}/*.so*"); + + $this->patchPkgconfPrefix(['liburing.pc', 'liburing-ffi.pc']); + } +}