From 3b425b6b24925d6776295ccdc1509f1449ab11f9 Mon Sep 17 00:00:00 2001 From: henderkes Date: Thu, 23 Jul 2026 09:16:04 +0700 Subject: [PATCH] igbinary PIE --- config/pkg/ext/ext-igbinary.yml | 4 ++-- src/StaticPHP/Artifact/Downloader/Type/PIE.php | 13 ++++++++----- src/StaticPHP/Config/ConfigValidator.php | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/config/pkg/ext/ext-igbinary.yml b/config/pkg/ext/ext-igbinary.yml index c71a1f36..3700c5d7 100644 --- a/config/pkg/ext/ext-igbinary.yml +++ b/config/pkg/ext/ext-igbinary.yml @@ -2,9 +2,9 @@ ext-igbinary: type: php-extension artifact: source: - type: ghtagtar + type: pie repo: igbinary/igbinary - match: tags/\d+(\.\d+)+$ + prefer-stable: false extract: php-src/ext/igbinary metadata: license-files: [COPYING] diff --git a/src/StaticPHP/Artifact/Downloader/Type/PIE.php b/src/StaticPHP/Artifact/Downloader/Type/PIE.php index 1dd1c1c0..ebaf4a07 100644 --- a/src/StaticPHP/Artifact/Downloader/Type/PIE.php +++ b/src/StaticPHP/Artifact/Downloader/Type/PIE.php @@ -65,12 +65,15 @@ class PIE implements DownloadTypeInterface, CheckUpdateInterface $current = array_filter($current, static fn ($v) => $v !== '__unset'); $releases[] = $current; } - // packagist lists newest first including RC/beta/alpha — pick the newest stable release + // packagist lists newest first including RC/beta/alpha — pick the newest stable release, + // unless prefer-stable is false, then take the newest tagged release even if it's a prerelease $first = null; - foreach ($releases as $release) { - if (!preg_match('/[._-]?(?:alpha|a|beta|b|rc)[._-]?\d*$/i', $release['version'] ?? '')) { - $first = $release; - break; + if ($config['prefer-stable'] ?? true) { + foreach ($releases as $release) { + if (!preg_match('/[._-]?(?:alpha|a|beta|b|rc)[._-]?\d*$/i', $release['version'] ?? '')) { + $first = $release; + break; + } } } $first ??= $releases[0] ?? []; diff --git a/src/StaticPHP/Config/ConfigValidator.php b/src/StaticPHP/Config/ConfigValidator.php index 0ba6658f..dfb9bbb0 100644 --- a/src/StaticPHP/Config/ConfigValidator.php +++ b/src/StaticPHP/Config/ConfigValidator.php @@ -101,7 +101,7 @@ class ConfigValidator 'url' => [['url'], ['filename', 'extract', 'version']], 'bitbuckettag' => [['repo'], ['extract']], 'local' => [['dirname'], ['extract']], - 'pie' => [['repo'], ['extract']], + 'pie' => [['repo'], ['extract', 'prefer-stable']], 'pecl' => [['name'], ['extract', 'prefer-stable']], 'php-release' => [['domain'], ['extract']], 'custom' => [[], ['func']],