mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-11 19:05:35 +08:00
v3 weekly build fix (#1203)
This commit is contained in:
@@ -50,8 +50,9 @@ class simdjson extends PhpExtensionPackage
|
||||
if (!str_contains((string) $extra, '-lstdc++')) {
|
||||
f_putenv('SPC_COMPILER_EXTRA=' . clean_spaces($extra . ' -lstdc++'));
|
||||
}
|
||||
$env['CFLAGS'] .= ' -Xclang -target-feature -Xclang +evex512';
|
||||
$env['CXXFLAGS'] .= ' -Xclang -target-feature -Xclang +evex512';
|
||||
|
||||
$env['CFLAGS'] .= ' -fno-sanitize=undefined -Xclang -target-feature -Xclang +evex512';
|
||||
$env['CXXFLAGS'] .= ' -fno-sanitize=undefined -Xclang -target-feature -Xclang +evex512';
|
||||
}
|
||||
return $env;
|
||||
}
|
||||
@@ -63,8 +64,8 @@ class simdjson extends PhpExtensionPackage
|
||||
return;
|
||||
}
|
||||
$extra_cflags = getenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS') ?: '';
|
||||
GlobalEnvManager::putenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS=' . trim($extra_cflags . ' -Xclang -target-feature -Xclang +evex512'));
|
||||
GlobalEnvManager::putenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS=' . trim($extra_cflags . ' -fno-sanitize=undefined -Xclang -target-feature -Xclang +evex512'));
|
||||
$extra_cxxflags = getenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CXXFLAGS') ?: '';
|
||||
GlobalEnvManager::putenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CXXFLAGS=' . trim($extra_cxxflags . ' -Xclang -target-feature -Xclang +evex512'));
|
||||
GlobalEnvManager::putenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CXXFLAGS=' . trim($extra_cxxflags . ' -fno-sanitize=undefined -Xclang -target-feature -Xclang +evex512'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ class swoole extends PhpExtensionPackage
|
||||
if ($installer->getPhpExtensionPackage('swoole-hook-odbc') && $installer->getPhpExtensionPackage('pdo_odbc')?->isBuildStatic()) {
|
||||
throw new WrongUsageException('swoole-hook-odbc provides pdo_odbc, if you enable odbc hook for swoole, you must remove pdo_odbc extension.');
|
||||
}
|
||||
|
||||
// swoole-hook-pgsql conflicts with pdo_pgsql
|
||||
if ($installer->getPhpExtensionPackage('swoole-hook-pgsql') && $installer->getPhpExtensionPackage('pdo_pgsql')?->isBuildStatic()) {
|
||||
throw new WrongUsageException('swoole-hook-pgsql provides pdo_pgsql, if you enable pgsql hook for swoole, you must remove pdo_pgsql extension.');
|
||||
|
||||
@@ -20,6 +20,7 @@ class libde265 extends LibraryPackage
|
||||
->addConfigureArgs(
|
||||
'-DENABLE_SDL=OFF',
|
||||
'-DENABLE_DECODER=OFF',
|
||||
'-DENABLE_SIMD=OFF',
|
||||
'-DHAVE_NEON=OFF',
|
||||
)
|
||||
->build();
|
||||
|
||||
@@ -107,7 +107,12 @@ class GenExtTestMatrixCommand extends BaseCommand
|
||||
// Separate into regular and virtual extensions (build-static:false excluded globally)
|
||||
$all_regular = [];
|
||||
$all_virtual = [];
|
||||
$all_libraries = [];
|
||||
foreach ($all as $pkg_name => $config) {
|
||||
if (($config['type'] ?? '') === 'library') {
|
||||
$all_libraries[$pkg_name] = $config;
|
||||
continue;
|
||||
}
|
||||
if (($config['type'] ?? '') !== 'php-extension') {
|
||||
continue;
|
||||
}
|
||||
@@ -154,10 +159,7 @@ class GenExtTestMatrixCommand extends BaseCommand
|
||||
$raw,
|
||||
fn ($d) => isset($pool_set[$d]) && $d !== $pkg_name
|
||||
));
|
||||
$os_lib_deps[$this->displayName($pkg_name)] = array_values(array_filter(
|
||||
$raw,
|
||||
fn ($d) => !str_starts_with($d, 'ext-')
|
||||
));
|
||||
$os_lib_deps[$this->displayName($pkg_name)] = $this->collectLibraryDeps($raw, $all_libraries, $os);
|
||||
}
|
||||
$all_ext_lib_deps[$os] = $os_lib_deps;
|
||||
|
||||
@@ -246,22 +248,23 @@ class GenExtTestMatrixCommand extends BaseCommand
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($filter_extensions)) {
|
||||
$entries = array_values(array_filter($entries, function (array $entry) use ($filter_extensions): bool {
|
||||
if (!empty($filter_extensions) || !empty($filter_libs)) {
|
||||
$entries = array_values(array_filter($entries, function (array $entry) use ($filter_extensions, $filter_libs, $all_ext_lib_deps): bool {
|
||||
$names = explode(',', $entry['extension']);
|
||||
return count(array_intersect($names, $filter_extensions)) > 0;
|
||||
}));
|
||||
}
|
||||
|
||||
if (!empty($filter_libs)) {
|
||||
$entries = array_values(array_filter($entries, function (array $entry) use ($filter_libs, $all_ext_lib_deps): bool {
|
||||
$names = explode(',', $entry['extension']);
|
||||
$lib_deps = $all_ext_lib_deps[$entry['os']] ?? [];
|
||||
foreach ($names as $name) {
|
||||
if (count(array_intersect($lib_deps[$name] ?? [], $filter_libs)) > 0) {
|
||||
return true;
|
||||
if (!empty($filter_extensions) && count(array_intersect($names, $filter_extensions)) > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!empty($filter_libs)) {
|
||||
$lib_deps = $all_ext_lib_deps[$entry['os']] ?? [];
|
||||
foreach ($names as $name) {
|
||||
if (count(array_intersect($lib_deps[$name] ?? [], $filter_libs)) > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}));
|
||||
}
|
||||
@@ -300,6 +303,41 @@ class GenExtTestMatrixCommand extends BaseCommand
|
||||
return str_starts_with($pkg_name, 'ext-') ? substr($pkg_name, 4) : $pkg_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect direct and transitive library dependencies from a package dependency list.
|
||||
*
|
||||
* @param string[] $deps
|
||||
* @param array<string, mixed[]> $library_configs
|
||||
* @param array<string, true> $seen
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function collectLibraryDeps(array $deps, array $library_configs, string $platform, array $seen = []): array
|
||||
{
|
||||
$collected = [];
|
||||
foreach ($deps as $dep) {
|
||||
if (str_starts_with($dep, 'ext-') || isset($seen[$dep])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$seen[$dep] = true;
|
||||
$collected[$dep] = $dep;
|
||||
|
||||
if (!isset($library_configs[$dep])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$child_deps = array_merge(
|
||||
$this->resolvePlatformList($library_configs[$dep], 'depends', $platform),
|
||||
$this->resolvePlatformList($library_configs[$dep], 'suggests', $platform),
|
||||
);
|
||||
foreach ($this->collectLibraryDeps($child_deps, $library_configs, $platform, $seen) as $child_dep) {
|
||||
$collected[$child_dep] = $child_dep;
|
||||
}
|
||||
}
|
||||
return array_values($collected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Split orphans into batches such that no two conflicting extensions share a batch.
|
||||
* Uses a greedy graph-coloring approach.
|
||||
|
||||
Reference in New Issue
Block a user