diff --git a/docs/.vitepress/components/CliGenerator.vue b/docs/.vitepress/components/CliGenerator.vue index 6cef60d0..430dec24 100644 --- a/docs/.vitepress/components/CliGenerator.vue +++ b/docs/.vitepress/components/CliGenerator.vue @@ -379,6 +379,11 @@ const craftCommandString = computed(() => { str += 'debug: true\n'; } + if (preBuilt.value) { + str += 'download-options:\n'; + str += ' prefer-pre-built: true\n'; + } + str += '{{position_hold}}'; if (enableUPX.value) { @@ -387,9 +392,6 @@ const craftCommandString = computed(() => { if (zts.value) { str += ' enable-zts: true\n'; } - if (preBuilt.value) { - str += ' prefer-pre-built: true\n'; - } if (!str.endsWith('{{position_hold}}')) { str = str.replace('{{position_hold}}', 'build-options:\n'); diff --git a/phpstan.neon b/phpstan.neon index 78b72c76..a8c1c72c 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -9,6 +9,7 @@ parameters: - '#Attribute class JetBrains\\PhpStorm\\ArrayShape does not exist#' - '#Function Swoole\\Coroutine\\run not found.#' - '#Static call to instance method ZM\\Logger\\ConsoleColor#' + - '#Constant GNU_ARCH not found#' dynamicConstantNames: - PHP_OS_FAMILY excludePaths: diff --git a/src/SPC/builder/unix/UnixBuilderBase.php b/src/SPC/builder/unix/UnixBuilderBase.php index 8c928086..f89676f4 100644 --- a/src/SPC/builder/unix/UnixBuilderBase.php +++ b/src/SPC/builder/unix/UnixBuilderBase.php @@ -279,11 +279,8 @@ abstract class UnixBuilderBase extends BuilderBase logger()->warning('caddy-cbrotli module is enabled, but brotli library is not built. Disabling caddy-cbrotli.'); $xcaddyModules = str_replace('--with github.com/dunglas/caddy-cbrotli', '', $xcaddyModules); } - $releaseInfo = json_decode(Downloader::curlExec( - 'https://api.github.com/repos/php/frankenphp/releases/latest', - hooks: [[CurlHook::class, 'setupGithubToken']], - ), true); - $frankenPhpVersion = $releaseInfo['tag_name']; + [, $out] = shell()->execWithResult('go list -m github.com/dunglas/frankenphp@latest'); + $frankenPhpVersion = str_replace('github.com/dunglas/frankenphp v', '', $out[0]); $libphpVersion = $this->getPHPVersion(); $dynamic_exports = ''; if (getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') === 'shared') { diff --git a/src/SPC/builder/unix/library/unixodbc.php b/src/SPC/builder/unix/library/unixodbc.php index d7524bda..9a3cb63d 100644 --- a/src/SPC/builder/unix/library/unixodbc.php +++ b/src/SPC/builder/unix/library/unixodbc.php @@ -4,18 +4,29 @@ declare(strict_types=1); namespace SPC\builder\unix\library; +use SPC\exception\WrongUsageException; use SPC\util\executor\UnixAutoconfExecutor; trait unixodbc { protected function build(): void { + $sysconf_selector = match (PHP_OS_FAMILY) { + 'Darwin' => match (GNU_ARCH) { + 'x86_64' => '/usr/local/etc', + 'aarch64' => '/opt/homebrew/etc', + default => throw new WrongUsageException('Unsupported architecture: ' . GNU_ARCH), + }, + 'Linux' => '/etc', + default => throw new WrongUsageException('Unsupported OS: ' . PHP_OS_FAMILY), + }; UnixAutoconfExecutor::create($this) ->configure( '--disable-debug', '--disable-dependency-tracking', "--with-libiconv-prefix={$this->getBuildRootPath()}", '--with-included-ltdl', + "--sysconfdir={$sysconf_selector}", '--enable-gui=no', ) ->make(); diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 764cfc7d..97eaa850 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -43,7 +43,7 @@ $no_strip = false; $upx = false; // whether to test frankenphp build, only available for macos and linux -$frankenphp = false; +$frankenphp = true; // prefer downloading pre-built packages to speed up the build process $prefer_pre_built = false;