diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8accd62f..fa9e646f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,13 +1,9 @@ name: Tests on: - push: - branches: - - main - paths: - - 'src/globals/test-extensions.php' pull_request: branches: [ "main" ] + types: [ opened, synchronize, reopened ] paths: - 'src/**' - 'config/**' diff --git a/bin/spc-alpine-docker b/bin/spc-alpine-docker index 3a58547f..6365233c 100755 --- a/bin/spc-alpine-docker +++ b/bin/spc-alpine-docker @@ -150,6 +150,7 @@ MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/source:/app/source" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/dist:/app/dist" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/downloads:/app/downloads" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/pkgroot:/app/pkgroot" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/log:/app/log" if [ -f "$(pwd)/craft.yml" ]; then MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/craft.yml:/app/craft.yml" fi diff --git a/bin/spc-gnu-docker b/bin/spc-gnu-docker index 97c9a089..7fcf5d41 100755 --- a/bin/spc-gnu-docker +++ b/bin/spc-gnu-docker @@ -158,6 +158,7 @@ MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/source:/app/source" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/dist:/app/dist" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/downloads:/app/downloads" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/pkgroot:/app/pkgroot" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/log:/app/log" if [ -f "$(pwd)/craft.yml" ]; then MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/craft.yml:/app/craft.yml" fi diff --git a/config/source.json b/config/source.json index 40a44f2d..1546b23b 100644 --- a/config/source.json +++ b/config/source.json @@ -1001,7 +1001,7 @@ "spx": { "type": "git", "rev": "master", - "url": "https://github.com/static-php/php-spx.git", + "url": "https://github.com/NoiseByNorthwest/php-spx.git", "path": "php-src/ext/spx", "license": { "type": "file", diff --git a/src/SPC/builder/extension/spx.php b/src/SPC/builder/extension/spx.php index f5e736d5..a5a8ad71 100644 --- a/src/SPC/builder/extension/spx.php +++ b/src/SPC/builder/extension/spx.php @@ -13,7 +13,7 @@ class spx extends Extension { public function getUnixConfigureArg(bool $shared = false): string { - $arg = '--enable-spx' . ($shared ? '=shared' : ''); + $arg = '--enable-SPX' . ($shared ? '=shared' : ''); if ($this->builder->getLib('zlib') !== null) { $arg .= ' --with-zlib-dir=' . BUILD_ROOT_PATH; } @@ -29,4 +29,20 @@ class spx extends Extension ); return true; } + + public function patchBeforeBuildconf(): bool + { + FileSystem::replaceFileStr( + $this->source_dir . '/config.m4', + 'CFLAGS="$CFLAGS -Werror -Wall -O3 -pthread -std=gnu90"', + 'CFLAGS="$CFLAGS -pthread"' + ); + FileSystem::replaceFileStr( + $this->source_dir . '/src/php_spx.h', + "extern zend_module_entry spx_module_entry;\n", + "extern zend_module_entry spx_module_entry;;\n#define phpext_spx_ptr &spx_module_entry\n" + ); + FileSystem::copy($this->source_dir . '/src/php_spx.h', $this->source_dir . '/php_spx.h'); + return true; + } } diff --git a/src/SPC/command/BuildPHPCommand.php b/src/SPC/command/BuildPHPCommand.php index 3ffc54ce..a33f1e84 100644 --- a/src/SPC/command/BuildPHPCommand.php +++ b/src/SPC/command/BuildPHPCommand.php @@ -222,11 +222,9 @@ class BuildPHPCommand extends BuildCommand // ---------- When using bin/spc-alpine-docker, the build root path is different from the host system ---------- $build_root_path = BUILD_ROOT_PATH; - $cwd = getcwd(); $fixed = ''; + $build_root_path = get_display_path($build_root_path); if (!empty(getenv('SPC_FIX_DEPLOY_ROOT'))) { - str_replace($cwd, '', $build_root_path); - $build_root_path = getenv('SPC_FIX_DEPLOY_ROOT') . '/' . basename($build_root_path); $fixed = ' (host system)'; } if (($rule & BUILD_TARGET_CLI) === BUILD_TARGET_CLI) { diff --git a/src/SPC/exception/ExceptionHandler.php b/src/SPC/exception/ExceptionHandler.php index 44b82b06..d784be71 100644 --- a/src/SPC/exception/ExceptionHandler.php +++ b/src/SPC/exception/ExceptionHandler.php @@ -137,13 +137,18 @@ class ExceptionHandler self::logError("\n----------------------------------------\n"); - self::logError('⚠ The ' . ConsoleColor::cyan('console output log') . ConsoleColor::red(' is saved in ') . ConsoleColor::none(SPC_OUTPUT_LOG)); + // convert log file path if in docker + $spc_log_convert = get_display_path(SPC_OUTPUT_LOG); + $shell_log_convert = get_display_path(SPC_SHELL_LOG); + $spc_logs_dir_convert = get_display_path(SPC_LOGS_DIR); + + self::logError('⚠ The ' . ConsoleColor::cyan('console output log') . ConsoleColor::red(' is saved in ') . ConsoleColor::none($spc_log_convert)); if (file_exists(SPC_SHELL_LOG)) { - self::logError('⚠ The ' . ConsoleColor::cyan('shell output log') . ConsoleColor::red(' is saved in ') . ConsoleColor::none(SPC_SHELL_LOG)); + self::logError('⚠ The ' . ConsoleColor::cyan('shell output log') . ConsoleColor::red(' is saved in ') . ConsoleColor::none($shell_log_convert)); } if ($e->getExtraLogFiles() !== []) { foreach ($e->getExtraLogFiles() as $key => $file) { - self::logError("⚠ Log file [{$key}] is saved in: " . ConsoleColor::none(SPC_LOGS_DIR . "/{$file}")); + self::logError("⚠ Log file [{$key}] is saved in: " . ConsoleColor::none("{$spc_logs_dir_convert}/{$file}")); } } if (!defined('DEBUG_MODE')) { diff --git a/src/globals/functions.php b/src/globals/functions.php index da2d177f..c8c6a8d0 100644 --- a/src/globals/functions.php +++ b/src/globals/functions.php @@ -300,3 +300,20 @@ function strip_ansi_colors(string $text): string // Including color codes, cursor control, clear screen and other control sequences return preg_replace('/\e\[[0-9;]*[a-zA-Z]/', '', $text); } + +/** + * Convert to a real path for display purposes, used in docker volumes. + */ +function get_display_path(string $path): string +{ + $deploy_root = getenv('SPC_FIX_DEPLOY_ROOT'); + if ($deploy_root === false) { + return $path; + } + $cwd = WORKING_DIR; + // replace build root with deploy root, only if path starts with build root + if (str_starts_with($path, $cwd)) { + return $deploy_root . substr($path, strlen($cwd)); + } + throw new WrongUsageException("Cannot convert path: {$path}"); +}