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": { "libxml2": {
"source": "libxml2", "source": "libxml2",
"static-libs-unix": [ "pkg-configs": [
"libxml2.a" "libxml-2.0"
], ],
"static-libs-windows": [ "static-libs-windows": [
"libxml2s.lib", "libxml2s.lib",

View File

@@ -46,7 +46,7 @@ trait postgresql
protected function build(): void protected function build(): void
{ {
$libs = array_map(fn ($x) => $x->getName(), $this->getDependencies()); $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')); $config = $spc->config(libraries: $libs, include_suggest_lib: $this->builder->getOption('with-suggested-libs'));
$env_vars = [ $env_vars = [

View File

@@ -105,7 +105,7 @@ class DependencyUtil
* @param array $additional_libs Array of additional libraries * @param array $additional_libs Array of additional libraries
* @return array Ordered array of extension names * @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(); $dep_list = self::platExtToLibs();
@@ -144,6 +144,23 @@ class DependencyUtil
$dep_list[$name]['suggests'] = array_values($dep_list[$name]['suggests']); $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 // convert ext_name to ext@ext_name
$origin_exts = $exts; $origin_exts = $exts;

View File

@@ -62,7 +62,8 @@ class SPCConfigUtil
$extensions[] = $ext; $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(); ob_start();
if ($this->builder === null) { if ($this->builder === null) {