diff --git a/src/SPC/builder/extension/event.php b/src/SPC/builder/extension/event.php index 0a981f91..1f582a2c 100644 --- a/src/SPC/builder/extension/event.php +++ b/src/SPC/builder/extension/event.php @@ -38,7 +38,23 @@ class event extends Extension // Prevent event extension compile error on macOS if ($this->builder instanceof MacOSBuilder) { FileSystem::replaceFileRegex(SOURCE_PATH . '/php-src/main/php_config.h', '/^#define HAVE_OPENPTY 1$/m', ''); - return true; + $patched = true; + } + return $this->patchLibeventConstPeer() || $patched; + } + + public function patchBeforeSharedMake(): bool + { + $patched = parent::patchBeforeSharedMake(); + return $this->patchLibeventConstPeer() || $patched; + } + + private function patchLibeventConstPeer(): bool + { + $patched = false; + $file = SOURCE_PATH . '/php-src/ext/event/php8/classes/http_connection.c'; + if (is_file($file) && FileSystem::replaceFileRegex($file, '/^\tchar \*address;$/m', "\tconst char *address;")) { + $patched = true; } return $patched; } diff --git a/src/SPC/store/Downloader.php b/src/SPC/store/Downloader.php index 98d9f495..7f43eef1 100644 --- a/src/SPC/store/Downloader.php +++ b/src/SPC/store/Downloader.php @@ -175,6 +175,16 @@ class Downloader hooks: [[CurlHook::class, 'setupGithubToken']], retries: self::getRetryAttempts() ), true); + if (($source['prefer-stable'] ?? false) === true) { + $latest = json_decode(self::curlExec( + url: "https://api.github.com/repos/{$source['repo']}/releases/latest", + hooks: [[CurlHook::class, 'setupGithubToken']], + retries: self::getRetryAttempts() + ), true); + if (is_array($latest) && isset($latest['assets'])) { + array_unshift($data, $latest); + } + } $url = null; $filename = null; foreach ($data as $release) {