From 52f40b7f9f32934718c7408dce3cde1d183d9934 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Thu, 12 Jun 2025 20:19:21 +0700 Subject: [PATCH] the release option also affects shared extensions, which is unwanted, patchelf their soname back and rename them --- src/SPC/builder/linux/LinuxBuilder.php | 18 ++++++++++++++++++ src/SPC/doctor/item/LinuxToolCheckList.php | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index 00732619..315d7df9 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -293,6 +293,24 @@ class LinuxBuilder extends UnixBuilderBase $cwd = getcwd(); chdir(BUILD_LIB_PATH); symlink($realLibName, 'libphp.so'); + chdir(BUILD_MODULES_PATH); + foreach ($this->getExts() as $ext) { + if (!$ext->isBuildShared()) { + continue; + } + $name = $ext->getName(); + $versioned = "{$name}-{$release}.so"; + $unversioned = "{$name}.so"; + if (is_file(BUILD_MODULES_PATH . "/{$versioned}")) { + rename(BUILD_MODULES_PATH . "/{$versioned}", BUILD_MODULES_PATH . "/{$unversioned}"); + shell()->cd(BUILD_MODULES_PATH) + ->exec(sprintf( + 'patchelf --set-soname %s %s', + escapeshellarg($unversioned), + escapeshellarg($unversioned) + )); + } + } chdir($cwd); } $this->patchPhpScripts(); diff --git a/src/SPC/doctor/item/LinuxToolCheckList.php b/src/SPC/doctor/item/LinuxToolCheckList.php index 2522eb58..56235b0c 100644 --- a/src/SPC/doctor/item/LinuxToolCheckList.php +++ b/src/SPC/doctor/item/LinuxToolCheckList.php @@ -22,6 +22,7 @@ class LinuxToolCheckList 'bzip2', 'cmake', 'gcc', 'g++', 'patch', 'binutils-gold', 'libtoolize', 'which', + 'patchelf', ]; public const TOOLS_DEBIAN = [ @@ -30,6 +31,7 @@ class LinuxToolCheckList 'tar', 'unzip', 'gzip', 'bzip2', 'cmake', 'patch', 'xz', 'libtoolize', 'which', + 'patchelf', ]; public const TOOLS_RHEL = [ @@ -38,6 +40,7 @@ class LinuxToolCheckList 'tar', 'unzip', 'gzip', 'gcc', 'bzip2', 'cmake', 'patch', 'which', 'xz', 'libtool', 'gettext-devel', + 'perl', 'patchelf', ]; public const TOOLS_ARCH = [