Ignore passed internal extensions (#473)

* Ignore passed internal extensions

* Add tests

* Add tests
This commit is contained in:
Jerry Ma 2024-06-05 23:20:21 +08:00 committed by GitHub
parent b3018af61c
commit db9645641f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 24 additions and 4 deletions

View File

@ -144,4 +144,24 @@ abstract class BaseCommand extends Command
logger()->error($fail_msg);
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
$libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs'))));
// transform string to array
$extensions = array_map('trim', array_filter(explode(',', $this->getArgument('extensions'))));
$extensions = $this->parseExtensionList($this->getArgument('extensions'));
// parse rule with options
$rule = $this->parseRules();

View File

@ -68,7 +68,7 @@ class DownloadCommand extends BaseCommand
}
// mode: --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'));
if (PHP_OS_FAMILY !== 'Windows') {
array_unshift($sources, 'pkg-config');

View File

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

View File

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