Add ext-redis

This commit is contained in:
crazywhalecc 2026-03-13 16:53:28 +08:00
parent 935fbbd31a
commit 6ed620683f
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680
2 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,21 @@
ext-redis:
type: php-extension
artifact:
source:
type: pecl
name: redis
metadata:
license-files: [LICENSE]
license: PHP-3.01
suggests:
- ext-session
- ext-igbinary
- ext-msgpack
suggests@unix:
- ext-session
- ext-igbinary
- ext-msgpack
- zstd
- liblz4
php-extension:
arg-type: custom

View File

@ -0,0 +1,47 @@
<?php
declare(strict_types=1);
namespace Package\Extension;
use StaticPHP\Attribute\Package\CustomPhpConfigureArg;
use StaticPHP\Attribute\Package\Extension;
use StaticPHP\Package\PackageBuilder;
use StaticPHP\Package\PackageInstaller;
use StaticPHP\Package\PhpExtensionPackage;
#[Extension('redis')]
class redis extends PhpExtensionPackage
{
#[CustomPhpConfigureArg('Darwin')]
#[CustomPhpConfigureArg('Linux')]
public function getUnixConfigureArg(bool $shared, PackageInstaller $installer, PackageBuilder $builder): string
{
$arg = '--enable-redis';
if ($this->isBuildStatic()) {
$arg .= $installer->getPhpExtensionPackage('session')?->isBuildStatic() ? ' --enable-redis-session' : ' --disable-redis-session';
$arg .= $installer->getPhpExtensionPackage('igbinary')?->isBuildStatic() ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
$arg .= $installer->getPhpExtensionPackage('msgpack')?->isBuildStatic() ? ' --enable-redis-msgpack' : ' --disable-redis-msgpack';
} else {
$arg .= $installer->getPhpExtensionPackage('session') ? ' --enable-redis-session' : ' --disable-redis-session';
$arg .= $installer->getPhpExtensionPackage('igbinary') ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
$arg .= $installer->getPhpExtensionPackage('msgpack') ? ' --enable-redis-msgpack' : ' --disable-redis-msgpack';
}
if ($zstd = $installer->getLibraryPackage('zstd')) {
$arg .= ' --enable-redis-zstd --with-libzstd="' . $zstd->getBuildRootPath() . '"';
}
if ($liblz4 = $installer->getLibraryPackage('liblz4')) {
$arg .= ' --enable-redis-lz4 --with-liblz4="' . $liblz4->getBuildRootPath() . '"';
}
return $arg;
}
#[CustomPhpConfigureArg('Windows')]
public function getWindowsConfigureArg(bool $shared, PackageInstaller $installer): string
{
$arg = '--enable-redis';
$arg .= $installer->getPhpExtensionPackage('session') ? ' --enable-redis-session' : ' --disable-redis-session';
$arg .= $installer->getPhpExtensionPackage('igbinary') ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
return $arg;
}
}