From 9ed62b02b6bd3419f8c63a5d2aa2df464a080ab4 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Tue, 10 Jun 2025 19:46:55 +0700 Subject: [PATCH] make patchLaDependencyPrefix argument optional, remove cleanLaFiles --- src/SPC/builder/linux/library/libpng.php | 2 +- src/SPC/builder/macos/library/libpng.php | 3 +- src/SPC/builder/traits/UnixLibraryTrait.php | 31 ++++++++------------ src/SPC/builder/unix/library/freetype.php | 2 -- src/SPC/builder/unix/library/gettext.php | 2 +- src/SPC/builder/unix/library/imagemagick.php | 6 +--- src/SPC/builder/unix/library/ldap.php | 2 +- src/SPC/builder/unix/library/libavif.php | 1 - src/SPC/builder/unix/library/libiconv.php | 2 +- src/SPC/builder/unix/library/libjpeg.php | 1 - src/SPC/builder/unix/library/libwebp.php | 2 -- src/SPC/builder/unix/library/libxslt.php | 4 +-- src/SPC/builder/unix/library/nghttp2.php | 2 +- src/SPC/builder/unix/library/nghttp3.php | 2 +- src/SPC/builder/unix/library/ngtcp2.php | 2 +- src/SPC/builder/unix/library/unixodbc.php | 2 +- src/SPC/builder/unix/library/xz.php | 2 +- 17 files changed, 26 insertions(+), 42 deletions(-) diff --git a/src/SPC/builder/linux/library/libpng.php b/src/SPC/builder/linux/library/libpng.php index da660aff..5510a023 100644 --- a/src/SPC/builder/linux/library/libpng.php +++ b/src/SPC/builder/linux/library/libpng.php @@ -59,6 +59,6 @@ class libpng extends LinuxLibraryBase ->exec("make -j{$this->builder->concurrency} DEFAULT_INCLUDES='-I{$this->source_dir} -I" . BUILD_INCLUDE_PATH . "' LIBS= libpng16.la") ->exec('make install-libLTLIBRARIES install-data-am DESTDIR=' . BUILD_ROOT_PATH); $this->patchPkgconfPrefix(['libpng16.pc'], PKGCONF_PATCH_PREFIX); - $this->cleanLaFiles(); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/macos/library/libpng.php b/src/SPC/builder/macos/library/libpng.php index f273bff6..090e069e 100644 --- a/src/SPC/builder/macos/library/libpng.php +++ b/src/SPC/builder/macos/library/libpng.php @@ -59,7 +59,6 @@ class libpng extends MacOSLibraryBase ->cd(BUILD_LIB_PATH) ->exec('ln -sf libpng16.a libpng.a'); $this->patchPkgconfPrefix(['libpng16.pc'], PKGCONF_PATCH_PREFIX); - $this->patchLaDependencyPrefix(['libpng16.la']); - $this->cleanLaFiles(); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/traits/UnixLibraryTrait.php b/src/SPC/builder/traits/UnixLibraryTrait.php index fbca595f..ffb6ade1 100644 --- a/src/SPC/builder/traits/UnixLibraryTrait.php +++ b/src/SPC/builder/traits/UnixLibraryTrait.php @@ -84,13 +84,24 @@ trait UnixLibraryTrait } } - public function patchLaDependencyPrefix(array $files): void + public function patchLaDependencyPrefix(?array $files = null): void { logger()->info('Patching library [' . static::NAME . '] la files'); + $throwOnMissing = true; + if ($files === null) { + $files = $this->getStaticLibs(); + $files = array_map(fn ($name) => str_replace('.a', '.la', $name), $files); + $throwOnMissing = false; + } foreach ($files as $name) { $realpath = realpath(BUILD_LIB_PATH . '/' . $name); if ($realpath === false) { - throw new RuntimeException('Cannot find library [' . static::NAME . '] la file [' . $name . '] !'); + if ($throwOnMissing) { + throw new RuntimeException('Cannot find library [' . static::NAME . '] la file [' . $name . '] !'); + } else { + logger()->warning('Cannot find library [' . static::NAME . '] la file [' . $name . '] !'); + continue; + } } logger()->debug('Patching ' . $realpath); // replace prefix @@ -105,22 +116,6 @@ trait UnixLibraryTrait } } - /** - * remove libtool archive files - * - * @throws FileSystemException - * @throws WrongUsageException - */ - public function cleanLaFiles(): void - { - foreach ($this->getStaticLibs() as $lib) { - $filename = pathinfo($lib, PATHINFO_FILENAME) . '.la'; - if (file_exists(BUILD_LIB_PATH . '/' . $filename)) { - unlink(BUILD_LIB_PATH . '/' . $filename); - } - } - } - public function getLibExtraCFlags(): string { $env = getenv($this->getSnakeCaseName() . '_CFLAGS') ?: ''; diff --git a/src/SPC/builder/unix/library/freetype.php b/src/SPC/builder/unix/library/freetype.php index 35e62602..581a5e75 100644 --- a/src/SPC/builder/unix/library/freetype.php +++ b/src/SPC/builder/unix/library/freetype.php @@ -38,7 +38,5 @@ trait freetype ' -L/lib ', ' -L' . BUILD_ROOT_PATH . '/lib ' ); - - $this->cleanLaFiles(); } } diff --git a/src/SPC/builder/unix/library/gettext.php b/src/SPC/builder/unix/library/gettext.php index 15a6b6c7..576df385 100644 --- a/src/SPC/builder/unix/library/gettext.php +++ b/src/SPC/builder/unix/library/gettext.php @@ -34,6 +34,6 @@ trait gettext ->exec('make clean') ->exec("make -j{$this->builder->concurrency}") ->exec('make install'); - $this->patchLaDependencyPrefix(['libintl.la']); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/imagemagick.php b/src/SPC/builder/unix/library/imagemagick.php index 1284305c..714fdff5 100644 --- a/src/SPC/builder/unix/library/imagemagick.php +++ b/src/SPC/builder/unix/library/imagemagick.php @@ -78,10 +78,6 @@ trait imagemagick 'includearchdir=${prefix}/include/ImageMagick-7' ); } - $this->patchLaDependencyPrefix([ - 'libMagick++-7.Q16HDRI.la', - 'libMagickCore-7.Q16HDRI.la', - 'libMagickWand-7.Q16HDRI.la', - ]); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/ldap.php b/src/SPC/builder/unix/library/ldap.php index 501654de..b2c5e65b 100644 --- a/src/SPC/builder/unix/library/ldap.php +++ b/src/SPC/builder/unix/library/ldap.php @@ -48,6 +48,6 @@ trait ldap FileSystem::replaceFileLineContainsString(BUILD_LIB_PATH . '/pkgconfig/ldap.pc', 'Libs: -L${libdir} -lldap', 'Libs: -L${libdir} -lldap -llber'); $this->patchPkgconfPrefix(['ldap.pc', 'lber.pc']); - $this->patchLaDependencyPrefix(['libldap.la', 'liblber.la']); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/libavif.php b/src/SPC/builder/unix/library/libavif.php index cbec640b..dea45c6e 100644 --- a/src/SPC/builder/unix/library/libavif.php +++ b/src/SPC/builder/unix/library/libavif.php @@ -23,6 +23,5 @@ trait libavif ->build(); // patch pkgconfig $this->patchPkgconfPrefix(['libavif.pc']); - $this->cleanLaFiles(); } } diff --git a/src/SPC/builder/unix/library/libiconv.php b/src/SPC/builder/unix/library/libiconv.php index 36ef136e..98b40c10 100644 --- a/src/SPC/builder/unix/library/libiconv.php +++ b/src/SPC/builder/unix/library/libiconv.php @@ -21,6 +21,6 @@ trait libiconv ->exec("make -j{$this->builder->concurrency}") ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); - $this->patchLaDependencyPrefix(['libiconv.la']); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/libjpeg.php b/src/SPC/builder/unix/library/libjpeg.php index 3f8aff9e..6196f8af 100644 --- a/src/SPC/builder/unix/library/libjpeg.php +++ b/src/SPC/builder/unix/library/libjpeg.php @@ -26,6 +26,5 @@ trait libjpeg ->build(); // patch pkgconfig $this->patchPkgconfPrefix(['libjpeg.pc', 'libturbojpeg.pc']); - $this->cleanLaFiles(); } } diff --git a/src/SPC/builder/unix/library/libwebp.php b/src/SPC/builder/unix/library/libwebp.php index e4f45eb4..32331ea2 100644 --- a/src/SPC/builder/unix/library/libwebp.php +++ b/src/SPC/builder/unix/library/libwebp.php @@ -24,8 +24,6 @@ trait libwebp // patch pkgconfig $this->patchPkgconfPrefix(['libsharpyuv.pc', 'libwebp.pc', 'libwebpdecoder.pc', 'libwebpdemux.pc', 'libwebpmux.pc'], PKGCONF_PATCH_PREFIX | PKGCONF_PATCH_LIBDIR); $this->patchPkgconfPrefix(['libsharpyuv.pc'], PKGCONF_PATCH_CUSTOM, ['/^includedir=.*$/m', 'includedir=${prefix}/include/webp']); - $this->cleanLaFiles(); - // fix imagemagick binary linking issue $this->patchPkgconfPrefix(['libwebp.pc'], PKGCONF_PATCH_CUSTOM, ['/-lwebp$/m', '-lwebp -lsharpyuv']); } } diff --git a/src/SPC/builder/unix/library/libxslt.php b/src/SPC/builder/unix/library/libxslt.php index 10975145..0fd641b3 100644 --- a/src/SPC/builder/unix/library/libxslt.php +++ b/src/SPC/builder/unix/library/libxslt.php @@ -47,8 +47,8 @@ trait libxslt ->exec('make clean') ->exec("make -j{$this->builder->concurrency}") ->exec('make install DESTDIR=' . escapeshellarg(BUILD_ROOT_PATH)); - $this->patchPkgconfPrefix(['libexslt.pc']); - $this->patchLaDependencyPrefix(['libxslt.la', 'libexslt.la']); + $this->patchPkgconfPrefix(['libxslt.pc', 'libexslt.pc']); + $this->patchLaDependencyPrefix(); shell()->cd(BUILD_LIB_PATH) ->exec("ar -t libxslt.a | grep '\\.a$' | xargs -n1 ar d libxslt.a") ->exec("ar -t libexslt.a | grep '\\.a$' | xargs -n1 ar d libexslt.a"); diff --git a/src/SPC/builder/unix/library/nghttp2.php b/src/SPC/builder/unix/library/nghttp2.php index e09832d9..23f5b3c7 100644 --- a/src/SPC/builder/unix/library/nghttp2.php +++ b/src/SPC/builder/unix/library/nghttp2.php @@ -54,6 +54,6 @@ trait nghttp2 ->exec("make -j{$this->builder->concurrency}") ->exec("make install DESTDIR={$destdir}"); $this->patchPkgconfPrefix(['libnghttp2.pc']); - $this->patchLaDependencyPrefix(['libnghttp2.la']); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/nghttp3.php b/src/SPC/builder/unix/library/nghttp3.php index ca2862a2..bf8f1bd2 100644 --- a/src/SPC/builder/unix/library/nghttp3.php +++ b/src/SPC/builder/unix/library/nghttp3.php @@ -28,6 +28,6 @@ trait nghttp3 ->exec("make -j{$this->builder->concurrency}") ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); $this->patchPkgconfPrefix(['libnghttp3.pc']); - $this->patchLaDependencyPrefix(['libnghttp3.la']); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/ngtcp2.php b/src/SPC/builder/unix/library/ngtcp2.php index 94e9c570..f36d44cb 100644 --- a/src/SPC/builder/unix/library/ngtcp2.php +++ b/src/SPC/builder/unix/library/ngtcp2.php @@ -44,7 +44,7 @@ trait ngtcp2 ->exec("make -j{$this->builder->concurrency}") ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); $this->patchPkgconfPrefix(['libngtcp2.pc', 'libngtcp2_crypto_ossl.pc']); - $this->patchLaDependencyPrefix(['libngtcp2.la', 'libngtcp2_crypto_ossl.la']); + $this->patchLaDependencyPrefix(); // on macOS, the static library may contain other static libraries? // ld: archive member 'libssl.a' not a mach-o file in libngtcp2_crypto_ossl.a diff --git a/src/SPC/builder/unix/library/unixodbc.php b/src/SPC/builder/unix/library/unixodbc.php index 0e40629d..c694cb86 100644 --- a/src/SPC/builder/unix/library/unixodbc.php +++ b/src/SPC/builder/unix/library/unixodbc.php @@ -31,6 +31,6 @@ trait unixodbc ->exec("make -j{$this->builder->concurrency}") ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); $this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']); - $this->cleanLaFiles(); + $this->patchLaDependencyPrefix(); } } diff --git a/src/SPC/builder/unix/library/xz.php b/src/SPC/builder/unix/library/xz.php index 3aed6a15..5f90cc4d 100644 --- a/src/SPC/builder/unix/library/xz.php +++ b/src/SPC/builder/unix/library/xz.php @@ -30,6 +30,6 @@ trait xz ->exec("make -j{$this->builder->concurrency}") ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); $this->patchPkgconfPrefix(['liblzma.pc']); - $this->patchLaDependencyPrefix(['liblzma.la']); + $this->patchLaDependencyPrefix(); } }