mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-19 14:55:35 +08:00
Compare commits
7 Commits
2.7.3
...
e35d6c2651
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e35d6c2651 | ||
|
|
8dd0512335 | ||
|
|
953ed83df5 | ||
|
|
c330d02e78 | ||
|
|
af6a23011c | ||
|
|
882ae07deb | ||
|
|
4bc30b0b6f |
@@ -9,17 +9,19 @@
|
|||||||
"lib-base",
|
"lib-base",
|
||||||
"micro"
|
"micro"
|
||||||
],
|
],
|
||||||
|
"lib-depends-macos": [
|
||||||
|
"lib-base",
|
||||||
|
"micro",
|
||||||
|
"libxml2"
|
||||||
|
],
|
||||||
"lib-suggests-linux": [
|
"lib-suggests-linux": [
|
||||||
"libacl",
|
"libacl",
|
||||||
"brotli",
|
"brotli",
|
||||||
"watcher"
|
"watcher"
|
||||||
],
|
],
|
||||||
"lib-suggests-unix": [
|
"lib-suggests-macos": [
|
||||||
"brotli",
|
"brotli",
|
||||||
"watcher"
|
"watcher"
|
||||||
],
|
|
||||||
"lib-depends-macos": [
|
|
||||||
"libxml2"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"micro": {
|
"micro": {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ use Symfony\Component\Console\Application;
|
|||||||
*/
|
*/
|
||||||
final class ConsoleApplication extends Application
|
final class ConsoleApplication extends Application
|
||||||
{
|
{
|
||||||
public const string VERSION = '2.7.3';
|
public const string VERSION = '2.7.4';
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -103,9 +103,8 @@ class LinuxBuilder extends UnixBuilderBase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
shell()->cd(SOURCE_PATH . '/php-src')
|
$this->seekPhpSrcLogFileOnException(fn () => shell()->cd(SOURCE_PATH . '/php-src')->exec(
|
||||||
->exec(
|
$php_configure_env . ' ' .
|
||||||
$php_configure_env . ' ' .
|
|
||||||
getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' .
|
getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' .
|
||||||
($enableCli ? '--enable-cli ' : '--disable-cli ') .
|
($enableCli ? '--enable-cli ' : '--disable-cli ') .
|
||||||
($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') .
|
($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') .
|
||||||
@@ -118,7 +117,7 @@ class LinuxBuilder extends UnixBuilderBase
|
|||||||
$zts .
|
$zts .
|
||||||
$maxExecutionTimers .
|
$maxExecutionTimers .
|
||||||
$this->makeStaticExtensionArgs() . ' '
|
$this->makeStaticExtensionArgs() . ' '
|
||||||
);
|
));
|
||||||
|
|
||||||
$this->emitPatchPoint('before-php-make');
|
$this->emitPatchPoint('before-php-make');
|
||||||
SourcePatcher::patchBeforeMake($this);
|
SourcePatcher::patchBeforeMake($this);
|
||||||
|
|||||||
@@ -118,9 +118,8 @@ class MacOSBuilder extends UnixBuilderBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
$embed_type = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static';
|
$embed_type = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static';
|
||||||
shell()->cd(SOURCE_PATH . '/php-src')
|
$this->seekPhpSrcLogFileOnException(fn () => shell()->cd(SOURCE_PATH . '/php-src')->exec(
|
||||||
->exec(
|
getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' .
|
||||||
getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' .
|
|
||||||
($enableCli ? '--enable-cli ' : '--disable-cli ') .
|
($enableCli ? '--enable-cli ' : '--disable-cli ') .
|
||||||
($enableFpm ? '--enable-fpm ' : '--disable-fpm ') .
|
($enableFpm ? '--enable-fpm ' : '--disable-fpm ') .
|
||||||
($enableEmbed ? "--enable-embed={$embed_type} " : '--disable-embed ') .
|
($enableEmbed ? "--enable-embed={$embed_type} " : '--disable-embed ') .
|
||||||
@@ -132,7 +131,7 @@ class MacOSBuilder extends UnixBuilderBase
|
|||||||
$zts .
|
$zts .
|
||||||
$this->makeStaticExtensionArgs() . ' ' .
|
$this->makeStaticExtensionArgs() . ' ' .
|
||||||
$envs_build_php
|
$envs_build_php
|
||||||
);
|
));
|
||||||
|
|
||||||
$this->emitPatchPoint('before-php-make');
|
$this->emitPatchPoint('before-php-make');
|
||||||
SourcePatcher::patchBeforeMake($this);
|
SourcePatcher::patchBeforeMake($this);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ namespace SPC\builder\unix;
|
|||||||
|
|
||||||
use SPC\builder\BuilderBase;
|
use SPC\builder\BuilderBase;
|
||||||
use SPC\builder\linux\SystemUtil as LinuxSystemUtil;
|
use SPC\builder\linux\SystemUtil as LinuxSystemUtil;
|
||||||
|
use SPC\exception\SPCException;
|
||||||
use SPC\exception\SPCInternalException;
|
use SPC\exception\SPCInternalException;
|
||||||
use SPC\exception\ValidationException;
|
use SPC\exception\ValidationException;
|
||||||
use SPC\exception\WrongUsageException;
|
use SPC\exception\WrongUsageException;
|
||||||
@@ -338,4 +339,20 @@ abstract class UnixBuilderBase extends BuilderBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seek php-src/config.log when building PHP, add it to exception.
|
||||||
|
*/
|
||||||
|
protected function seekPhpSrcLogFileOnException(callable $callback): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$callback();
|
||||||
|
} catch (SPCException $e) {
|
||||||
|
if (file_exists(SOURCE_PATH . '/php-src/config.log')) {
|
||||||
|
$e->addExtraLogFile('php-src config.log', 'php-src.config.log');
|
||||||
|
copy(SOURCE_PATH . '/php-src/config.log', SPC_LOGS_DIR . '/php-src.config.log');
|
||||||
|
}
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ trait libxml2
|
|||||||
);
|
);
|
||||||
|
|
||||||
if ($this instanceof LinuxLibraryBase) {
|
if ($this instanceof LinuxLibraryBase) {
|
||||||
$cmake->addConfigureArgs('-DIconv_IS_BUILD_IN=OFF');
|
$cmake->addConfigureArgs('-DIconv_IS_BUILT_IN=OFF');
|
||||||
}
|
}
|
||||||
|
|
||||||
$cmake->build();
|
$cmake->build();
|
||||||
|
|||||||
@@ -13,18 +13,7 @@ class GoXcaddy extends CustomPackage
|
|||||||
{
|
{
|
||||||
public static function isInstalled(): bool
|
public static function isInstalled(): bool
|
||||||
{
|
{
|
||||||
$arch = arch2gnu(php_uname('m'));
|
$folder = PKG_ROOT_PATH . '/go-xcaddy';
|
||||||
$os = match (PHP_OS_FAMILY) {
|
|
||||||
'Windows' => 'win',
|
|
||||||
'Darwin' => 'macos',
|
|
||||||
'BSD' => 'freebsd',
|
|
||||||
default => 'linux',
|
|
||||||
};
|
|
||||||
|
|
||||||
$packageName = "go-xcaddy-{$arch}-{$os}";
|
|
||||||
$pkgroot = PKG_ROOT_PATH;
|
|
||||||
$folder = "{$pkgroot}/{$packageName}";
|
|
||||||
|
|
||||||
return is_dir($folder) && is_file("{$folder}/bin/go") && is_file("{$folder}/bin/xcaddy");
|
return is_dir($folder) && is_file("{$folder}/bin/go") && is_file("{$folder}/bin/xcaddy");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +48,7 @@ class GoXcaddy extends CustomPackage
|
|||||||
'macos' => 'darwin',
|
'macos' => 'darwin',
|
||||||
default => throw new \InvalidArgumentException('Unsupported OS: ' . $name),
|
default => throw new \InvalidArgumentException('Unsupported OS: ' . $name),
|
||||||
};
|
};
|
||||||
$go_version = '1.24.4';
|
$go_version = '1.25.0';
|
||||||
$config = [
|
$config = [
|
||||||
'type' => 'url',
|
'type' => 'url',
|
||||||
'url' => "https://go.dev/dl/go{$go_version}.{$os}-{$arch}.tar.gz",
|
'url' => "https://go.dev/dl/go{$go_version}.{$os}-{$arch}.tar.gz",
|
||||||
@@ -70,15 +59,15 @@ class GoXcaddy extends CustomPackage
|
|||||||
public function extract(string $name): void
|
public function extract(string $name): void
|
||||||
{
|
{
|
||||||
$pkgroot = PKG_ROOT_PATH;
|
$pkgroot = PKG_ROOT_PATH;
|
||||||
$go_exec = "{$pkgroot}/{$name}/bin/go";
|
$go_exec = "{$pkgroot}/go-xcaddy/bin/go";
|
||||||
$xcaddy_exec = "{$pkgroot}/{$name}/bin/xcaddy";
|
$xcaddy_exec = "{$pkgroot}/go-xcaddy/bin/xcaddy";
|
||||||
if (file_exists($go_exec) && file_exists($xcaddy_exec)) {
|
if (file_exists($go_exec) && file_exists($xcaddy_exec)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$lock = json_decode(FileSystem::readFile(LockFile::LOCK_FILE), true);
|
$lock = json_decode(FileSystem::readFile(LockFile::LOCK_FILE), true);
|
||||||
$source_type = $lock[$name]['source_type'];
|
$source_type = $lock[$name]['source_type'];
|
||||||
$filename = DOWNLOAD_PATH . '/' . ($lock[$name]['filename'] ?? $lock[$name]['dirname']);
|
$filename = DOWNLOAD_PATH . '/' . ($lock[$name]['filename'] ?? $lock[$name]['dirname']);
|
||||||
$extract = $lock[$name]['move_path'] ?? "{$pkgroot}/{$name}";
|
$extract = $lock[$name]['move_path'] ?? "{$pkgroot}/go-xcaddy";
|
||||||
|
|
||||||
FileSystem::extractPackage($name, $source_type, $filename, $extract);
|
FileSystem::extractPackage($name, $source_type, $filename, $extract);
|
||||||
|
|
||||||
@@ -91,9 +80,9 @@ class GoXcaddy extends CustomPackage
|
|||||||
// install xcaddy without using musl tools, xcaddy build requires dynamic linking
|
// install xcaddy without using musl tools, xcaddy build requires dynamic linking
|
||||||
shell()
|
shell()
|
||||||
->appendEnv([
|
->appendEnv([
|
||||||
'PATH' => "{$pkgroot}/{$name}/bin:" . $sanitizedPath,
|
'PATH' => "{$pkgroot}/go-xcaddy/bin:" . $sanitizedPath,
|
||||||
'GOROOT' => "{$pkgroot}/{$name}",
|
'GOROOT' => "{$pkgroot}/go-xcaddy",
|
||||||
'GOBIN' => "{$pkgroot}/{$name}/bin",
|
'GOBIN' => "{$pkgroot}/go-xcaddy/bin",
|
||||||
'GOPATH' => "{$pkgroot}/go",
|
'GOPATH' => "{$pkgroot}/go",
|
||||||
])
|
])
|
||||||
->exec('CC=cc go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest');
|
->exec('CC=cc go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest');
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ class Zig extends CustomPackage
|
|||||||
public function extract(string $name): void
|
public function extract(string $name): void
|
||||||
{
|
{
|
||||||
$pkgroot = PKG_ROOT_PATH;
|
$pkgroot = PKG_ROOT_PATH;
|
||||||
$zig_bin_dir = "{$pkgroot}/{$name}";
|
$zig_bin_dir = "{$pkgroot}/zig";
|
||||||
|
|
||||||
$files = ['zig', 'zig-cc', 'zig-c++', 'zig-ar', 'zig-ld.lld', 'zig-ranlib', 'zig-objcopy'];
|
$files = ['zig', 'zig-cc', 'zig-c++', 'zig-ar', 'zig-ld.lld', 'zig-ranlib', 'zig-objcopy'];
|
||||||
$all_exist = true;
|
$all_exist = true;
|
||||||
@@ -120,7 +120,7 @@ class Zig extends CustomPackage
|
|||||||
$lock = json_decode(FileSystem::readFile(LockFile::LOCK_FILE), true);
|
$lock = json_decode(FileSystem::readFile(LockFile::LOCK_FILE), true);
|
||||||
$source_type = $lock[$name]['source_type'];
|
$source_type = $lock[$name]['source_type'];
|
||||||
$filename = DOWNLOAD_PATH . '/' . ($lock[$name]['filename'] ?? $lock[$name]['dirname']);
|
$filename = DOWNLOAD_PATH . '/' . ($lock[$name]['filename'] ?? $lock[$name]['dirname']);
|
||||||
$extract = "{$pkgroot}/{$name}";
|
$extract = "{$pkgroot}/zig";
|
||||||
|
|
||||||
FileSystem::extractPackage($name, $source_type, $filename, $extract);
|
FileSystem::extractPackage($name, $source_type, $filename, $extract);
|
||||||
|
|
||||||
@@ -147,16 +147,7 @@ class Zig extends CustomPackage
|
|||||||
|
|
||||||
private static function getPath(): string
|
private static function getPath(): string
|
||||||
{
|
{
|
||||||
$arch = arch2gnu(php_uname('m'));
|
return PKG_ROOT_PATH . '/zig';
|
||||||
$os = match (PHP_OS_FAMILY) {
|
|
||||||
'Windows' => 'win',
|
|
||||||
'Darwin' => 'macos',
|
|
||||||
'BSD' => 'freebsd',
|
|
||||||
default => 'linux',
|
|
||||||
};
|
|
||||||
|
|
||||||
$packageName = "zig-{$arch}-{$os}";
|
|
||||||
return PKG_ROOT_PATH . "/{$packageName}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createZigCcScript(string $bin_dir): void
|
private function createZigCcScript(string $bin_dir): void
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
||||||
BUILDROOT_ABS="$(realpath "$SCRIPT_DIR/../../buildroot/include" 2>/dev/null || true)"
|
BUILDROOT_ABS="$(realpath "$SCRIPT_DIR/../../../buildroot/include" 2>/dev/null || true)"
|
||||||
PARSED_ARGS=()
|
PARSED_ARGS=()
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
|
|||||||
Reference in New Issue
Block a user