Compare commits

...

4 Commits
2.2.2 ... 2.2.3

Author SHA1 Message Date
Jerry Ma
d80406b8e0 Remove mongodb notes (#474)
* Ignore passed internal extensions

* Add tests

* Add tests

* Remove mongodb notes

* Remove mongodb notes
2024-06-06 01:17:23 +08:00
Jerry Ma
db9645641f Ignore passed internal extensions (#473)
* Ignore passed internal extensions

* Add tests

* Add tests
2024-06-05 23:20:21 +08:00
crazywhalecc
b3018af61c Fix mongodb support on macOS 2024-06-05 13:12:25 +08:00
Jerry Ma
7e6c2b4432 Fix xlswriter with openssl conflict bug (#472)
* Fix xlswriter with openssl conflict bug

* bump version to 2.2.3
2024-06-04 19:31:13 +08:00
9 changed files with 34 additions and 18 deletions

View File

@@ -347,11 +347,9 @@
}, },
"mongodb": { "mongodb": {
"support": { "support": {
"Darwin": "no",
"BSD": "wip", "BSD": "wip",
"Windows": "wip" "Windows": "wip"
}, },
"notes": true,
"type": "external", "type": "external",
"source": "mongodb", "source": "mongodb",
"arg-type": "custom", "arg-type": "custom",
@@ -853,6 +851,9 @@
"ext-depends": [ "ext-depends": [
"zlib", "zlib",
"zip" "zip"
],
"lib-suggests": [
"openssl"
] ]
}, },
"xml": { "xml": {

View File

@@ -25,7 +25,7 @@ use Symfony\Component\Console\Application;
*/ */
final class ConsoleApplication extends Application final class ConsoleApplication extends Application
{ {
public const VERSION = '2.2.2'; public const VERSION = '2.2.3';
public function __construct() public function __construct()
{ {

View File

@@ -5,20 +5,11 @@ declare(strict_types=1);
namespace SPC\builder\extension; namespace SPC\builder\extension;
use SPC\builder\Extension; use SPC\builder\Extension;
use SPC\store\FileSystem;
use SPC\util\CustomExt; use SPC\util\CustomExt;
#[CustomExt('mongodb')] #[CustomExt('mongodb')]
class mongodb extends Extension class mongodb extends Extension
{ {
public function patchBeforeBuildconf(): bool
{
FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/ext/mongodb/config.m4', 'if test -z "$PHP_CONFIG"; then', 'if false; then');
FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/ext/mongodb/config.m4', 'PHP_MONGODB_PHP_VERSION=`${PHP_CONFIG} --version`', 'PHP_MONGODB_PHP_VERSION=' . $this->builder->getPHPVersion());
FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/ext/mongodb/config.m4', 'PHP_MONGODB_PHP_VERSION_ID=`${PHP_CONFIG} --vernum`', 'PHP_MONGODB_PHP_VERSION_ID=' . $this->builder->getPHPVersionID());
return true;
}
public function getUnixConfigureArg(): string public function getUnixConfigureArg(): string
{ {
$arg = ' --enable-mongodb '; $arg = ' --enable-mongodb ';

View File

@@ -12,6 +12,10 @@ class xlswriter extends Extension
{ {
public function getUnixConfigureArg(): string public function getUnixConfigureArg(): string
{ {
return '--with-xlswriter --enable-reader'; $arg = '--with-xlswriter --enable-reader';
if ($this->builder->getLib('openssl')) {
$arg .= ' --with-openssl=' . BUILD_ROOT_PATH;
}
return $arg;
} }
} }

View File

@@ -144,4 +144,24 @@ abstract class BaseCommand extends Command
logger()->error($fail_msg); logger()->error($fail_msg);
return static::FAILURE; return static::FAILURE;
} }
protected function parseExtensionList(string $ext_list): array
{
$a = array_map('trim', explode(',', $ext_list));
return array_values(array_filter($a, function ($x) {
$filter_internals = [
'core',
'hash',
'json',
'reflection',
'spl',
'standard',
];
if (in_array(strtolower($x), $filter_internals)) {
logger()->warning("Extension [{$x}] is an builtin extension, it will be ignored.");
return false;
}
return true;
}));
}
} }

View File

@@ -47,7 +47,7 @@ class BuildCliCommand extends BuildCommand
// transform string to array // transform string to array
$libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs')))); $libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs'))));
// transform string to array // transform string to array
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions')))); $extensions = $this->parseExtensionList($this->getArgument('extensions'));
// parse rule with options // parse rule with options
$rule = $this->parseRules(); $rule = $this->parseRules();

View File

@@ -68,7 +68,7 @@ class DownloadCommand extends BaseCommand
} }
// mode: --for-extensions // mode: --for-extensions
if ($for_ext = $input->getOption('for-extensions')) { if ($for_ext = $input->getOption('for-extensions')) {
$ext = array_map('trim', array_filter(explode(',', $for_ext))); $ext = $this->parseExtensionList($for_ext);
$sources = $this->calculateSourcesByExt($ext, !$input->getOption('without-suggestions')); $sources = $this->calculateSourcesByExt($ext, !$input->getOption('without-suggestions'));
if (PHP_OS_FAMILY !== 'Windows') { if (PHP_OS_FAMILY !== 'Windows') {
array_unshift($sources, 'pkg-config'); array_unshift($sources, 'pkg-config');

View File

@@ -37,7 +37,7 @@ class DumpLicenseCommand extends BaseCommand
$dumper = new LicenseDumper(); $dumper = new LicenseDumper();
if ($this->getOption('for-extensions') !== null) { if ($this->getOption('for-extensions') !== null) {
// 从参数中获取要编译的 extensions并转换为数组 // 从参数中获取要编译的 extensions并转换为数组
$extensions = array_map('trim', array_filter(explode(',', $this->getOption('for-extensions')))); $extensions = $this->parseExtensionList($this->getOption('for-extensions'));
// 根据提供的扩展列表获取依赖库列表并编译 // 根据提供的扩展列表获取依赖库列表并编译
[$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions); [$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions);
$dumper->addExts($extensions); $dumper->addExts($extensions);

View File

@@ -19,8 +19,8 @@ $upx = true;
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`). // If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
$extensions = match (PHP_OS_FAMILY) { $extensions = match (PHP_OS_FAMILY) {
'Linux', 'Darwin' => 'libxml,swoole', 'Linux', 'Darwin' => 'libxml,xlswriter,openssl,core,hash,json,standard,SPL,HASH,REFLECTION',
'Windows' => 'mbstring,pdo_sqlite,mbregex,libxml', 'Windows' => 'mbstring,pdo_sqlite,mbregex',
}; };
// If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`). // If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`).