From 3ff31d20cf519c484a35641f80a20b21e790b2a0 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 21 May 2025 17:58:11 +0700 Subject: [PATCH] fix undefined references to brotlicommon functions in gd.so --- src/SPC/builder/BuilderBase.php | 3 +-- src/SPC/builder/traits/UnixLibraryTrait.php | 5 ++++- src/SPC/builder/unix/library/brotli.php | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/SPC/builder/BuilderBase.php b/src/SPC/builder/BuilderBase.php index 2e0fe3ec..caece586 100644 --- a/src/SPC/builder/BuilderBase.php +++ b/src/SPC/builder/BuilderBase.php @@ -268,8 +268,7 @@ abstract class BuilderBase logger()->info('Building extension [' . $ext->getName() . '] as shared extension (' . $ext->getName() . '.so)'); $ext->buildShared(); } - } - catch (RuntimeException $e) { + } catch (RuntimeException $e) { FileSystem::replaceFileLineContainsString(BUILD_BIN_PATH . '/php-config', 'extension_dir=', $extension_dir_line); throw $e; } diff --git a/src/SPC/builder/traits/UnixLibraryTrait.php b/src/SPC/builder/traits/UnixLibraryTrait.php index 2d71c8eb..74d8fd37 100644 --- a/src/SPC/builder/traits/UnixLibraryTrait.php +++ b/src/SPC/builder/traits/UnixLibraryTrait.php @@ -96,7 +96,10 @@ trait UnixLibraryTrait // replace prefix $file = FileSystem::readFile($realpath); $file = str_replace( - ' /lib/', ' ' . BUILD_LIB_PATH . '/', $file); + ' /lib/', + ' ' . BUILD_LIB_PATH . '/', + $file + ); $file = preg_replace('/^libdir=.*$/m', "libdir='" . BUILD_LIB_PATH . "'", $file); FileSystem::writeFile($realpath, $file); } diff --git a/src/SPC/builder/unix/library/brotli.php b/src/SPC/builder/unix/library/brotli.php index 44be934d..30c862d2 100644 --- a/src/SPC/builder/unix/library/brotli.php +++ b/src/SPC/builder/unix/library/brotli.php @@ -36,6 +36,8 @@ trait brotli ->execWithEnv("cmake --build . -j {$this->builder->concurrency}") ->execWithEnv('make install'); $this->patchPkgconfPrefix(['libbrotlicommon.pc', 'libbrotlidec.pc', 'libbrotlienc.pc']); + FileSystem::replaceFileLineContainsString(BUILD_LIB_PATH . '/pkgconfig/libbrotlidec.pc', 'Libs: -L${libdir} -lbrotlidec', 'Libs: -L${libdir} -lbrotlidec -lbrotlicommon'); + FileSystem::replaceFileLineContainsString(BUILD_LIB_PATH . '/pkgconfig/libbrotlienc.pc', 'Libs: -L${libdir} -lbrotlienc', 'Libs: -L${libdir} -lbrotlidec -lbrotlicommon'); shell()->cd(BUILD_ROOT_PATH . '/lib')->exec('ln -sf libbrotlicommon.a libbrotli.a'); foreach (FileSystem::scanDirFiles(BUILD_ROOT_PATH . '/lib/', false, true) as $filename) { if (str_starts_with($filename, 'libbrotli') && (str_contains($filename, '.so') || str_ends_with($filename, '.dylib'))) {