From 089b94d7535398f6a70ad8ff6c1010fe7265f92c Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Thu, 12 Jun 2025 10:46:26 +0700 Subject: [PATCH] add fastlz, libmemcached for linux --- config/ext.json | 30 +++++++++++-------- config/lib.json | 13 +++++++- config/source.json | 17 ++++++++--- src/SPC/builder/extension/memcached.php | 9 ++++-- src/SPC/builder/extension/yac.php | 2 +- src/SPC/builder/linux/library/fastlz.php | 12 ++++++++ .../builder/linux/library/libmemcached.php | 9 ++---- src/SPC/builder/macos/library/fastlz.php | 12 ++++++++ .../builder/macos/library/libmemcached.php | 7 ++--- src/SPC/builder/unix/library/fastlz.php | 22 ++++++++++++++ 10 files changed, 101 insertions(+), 32 deletions(-) create mode 100644 src/SPC/builder/linux/library/fastlz.php create mode 100644 src/SPC/builder/macos/library/fastlz.php create mode 100644 src/SPC/builder/unix/library/fastlz.php diff --git a/config/ext.json b/config/ext.json index 9f9d5c5f..f8630697 100644 --- a/config/ext.json +++ b/config/ext.json @@ -330,6 +330,16 @@ "openssl" ] }, + "libxml": { + "support": { + "BSD": "wip" + }, + "type": "builtin", + "arg-type": "none", + "target": [ + "static" + ] + }, "lz4": { "support": { "Windows": "wip", @@ -342,16 +352,6 @@ "liblz4" ] }, - "libxml": { - "support": { - "BSD": "wip" - }, - "type": "builtin", - "arg-type": "none", - "target": [ - "static" - ] - }, "mbregex": { "type": "builtin", "arg-type": "custom", @@ -396,8 +396,7 @@ "memcached": { "support": { "Windows": "wip", - "BSD": "wip", - "Linux": "no" + "BSD": "wip" }, "type": "external", "source": "memcached", @@ -406,6 +405,10 @@ "lib-depends": [ "libmemcached" ], + "lib-depends-unix": [ + "libmemcached", + "fastlz" + ], "ext-depends": [ "session", "zlib" @@ -1083,6 +1086,9 @@ "type": "external", "source": "yac", "arg-type-unix": "custom", + "lib-depends-unix": [ + "fastlz" + ], "ext-depends-unix": [ "igbinary" ] diff --git a/config/lib.json b/config/lib.json index 36d93a6e..160d43f2 100644 --- a/config/lib.json +++ b/config/lib.json @@ -101,6 +101,15 @@ "SystemConfiguration" ] }, + "fastlz": { + "source": "fastlz", + "static-libs-unix": [ + "libfastlz.a" + ], + "headers": [ + "fastlz/fastlz.h" + ] + }, "freetype": { "source": "freetype", "static-libs-unix": [ @@ -389,7 +398,9 @@ "source": "libmemcached", "static-libs-unix": [ "libmemcached.a", - "libmemcachedutil.a" + "libmemcachedprotocol.a", + "libmemcachedutil.a", + "libhashkit.a" ] }, "libpng": { diff --git a/config/source.json b/config/source.json index 98d37eb4..2ad8ec87 100644 --- a/config/source.json +++ b/config/source.json @@ -272,6 +272,15 @@ "path": "LICENSE" } }, + "fastlz": { + "type": "git", + "url": "https://github.com/ariya/FastLZ.git", + "rev": "master", + "license": { + "type": "file", + "path": "LICENSE.MIT" + } + }, "freetype": { "type": "git", "rev": "VER-2-13-2", @@ -528,12 +537,12 @@ } }, "libmemcached": { - "type": "git", - "url": "https://github.com/static-php/libmemcached-macos.git", - "rev": "master", + "type": "ghtagtar", + "repo": "awesomized/libmemcached", + "match": "1.\\d.\\d", "license": { "type": "file", - "path": "COPYING" + "path": "LICENSE" } }, "libpng": { diff --git a/src/SPC/builder/extension/memcached.php b/src/SPC/builder/extension/memcached.php index 8ea8b81e..a1b88ac6 100644 --- a/src/SPC/builder/extension/memcached.php +++ b/src/SPC/builder/extension/memcached.php @@ -12,8 +12,11 @@ class memcached extends Extension { public function getUnixConfigureArg(bool $shared = false): string { - $rootdir = BUILD_ROOT_PATH; - $zlib_dir = $this->builder->getPHPVersionID() >= 80400 ? '' : "--with-zlib-dir={$rootdir}"; - return '--enable-memcached' . ($shared ? '=shared' : '') . " {$zlib_dir} --with-libmemcached-dir={$rootdir} --disable-memcached-sasl --enable-memcached-json"; + return '--enable-memcached' . ($shared ? '=shared' : '') . ' ' . + '--with-zlib-dir=' . BUILD_ROOT_PATH . ' ' . + '--with-libmemcached-dir=' . BUILD_ROOT_PATH . ' ' . + '--disable-memcached-sasl ' . + '--enable-memcached-json ' . + '--with-system-fastlz'; } } diff --git a/src/SPC/builder/extension/yac.php b/src/SPC/builder/extension/yac.php index bb085133..07589b2e 100644 --- a/src/SPC/builder/extension/yac.php +++ b/src/SPC/builder/extension/yac.php @@ -21,6 +21,6 @@ class yac extends Extension public function getUnixConfigureArg(bool $shared = false): string { - return '--enable-yac --enable-igbinary --enable-json'; + return '--enable-yac ' . ($shared ? '=shared' : '') . ' --enable-igbinary --enable-json --with-system-fastlz'; } } diff --git a/src/SPC/builder/linux/library/fastlz.php b/src/SPC/builder/linux/library/fastlz.php new file mode 100644 index 00000000..07bee9bb --- /dev/null +++ b/src/SPC/builder/linux/library/fastlz.php @@ -0,0 +1,12 @@ +build(); } } diff --git a/src/SPC/builder/macos/library/fastlz.php b/src/SPC/builder/macos/library/fastlz.php new file mode 100644 index 00000000..db0f517a --- /dev/null +++ b/src/SPC/builder/macos/library/fastlz.php @@ -0,0 +1,12 @@ +configure('--disable-sasl')->exec("sed -ie 's/-Werror//g' ./Makefile")->make(); + UnixCMakeExecutor::create($this)->build(); } } diff --git a/src/SPC/builder/unix/library/fastlz.php b/src/SPC/builder/unix/library/fastlz.php new file mode 100644 index 00000000..5989893c --- /dev/null +++ b/src/SPC/builder/unix/library/fastlz.php @@ -0,0 +1,22 @@ +cd($this->source_dir)->initializeEnv($this) + ->exec((getenv('CC') ?? 'cc') . ' -c -O3 -fPIC fastlz.c -o fastlz.o') + ->exec((getenv('AR') ?? 'ar') . ' rcs libfastlz.a fastlz.o'); + + if (!copy($this->source_dir . '/fastlz.h', BUILD_INCLUDE_PATH . '/fastlz.h')) { + throw new \RuntimeException('Failed to copy fastlz.h'); + } + if (!copy($this->source_dir . '/libfastlz.a', BUILD_LIB_PATH . '/libfastlz.a')) { + throw new \RuntimeException('Failed to copy libfastlz.a'); + } + } +}