Skip to content

Commit 6ed6206

Browse files
committed
Add ext-redis
1 parent 935fbbd commit 6ed6206

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

config/pkg/ext/ext-redis.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
ext-redis:
2+
type: php-extension
3+
artifact:
4+
source:
5+
type: pecl
6+
name: redis
7+
metadata:
8+
license-files: [LICENSE]
9+
license: PHP-3.01
10+
suggests:
11+
- ext-session
12+
- ext-igbinary
13+
- ext-msgpack
14+
suggests@unix:
15+
- ext-session
16+
- ext-igbinary
17+
- ext-msgpack
18+
- zstd
19+
- liblz4
20+
php-extension:
21+
arg-type: custom

src/Package/Extension/redis.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Package\Extension;
6+
7+
use StaticPHP\Attribute\Package\CustomPhpConfigureArg;
8+
use StaticPHP\Attribute\Package\Extension;
9+
use StaticPHP\Package\PackageBuilder;
10+
use StaticPHP\Package\PackageInstaller;
11+
use StaticPHP\Package\PhpExtensionPackage;
12+
13+
#[Extension('redis')]
14+
class redis extends PhpExtensionPackage
15+
{
16+
#[CustomPhpConfigureArg('Darwin')]
17+
#[CustomPhpConfigureArg('Linux')]
18+
public function getUnixConfigureArg(bool $shared, PackageInstaller $installer, PackageBuilder $builder): string
19+
{
20+
$arg = '--enable-redis';
21+
if ($this->isBuildStatic()) {
22+
$arg .= $installer->getPhpExtensionPackage('session')?->isBuildStatic() ? ' --enable-redis-session' : ' --disable-redis-session';
23+
$arg .= $installer->getPhpExtensionPackage('igbinary')?->isBuildStatic() ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
24+
$arg .= $installer->getPhpExtensionPackage('msgpack')?->isBuildStatic() ? ' --enable-redis-msgpack' : ' --disable-redis-msgpack';
25+
} else {
26+
$arg .= $installer->getPhpExtensionPackage('session') ? ' --enable-redis-session' : ' --disable-redis-session';
27+
$arg .= $installer->getPhpExtensionPackage('igbinary') ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
28+
$arg .= $installer->getPhpExtensionPackage('msgpack') ? ' --enable-redis-msgpack' : ' --disable-redis-msgpack';
29+
}
30+
if ($zstd = $installer->getLibraryPackage('zstd')) {
31+
$arg .= ' --enable-redis-zstd --with-libzstd="' . $zstd->getBuildRootPath() . '"';
32+
}
33+
if ($liblz4 = $installer->getLibraryPackage('liblz4')) {
34+
$arg .= ' --enable-redis-lz4 --with-liblz4="' . $liblz4->getBuildRootPath() . '"';
35+
}
36+
return $arg;
37+
}
38+
39+
#[CustomPhpConfigureArg('Windows')]
40+
public function getWindowsConfigureArg(bool $shared, PackageInstaller $installer): string
41+
{
42+
$arg = '--enable-redis';
43+
$arg .= $installer->getPhpExtensionPackage('session') ? ' --enable-redis-session' : ' --disable-redis-session';
44+
$arg .= $installer->getPhpExtensionPackage('igbinary') ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
45+
return $arg;
46+
}
47+
}

0 commit comments

Comments
 (0)