Make PhpExtensionPackage::getSharedExtensionLoadString public

This commit is contained in:
crazywhalecc 2026-03-18 12:06:48 +08:00
parent 98a618f1cd
commit b1a59dad79
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680

View File

@ -327,6 +327,34 @@ class PhpExtensionPackage extends Package
}
}
/**
* Builds the `-d extension_dir=... -d extension=...` string for all resolved shared extensions.
* Used in CLI smoke test to load shared extension dependencies at runtime.
*/
public function getSharedExtensionLoadString(): string
{
$sharedExts = array_filter(
$this->getInstaller()->getResolvedPackages(PhpExtensionPackage::class),
fn (PhpExtensionPackage $ext) => $ext->isBuildShared() && !$ext->isBuildWithPhp()
);
if (empty($sharedExts)) {
return '';
}
$ret = ' -d "extension_dir=' . BUILD_MODULES_PATH . '"';
foreach ($sharedExts as $ext) {
$extConfig = PackageConfig::get($ext->getName(), 'php-extension', []);
if ($extConfig['zend-extension'] ?? false) {
$ret .= ' -d "zend_extension=' . $ext->getExtensionName() . '"';
} else {
$ret .= ' -d "extension=' . $ext->getExtensionName() . '"';
}
}
return $ret;
}
/**
* Splits a given string of library flags into static and shared libraries.
*
@ -354,34 +382,6 @@ class PhpExtensionPackage extends Package
return [trim($staticLibString), trim($sharedLibString)];
}
/**
* Builds the `-d extension_dir=... -d extension=...` string for all resolved shared extensions.
* Used in CLI smoke test to load shared extension dependencies at runtime.
*/
private function getSharedExtensionLoadString(): string
{
$sharedExts = array_filter(
$this->getInstaller()->getResolvedPackages(PhpExtensionPackage::class),
fn (PhpExtensionPackage $ext) => $ext->isBuildShared() && !$ext->isBuildWithPhp()
);
if (empty($sharedExts)) {
return '';
}
$ret = ' -d "extension_dir=' . BUILD_MODULES_PATH . '"';
foreach ($sharedExts as $ext) {
$extConfig = PackageConfig::get($ext->getName(), 'php-extension', []);
if ($extConfig['zend-extension'] ?? false) {
$ret .= ' -d "zend_extension=' . $ext->getExtensionName() . '"';
} else {
$ret .= ' -d "extension=' . $ext->getExtensionName() . '"';
}
}
return $ret;
}
/**
* Escape PHP test file content for inline `-r` usage.
* Strips <?php / declare, replaces newlines and special shell characters.