From ad098d085e37e81187a37d4962a4d1196eee8518 Mon Sep 17 00:00:00 2001 From: Jerry Ma Date: Mon, 9 Sep 2024 17:41:29 +0800 Subject: [PATCH] Update redis to 6.0.2, add alternative license file searcher (#539) * Update redis to 6.0.2, add alternative license file searcher * Update docs about source module --- config/source.json | 7 +++++-- docs/en/develop/source-module.md | 21 +++++++++++++++++++++ docs/zh/develop/source-module.md | 20 ++++++++++++++++++++ src/SPC/ConsoleApplication.php | 2 +- src/SPC/util/LicenseDumper.php | 14 ++++++++++---- src/globals/test-extensions.php | 6 +++--- 6 files changed, 60 insertions(+), 10 deletions(-) diff --git a/config/source.json b/config/source.json index 5a13aacd..e92a7daf 100644 --- a/config/source.json +++ b/config/source.json @@ -649,11 +649,14 @@ "redis": { "type": "git", "path": "php-src/ext/redis", - "rev": "5.3.7", + "rev": "release/6.0.2", "url": "https://github.com/phpredis/phpredis", "license": { "type": "file", - "path": "COPYING" + "path": [ + "LICENSE", + "COPYING" + ] } }, "snappy": { diff --git a/docs/en/develop/source-module.md b/docs/en/develop/source-module.md index 561c1b7c..4b1b1fc0 100644 --- a/docs/en/develop/source-module.md +++ b/docs/en/develop/source-module.md @@ -317,3 +317,24 @@ When an open source project has multiple licenses, multiple files can be specifi } } ``` + +When the license of an open source project uses different files between versions, +`path` can be used as an array to list the possible license files: + +```json +{ + "redis": { + "type": "git", + "path": "php-src/ext/redis", + "rev": "release/6.0.2", + "url": "https://github.com/phpredis/phpredis", + "license": { + "type": "file", + "path": [ + "LICENSE", + "COPYING" + ] + } + } +} +``` diff --git a/docs/zh/develop/source-module.md b/docs/zh/develop/source-module.md index a97dce34..00feb3c4 100644 --- a/docs/zh/develop/source-module.md +++ b/docs/zh/develop/source-module.md @@ -297,3 +297,23 @@ pkg.json 存放的是非源码类型的文件资源,例如 musl-toolchain、UP } } ``` + +当一个开源项目的许可证在不同版本间使用不同的文件,`path` 参数可以使用数组将可能的许可证文件列出: + +```json +{ + "redis": { + "type": "git", + "path": "php-src/ext/redis", + "rev": "release/6.0.2", + "url": "https://github.com/phpredis/phpredis", + "license": { + "type": "file", + "path": [ + "LICENSE", + "COPYING" + ] + } + } +} +``` diff --git a/src/SPC/ConsoleApplication.php b/src/SPC/ConsoleApplication.php index 64048cf6..534cbe03 100644 --- a/src/SPC/ConsoleApplication.php +++ b/src/SPC/ConsoleApplication.php @@ -30,7 +30,7 @@ use Symfony\Component\Console\Application; */ final class ConsoleApplication extends Application { - public const VERSION = '2.3.3'; + public const VERSION = '2.3.4'; public function __construct() { diff --git a/src/SPC/util/LicenseDumper.php b/src/SPC/util/LicenseDumper.php index 42ae6746..69f21199 100644 --- a/src/SPC/util/LicenseDumper.php +++ b/src/SPC/util/LicenseDumper.php @@ -118,20 +118,26 @@ class LicenseDumper /** * @throws RuntimeException */ - private function loadSourceFile(string $source_name, int $index, ?string $in_path, ?string $custom_base_path = null): string + private function loadSourceFile(string $source_name, int $index, null|array|string $in_path, ?string $custom_base_path = null): string { if (is_null($in_path)) { throw new RuntimeException('source [' . $source_name . '] license file is not set, please check config/source.json'); } - if (file_exists(SOURCE_PATH . '/' . ($custom_base_path ?? $source_name) . '/' . $in_path)) { - return file_get_contents(SOURCE_PATH . '/' . ($custom_base_path ?? $source_name) . '/' . $in_path); + if (!is_array($in_path)) { + $in_path = [$in_path]; + } + + foreach ($in_path as $item) { + if (file_exists(SOURCE_PATH . '/' . ($custom_base_path ?? $source_name) . '/' . $item)) { + return file_get_contents(SOURCE_PATH . '/' . ($custom_base_path ?? $source_name) . '/' . $item); + } } if (file_exists(BUILD_ROOT_PATH . '/source-licenses/' . $source_name . '/' . $index . '.txt')) { return file_get_contents(BUILD_ROOT_PATH . '/source-licenses/' . $source_name . '/' . $index . '.txt'); } - throw new RuntimeException('source [' . $source_name . '] license file [' . $in_path . '] not exist'); + throw new RuntimeException('Cannot find any license file in source [' . $source_name . '] directory!'); } } diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 645d555f..cb537a11 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -19,13 +19,13 @@ $upx = true; // If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`). $extensions = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => 'imap,swoole-hook-sqlite,swoole', - 'Windows' => 'igbinary,redis,session', + 'Linux', 'Darwin' => 'redis,igbinary', + 'Windows' => 'redis,igbinary', }; // If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`). $with_libs = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => '', + 'Linux', 'Darwin' => 'liblz4', 'Windows' => '', };