From daf0d2eb329cf90a0fd3d577ddf585bdba0e4fb8 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sun, 7 Jan 2024 00:39:36 +0800 Subject: [PATCH] fix dependency sort --- config/lib.json | 6 +++--- src/SPC/builder/BuilderBase.php | 18 ++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/config/lib.json b/config/lib.json index 8ccb8091..da330f9b 100644 --- a/config/lib.json +++ b/config/lib.json @@ -327,12 +327,12 @@ "libxml2" ], "lib-depends": [ - "libiconv", - "zlib" + "libiconv" ], "lib-suggests": [ "xz", - "icu" + "icu", + "zlib" ] }, "libxslt": { diff --git a/src/SPC/builder/BuilderBase.php b/src/SPC/builder/BuilderBase.php index 86254869..3c77c610 100644 --- a/src/SPC/builder/BuilderBase.php +++ b/src/SPC/builder/BuilderBase.php @@ -33,12 +33,12 @@ abstract class BuilderBase /** * Build libraries * - * @param array $libraries Libraries to build + * @param array $sorted_libraries Libraries to build (if not empty, must sort first) * @throws FileSystemException * @throws RuntimeException * @throws WrongUsageException */ - public function buildLibs(array $libraries): void + public function buildLibs(array $sorted_libraries): void { // search all supported libs $support_lib_list = []; @@ -53,20 +53,18 @@ abstract class BuilderBase } // if no libs specified, compile all supported libs - if ($libraries === [] && $this->isLibsOnly()) { + if ($sorted_libraries === [] && $this->isLibsOnly()) { $libraries = array_keys($support_lib_list); + $sorted_libraries = DependencyUtil::getLibsByDeps($libraries); } // pkg-config must be compiled first, whether it is specified or not - if (!in_array('pkg-config', $libraries)) { - array_unshift($libraries, 'pkg-config'); + if (!in_array('pkg-config', $sorted_libraries)) { + array_unshift($sorted_libraries, 'pkg-config'); } - // append dependencies - $libraries = DependencyUtil::getLibsByDeps($libraries); - // add lib object for builder - foreach ($libraries as $library) { + foreach ($sorted_libraries as $library) { // if some libs are not supported (but in config "lib.json", throw exception) if (!isset($support_lib_list[$library])) { throw new WrongUsageException('library [' . $library . '] is in the lib.json list but not supported to compile, but in the future I will support it!'); @@ -81,7 +79,7 @@ abstract class BuilderBase } // extract sources - SourceExtractor::initSource(libs: $libraries); + SourceExtractor::initSource(libs: $sorted_libraries); // build all libs foreach ($this->libs as $lib) {