fix postgresql libraries when --with-suggested-libs is false

This commit is contained in:
henderkes 2025-10-29 18:55:26 +01:00
parent 5476385553
commit b88a68dab8
4 changed files with 23 additions and 5 deletions

View File

@ -607,8 +607,8 @@
},
"libxml2": {
"source": "libxml2",
"static-libs-unix": [
"libxml2.a"
"pkg-configs": [
"libxml-2.0"
],
"static-libs-windows": [
"libxml2s.lib",

View File

@ -46,7 +46,7 @@ trait postgresql
protected function build(): void
{
$libs = array_map(fn ($x) => $x->getName(), $this->getDependencies());
$spc = new SPCConfigUtil($this->getBuilder(), ['no_php' => true, 'libs_only_deps' => true]);
$spc = new SPCConfigUtil($this->builder, ['no_php' => true, 'libs_only_deps' => true]);
$config = $spc->config(libraries: $libs, include_suggest_lib: $this->builder->getOption('with-suggested-libs'));
$env_vars = [

View File

@ -105,7 +105,7 @@ class DependencyUtil
* @param array $additional_libs Array of additional libraries
* @return array Ordered array of extension names
*/
public static function getExtsAndLibs(array $exts, array $additional_libs = [], bool $include_suggested_exts = false, bool $include_suggested_libs = false): array
public static function getExtsAndLibs(array $exts, array $additional_libs = [], bool $include_suggested_exts = false, bool $include_suggested_libs = false, array $extra_libraries_from_builder = []): array
{
$dep_list = self::platExtToLibs();
@ -144,6 +144,23 @@ class DependencyUtil
$dep_list[$name]['suggests'] = array_values($dep_list[$name]['suggests']);
}
}
// include suggested libraries
if ($extra_libraries_from_builder) {
// check every deps suggests
foreach ($dep_list as $name => $obj) {
$del_list = [];
foreach ($obj['suggests'] as $id => $suggest) {
if (!str_starts_with($suggest, 'ext@') && in_array($suggest, $extra_libraries_from_builder)) {
$dep_list[$name]['depends'][] = $suggest;
$del_list[] = $id;
}
}
foreach ($del_list as $id) {
unset($dep_list[$name]['suggests'][$id]);
}
$dep_list[$name]['suggests'] = array_values($dep_list[$name]['suggests']);
}
}
// convert ext_name to ext@ext_name
$origin_exts = $exts;

View File

@ -62,7 +62,8 @@ class SPCConfigUtil
$extensions[] = $ext;
}
}
[$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions, $libraries, $include_suggest_ext, $include_suggest_lib);
$extra_builder_libs = $this->builder?->getLibs() ?? [];
[$extensions, $libraries] = DependencyUtil::getExtsAndLibs($extensions, $libraries, $include_suggest_ext, $include_suggest_lib, array_map(fn ($l) => $l->getName(), $extra_builder_libs));
ob_start();
if ($this->builder === null) {