mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-10 02:15:36 +08:00
Compare commits
1 Commits
dabdb518ce
...
pmmp-exper
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee3be6f374 |
4
.github/workflows/tests.yml
vendored
4
.github/workflows/tests.yml
vendored
@@ -140,7 +140,7 @@ jobs:
|
|||||||
run: bin/spc doctor --auto-fix
|
run: bin/spc doctor --auto-fix
|
||||||
|
|
||||||
- name: "Run Build Tests (download)"
|
- name: "Run Build Tests (download)"
|
||||||
run: bin/spc download --for-extensions="$(php src/globals/test-extensions.php extensions)" --with-php=${{ matrix.php }} --debug
|
run: bin/spc download --for-extensions="$(php src/globals/test-extensions.php)" --with-php=${{ matrix.php }} --debug
|
||||||
|
|
||||||
- name: "Run Build Tests (build)"
|
- name: "Run Build Tests (build)"
|
||||||
run: bin/spc build $(php src/globals/test-extensions.php cmd) --build-cli --build-micro --build-fpm --debug
|
run: bin/spc build "$(php src/globals/test-extensions.php)" --build-cli --build-micro --build-fpm --debug
|
||||||
|
|||||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -22,12 +22,9 @@ docker/source/
|
|||||||
|
|
||||||
# exclude self-runtime
|
# exclude self-runtime
|
||||||
/bin/*
|
/bin/*
|
||||||
!/bin/spc*
|
!/bin/spc
|
||||||
!/bin/setup-runtime*
|
!/bin/setup-runtime
|
||||||
!/bin/spc-alpine-docker
|
!/bin/spc-alpine-docker
|
||||||
|
|
||||||
# exclude windows build tools
|
|
||||||
/php-sdk-binary-tools/
|
|
||||||
|
|
||||||
# default test directory
|
# default test directory
|
||||||
/tests/var/
|
/tests/var/
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ Build single static PHP binary, with PHP project together, with popular extensio
|
|||||||
|
|
||||||
🌐 **[中文](README-zh.md)** | **[English](README.md)**
|
🌐 **[中文](README-zh.md)** | **[English](README.md)**
|
||||||
|
|
||||||
> 2.0 Release is coming soon, windows support will be added in v2.1.
|
|
||||||
|
|
||||||
The project name is static-php-cli, but it actually supports cli, fpm, micro and embed SAPI 😎
|
The project name is static-php-cli, but it actually supports cli, fpm, micro and embed SAPI 😎
|
||||||
|
|
||||||
Compile a purely static php-cli binary file with various extensions to make PHP applications more portable! (cli SAPI)
|
Compile a purely static php-cli binary file with various extensions to make PHP applications more portable! (cli SAPI)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ while [ $# -gt 0 ]; do
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
--mirror)
|
--mirror)
|
||||||
mirror="$2"
|
mirror="$2"
|
||||||
|
shift
|
||||||
;;
|
;;
|
||||||
--*)
|
--*)
|
||||||
echo "Illegal option $1"
|
echo "Illegal option $1"
|
||||||
@@ -46,7 +47,7 @@ done
|
|||||||
case "$mirror" in
|
case "$mirror" in
|
||||||
china)
|
china)
|
||||||
__PHP_RUNTIME_URL__="https://dl.static-php.dev/static-php-cli/bulk/php-8.2.13-cli-${__OS_FIXED__}-${__ARCH__}.tar.gz"
|
__PHP_RUNTIME_URL__="https://dl.static-php.dev/static-php-cli/bulk/php-8.2.13-cli-${__OS_FIXED__}-${__ARCH__}.tar.gz"
|
||||||
__COMPOSER_URL__="https://mirrors.tencent.com/composer/composer.phar"
|
__COMPOSER_URL__="https://mirrors.aliyun.com/composer/composer.phar"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -1,115 +0,0 @@
|
|||||||
param (
|
|
||||||
[string] ${action}
|
|
||||||
)
|
|
||||||
|
|
||||||
function AddToPath {
|
|
||||||
param (
|
|
||||||
[string]$pathToAdd
|
|
||||||
)
|
|
||||||
|
|
||||||
$currentPath = [System.Environment]::GetEnvironmentVariable('Path', 'User')
|
|
||||||
|
|
||||||
if ($currentPath -notlike "*$pathToAdd*") {
|
|
||||||
$newPath = $currentPath + ";$pathToAdd"
|
|
||||||
[System.Environment]::SetEnvironmentVariable('Path', $newPath, 'User')
|
|
||||||
Write-Host "Added '$pathToAdd' to Path."
|
|
||||||
Write-Host "To remove path, use: " -NoNewline
|
|
||||||
Write-Host "bin/setup-runtime remove-path" -ForegroundColor Cyan
|
|
||||||
} else {
|
|
||||||
Write-Host "Path already exists."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function RemoveFromPath {
|
|
||||||
param (
|
|
||||||
[string]$pathToRemove
|
|
||||||
)
|
|
||||||
|
|
||||||
$currentPath = [System.Environment]::GetEnvironmentVariable('Path', 'User')
|
|
||||||
|
|
||||||
if ($currentPath -like "*$pathToRemove*") {
|
|
||||||
$newPath = $currentPath -replace [regex]::Escape($pathToRemove), ''
|
|
||||||
[System.Environment]::SetEnvironmentVariable('Path', $newPath, 'User')
|
|
||||||
Write-Host "Removed Path '$pathToRemove'"
|
|
||||||
} else {
|
|
||||||
Write-Host "Path '$pathToRemove' not in Path"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# working dir
|
|
||||||
$WorkingDir = (Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Definition))
|
|
||||||
|
|
||||||
if ($action -eq 'add-path') {
|
|
||||||
AddToPath ($WorkingDir + '\runtime')
|
|
||||||
exit 0
|
|
||||||
} elseif ($action -eq 'remove-path') {
|
|
||||||
RemoveFromPath ($WorkingDir + '\runtime')
|
|
||||||
exit 0
|
|
||||||
} elseif (-not($action -eq '')) {
|
|
||||||
Write-Host ("Invalid action: " + $action) -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# get php 8.1 specific version
|
|
||||||
$API = (Invoke-WebRequest -Uri "https://www.php.net/releases/index.php?json&version=8.1") | ConvertFrom-Json
|
|
||||||
|
|
||||||
# php windows download
|
|
||||||
$PHPRuntimeUrl = "https://windows.php.net/downloads/releases/php-" + $API.version + "-Win32-vs16-x64.zip"
|
|
||||||
$ComposerUrl = "https://getcomposer.org/download/latest-stable/composer.phar"
|
|
||||||
|
|
||||||
# create dir
|
|
||||||
New-Item -Path "downloads" -ItemType Directory -Force | Out-Null
|
|
||||||
|
|
||||||
# download php
|
|
||||||
if (-not(Test-Path "downloads\php.zip"))
|
|
||||||
{
|
|
||||||
Write-Host "Downloading PHP ..."
|
|
||||||
Invoke-WebRequest $PHPRuntimeUrl -OutFile "downloads\php.zip"
|
|
||||||
}
|
|
||||||
|
|
||||||
# extract php
|
|
||||||
New-Item -Path "runtime" -ItemType Directory -Force | Out-Null
|
|
||||||
Write-Host "Extracting php.zip ..."
|
|
||||||
Expand-Archive -Path "downloads/php.zip" -DestinationPath "runtime" -Force
|
|
||||||
# make php.ini
|
|
||||||
Move-Item -Path "runtime\php.ini-production" -Destination "runtime\php.ini" -Force
|
|
||||||
$OriginINI = Get-Content -Path "runtime\php.ini" -Raw
|
|
||||||
$OriginINI = $OriginINI -replace ';extension=openssl', 'extension=openssl'
|
|
||||||
$OriginINI = $OriginINI -replace ';extension=curl', 'extension=curl'
|
|
||||||
$OriginINI = $OriginINI -replace ';extension=mbstring', 'extension=mbstring'
|
|
||||||
$OriginINI = $OriginINI -replace ';extension=sodium', 'extension=sodium'
|
|
||||||
$OriginINI = $OriginINI -replace ';extension_dir = "./"', ('extension_dir = "' + (Split-Path -Parent $MyInvocation.MyCommand.Definition) + '\..\runtime\ext"')
|
|
||||||
$OriginINI | Set-Content -Path "runtime\php.ini"
|
|
||||||
|
|
||||||
# download composer
|
|
||||||
if (-not(Test-Path "runtime\composer.phar"))
|
|
||||||
{
|
|
||||||
Write-Host "Downloading composer ..."
|
|
||||||
Invoke-WebRequest $ComposerUrl -OutFile "downloads\composer.phar"
|
|
||||||
Move-Item -Path "downloads\composer.phar" -Destination "runtime\composer.phar" -Force
|
|
||||||
}
|
|
||||||
|
|
||||||
# create runtime\composer.ps1
|
|
||||||
$ComposerContent = '
|
|
||||||
$WorkingDir = (Split-Path -Parent $MyInvocation.MyCommand.Definition)
|
|
||||||
Start-Process ($WorkingDir + "\php.exe") ($WorkingDir + "\composer.phar " + $args) -NoNewWindow -Wait
|
|
||||||
'
|
|
||||||
$ComposerContent | Set-Content -Path 'runtime\composer.ps1' -Encoding UTF8
|
|
||||||
|
|
||||||
Write-Host "Successfully downloaded PHP and Composer !" -ForegroundColor Green
|
|
||||||
Write-Host "Use static-php-cli: " -NoNewline
|
|
||||||
Write-Host "bin/spc" -ForegroundColor Cyan
|
|
||||||
Write-Host "Use php: " -NoNewline
|
|
||||||
Write-Host "runtime/php" -ForegroundColor Cyan
|
|
||||||
Write-Host "Use composer: " -NoNewline
|
|
||||||
Write-Host "runtime/composer" -ForegroundColor Cyan
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "Don't forget installing composer dependencies '" -NoNewline
|
|
||||||
Write-Host "runtime/composer install" -ForegroundColor Cyan -NoNewline
|
|
||||||
Write-Host "' before using static-php-cli !"
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "If you want to use this PHP for quality tools (like phpstan, php-cs-fixer) or other project,"
|
|
||||||
Write-Host "or use PHP, Composer as system executable,"
|
|
||||||
Write-Host "use '" -NoNewline
|
|
||||||
Write-Host "bin/setup-runtime add-path" -ForegroundColor Cyan -NoNewline
|
|
||||||
Write-Host "' to add runtime dir in Path."
|
|
||||||
8
bin/spc
8
bin/spc
@@ -4,13 +4,7 @@
|
|||||||
use SPC\ConsoleApplication;
|
use SPC\ConsoleApplication;
|
||||||
use SPC\exception\ExceptionHandler;
|
use SPC\exception\ExceptionHandler;
|
||||||
|
|
||||||
if (file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
|
require_once __DIR__ . '/../vendor/autoload.php';
|
||||||
// Current: ./bin (git/project mode)
|
|
||||||
require_once dirname(__DIR__) . '/vendor/autoload.php';
|
|
||||||
} else {
|
|
||||||
// Current: ./vendor/crazywhalecc/static-php-cli/bin (composer library mode)
|
|
||||||
require_once dirname(__DIR__, 3) . '/autoload.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
// 防止 Micro 打包状态下不支持中文的显示(虽然这个项目目前好像没输出过中文?)
|
// 防止 Micro 打包状态下不支持中文的显示(虽然这个项目目前好像没输出过中文?)
|
||||||
if (PHP_OS_FAMILY === 'Windows' && Phar::running()) {
|
if (PHP_OS_FAMILY === 'Windows' && Phar::running()) {
|
||||||
|
|||||||
12
bin/spc.ps1
12
bin/spc.ps1
@@ -1,12 +0,0 @@
|
|||||||
$PHP_Exec = "runtime\php.exe"
|
|
||||||
|
|
||||||
if (-not(Test-Path $PHP_Exec)) {
|
|
||||||
$PHP_Exec = Get-Command php.exe -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Definition
|
|
||||||
if (-not $PHP_Exec) {
|
|
||||||
Write-Host "Error: PHP not found, you need to install PHP on your system or use 'bin/setup-runtime'." -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$phpArgs = "bin\spc " + $args
|
|
||||||
Start-Process $PHP_Exec -ArgumentList $phpArgs -NoNewWindow -Wait
|
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": ">= 8.1",
|
"php": ">= 8.1",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
|
"ext-pcntl": "*",
|
||||||
"laravel/prompts": "^0.1.12",
|
"laravel/prompts": "^0.1.12",
|
||||||
"symfony/console": "^5.4 || ^6 || ^7",
|
"symfony/console": "^5.4 || ^6 || ^7",
|
||||||
"zhamao/logger": "^1.0"
|
"zhamao/logger": "^1.0"
|
||||||
|
|||||||
403
composer.lock
generated
403
composer.lock
generated
@@ -4,20 +4,20 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "30d9cdb68b65870a63338606f68130f8",
|
"content-hash": "198b6207aabb33778c51282cb7aa0c52",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "illuminate/collections",
|
"name": "illuminate/collections",
|
||||||
"version": "v10.38.1",
|
"version": "v10.33.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/collections.git",
|
"url": "https://github.com/illuminate/collections.git",
|
||||||
"reference": "2677b3962a88640f92dba8a1f4ed38dcaaf13dad"
|
"reference": "766a3b6c3e5c8011b037a147266dcf7f93b21223"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/2677b3962a88640f92dba8a1f4ed38dcaaf13dad",
|
"url": "https://api.github.com/repos/illuminate/collections/zipball/766a3b6c3e5c8011b037a147266dcf7f93b21223",
|
||||||
"reference": "2677b3962a88640f92dba8a1f4ed38dcaaf13dad",
|
"reference": "766a3b6c3e5c8011b037a147266dcf7f93b21223",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -59,11 +59,11 @@
|
|||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2023-12-15T18:25:00+00:00"
|
"time": "2023-11-20T15:45:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/conditionable",
|
"name": "illuminate/conditionable",
|
||||||
"version": "v10.38.1",
|
"version": "v10.33.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/conditionable.git",
|
"url": "https://github.com/illuminate/conditionable.git",
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/contracts",
|
"name": "illuminate/contracts",
|
||||||
"version": "v10.38.1",
|
"version": "v10.33.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/contracts.git",
|
"url": "https://github.com/illuminate/contracts.git",
|
||||||
@@ -157,7 +157,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/macroable",
|
"name": "illuminate/macroable",
|
||||||
"version": "v10.38.1",
|
"version": "v10.33.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/illuminate/macroable.git",
|
"url": "https://github.com/illuminate/macroable.git",
|
||||||
@@ -414,16 +414,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v6.4.1",
|
"version": "v6.3.8",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd"
|
"reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd",
|
"url": "https://api.github.com/repos/symfony/console/zipball/0d14a9f6d04d4ac38a8cea1171f4554e325dae92",
|
||||||
"reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd",
|
"reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -431,7 +431,7 @@
|
|||||||
"symfony/deprecation-contracts": "^2.5|^3",
|
"symfony/deprecation-contracts": "^2.5|^3",
|
||||||
"symfony/polyfill-mbstring": "~1.0",
|
"symfony/polyfill-mbstring": "~1.0",
|
||||||
"symfony/service-contracts": "^2.5|^3",
|
"symfony/service-contracts": "^2.5|^3",
|
||||||
"symfony/string": "^5.4|^6.0|^7.0"
|
"symfony/string": "^5.4|^6.0"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/dependency-injection": "<5.4",
|
"symfony/dependency-injection": "<5.4",
|
||||||
@@ -445,16 +445,12 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"psr/log": "^1|^2|^3",
|
"psr/log": "^1|^2|^3",
|
||||||
"symfony/config": "^5.4|^6.0|^7.0",
|
"symfony/config": "^5.4|^6.0",
|
||||||
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
|
"symfony/dependency-injection": "^5.4|^6.0",
|
||||||
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
|
"symfony/event-dispatcher": "^5.4|^6.0",
|
||||||
"symfony/http-foundation": "^6.4|^7.0",
|
"symfony/lock": "^5.4|^6.0",
|
||||||
"symfony/http-kernel": "^6.4|^7.0",
|
"symfony/process": "^5.4|^6.0",
|
||||||
"symfony/lock": "^5.4|^6.0|^7.0",
|
"symfony/var-dumper": "^5.4|^6.0"
|
||||||
"symfony/messenger": "^5.4|^6.0|^7.0",
|
|
||||||
"symfony/process": "^5.4|^6.0|^7.0",
|
|
||||||
"symfony/stopwatch": "^5.4|^6.0|^7.0",
|
|
||||||
"symfony/var-dumper": "^5.4|^6.0|^7.0"
|
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -488,7 +484,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v6.4.1"
|
"source": "https://github.com/symfony/console/tree/v6.3.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -504,7 +500,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-11-30T10:54:28+00:00"
|
"time": "2023-10-31T08:09:35+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
@@ -987,16 +983,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.8",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "b45fcf399ea9c3af543a92edf7172ba21174d809"
|
"reference": "13880a87790c76ef994c91e87efb96134522577a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809",
|
"url": "https://api.github.com/repos/symfony/string/zipball/13880a87790c76ef994c91e87efb96134522577a",
|
||||||
"reference": "b45fcf399ea9c3af543a92edf7172ba21174d809",
|
"reference": "13880a87790c76ef994c91e87efb96134522577a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1010,11 +1006,11 @@
|
|||||||
"symfony/translation-contracts": "<2.5"
|
"symfony/translation-contracts": "<2.5"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/error-handler": "^5.4|^6.0|^7.0",
|
"symfony/error-handler": "^5.4|^6.0",
|
||||||
"symfony/http-client": "^5.4|^6.0|^7.0",
|
"symfony/http-client": "^5.4|^6.0",
|
||||||
"symfony/intl": "^6.2|^7.0",
|
"symfony/intl": "^6.2",
|
||||||
"symfony/translation-contracts": "^2.5|^3.0",
|
"symfony/translation-contracts": "^2.5|^3.0",
|
||||||
"symfony/var-exporter": "^5.4|^6.0|^7.0"
|
"symfony/var-exporter": "^5.4|^6.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1053,7 +1049,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v6.4.0"
|
"source": "https://github.com/symfony/string/tree/v6.3.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1069,7 +1065,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-11-28T20:41:49+00:00"
|
"time": "2023-11-09T08:28:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "zhamao/logger",
|
"name": "zhamao/logger",
|
||||||
@@ -1695,30 +1691,29 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "captainhook/captainhook",
|
"name": "captainhook/captainhook",
|
||||||
"version": "5.19.2",
|
"version": "5.18.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/captainhookphp/captainhook.git",
|
"url": "https://github.com/captainhookphp/captainhook.git",
|
||||||
"reference": "604bfc55fa40d6fe8c0275ca707ee80920b3b3f1"
|
"reference": "b7bc503a40ccfe80ea9638e4921b4697669d725f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/604bfc55fa40d6fe8c0275ca707ee80920b3b3f1",
|
"url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/b7bc503a40ccfe80ea9638e4921b4697669d725f",
|
||||||
"reference": "604bfc55fa40d6fe8c0275ca707ee80920b3b3f1",
|
"reference": "b7bc503a40ccfe80ea9638e4921b4697669d725f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"captainhook/secrets": "^0.9.4",
|
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-spl": "*",
|
"ext-spl": "*",
|
||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"php": ">=8.0",
|
"php": ">=7.4",
|
||||||
"sebastianfeldmann/camino": "^0.9.2",
|
"sebastianfeldmann/camino": "^0.9.2",
|
||||||
"sebastianfeldmann/cli": "^3.3",
|
"sebastianfeldmann/cli": "^3.3",
|
||||||
"sebastianfeldmann/git": "^3.9",
|
"sebastianfeldmann/git": "^3.9",
|
||||||
"symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
|
"symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0",
|
||||||
"symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
|
"symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0",
|
||||||
"symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
|
"symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
|
||||||
},
|
},
|
||||||
"replace": {
|
"replace": {
|
||||||
"sebastianfeldmann/captainhook": "*"
|
"sebastianfeldmann/captainhook": "*"
|
||||||
@@ -1755,7 +1750,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "PHP git hook manager",
|
"description": "PHP git hook manager",
|
||||||
"homepage": "http://php.captainhook.info/",
|
"homepage": "https://github.com/captainhookphp/captainhook",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"commit-msg",
|
"commit-msg",
|
||||||
"git",
|
"git",
|
||||||
@@ -1767,7 +1762,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/captainhookphp/captainhook/issues",
|
"issues": "https://github.com/captainhookphp/captainhook/issues",
|
||||||
"source": "https://github.com/captainhookphp/captainhook/tree/5.19.2"
|
"source": "https://github.com/captainhookphp/captainhook/tree/5.18.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1775,7 +1770,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-18T14:06:12+00:00"
|
"time": "2023-11-05T13:56:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "captainhook/plugin-composer",
|
"name": "captainhook/plugin-composer",
|
||||||
@@ -1832,62 +1827,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2022-01-28T04:35:22+00:00"
|
"time": "2022-01-28T04:35:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "captainhook/secrets",
|
|
||||||
"version": "0.9.5",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/captainhookphp/secrets.git",
|
|
||||||
"reference": "8aa90d5b9b7892abd11b9da2fc172a7b32b90cbe"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/captainhookphp/secrets/zipball/8aa90d5b9b7892abd11b9da2fc172a7b32b90cbe",
|
|
||||||
"reference": "8aa90d5b9b7892abd11b9da2fc172a7b32b90cbe",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"ext-mbstring": "*",
|
|
||||||
"php": ">=8.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"CaptainHook\\Secrets\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Sebastian Feldmann",
|
|
||||||
"email": "sf@sebastian-feldmann.info"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Utility classes to detect secrets",
|
|
||||||
"keywords": [
|
|
||||||
"commit-msg",
|
|
||||||
"keys",
|
|
||||||
"passwords",
|
|
||||||
"post-merge",
|
|
||||||
"prepare-commit-msg",
|
|
||||||
"secrets",
|
|
||||||
"tokens"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/captainhookphp/secrets/issues",
|
|
||||||
"source": "https://github.com/captainhookphp/secrets/tree/0.9.5"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/sponsors/sebastianfeldmann",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2023-11-30T18:10:18+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "composer/pcre",
|
"name": "composer/pcre",
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
@@ -2239,29 +2178,31 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fidry/filesystem",
|
"name": "fidry/filesystem",
|
||||||
"version": "1.2.1",
|
"version": "1.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/theofidry/filesystem.git",
|
"url": "https://github.com/theofidry/filesystem.git",
|
||||||
"reference": "8303225d289da1c434f6009743fbe9aad852de0c"
|
"reference": "1dd372ab3eb8b84ffe9578bff576b00c9a44ee46"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/theofidry/filesystem/zipball/8303225d289da1c434f6009743fbe9aad852de0c",
|
"url": "https://api.github.com/repos/theofidry/filesystem/zipball/1dd372ab3eb8b84ffe9578bff576b00c9a44ee46",
|
||||||
"reference": "8303225d289da1c434f6009743fbe9aad852de0c",
|
"reference": "1dd372ab3eb8b84ffe9578bff576b00c9a44ee46",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.1",
|
"php": "^8.1",
|
||||||
"symfony/filesystem": "^6.4 || ^7.0",
|
"symfony/filesystem": "^6.3",
|
||||||
"thecodingmachine/safe": "^2.0"
|
"thecodingmachine/safe": "^2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"bamarni/composer-bin-plugin": "^1.4",
|
"bamarni/composer-bin-plugin": "^1.4",
|
||||||
"ergebnis/composer-normalize": "^2.28",
|
"ergebnis/composer-normalize": "^2.28",
|
||||||
"infection/infection": ">=0.26",
|
"infection/infection": "^0.26",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.0",
|
||||||
"phpunit/phpunit": "^10.3",
|
"phpunit/phpunit": "^10.3",
|
||||||
"symfony/finder": "^6.4 || ^7.0"
|
"symfony/finder": "^6.3",
|
||||||
|
"symfony/phpunit-bridge": "^6.2"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
@@ -2294,7 +2235,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/theofidry/filesystem/issues",
|
"issues": "https://github.com/theofidry/filesystem/issues",
|
||||||
"source": "https://github.com/theofidry/filesystem/tree/1.2.1"
|
"source": "https://github.com/theofidry/filesystem/tree/1.1.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2302,7 +2243,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-10T13:29:09+00:00"
|
"time": "2023-10-07T07:32:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filp/whoops",
|
"name": "filp/whoops",
|
||||||
@@ -2377,16 +2318,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "friendsofphp/php-cs-fixer",
|
"name": "friendsofphp/php-cs-fixer",
|
||||||
"version": "v3.41.1",
|
"version": "v3.40.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
||||||
"reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6"
|
"reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6",
|
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/27d2b3265b5d550ec411b4319967ae7cfddfb2e0",
|
||||||
"reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6",
|
"reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2416,6 +2357,8 @@
|
|||||||
"php-cs-fixer/accessible-object": "^1.1",
|
"php-cs-fixer/accessible-object": "^1.1",
|
||||||
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4",
|
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4",
|
||||||
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4",
|
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4",
|
||||||
|
"phpspec/prophecy": "^1.17",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.0",
|
||||||
"phpunit/phpunit": "^9.6",
|
"phpunit/phpunit": "^9.6",
|
||||||
"symfony/phpunit-bridge": "^6.3.8 || ^7.0",
|
"symfony/phpunit-bridge": "^6.3.8 || ^7.0",
|
||||||
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
|
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
|
||||||
@@ -2456,7 +2399,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
||||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1"
|
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2464,7 +2407,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-10T19:59:27+00:00"
|
"time": "2023-11-26T09:25:53+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "humbug/box",
|
"name": "humbug/box",
|
||||||
@@ -2898,16 +2841,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/iter",
|
"name": "nikic/iter",
|
||||||
"version": "v2.4.0",
|
"version": "v2.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nikic/iter.git",
|
"url": "https://github.com/nikic/iter.git",
|
||||||
"reference": "09cd930fa9ff55747f34c7184532a5a1bd2385b1"
|
"reference": "d9f88bc04b5b453914373e70c041353d8e67c3f5"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nikic/iter/zipball/09cd930fa9ff55747f34c7184532a5a1bd2385b1",
|
"url": "https://api.github.com/repos/nikic/iter/zipball/d9f88bc04b5b453914373e70c041353d8e67c3f5",
|
||||||
"reference": "09cd930fa9ff55747f34c7184532a5a1bd2385b1",
|
"reference": "d9f88bc04b5b453914373e70c041353d8e67c3f5",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2944,22 +2887,22 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nikic/iter/issues",
|
"issues": "https://github.com/nikic/iter/issues",
|
||||||
"source": "https://github.com/nikic/iter/tree/v2.4.0"
|
"source": "https://github.com/nikic/iter/tree/v2.3.0"
|
||||||
},
|
},
|
||||||
"time": "2023-12-10T20:43:19+00:00"
|
"time": "2023-07-25T19:55:40+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
"version": "v4.18.0",
|
"version": "v4.17.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||||
"reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
|
"reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
|
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
|
||||||
"reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
|
"reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3000,9 +2943,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
|
"source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
|
||||||
},
|
},
|
||||||
"time": "2023-12-10T21:03:43+00:00"
|
"time": "2023-08-13T19:53:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nunomaduro/collision",
|
"name": "nunomaduro/collision",
|
||||||
@@ -3534,16 +3477,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "1.24.5",
|
"version": "1.24.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc"
|
"reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496",
|
||||||
"reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc",
|
"reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3575,22 +3518,22 @@
|
|||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4"
|
||||||
},
|
},
|
||||||
"time": "2023-12-16T09:33:33+00:00"
|
"time": "2023-11-26T18:29:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.10.50",
|
"version": "1.10.44",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "06a98513ac72c03e8366b5a0cb00750b487032e4"
|
"reference": "bf84367c53a23f759513985c54ffe0d0c249825b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/bf84367c53a23f759513985c54ffe0d0c249825b",
|
||||||
"reference": "06a98513ac72c03e8366b5a0cb00750b487032e4",
|
"reference": "bf84367c53a23f759513985c54ffe0d0c249825b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -3639,27 +3582,27 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-13T10:59:42+00:00"
|
"time": "2023-11-21T16:30:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "10.1.11",
|
"version": "10.1.9",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
"reference": "78c3b7625965c2513ee96569a4dbb62601784145"
|
"reference": "a56a9ab2f680246adcf3db43f38ddf1765774735"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a56a9ab2f680246adcf3db43f38ddf1765774735",
|
||||||
"reference": "78c3b7625965c2513ee96569a4dbb62601784145",
|
"reference": "a56a9ab2f680246adcf3db43f38ddf1765774735",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-libxml": "*",
|
"ext-libxml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"nikic/php-parser": "^4.18 || ^5.0",
|
"nikic/php-parser": "^4.15",
|
||||||
"php": ">=8.1",
|
"php": ">=8.1",
|
||||||
"phpunit/php-file-iterator": "^4.0",
|
"phpunit/php-file-iterator": "^4.0",
|
||||||
"phpunit/php-text-template": "^3.0",
|
"phpunit/php-text-template": "^3.0",
|
||||||
@@ -3709,7 +3652,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
|
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11"
|
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.9"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3717,7 +3660,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-21T15:38:30+00:00"
|
"time": "2023-11-23T12:23:20+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
@@ -3964,16 +3907,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "10.5.3",
|
"version": "10.4.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19"
|
"reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6fce887c71076a73f32fd3e0774a6833fc5c7f19",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cacd8b9dd224efa8eb28beb69004126c7ca1a1a1",
|
||||||
"reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19",
|
"reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -4013,7 +3956,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "10.5-dev"
|
"dev-main": "10.4-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -4045,7 +3988,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.3"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.2"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -4061,7 +4004,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-13T07:25:23+00:00"
|
"time": "2023-10-26T07:21:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/event-dispatcher",
|
"name": "psr/event-dispatcher",
|
||||||
@@ -4359,20 +4302,20 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/complexity",
|
"name": "sebastian/complexity",
|
||||||
"version": "3.2.0",
|
"version": "3.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/complexity.git",
|
"url": "https://github.com/sebastianbergmann/complexity.git",
|
||||||
"reference": "68ff824baeae169ec9f2137158ee529584553799"
|
"reference": "68cfb347a44871f01e33ab0ef8215966432f6957"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799",
|
"url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957",
|
||||||
"reference": "68ff824baeae169ec9f2137158ee529584553799",
|
"reference": "68cfb347a44871f01e33ab0ef8215966432f6957",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"nikic/php-parser": "^4.18 || ^5.0",
|
"nikic/php-parser": "^4.10",
|
||||||
"php": ">=8.1"
|
"php": ">=8.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
@@ -4381,7 +4324,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "3.2-dev"
|
"dev-main": "3.1-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -4405,7 +4348,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/complexity/issues",
|
"issues": "https://github.com/sebastianbergmann/complexity/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/complexity/security/policy",
|
"security": "https://github.com/sebastianbergmann/complexity/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0"
|
"source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -4413,7 +4356,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-21T08:37:17+00:00"
|
"time": "2023-09-28T11:50:59+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/diff",
|
"name": "sebastian/diff",
|
||||||
@@ -4688,20 +4631,20 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/lines-of-code",
|
"name": "sebastian/lines-of-code",
|
||||||
"version": "2.0.2",
|
"version": "2.0.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
|
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
|
||||||
"reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0"
|
"reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0",
|
"url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d",
|
||||||
"reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0",
|
"reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"nikic/php-parser": "^4.18 || ^5.0",
|
"nikic/php-parser": "^4.10",
|
||||||
"php": ">=8.1"
|
"php": ">=8.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
@@ -4734,7 +4677,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
|
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
|
||||||
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
|
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
|
||||||
"source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2"
|
"source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -4742,7 +4685,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-21T08:38:20+00:00"
|
"time": "2023-08-31T09:25:50+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/object-enumerator",
|
"name": "sebastian/object-enumerator",
|
||||||
@@ -5205,16 +5148,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "seld/jsonlint",
|
"name": "seld/jsonlint",
|
||||||
"version": "1.10.1",
|
"version": "1.10.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Seldaek/jsonlint.git",
|
"url": "https://github.com/Seldaek/jsonlint.git",
|
||||||
"reference": "76d449a358ece77d6f1d6331c68453e657172202"
|
"reference": "594fd6462aad8ecee0b45ca5045acea4776667f1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/76d449a358ece77d6f1d6331c68453e657172202",
|
"url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1",
|
||||||
"reference": "76d449a358ece77d6f1d6331c68453e657172202",
|
"reference": "594fd6462aad8ecee0b45ca5045acea4776667f1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -5241,7 +5184,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Jordi Boggiano",
|
"name": "Jordi Boggiano",
|
||||||
"email": "j.boggiano@seld.be",
|
"email": "j.boggiano@seld.be",
|
||||||
"homepage": "https://seld.be"
|
"homepage": "http://seld.be"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "JSON Linter",
|
"description": "JSON Linter",
|
||||||
@@ -5253,7 +5196,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/Seldaek/jsonlint/issues",
|
"issues": "https://github.com/Seldaek/jsonlint/issues",
|
||||||
"source": "https://github.com/Seldaek/jsonlint/tree/1.10.1"
|
"source": "https://github.com/Seldaek/jsonlint/tree/1.10.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5265,20 +5208,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-12-18T13:03:25+00:00"
|
"time": "2023-05-11T13:16:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/event-dispatcher",
|
"name": "symfony/event-dispatcher",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||||
"reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6"
|
"reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6",
|
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
|
||||||
"reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6",
|
"reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -5295,13 +5238,13 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"psr/log": "^1|^2|^3",
|
"psr/log": "^1|^2|^3",
|
||||||
"symfony/config": "^5.4|^6.0|^7.0",
|
"symfony/config": "^5.4|^6.0",
|
||||||
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
|
"symfony/dependency-injection": "^5.4|^6.0",
|
||||||
"symfony/error-handler": "^5.4|^6.0|^7.0",
|
"symfony/error-handler": "^5.4|^6.0",
|
||||||
"symfony/expression-language": "^5.4|^6.0|^7.0",
|
"symfony/expression-language": "^5.4|^6.0",
|
||||||
"symfony/http-foundation": "^5.4|^6.0|^7.0",
|
"symfony/http-foundation": "^5.4|^6.0",
|
||||||
"symfony/service-contracts": "^2.5|^3",
|
"symfony/service-contracts": "^2.5|^3",
|
||||||
"symfony/stopwatch": "^5.4|^6.0|^7.0"
|
"symfony/stopwatch": "^5.4|^6.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -5329,7 +5272,7 @@
|
|||||||
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
|
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0"
|
"source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5345,7 +5288,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-07-27T06:52:43+00:00"
|
"time": "2023-07-06T06:56:43+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/event-dispatcher-contracts",
|
"name": "symfony/event-dispatcher-contracts",
|
||||||
@@ -5425,16 +5368,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/filesystem",
|
"name": "symfony/filesystem",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/filesystem.git",
|
"url": "https://github.com/symfony/filesystem.git",
|
||||||
"reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59"
|
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59",
|
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
|
||||||
"reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59",
|
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -5468,7 +5411,7 @@
|
|||||||
"description": "Provides basic utilities for the filesystem",
|
"description": "Provides basic utilities for the filesystem",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/filesystem/tree/v6.4.0"
|
"source": "https://github.com/symfony/filesystem/tree/v6.3.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5484,27 +5427,27 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-07-26T17:27:13+00:00"
|
"time": "2023-06-01T08:30:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/finder",
|
"name": "symfony/finder",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/finder.git",
|
"url": "https://github.com/symfony/finder.git",
|
||||||
"reference": "11d736e97f116ac375a81f96e662911a34cd50ce"
|
"reference": "a1b31d88c0e998168ca7792f222cbecee47428c4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce",
|
"url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4",
|
||||||
"reference": "11d736e97f116ac375a81f96e662911a34cd50ce",
|
"reference": "a1b31d88c0e998168ca7792f222cbecee47428c4",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.1"
|
"php": ">=8.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/filesystem": "^6.0|^7.0"
|
"symfony/filesystem": "^6.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -5532,7 +5475,7 @@
|
|||||||
"description": "Finds files and directories via an intuitive fluent interface",
|
"description": "Finds files and directories via an intuitive fluent interface",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/finder/tree/v6.4.0"
|
"source": "https://github.com/symfony/finder/tree/v6.3.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5548,20 +5491,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-10-31T17:30:12+00:00"
|
"time": "2023-09-26T12:56:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/options-resolver",
|
"name": "symfony/options-resolver",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/options-resolver.git",
|
"url": "https://github.com/symfony/options-resolver.git",
|
||||||
"reference": "22301f0e7fdeaacc14318928612dee79be99860e"
|
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e",
|
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
|
||||||
"reference": "22301f0e7fdeaacc14318928612dee79be99860e",
|
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -5599,7 +5542,7 @@
|
|||||||
"options"
|
"options"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/options-resolver/tree/v6.4.0"
|
"source": "https://github.com/symfony/options-resolver/tree/v6.3.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5615,20 +5558,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-08-08T10:16:24+00:00"
|
"time": "2023-05-12T14:21:09+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/process",
|
"name": "symfony/process",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/process.git",
|
"url": "https://github.com/symfony/process.git",
|
||||||
"reference": "191703b1566d97a5425dc969e4350d32b8ef17aa"
|
"reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa",
|
"url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
|
||||||
"reference": "191703b1566d97a5425dc969e4350d32b8ef17aa",
|
"reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -5660,7 +5603,7 @@
|
|||||||
"description": "Executes commands in sub-processes",
|
"description": "Executes commands in sub-processes",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/process/tree/v6.4.0"
|
"source": "https://github.com/symfony/process/tree/v6.3.4"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5676,11 +5619,11 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-11-17T21:06:49+00:00"
|
"time": "2023-08-07T10:39:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/stopwatch",
|
"name": "symfony/stopwatch",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/stopwatch.git",
|
"url": "https://github.com/symfony/stopwatch.git",
|
||||||
@@ -5722,7 +5665,7 @@
|
|||||||
"description": "Provides a way to profile code",
|
"description": "Provides a way to profile code",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/stopwatch/tree/v6.4.0"
|
"source": "https://github.com/symfony/stopwatch/tree/v6.3.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5742,16 +5685,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/var-dumper",
|
"name": "symfony/var-dumper",
|
||||||
"version": "v6.4.0",
|
"version": "v6.3.8",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/var-dumper.git",
|
"url": "https://github.com/symfony/var-dumper.git",
|
||||||
"reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6"
|
"reference": "81acabba9046550e89634876ca64bfcd3c06aa0a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6",
|
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a",
|
||||||
"reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6",
|
"reference": "81acabba9046550e89634876ca64bfcd3c06aa0a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -5764,11 +5707,10 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"symfony/console": "^5.4|^6.0|^7.0",
|
"symfony/console": "^5.4|^6.0",
|
||||||
"symfony/error-handler": "^6.3|^7.0",
|
"symfony/http-kernel": "^5.4|^6.0",
|
||||||
"symfony/http-kernel": "^5.4|^6.0|^7.0",
|
"symfony/process": "^5.4|^6.0",
|
||||||
"symfony/process": "^5.4|^6.0|^7.0",
|
"symfony/uid": "^5.4|^6.0",
|
||||||
"symfony/uid": "^5.4|^6.0|^7.0",
|
|
||||||
"twig/twig": "^2.13|^3.0.4"
|
"twig/twig": "^2.13|^3.0.4"
|
||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
@@ -5807,7 +5749,7 @@
|
|||||||
"dump"
|
"dump"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/var-dumper/tree/v6.4.0"
|
"source": "https://github.com/symfony/var-dumper/tree/v6.3.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -5823,7 +5765,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-11-09T08:28:32+00:00"
|
"time": "2023-11-08T10:42:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "thecodingmachine/safe",
|
"name": "thecodingmachine/safe",
|
||||||
@@ -6080,8 +6022,9 @@
|
|||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": ">= 8.1",
|
"php": ">= 8.1",
|
||||||
"ext-mbstring": "*"
|
"ext-mbstring": "*",
|
||||||
|
"ext-pcntl": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"plugin-api-version": "2.6.0"
|
"plugin-api-version": "2.2.0"
|
||||||
}
|
}
|
||||||
|
|||||||
106
config/ext.json
106
config/ext.json
@@ -16,6 +16,14 @@
|
|||||||
"calendar": {
|
"calendar": {
|
||||||
"type": "builtin"
|
"type": "builtin"
|
||||||
},
|
},
|
||||||
|
"crypto": {
|
||||||
|
"type": "external",
|
||||||
|
"arg-type": "with",
|
||||||
|
"source": "ext-crypto",
|
||||||
|
"lib-depends": [
|
||||||
|
"openssl"
|
||||||
|
]
|
||||||
|
},
|
||||||
"ctype": {
|
"ctype": {
|
||||||
"type": "builtin"
|
"type": "builtin"
|
||||||
},
|
},
|
||||||
@@ -168,6 +176,14 @@
|
|||||||
"openssl"
|
"openssl"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"leveldb": {
|
||||||
|
"type": "external",
|
||||||
|
"arg-type": "with-prefix",
|
||||||
|
"source": "pmmp-leveldb",
|
||||||
|
"lib-depends": [
|
||||||
|
"leveldb"
|
||||||
|
]
|
||||||
|
},
|
||||||
"mbregex": {
|
"mbregex": {
|
||||||
"type": "builtin",
|
"type": "builtin",
|
||||||
"arg-type": "custom",
|
"arg-type": "custom",
|
||||||
@@ -217,6 +233,10 @@
|
|||||||
"zlib"
|
"zlib"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"morton": {
|
||||||
|
"type": "external",
|
||||||
|
"source": "ext-morton"
|
||||||
|
},
|
||||||
"mysqli": {
|
"mysqli": {
|
||||||
"type": "builtin",
|
"type": "builtin",
|
||||||
"arg-type": "with",
|
"arg-type": "with",
|
||||||
@@ -303,6 +323,16 @@
|
|||||||
"zlib"
|
"zlib"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"pmmp-chunkutils2": {
|
||||||
|
"type": "external",
|
||||||
|
"source": "pmmp-chunkutils2",
|
||||||
|
"arg-type": "custom",
|
||||||
|
"cpp-extension": true
|
||||||
|
},
|
||||||
|
"pmmpthread": {
|
||||||
|
"type": "external",
|
||||||
|
"source": "pmmpthread"
|
||||||
|
},
|
||||||
"posix": {
|
"posix": {
|
||||||
"type": "builtin",
|
"type": "builtin",
|
||||||
"unix-only": true
|
"unix-only": true
|
||||||
@@ -335,12 +365,7 @@
|
|||||||
"source": "redis",
|
"source": "redis",
|
||||||
"arg-type": "custom",
|
"arg-type": "custom",
|
||||||
"ext-suggests": [
|
"ext-suggests": [
|
||||||
"session",
|
"session"
|
||||||
"igbinary"
|
|
||||||
],
|
|
||||||
"lib-suggests": [
|
|
||||||
"zstd",
|
|
||||||
"liblz4"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"session": {
|
"session": {
|
||||||
@@ -400,17 +425,6 @@
|
|||||||
"sqlite"
|
"sqlite"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"sqlsrv": {
|
|
||||||
"type": "external",
|
|
||||||
"source": "sqlsrv",
|
|
||||||
"lib-depends": [
|
|
||||||
"unixodbc"
|
|
||||||
],
|
|
||||||
"cpp-extension": true,
|
|
||||||
"ext-depends-linux": [
|
|
||||||
"pcntl"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ssh2": {
|
"ssh2": {
|
||||||
"type": "external",
|
"type": "external",
|
||||||
"source": "ext-ssh2",
|
"source": "ext-ssh2",
|
||||||
@@ -424,50 +438,17 @@
|
|||||||
"source": "swoole",
|
"source": "swoole",
|
||||||
"arg-type": "custom",
|
"arg-type": "custom",
|
||||||
"cpp-extension": true,
|
"cpp-extension": true,
|
||||||
"unix-only": true,
|
|
||||||
"lib-depends": [
|
"lib-depends": [
|
||||||
"libcares",
|
"openssl"
|
||||||
"brotli",
|
|
||||||
"nghttp2",
|
|
||||||
"zlib"
|
|
||||||
],
|
],
|
||||||
"ext-depends": [
|
"ext-depends": [
|
||||||
"openssl",
|
"openssl"
|
||||||
"curl"
|
|
||||||
],
|
],
|
||||||
"ext-suggests": [
|
"ext-suggests": [
|
||||||
"swoole-hook-pgsql",
|
"curl",
|
||||||
"swoole-hook-mysql",
|
"pgsql"
|
||||||
"swoole-hook-sqlite"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"swoole-hook-mysql": {
|
|
||||||
"type": "addon",
|
|
||||||
"arg-type": "custom",
|
|
||||||
"ext-depends": [
|
|
||||||
"mysqlnd",
|
|
||||||
"pdo",
|
|
||||||
"pdo_mysql"
|
|
||||||
],
|
],
|
||||||
"ext-suggests": [
|
"unix-only": true
|
||||||
"mysqli"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"swoole-hook-pgsql": {
|
|
||||||
"type": "addon",
|
|
||||||
"arg-type": "custom",
|
|
||||||
"ext-depends": [
|
|
||||||
"pgsql",
|
|
||||||
"pdo"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"swoole-hook-sqlite": {
|
|
||||||
"type": "addon",
|
|
||||||
"arg-type": "custom",
|
|
||||||
"ext-depends": [
|
|
||||||
"sqlite3",
|
|
||||||
"pdo"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"swow": {
|
"swow": {
|
||||||
"type": "external",
|
"type": "external",
|
||||||
@@ -504,21 +485,6 @@
|
|||||||
"tokenizer": {
|
"tokenizer": {
|
||||||
"type": "builtin"
|
"type": "builtin"
|
||||||
},
|
},
|
||||||
"uv": {
|
|
||||||
"type": "external",
|
|
||||||
"source": "ext-uv",
|
|
||||||
"arg-type": "with-prefix",
|
|
||||||
"lib-depends": [
|
|
||||||
"libuv"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xhprof": {
|
|
||||||
"type": "external",
|
|
||||||
"source": "xhprof",
|
|
||||||
"ext-depends": [
|
|
||||||
"ctype"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xlswriter": {
|
"xlswriter": {
|
||||||
"type": "external",
|
"type": "external",
|
||||||
"source": "xlswriter",
|
"source": "xlswriter",
|
||||||
|
|||||||
@@ -163,6 +163,13 @@
|
|||||||
"libsodium"
|
"libsodium"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"leveldb": {
|
||||||
|
"source": "leveldb",
|
||||||
|
"static-libs-unix": [
|
||||||
|
"libleveldb.a"
|
||||||
|
],
|
||||||
|
"cpp-library": true
|
||||||
|
},
|
||||||
"libargon2": {
|
"libargon2": {
|
||||||
"source": "libargon2",
|
"source": "libargon2",
|
||||||
"static-libs-unix": [
|
"static-libs-unix": [
|
||||||
@@ -175,18 +182,6 @@
|
|||||||
"libavif.a"
|
"libavif.a"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"libcares": {
|
|
||||||
"source": "libcares",
|
|
||||||
"static-libs-unix": [
|
|
||||||
"libcares.a"
|
|
||||||
],
|
|
||||||
"headers-unix": [
|
|
||||||
"ares.h",
|
|
||||||
"ares_dns.h",
|
|
||||||
"ares_nameser.h",
|
|
||||||
"ares_rules.h"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"libevent": {
|
"libevent": {
|
||||||
"source": "libevent",
|
"source": "libevent",
|
||||||
"static-libs-unix": [
|
"static-libs-unix": [
|
||||||
@@ -236,10 +231,10 @@
|
|||||||
"libturbojpeg.a"
|
"libturbojpeg.a"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"liblz4": {
|
"libmcrypt": {
|
||||||
"source": "liblz4",
|
"source": "libmcrypt",
|
||||||
"static-libs-unix": [
|
"static-libs-unix": [
|
||||||
"liblz4.a"
|
"libmcrypt.a"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"libmemcached": {
|
"libmemcached": {
|
||||||
@@ -296,12 +291,6 @@
|
|||||||
"zlib"
|
"zlib"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"libuv": {
|
|
||||||
"source": "libuv",
|
|
||||||
"static-libs-unix": [
|
|
||||||
"libuv.a"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"libwebp": {
|
"libwebp": {
|
||||||
"source": "libwebp",
|
"source": "libwebp",
|
||||||
"static-libs-unix": [
|
"static-libs-unix": [
|
||||||
@@ -333,6 +322,10 @@
|
|||||||
"lib-suggests": [
|
"lib-suggests": [
|
||||||
"xz",
|
"xz",
|
||||||
"icu"
|
"icu"
|
||||||
|
],
|
||||||
|
"lib-suggests-windows": [
|
||||||
|
"icu",
|
||||||
|
"xz"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"libxslt": {
|
"libxslt": {
|
||||||
@@ -382,6 +375,12 @@
|
|||||||
"openssl"
|
"openssl"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"mcrypt": {
|
||||||
|
"source": "mcrypt",
|
||||||
|
"static-libs-unix": [
|
||||||
|
"libmcrypt.a"
|
||||||
|
]
|
||||||
|
},
|
||||||
"ncurses": {
|
"ncurses": {
|
||||||
"source": "ncurses",
|
"source": "ncurses",
|
||||||
"static-libs-unix": [
|
"static-libs-unix": [
|
||||||
@@ -504,17 +503,6 @@
|
|||||||
"libtidy.a"
|
"libtidy.a"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"unixodbc": {
|
|
||||||
"source": "unixodbc",
|
|
||||||
"static-libs-unix": [
|
|
||||||
"libodbc.a",
|
|
||||||
"libodbccr.a",
|
|
||||||
"libodbcinst.a"
|
|
||||||
],
|
|
||||||
"lib-depends": [
|
|
||||||
"libiconv"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xz": {
|
"xz": {
|
||||||
"source": "xz",
|
"source": "xz",
|
||||||
"static-libs-unix": [
|
"static-libs-unix": [
|
||||||
|
|||||||
@@ -42,6 +42,16 @@
|
|||||||
"path": "COPYING"
|
"path": "COPYING"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ext-crypto": {
|
||||||
|
"type": "git",
|
||||||
|
"path": "php-src/ext/crypto",
|
||||||
|
"rev": "master",
|
||||||
|
"url": "https://github.com/bukka/php-crypto.git",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "LICENSE"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ext-event": {
|
"ext-event": {
|
||||||
"type": "url",
|
"type": "url",
|
||||||
"url": "https://bitbucket.org/osmanov/pecl-event/get/3.0.8.tar.gz",
|
"url": "https://bitbucket.org/osmanov/pecl-event/get/3.0.8.tar.gz",
|
||||||
@@ -80,6 +90,16 @@
|
|||||||
"path": "LICENSE"
|
"path": "LICENSE"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ext-morton": {
|
||||||
|
"type": "git",
|
||||||
|
"path": "php-src/ext/morton",
|
||||||
|
"rev": "master",
|
||||||
|
"url": "https://github.com/pmmp/ext-morton.git",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "LICENSE"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ext-snappy": {
|
"ext-snappy": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"path": "php-src/ext/snappy",
|
"path": "php-src/ext/snappy",
|
||||||
@@ -100,16 +120,6 @@
|
|||||||
"path": "LICENSE"
|
"path": "LICENSE"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ext-uv": {
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://pecl.php.net/get/uv",
|
|
||||||
"path": "php-src/ext/uv",
|
|
||||||
"filename": "uv.tgz",
|
|
||||||
"license": {
|
|
||||||
"type": "file",
|
|
||||||
"path": "LICENSE"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ext-zstd": {
|
"ext-zstd": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"path": "php-src/ext/zstd",
|
"path": "php-src/ext/zstd",
|
||||||
@@ -147,10 +157,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"igbinary": {
|
"igbinary": {
|
||||||
"type": "url",
|
"type": "ghtar",
|
||||||
"url": "https://pecl.php.net/get/igbinary",
|
|
||||||
"path": "php-src/ext/igbinary",
|
"path": "php-src/ext/igbinary",
|
||||||
"filename": "igbinary.tgz",
|
"repo": "igbinary/igbinary",
|
||||||
"license": {
|
"license": {
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"path": "COPYING"
|
"path": "COPYING"
|
||||||
@@ -192,6 +201,15 @@
|
|||||||
"path": "LICENSE"
|
"path": "LICENSE"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"leveldb": {
|
||||||
|
"type": "git",
|
||||||
|
"rev": "mojang-compatible",
|
||||||
|
"url": "https://github.com/pmmp/leveldb.git",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "LICENSE"
|
||||||
|
}
|
||||||
|
},
|
||||||
"libargon2": {
|
"libargon2": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"rev": "master",
|
"rev": "master",
|
||||||
@@ -209,15 +227,6 @@
|
|||||||
"path": "LICENSE"
|
"path": "LICENSE"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libcares": {
|
|
||||||
"type": "filelist",
|
|
||||||
"url": "https://c-ares.org/download/",
|
|
||||||
"regex": "/href=\"\\/download\\/(?<file>c-ares-(?<version>[^\"]+)\\.tar\\.gz)\"/",
|
|
||||||
"license": {
|
|
||||||
"type": "file",
|
|
||||||
"path": "LICENSE.md"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libevent": {
|
"libevent": {
|
||||||
"type": "ghrel",
|
"type": "ghrel",
|
||||||
"repo": "libevent/libevent",
|
"repo": "libevent/libevent",
|
||||||
@@ -253,13 +262,12 @@
|
|||||||
"path": "LICENSE.md"
|
"path": "LICENSE.md"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"liblz4": {
|
"libmcrypt": {
|
||||||
"type": "ghrel",
|
"type": "url",
|
||||||
"repo": "lz4/lz4",
|
"url": "https://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz",
|
||||||
"match": "lz4-.+\\.tar\\.gz",
|
|
||||||
"license": {
|
"license": {
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"path": "LICENSE"
|
"path": "COPYING"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libmemcached": {
|
"libmemcached": {
|
||||||
@@ -281,9 +289,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libsodium": {
|
"libsodium": {
|
||||||
"type": "ghrel",
|
"type": "url",
|
||||||
"repo": "jedisct1/libsodium",
|
"url": "https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz",
|
||||||
"match": "libsodium-\\d+(\\.\\d+)*\\.tar\\.gz",
|
|
||||||
"license": {
|
"license": {
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"path": "LICENSE"
|
"path": "LICENSE"
|
||||||
@@ -298,20 +305,6 @@
|
|||||||
"path": "COPYING"
|
"path": "COPYING"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libuv": {
|
|
||||||
"type": "ghtar",
|
|
||||||
"repo": "libuv/libuv",
|
|
||||||
"license": [
|
|
||||||
{
|
|
||||||
"type": "file",
|
|
||||||
"path": "LICENSE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "file",
|
|
||||||
"path": "LICENSE-extra"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"libwebp": {
|
"libwebp": {
|
||||||
"type": "url",
|
"type": "url",
|
||||||
"url": "https://github.com/webmproject/libwebp/archive/refs/tags/v1.3.2.tar.gz",
|
"url": "https://github.com/webmproject/libwebp/archive/refs/tags/v1.3.2.tar.gz",
|
||||||
@@ -355,6 +348,14 @@
|
|||||||
"path": "LICENSE"
|
"path": "LICENSE"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"mcrypt": {
|
||||||
|
"type": "url",
|
||||||
|
"url": "https://downloads.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "COPYING"
|
||||||
|
}
|
||||||
|
},
|
||||||
"memcached": {
|
"memcached": {
|
||||||
"type": "url",
|
"type": "url",
|
||||||
"url": "https://pecl.php.net/get/memcached",
|
"url": "https://pecl.php.net/get/memcached",
|
||||||
@@ -429,6 +430,34 @@
|
|||||||
"path": "COPYING"
|
"path": "COPYING"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pmmp-chunkutils2": {
|
||||||
|
"type": "ghtar",
|
||||||
|
"path": "php-src/ext/chunkutils2",
|
||||||
|
"repo": "pmmp/ext-chunkutils2",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "LICENSE"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pmmp-leveldb": {
|
||||||
|
"type": "git",
|
||||||
|
"path": "php-src/ext/leveldb",
|
||||||
|
"rev": "pmmp-mojang-compatible",
|
||||||
|
"url": "https://github.com/pmmp/php-leveldb.git",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "LICENSE"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pmmpthread": {
|
||||||
|
"type": "ghtar",
|
||||||
|
"path": "php-src/ext/pmmpthread",
|
||||||
|
"repo": "pmmp/ext-pmmpthread",
|
||||||
|
"license": {
|
||||||
|
"type": "file",
|
||||||
|
"path": "LICENSE"
|
||||||
|
}
|
||||||
|
},
|
||||||
"postgresql": {
|
"postgresql": {
|
||||||
"type": "url",
|
"type": "url",
|
||||||
"url": "https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.gz",
|
"url": "https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.gz",
|
||||||
@@ -494,16 +523,6 @@
|
|||||||
"text": "The author disclaims copyright to this source code. In place of\na legal notice, here is a blessing:\n\n * May you do good and not evil.\n * May you find forgiveness for yourself and forgive others.\n * May you share freely, never taking more than you give."
|
"text": "The author disclaims copyright to this source code. In place of\na legal notice, here is a blessing:\n\n * May you do good and not evil.\n * May you find forgiveness for yourself and forgive others.\n * May you share freely, never taking more than you give."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sqlsrv": {
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://pecl.php.net/get/sqlsrv",
|
|
||||||
"path": "php-src/ext/sqlsrv",
|
|
||||||
"filename": "sqlsrv.tgz",
|
|
||||||
"license": {
|
|
||||||
"type": "file",
|
|
||||||
"path": "LICENSE"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"swoole": {
|
"swoole": {
|
||||||
"type": "ghtar",
|
"type": "ghtar",
|
||||||
"path": "php-src/ext/swoole",
|
"path": "php-src/ext/swoole",
|
||||||
@@ -533,24 +552,6 @@
|
|||||||
"path": "README/LICENSE.md"
|
"path": "README/LICENSE.md"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unixodbc": {
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://www.unixodbc.org/unixODBC-2.3.12.tar.gz",
|
|
||||||
"license": {
|
|
||||||
"type": "file",
|
|
||||||
"path": "COPYING"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xhprof": {
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://pecl.php.net/get/xhprof",
|
|
||||||
"path": "php-src/ext/xhprof-src",
|
|
||||||
"filename": "xhprof.tgz",
|
|
||||||
"license": {
|
|
||||||
"type": "file",
|
|
||||||
"path": "LICENSE"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xlswriter": {
|
"xlswriter": {
|
||||||
"type": "url",
|
"type": "url",
|
||||||
"url": "https://pecl.php.net/get/xlswriter",
|
"url": "https://pecl.php.net/get/xlswriter",
|
||||||
@@ -562,9 +563,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"xz": {
|
"xz": {
|
||||||
"type": "ghrel",
|
"type": "filelist",
|
||||||
"repo": "tukaani-project/xz",
|
"url": "https://tukaani.org/xz/",
|
||||||
"match": "xz-.+\\.tar\\.gz",
|
"regex": "/href=\"(?<file>xz-(?<version>[^\"]+)\\.tar\\.xz)\"/",
|
||||||
"license": {
|
"license": {
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"path": "COPYING"
|
"path": "COPYING"
|
||||||
|
|||||||
@@ -8,10 +8,5 @@ parameters:
|
|||||||
- '#Unsafe usage of new static#'
|
- '#Unsafe usage of new static#'
|
||||||
- '#class Fiber#'
|
- '#class Fiber#'
|
||||||
- '#Attribute class JetBrains\\PhpStorm\\ArrayShape does not exist#'
|
- '#Attribute class JetBrains\\PhpStorm\\ArrayShape does not exist#'
|
||||||
- '#Function Swoole\\Coroutine\\run not found.#'
|
|
||||||
dynamicConstantNames:
|
dynamicConstantNames:
|
||||||
- PHP_OS_FAMILY
|
- PHP_OS_FAMILY
|
||||||
excludePaths:
|
|
||||||
analyseAndScan:
|
|
||||||
- ./src/globals/tests/swoole.php
|
|
||||||
- ./src/globals/tests/swoole.phpt
|
|
||||||
@@ -23,7 +23,7 @@ use Symfony\Component\Console\Command\ListCommand;
|
|||||||
*/
|
*/
|
||||||
final class ConsoleApplication extends Application
|
final class ConsoleApplication extends Application
|
||||||
{
|
{
|
||||||
public const VERSION = '2.0.0';
|
public const VERSION = '2.0.0-rc9';
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ abstract class BuilderBase
|
|||||||
foreach ($this->exts as $ext) {
|
foreach ($this->exts as $ext) {
|
||||||
$ret[] = trim($ext->getConfigureArg());
|
$ret[] = trim($ext->getConfigureArg());
|
||||||
}
|
}
|
||||||
logger()->debug('Using configure: ' . implode(' ', $ret));
|
logger()->info('Using configure: ' . implode(' ', $ret));
|
||||||
return implode(' ', $ret);
|
return implode(' ', $ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
22
src/SPC/builder/extension/pmmp_chunkutils2.php
Normal file
22
src/SPC/builder/extension/pmmp_chunkutils2.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SPC\builder\extension;
|
||||||
|
|
||||||
|
use SPC\builder\Extension;
|
||||||
|
use SPC\util\CustomExt;
|
||||||
|
|
||||||
|
#[CustomExt('pmmp-chunkutils2')]
|
||||||
|
class pmmp_chunkutils2 extends Extension
|
||||||
|
{
|
||||||
|
public function getDistName(): string
|
||||||
|
{
|
||||||
|
return 'chunkutils2';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUnixConfigureArg(): string
|
||||||
|
{
|
||||||
|
return '--enable-chunkutils2';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,14 +13,14 @@ class redis extends Extension
|
|||||||
public function getUnixConfigureArg(): string
|
public function getUnixConfigureArg(): string
|
||||||
{
|
{
|
||||||
$arg = '--enable-redis';
|
$arg = '--enable-redis';
|
||||||
$arg .= $this->builder->getExt('session') ? ' --enable-redis-session' : ' --disable-redis-session';
|
if (!$this->builder->getExt('session')) {
|
||||||
$arg .= $this->builder->getExt('igbinary') ? ' --enable-redis-igbinary' : ' --disable-redis-igbinary';
|
$arg .= ' --disable-redis-session';
|
||||||
|
} else {
|
||||||
|
$arg .= ' --enable-redis-session';
|
||||||
|
}
|
||||||
if ($this->builder->getLib('zstd')) {
|
if ($this->builder->getLib('zstd')) {
|
||||||
$arg .= ' --enable-redis-zstd --with-libzstd="' . BUILD_ROOT_PATH . '"';
|
$arg .= ' --enable-redis-zstd --with-libzstd="' . BUILD_ROOT_PATH . '"';
|
||||||
}
|
}
|
||||||
if ($this->builder->getLib('liblz4')) {
|
|
||||||
$arg .= ' --enable-redis-lz4 --with-liblz4="' . BUILD_ROOT_PATH . '"';
|
|
||||||
}
|
|
||||||
return $arg;
|
return $arg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,31 +12,13 @@ class swoole extends Extension
|
|||||||
{
|
{
|
||||||
public function getUnixConfigureArg(): string
|
public function getUnixConfigureArg(): string
|
||||||
{
|
{
|
||||||
// enable swoole
|
|
||||||
$arg = '--enable-swoole';
|
$arg = '--enable-swoole';
|
||||||
|
// pgsql hook is buggy for static php
|
||||||
// commonly-used feature: coroutine-time, thread-context
|
$arg .= ' --disable-swoole-pgsql';
|
||||||
$arg .= ' --enable-swoole-coro-time --enable-thread-context';
|
$arg .= $this->builder->getLib('openssl') ? ' --enable-openssl' : ' --disable-openssl --without-openssl';
|
||||||
|
$arg .= $this->builder->getLib('brotli') ? (' --enable-brotli --with-brotli-dir=' . BUILD_ROOT_PATH) : ' --disable-brotli';
|
||||||
// required feature: curl, openssl (but curl hook is buggy for php 8.0)
|
// swoole curl hook is buggy for php 8.0
|
||||||
$arg .= $this->builder->getPHPVersionID() >= 80100 ? ' --enable-swoole-curl' : ' --disable-swoole-curl';
|
$arg .= $this->builder->getExt('curl') && $this->builder->getPHPVersionID() >= 80100 ? ' --enable-swoole-curl' : ' --disable-swoole-curl';
|
||||||
$arg .= ' --enable-openssl';
|
|
||||||
|
|
||||||
// additional feature: c-ares, brotli, nghttp2 (can be disabled, but we enable it by default in config to support full network feature)
|
|
||||||
$arg .= $this->builder->getLib('libcares') ? ' --enable-cares' : '';
|
|
||||||
$arg .= $this->builder->getLib('brotli') ? (' --with-brotli-dir=' . BUILD_ROOT_PATH) : '';
|
|
||||||
$arg .= $this->builder->getLib('nghttp2') ? (' --with-nghttp2-dir=' . BUILD_ROOT_PATH) : '';
|
|
||||||
|
|
||||||
// additional feature: swoole-pgsql, it should depend on lib [postgresql], but it will lack of CFLAGS etc.
|
|
||||||
// so this is a tricky way (enable ext [pgsql,pdo] to add postgresql hook and pdo_pgsql support)
|
|
||||||
$arg .= $this->builder->getExt('swoole-hook-pgsql') ? '' : ' --disable-swoole-pgsql';
|
|
||||||
|
|
||||||
// enable this feature , need remove pdo_sqlite
|
|
||||||
// more info : https://wenda.swoole.com/detail/109023
|
|
||||||
$arg .= $this->builder->getExt('swoole-hook-sqlite') ? '' : ' --disable-swoole-sqlite';
|
|
||||||
|
|
||||||
// enable this feature , need stop pdo_*
|
|
||||||
// $arg .= $this->builder->getLib('unixodbc') ? ' --with-swoole-odbc=unixODBC,' : ' ';
|
|
||||||
return $arg;
|
return $arg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\extension;
|
|
||||||
|
|
||||||
use SPC\builder\Extension;
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
use SPC\util\CustomExt;
|
|
||||||
|
|
||||||
#[CustomExt('swoole-hook-mysql')]
|
|
||||||
class swoole_hook_mysql extends Extension
|
|
||||||
{
|
|
||||||
public function getUnixConfigureArg(): string
|
|
||||||
{
|
|
||||||
// pdo_mysql doesn't need to be disabled
|
|
||||||
// enable swoole-hook-mysql will enable mysqli, pdo, pdo_mysql, we don't need to add any additional options
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function runCliCheck(): void
|
|
||||||
{
|
|
||||||
// skip if not enable swoole
|
|
||||||
if ($this->builder->getExt('swoole') === null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
[$ret, $out] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php --ri "swoole"', false);
|
|
||||||
$out = implode('', $out);
|
|
||||||
if ($ret !== 0) {
|
|
||||||
throw new RuntimeException('extension ' . $this->getName() . ' failed compile check: php-cli returned ' . $ret);
|
|
||||||
}
|
|
||||||
if (!str_contains($out, 'mysqlnd')) {
|
|
||||||
throw new RuntimeException('swoole mysql hook is not enabled correctly.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\extension;
|
|
||||||
|
|
||||||
use SPC\builder\Extension;
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
use SPC\exception\WrongUsageException;
|
|
||||||
use SPC\util\CustomExt;
|
|
||||||
|
|
||||||
#[CustomExt('swoole-hook-pgsql')]
|
|
||||||
class swoole_hook_pgsql extends Extension
|
|
||||||
{
|
|
||||||
public function getUnixConfigureArg(): string
|
|
||||||
{
|
|
||||||
// pdo_pgsql need to be disabled
|
|
||||||
if ($this->builder->getExt('pdo_pgsql') !== null) {
|
|
||||||
throw new WrongUsageException('swoole-hook-pgsql provides pdo_pgsql, if you enable pgsql hook for swoole, you must remove pdo_pgsql extension.');
|
|
||||||
}
|
|
||||||
// enable swoole pgsql hook
|
|
||||||
return '--enable-swoole-pgsql';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function runCliCheck(): void
|
|
||||||
{
|
|
||||||
// skip if not enable swoole
|
|
||||||
if ($this->builder->getExt('swoole') === null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
[$ret, $out] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php --ri "swoole"', false);
|
|
||||||
$out = implode('', $out);
|
|
||||||
if ($ret !== 0) {
|
|
||||||
throw new RuntimeException('extension ' . $this->getName() . ' failed compile check: php-cli returned ' . $ret);
|
|
||||||
}
|
|
||||||
if (!str_contains($out, 'coroutine_pgsql')) {
|
|
||||||
throw new RuntimeException('swoole pgsql hook is not enabled correctly.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\extension;
|
|
||||||
|
|
||||||
use SPC\builder\Extension;
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
use SPC\exception\WrongUsageException;
|
|
||||||
use SPC\util\CustomExt;
|
|
||||||
|
|
||||||
#[CustomExt('swoole-hook-sqlite')]
|
|
||||||
class swoole_hook_sqlite extends Extension
|
|
||||||
{
|
|
||||||
public function getUnixConfigureArg(): string
|
|
||||||
{
|
|
||||||
// pdo_pgsql need to be disabled
|
|
||||||
if ($this->builder->getExt('pdo_sqlite') !== null) {
|
|
||||||
throw new WrongUsageException('swoole-hook-sqlite provides pdo_sqlite, if you enable sqlite hook for swoole, you must remove pdo_sqlite extension.');
|
|
||||||
}
|
|
||||||
// enable swoole pgsql hook
|
|
||||||
return '--enable-swoole-sqlite';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function runCliCheck(): void
|
|
||||||
{
|
|
||||||
// skip if not enable swoole
|
|
||||||
if ($this->builder->getExt('swoole') === null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
[$ret, $out] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php --ri "swoole"', false);
|
|
||||||
$out = implode('', $out);
|
|
||||||
if ($ret !== 0) {
|
|
||||||
throw new RuntimeException('extension ' . $this->getName() . ' failed compile check: php-cli returned ' . $ret);
|
|
||||||
}
|
|
||||||
if (!str_contains($out, 'coroutine_sqlite')) {
|
|
||||||
throw new RuntimeException('swoole sqlite hook is not enabled correctly.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\extension;
|
|
||||||
|
|
||||||
use SPC\builder\Extension;
|
|
||||||
use SPC\store\FileSystem;
|
|
||||||
use SPC\util\CustomExt;
|
|
||||||
|
|
||||||
#[CustomExt('xhprof')]
|
|
||||||
class xhprof extends Extension
|
|
||||||
{
|
|
||||||
public function patchBeforeBuildconf(): bool
|
|
||||||
{
|
|
||||||
if (!is_link(SOURCE_PATH . '/php-src/ext/xhprof')) {
|
|
||||||
if (PHP_OS_FAMILY === 'Windows') {
|
|
||||||
f_passthru('cd ' . SOURCE_PATH . '/php-src/ext && mklink /D xhprof xhprof-src\extension');
|
|
||||||
} else {
|
|
||||||
f_passthru('cd ' . SOURCE_PATH . '/php-src/ext && ln -s xhprof-src/extension xhprof');
|
|
||||||
}
|
|
||||||
|
|
||||||
// patch config.m4
|
|
||||||
FileSystem::replaceFileStr(
|
|
||||||
SOURCE_PATH . '/php-src/ext/xhprof/config.m4',
|
|
||||||
'if test -f $phpincludedir/ext/pcre/php_pcre.h; then',
|
|
||||||
'if test -f $abs_srcdir/ext/pcre/php_pcre.h; then'
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -138,15 +138,15 @@ class LinuxBuilder extends BuilderBase
|
|||||||
// add libstdc++, some extensions or libraries need it
|
// add libstdc++, some extensions or libraries need it
|
||||||
$extra_libs .= (empty($extra_libs) ? '' : ' ') . ($this->hasCpp() ? '-lstdc++ ' : '');
|
$extra_libs .= (empty($extra_libs) ? '' : ' ') . ($this->hasCpp() ? '-lstdc++ ' : '');
|
||||||
$this->setOption('extra-libs', $extra_libs);
|
$this->setOption('extra-libs', $extra_libs);
|
||||||
|
|
||||||
$cflags = $this->arch_c_flags;
|
$cflags = $this->arch_c_flags;
|
||||||
|
|
||||||
// prepare build php envs
|
// prepare build php envs
|
||||||
$envs_build_php = SystemUtil::makeEnvVarString([
|
$envs_build_php = SystemUtil::makeEnvVarString([
|
||||||
'CFLAGS' => $cflags,
|
'CFLAGS' => $cflags,
|
||||||
'CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH,
|
|
||||||
'LDFLAGS' => '-L' . BUILD_LIB_PATH,
|
|
||||||
'LIBS' => '-ldl -lpthread',
|
'LIBS' => '-ldl -lpthread',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
SourcePatcher::patchBeforeBuildconf($this);
|
SourcePatcher::patchBeforeBuildconf($this);
|
||||||
|
|
||||||
shell()->cd(SOURCE_PATH . '/php-src')->exec('./buildconf --force');
|
shell()->cd(SOURCE_PATH . '/php-src')->exec('./buildconf --force');
|
||||||
@@ -189,8 +189,8 @@ class LinuxBuilder extends BuilderBase
|
|||||||
$json_74 .
|
$json_74 .
|
||||||
$zts .
|
$zts .
|
||||||
$maxExecutionTimers .
|
$maxExecutionTimers .
|
||||||
$this->makeExtensionArgs() .
|
$this->makeExtensionArgs() . ' ' .
|
||||||
' ' . $envs_build_php . ' '
|
$envs_build_php
|
||||||
);
|
);
|
||||||
|
|
||||||
SourcePatcher::patchBeforeMake($this);
|
SourcePatcher::patchBeforeMake($this);
|
||||||
@@ -322,11 +322,10 @@ class LinuxBuilder extends BuilderBase
|
|||||||
$cflags = isset($input['EXTRA_CFLAGS']) && $input['EXTRA_CFLAGS'] ? " {$input['EXTRA_CFLAGS']}" : '';
|
$cflags = isset($input['EXTRA_CFLAGS']) && $input['EXTRA_CFLAGS'] ? " {$input['EXTRA_CFLAGS']}" : '';
|
||||||
$libs = isset($input['EXTRA_LIBS']) && $input['EXTRA_LIBS'] ? " {$input['EXTRA_LIBS']}" : '';
|
$libs = isset($input['EXTRA_LIBS']) && $input['EXTRA_LIBS'] ? " {$input['EXTRA_LIBS']}" : '';
|
||||||
$ldflags = isset($input['EXTRA_LDFLAGS_PROGRAM']) && $input['EXTRA_LDFLAGS_PROGRAM'] ? " {$input['EXTRA_LDFLAGS_PROGRAM']}" : '';
|
$ldflags = isset($input['EXTRA_LDFLAGS_PROGRAM']) && $input['EXTRA_LDFLAGS_PROGRAM'] ? " {$input['EXTRA_LDFLAGS_PROGRAM']}" : '';
|
||||||
$tune_c_flags = implode(' ', array_map(fn ($x) => "-Xcompiler {$x}", $this->tune_c_flags));
|
|
||||||
return [
|
return [
|
||||||
'EXTRA_CFLAGS' => "{$optimization} -fno-ident -fPIE {$tune_c_flags}{$cflags}",
|
'EXTRA_CFLAGS' => "{$optimization} -fno-ident -fPIE " . implode(' ', array_map(fn ($x) => "-Xcompiler {$x}", $this->tune_c_flags)) . $cflags,
|
||||||
'EXTRA_LIBS' => "{$this->getOption('extra-libs', '')} {$libs}",
|
'EXTRA_LIBS' => $this->getOption('extra-libs', '') . $libs,
|
||||||
'EXTRA_LDFLAGS_PROGRAM' => "{$use_lld} -all-static{$ldflags}",
|
'EXTRA_LDFLAGS_PROGRAM' => "{$use_lld} -all-static" . $ldflags,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
12
src/SPC/builder/linux/library/leveldb.php
Normal file
12
src/SPC/builder/linux/library/leveldb.php
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SPC\builder\linux\library;
|
||||||
|
|
||||||
|
class leveldb extends LinuxLibraryBase
|
||||||
|
{
|
||||||
|
use \SPC\builder\unix\library\leveldb;
|
||||||
|
|
||||||
|
public const NAME = 'leveldb';
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\linux\library;
|
|
||||||
|
|
||||||
class libcares extends LinuxLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\libcares;
|
|
||||||
|
|
||||||
public const NAME = 'libcares';
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\linux\library;
|
|
||||||
|
|
||||||
class liblz4 extends LinuxLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\liblz4;
|
|
||||||
|
|
||||||
public const NAME = 'liblz4';
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\linux\library;
|
|
||||||
|
|
||||||
class libuv extends LinuxLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\libuv;
|
|
||||||
|
|
||||||
public const NAME = 'libuv';
|
|
||||||
}
|
|
||||||
@@ -26,9 +26,7 @@ class libxml2 extends LinuxLibraryBase
|
|||||||
shell()->cd($this->source_dir . '/build')
|
shell()->cd($this->source_dir . '/build')
|
||||||
->exec(
|
->exec(
|
||||||
'cmake ' .
|
'cmake ' .
|
||||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
"{$this->builder->makeCmakeArgs()} " .
|
||||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' .
|
|
||||||
"-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " .
|
|
||||||
'-DBUILD_SHARED_LIBS=OFF ' .
|
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||||
'-DIconv_IS_BUILT_IN=OFF ' .
|
'-DIconv_IS_BUILT_IN=OFF ' .
|
||||||
'-DLIBXML2_WITH_ICONV=ON ' .
|
'-DLIBXML2_WITH_ICONV=ON ' .
|
||||||
@@ -41,7 +39,7 @@ class libxml2 extends LinuxLibraryBase
|
|||||||
'..'
|
'..'
|
||||||
)
|
)
|
||||||
->exec("cmake --build . -j {$this->builder->concurrency}")
|
->exec("cmake --build . -j {$this->builder->concurrency}")
|
||||||
->exec('make install');
|
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
||||||
|
|
||||||
FileSystem::replaceFileStr(
|
FileSystem::replaceFileStr(
|
||||||
BUILD_LIB_PATH . '/pkgconfig/libxml-2.0.pc',
|
BUILD_LIB_PATH . '/pkgconfig/libxml-2.0.pc',
|
||||||
|
|||||||
@@ -1,12 +1,72 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2022 Yun Dou <dixyes@gmail.com>
|
||||||
|
*
|
||||||
|
* lwmbs is licensed under Mulan PSL v2. You can use this
|
||||||
|
* software according to the terms and conditions of the
|
||||||
|
* Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at:
|
||||||
|
*
|
||||||
|
* http://license.coscl.org.cn/MulanPSL2
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||||
|
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||||
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* See the Mulan PSL v2 for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace SPC\builder\linux\library;
|
namespace SPC\builder\linux\library;
|
||||||
|
|
||||||
|
use SPC\exception\FileSystemException;
|
||||||
|
use SPC\exception\RuntimeException;
|
||||||
|
use SPC\exception\WrongUsageException;
|
||||||
|
|
||||||
class nghttp2 extends LinuxLibraryBase
|
class nghttp2 extends LinuxLibraryBase
|
||||||
{
|
{
|
||||||
use \SPC\builder\unix\library\nghttp2;
|
|
||||||
|
|
||||||
public const NAME = 'nghttp2';
|
public const NAME = 'nghttp2';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws FileSystemException
|
||||||
|
* @throws RuntimeException
|
||||||
|
* @throws WrongUsageException
|
||||||
|
*/
|
||||||
|
public function build(): void
|
||||||
|
{
|
||||||
|
$args = $this->builder->makeAutoconfArgs(static::NAME, [
|
||||||
|
'zlib' => null,
|
||||||
|
'openssl' => null,
|
||||||
|
'libxml2' => null,
|
||||||
|
'libev' => null,
|
||||||
|
'libcares' => null,
|
||||||
|
'libngtcp2' => null,
|
||||||
|
'libnghttp3' => null,
|
||||||
|
'libbpf' => null,
|
||||||
|
'libevent-openssl' => null,
|
||||||
|
'jansson' => null,
|
||||||
|
'jemalloc' => null,
|
||||||
|
'systemd' => null,
|
||||||
|
'cunit' => null,
|
||||||
|
]);
|
||||||
|
|
||||||
|
[,,$destdir] = SEPARATED_PATH;
|
||||||
|
|
||||||
|
shell()->cd($this->source_dir)
|
||||||
|
->exec(
|
||||||
|
'./configure ' .
|
||||||
|
'--enable-static ' .
|
||||||
|
'--disable-shared ' .
|
||||||
|
"--host={$this->builder->getOption('gnu-arch')}-unknown-linux " .
|
||||||
|
'--enable-lib-only ' .
|
||||||
|
'--with-boost=no ' .
|
||||||
|
$args . ' ' .
|
||||||
|
'--prefix='
|
||||||
|
)
|
||||||
|
->exec('make clean')
|
||||||
|
->exec("make -j{$this->builder->concurrency}")
|
||||||
|
->exec("make install DESTDIR={$destdir}");
|
||||||
|
$this->patchPkgconfPrefix(['libnghttp2.pc']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\linux\library;
|
|
||||||
|
|
||||||
class unixodbc extends LinuxLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\unixodbc;
|
|
||||||
|
|
||||||
public const NAME = 'unixodbc';
|
|
||||||
}
|
|
||||||
@@ -155,21 +155,6 @@ class MacOSBuilder extends BuilderBase
|
|||||||
$enableMicro = ($build_target & BUILD_TARGET_MICRO) === BUILD_TARGET_MICRO;
|
$enableMicro = ($build_target & BUILD_TARGET_MICRO) === BUILD_TARGET_MICRO;
|
||||||
$enableEmbed = ($build_target & BUILD_TARGET_EMBED) === BUILD_TARGET_EMBED;
|
$enableEmbed = ($build_target & BUILD_TARGET_EMBED) === BUILD_TARGET_EMBED;
|
||||||
|
|
||||||
// prepare build php envs
|
|
||||||
$envs_build_php = SystemUtil::makeEnvVarString([
|
|
||||||
'CFLAGS' => " {$this->arch_c_flags} -Werror=unknown-warning-option ",
|
|
||||||
'CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH,
|
|
||||||
'LDFLAGS' => '-L' . BUILD_LIB_PATH,
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($this->getLib('postgresql')) {
|
|
||||||
shell()
|
|
||||||
->cd(SOURCE_PATH . '/php-src')
|
|
||||||
->exec(
|
|
||||||
'sed -i.backup "s/ac_cv_func_explicit_bzero\" = xyes/ac_cv_func_explicit_bzero\" = x_fake_yes/" ./configure'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
shell()->cd(SOURCE_PATH . '/php-src')
|
shell()->cd(SOURCE_PATH . '/php-src')
|
||||||
->exec(
|
->exec(
|
||||||
'./configure ' .
|
'./configure ' .
|
||||||
@@ -177,6 +162,7 @@ class MacOSBuilder extends BuilderBase
|
|||||||
'--with-valgrind=no ' . // Not detect memory leak
|
'--with-valgrind=no ' . // Not detect memory leak
|
||||||
'--enable-shared=no ' .
|
'--enable-shared=no ' .
|
||||||
'--enable-static=yes ' .
|
'--enable-static=yes ' .
|
||||||
|
"CFLAGS='{$this->arch_c_flags} -Werror=unknown-warning-option' " .
|
||||||
'--disable-all ' .
|
'--disable-all ' .
|
||||||
'--disable-cgi ' .
|
'--disable-cgi ' .
|
||||||
'--disable-phpdbg ' .
|
'--disable-phpdbg ' .
|
||||||
@@ -186,8 +172,7 @@ class MacOSBuilder extends BuilderBase
|
|||||||
($enableMicro ? '--enable-micro ' : '--disable-micro ') .
|
($enableMicro ? '--enable-micro ' : '--disable-micro ') .
|
||||||
$json_74 .
|
$json_74 .
|
||||||
$zts .
|
$zts .
|
||||||
$this->makeExtensionArgs() . ' ' .
|
$this->makeExtensionArgs()
|
||||||
$envs_build_php
|
|
||||||
);
|
);
|
||||||
|
|
||||||
SourcePatcher::patchBeforeMake($this);
|
SourcePatcher::patchBeforeMake($this);
|
||||||
@@ -227,7 +212,10 @@ class MacOSBuilder extends BuilderBase
|
|||||||
*/
|
*/
|
||||||
public function buildCli(): void
|
public function buildCli(): void
|
||||||
{
|
{
|
||||||
$vars = SystemUtil::makeEnvVarString($this->getBuildVars());
|
$vars = SystemUtil::makeEnvVarString([
|
||||||
|
'EXTRA_CFLAGS' => '-g -Os', // with debug information, but optimize for size
|
||||||
|
'EXTRA_LIBS' => "{$this->getOption('extra-libs')} -lresolv", // link resolv library (macOS needs it)
|
||||||
|
]);
|
||||||
|
|
||||||
$shell = shell()->cd(SOURCE_PATH . '/php-src');
|
$shell = shell()->cd(SOURCE_PATH . '/php-src');
|
||||||
$shell->exec("make -j{$this->concurrency} {$vars} cli");
|
$shell->exec("make -j{$this->concurrency} {$vars} cli");
|
||||||
@@ -258,8 +246,9 @@ class MacOSBuilder extends BuilderBase
|
|||||||
$vars = [
|
$vars = [
|
||||||
// with debug information, optimize for size, remove identifiers, patch fake cli for micro
|
// with debug information, optimize for size, remove identifiers, patch fake cli for micro
|
||||||
'EXTRA_CFLAGS' => '-g -Os -fno-ident' . $enable_fake_cli,
|
'EXTRA_CFLAGS' => '-g -Os -fno-ident' . $enable_fake_cli,
|
||||||
|
// link resolv library (macOS needs it)
|
||||||
|
'EXTRA_LIBS' => "{$this->getOption('extra-libs')} -lresolv",
|
||||||
];
|
];
|
||||||
$vars = $this->getBuildVars($vars);
|
|
||||||
if (!$this->getOption('no-strip', false)) {
|
if (!$this->getOption('no-strip', false)) {
|
||||||
$vars['STRIP'] = 'dsymutil -f ';
|
$vars['STRIP'] = 'dsymutil -f ';
|
||||||
}
|
}
|
||||||
@@ -282,7 +271,10 @@ class MacOSBuilder extends BuilderBase
|
|||||||
*/
|
*/
|
||||||
public function buildFpm(): void
|
public function buildFpm(): void
|
||||||
{
|
{
|
||||||
$vars = SystemUtil::makeEnvVarString($this->getBuildVars());
|
$vars = SystemUtil::makeEnvVarString([
|
||||||
|
'EXTRA_CFLAGS' => '-g -Os', // with debug information, but optimize for size
|
||||||
|
'EXTRA_LIBS' => "{$this->getOption('extra-libs')} -lresolv", // link resolv library (macOS needs it)
|
||||||
|
]);
|
||||||
|
|
||||||
$shell = shell()->cd(SOURCE_PATH . '/php-src');
|
$shell = shell()->cd(SOURCE_PATH . '/php-src');
|
||||||
$shell->exec("make -j{$this->concurrency} {$vars} fpm");
|
$shell->exec("make -j{$this->concurrency} {$vars} fpm");
|
||||||
@@ -299,7 +291,10 @@ class MacOSBuilder extends BuilderBase
|
|||||||
*/
|
*/
|
||||||
public function buildEmbed(): void
|
public function buildEmbed(): void
|
||||||
{
|
{
|
||||||
$vars = SystemUtil::makeEnvVarString($this->getBuildVars());
|
$vars = SystemUtil::makeEnvVarString([
|
||||||
|
'EXTRA_CFLAGS' => '-g -Os', // with debug information, but optimize for size
|
||||||
|
'EXTRA_LIBS' => "{$this->getOption('extra-libs')} -lresolv", // link resolv library (macOS needs it)
|
||||||
|
]);
|
||||||
|
|
||||||
shell()
|
shell()
|
||||||
->cd(SOURCE_PATH . '/php-src')
|
->cd(SOURCE_PATH . '/php-src')
|
||||||
@@ -313,15 +308,4 @@ class MacOSBuilder extends BuilderBase
|
|||||||
->exec('ar rcs ' . BUILD_ROOT_PATH . '/lib/libphp.a *.o')
|
->exec('ar rcs ' . BUILD_ROOT_PATH . '/lib/libphp.a *.o')
|
||||||
->exec('rm -Rf ' . BUILD_ROOT_PATH . '/lib/php-o');
|
->exec('rm -Rf ' . BUILD_ROOT_PATH . '/lib/php-o');
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getBuildVars($input = []): array
|
|
||||||
{
|
|
||||||
$optimization = $this->getOption('no-strip', false) ? '-g -O0' : '-g0 -Os';
|
|
||||||
$cflags = isset($input['EXTRA_CFLAGS']) && $input['EXTRA_CFLAGS'] ? " {$input['EXTRA_CFLAGS']}" : '';
|
|
||||||
$libs = isset($input['EXTRA_LIBS']) && $input['EXTRA_LIBS'] ? " {$input['EXTRA_LIBS']}" : '';
|
|
||||||
return [
|
|
||||||
'EXTRA_CFLAGS' => "{$optimization} {$cflags} " . $this->getOption('x-extra-cflags'),
|
|
||||||
'EXTRA_LIBS' => "{$this->getOption('extra-libs')} -lresolv {$libs} " . $this->getOption('x-extra-libs'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
12
src/SPC/builder/macos/library/leveldb.php
Normal file
12
src/SPC/builder/macos/library/leveldb.php
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SPC\builder\macos\library;
|
||||||
|
|
||||||
|
class leveldb extends MacOSLibraryBase
|
||||||
|
{
|
||||||
|
use \SPC\builder\unix\library\leveldb;
|
||||||
|
|
||||||
|
public const NAME = 'leveldb';
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\macos\library;
|
|
||||||
|
|
||||||
class libcares extends MacOSLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\libcares;
|
|
||||||
|
|
||||||
public const NAME = 'libcares';
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\macos\library;
|
|
||||||
|
|
||||||
class liblz4 extends MacOSLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\liblz4;
|
|
||||||
|
|
||||||
public const NAME = 'liblz4';
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\macos\library;
|
|
||||||
|
|
||||||
class libuv extends MacOSLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\libuv;
|
|
||||||
|
|
||||||
public const NAME = 'libuv';
|
|
||||||
}
|
|
||||||
@@ -27,9 +27,7 @@ class libxml2 extends MacOSLibraryBase
|
|||||||
->exec(
|
->exec(
|
||||||
'cmake ' .
|
'cmake ' .
|
||||||
// '--debug-find ' .
|
// '--debug-find ' .
|
||||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
"{$this->builder->makeCmakeArgs()} " .
|
||||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' .
|
|
||||||
"-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " .
|
|
||||||
'-DBUILD_SHARED_LIBS=OFF ' .
|
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||||
'-DLIBXML2_WITH_ICONV=ON ' .
|
'-DLIBXML2_WITH_ICONV=ON ' .
|
||||||
"-DLIBXML2_WITH_ZLIB={$enable_zlib} " .
|
"-DLIBXML2_WITH_ZLIB={$enable_zlib} " .
|
||||||
@@ -41,6 +39,6 @@ class libxml2 extends MacOSLibraryBase
|
|||||||
'..'
|
'..'
|
||||||
)
|
)
|
||||||
->exec("cmake --build . -j {$this->builder->concurrency}")
|
->exec("cmake --build . -j {$this->builder->concurrency}")
|
||||||
->exec('make install');
|
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,51 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace SPC\builder\macos\library;
|
namespace SPC\builder\macos\library;
|
||||||
|
|
||||||
|
use SPC\exception\FileSystemException;
|
||||||
|
use SPC\exception\RuntimeException;
|
||||||
|
|
||||||
class nghttp2 extends MacOSLibraryBase
|
class nghttp2 extends MacOSLibraryBase
|
||||||
{
|
{
|
||||||
use \SPC\builder\unix\library\nghttp2;
|
|
||||||
|
|
||||||
public const NAME = 'nghttp2';
|
public const NAME = 'nghttp2';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws FileSystemException
|
||||||
|
* @throws RuntimeException
|
||||||
|
*/
|
||||||
|
protected function build(): void
|
||||||
|
{
|
||||||
|
$args = $this->builder->makeAutoconfArgs(static::NAME, [
|
||||||
|
'zlib' => null,
|
||||||
|
'openssl' => null,
|
||||||
|
'libxml2' => null,
|
||||||
|
'libev' => null,
|
||||||
|
'libcares' => null,
|
||||||
|
'libngtcp2' => null,
|
||||||
|
'libnghttp3' => null,
|
||||||
|
'libbpf' => null,
|
||||||
|
'libevent-openssl' => null,
|
||||||
|
'jansson' => null,
|
||||||
|
'jemalloc' => null,
|
||||||
|
'systemd' => null,
|
||||||
|
'cunit' => null,
|
||||||
|
]);
|
||||||
|
|
||||||
|
[,,$destdir] = SEPARATED_PATH;
|
||||||
|
|
||||||
|
shell()->cd($this->source_dir)
|
||||||
|
->exec(
|
||||||
|
'./configure ' .
|
||||||
|
'--enable-static ' .
|
||||||
|
'--disable-shared ' .
|
||||||
|
"--host={$this->builder->getOption('gnu-arch')}-apple-darwin " .
|
||||||
|
'--enable-lib-only ' .
|
||||||
|
'--with-boost=no ' .
|
||||||
|
$args . ' ' .
|
||||||
|
'--prefix='
|
||||||
|
)
|
||||||
|
->exec('make clean')
|
||||||
|
->exec("make -j{$this->builder->concurrency}")
|
||||||
|
->exec("make install DESTDIR={$destdir}");
|
||||||
|
$this->patchPkgconfPrefix(['libnghttp2.pc']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\macos\library;
|
|
||||||
|
|
||||||
class unixodbc extends MacOSLibraryBase
|
|
||||||
{
|
|
||||||
use \SPC\builder\unix\library\unixodbc;
|
|
||||||
|
|
||||||
public const NAME = 'unixodbc';
|
|
||||||
}
|
|
||||||
@@ -28,9 +28,9 @@ trait brotli
|
|||||||
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
||||||
$this->patchPkgconfPrefix(['libbrotlicommon.pc', 'libbrotlidec.pc', 'libbrotlienc.pc']);
|
$this->patchPkgconfPrefix(['libbrotlicommon.pc', 'libbrotlidec.pc', 'libbrotlienc.pc']);
|
||||||
shell()->cd(BUILD_ROOT_PATH . '/lib')
|
shell()->cd(BUILD_ROOT_PATH . '/lib')
|
||||||
->exec('ln -sf libbrotlicommon.a libbrotlicommon-static.a')
|
->exec('ln -s libbrotlicommon.a libbrotlicommon-static.a')
|
||||||
->exec('ln -sf libbrotlidec.a libbrotlidec-static.a')
|
->exec('ln -s libbrotlidec.a libbrotlidec-static.a')
|
||||||
->exec('ln -sf libbrotlienc.a libbrotlienc-static.a');
|
->exec('ln -s libbrotlienc.a libbrotlienc-static.a');
|
||||||
foreach (FileSystem::scanDirFiles(BUILD_ROOT_PATH . '/lib/', false, true) as $filename) {
|
foreach (FileSystem::scanDirFiles(BUILD_ROOT_PATH . '/lib/', false, true) as $filename) {
|
||||||
if (str_starts_with($filename, 'libbrotli') && (str_contains($filename, '.so') || str_ends_with($filename, '.dylib'))) {
|
if (str_starts_with($filename, 'libbrotli') && (str_contains($filename, '.so') || str_ends_with($filename, '.dylib'))) {
|
||||||
unlink(BUILD_ROOT_PATH . '/lib/' . $filename);
|
unlink(BUILD_ROOT_PATH . '/lib/' . $filename);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use SPC\exception\FileSystemException;
|
|||||||
use SPC\exception\RuntimeException;
|
use SPC\exception\RuntimeException;
|
||||||
use SPC\store\FileSystem;
|
use SPC\store\FileSystem;
|
||||||
|
|
||||||
trait libuv
|
trait leveldb
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @throws FileSystemException
|
* @throws FileSystemException
|
||||||
@@ -20,10 +20,14 @@ trait libuv
|
|||||||
FileSystem::resetDir($this->source_dir . '/build');
|
FileSystem::resetDir($this->source_dir . '/build');
|
||||||
// Start build
|
// Start build
|
||||||
shell()->cd($this->source_dir . '/build')
|
shell()->cd($this->source_dir . '/build')
|
||||||
->exec("cmake {$this->builder->makeCmakeArgs()} -DLIBUV_BUILD_SHARED=OFF ..")
|
->exec(
|
||||||
|
"cmake {$this->builder->makeCmakeArgs()} " .
|
||||||
|
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||||
|
'-DLEVELDB_BUILD_TESTS=OFF ' .
|
||||||
|
'-DLEVELDB_BUILD_BENCHMARKS=OFF ' .
|
||||||
|
'..'
|
||||||
|
)
|
||||||
->exec("cmake --build . -j {$this->builder->concurrency}")
|
->exec("cmake --build . -j {$this->builder->concurrency}")
|
||||||
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
||||||
// patch pkgconfig
|
|
||||||
$this->patchPkgconfPrefix(['libuv-static.pc']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\unix\library;
|
|
||||||
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
|
|
||||||
trait libcares
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
protected function build(): void
|
|
||||||
{
|
|
||||||
shell()->cd($this->source_dir)
|
|
||||||
->exec('./configure --prefix=' . BUILD_ROOT_PATH . ' --enable-static --disable-shared --disable-tests')
|
|
||||||
->exec("make -j {$this->builder->concurrency}")
|
|
||||||
->exec('make install');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\unix\library;
|
|
||||||
|
|
||||||
use SPC\store\FileSystem;
|
|
||||||
|
|
||||||
trait liblz4
|
|
||||||
{
|
|
||||||
protected function build()
|
|
||||||
{
|
|
||||||
shell()->cd($this->source_dir)
|
|
||||||
->exec("make PREFIX='' clean")
|
|
||||||
->exec("make -j{$this->builder->concurrency} PREFIX=''")
|
|
||||||
->exec("make install PREFIX='' DESTDIR=" . BUILD_ROOT_PATH);
|
|
||||||
|
|
||||||
$this->patchPkgconfPrefix(['liblz4.pc']);
|
|
||||||
|
|
||||||
foreach (FileSystem::scanDirFiles(BUILD_ROOT_PATH . '/lib/', false, true) as $filename) {
|
|
||||||
if (str_starts_with($filename, 'liblz4') && (str_contains($filename, '.so') || str_ends_with($filename, '.dylib'))) {
|
|
||||||
unlink(BUILD_ROOT_PATH . '/lib/' . $filename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\unix\library;
|
|
||||||
|
|
||||||
use SPC\exception\FileSystemException;
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
use SPC\exception\WrongUsageException;
|
|
||||||
|
|
||||||
trait nghttp2
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @throws FileSystemException
|
|
||||||
* @throws RuntimeException
|
|
||||||
* @throws WrongUsageException
|
|
||||||
*/
|
|
||||||
protected function build(): void
|
|
||||||
{
|
|
||||||
$args = $this->builder->makeAutoconfArgs(static::NAME, [
|
|
||||||
'zlib' => null,
|
|
||||||
'openssl' => null,
|
|
||||||
'libxml2' => null,
|
|
||||||
'libev' => null,
|
|
||||||
'libcares' => null,
|
|
||||||
'libngtcp2' => null,
|
|
||||||
'libnghttp3' => null,
|
|
||||||
'libbpf' => null,
|
|
||||||
'libevent-openssl' => null,
|
|
||||||
'jansson' => null,
|
|
||||||
'jemalloc' => null,
|
|
||||||
'systemd' => null,
|
|
||||||
'cunit' => null,
|
|
||||||
]);
|
|
||||||
|
|
||||||
[,,$destdir] = SEPARATED_PATH;
|
|
||||||
|
|
||||||
shell()->cd($this->source_dir)
|
|
||||||
->exec(
|
|
||||||
'./configure ' .
|
|
||||||
'--enable-static ' .
|
|
||||||
'--disable-shared ' .
|
|
||||||
'--enable-lib-only ' .
|
|
||||||
'--with-boost=no ' .
|
|
||||||
$args . ' ' .
|
|
||||||
'--prefix='
|
|
||||||
)
|
|
||||||
->exec('make clean')
|
|
||||||
->exec("make -j{$this->builder->concurrency}")
|
|
||||||
->exec("make install DESTDIR={$destdir}");
|
|
||||||
$this->patchPkgconfPrefix(['libnghttp2.pc']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,6 +28,9 @@ trait postgresql
|
|||||||
'icu' => 'icu-i18n',
|
'icu' => 'icu-i18n',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
f_putenv('PKG_CONFIG=' . BUILD_ROOT_PATH . '/bin/pkg-config');
|
||||||
|
f_putenv('PKG_CONFIG_PATH=' . BUILD_LIB_PATH . '/pkgconfig');
|
||||||
|
|
||||||
foreach ($optional_packages as $lib => $pkg) {
|
foreach ($optional_packages as $lib => $pkg) {
|
||||||
if ($this->getBuilder()->getLib($lib)) {
|
if ($this->getBuilder()->getLib($lib)) {
|
||||||
$packages .= ' ' . $pkg;
|
$packages .= ' ' . $pkg;
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\unix\library;
|
|
||||||
|
|
||||||
use SPC\exception\FileSystemException;
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
|
|
||||||
trait unixodbc
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @throws FileSystemException
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
protected function build(): void
|
|
||||||
{
|
|
||||||
shell()->cd($this->source_dir)
|
|
||||||
->exec(
|
|
||||||
'./configure ' .
|
|
||||||
'--enable-static --disable-shared ' .
|
|
||||||
'--disable-debug ' .
|
|
||||||
'--disable-dependency-tracking ' .
|
|
||||||
'--with-libiconv-prefix=' . BUILD_ROOT_PATH . ' ' .
|
|
||||||
'--with-included-ltdl ' .
|
|
||||||
'--enable-gui=no ' .
|
|
||||||
'--prefix='
|
|
||||||
)
|
|
||||||
->exec('make clean')
|
|
||||||
->exec("make -j{$this->builder->concurrency}")
|
|
||||||
->exec('make install DESTDIR=' . BUILD_ROOT_PATH);
|
|
||||||
$this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']);
|
|
||||||
$this->cleanLaFiles();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\windows;
|
|
||||||
|
|
||||||
class SystemUtil
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @param string $name 命令名称
|
|
||||||
* @param array $paths 寻找的目标路径(如果不传入,则使用环境变量 PATH)
|
|
||||||
* @return null|string 找到了返回命令路径,找不到返回 null
|
|
||||||
*/
|
|
||||||
public static function findCommand(string $name, array $paths = []): ?string
|
|
||||||
{
|
|
||||||
if (!$paths) {
|
|
||||||
$paths = explode(PATH_SEPARATOR, getenv('Path'));
|
|
||||||
}
|
|
||||||
foreach ($paths as $path) {
|
|
||||||
if (file_exists($path . DIRECTORY_SEPARATOR . $name)) {
|
|
||||||
return $path . DIRECTORY_SEPARATOR . $name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,17 +4,13 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace SPC\command;
|
namespace SPC\command;
|
||||||
|
|
||||||
use Laravel\Prompts\ConfirmPrompt;
|
|
||||||
use Laravel\Prompts\Prompt;
|
|
||||||
use Psr\Log\LogLevel;
|
use Psr\Log\LogLevel;
|
||||||
use SPC\ConsoleApplication;
|
use SPC\ConsoleApplication;
|
||||||
use SPC\exception\ExceptionHandler;
|
use SPC\exception\ExceptionHandler;
|
||||||
use SPC\exception\WrongUsageException;
|
use SPC\exception\WrongUsageException;
|
||||||
use Symfony\Component\Console\Command\Command;
|
use Symfony\Component\Console\Command\Command;
|
||||||
use Symfony\Component\Console\Helper\QuestionHelper;
|
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use Symfony\Component\Console\Question\ConfirmationQuestion;
|
|
||||||
use ZM\Logger\ConsoleLogger;
|
use ZM\Logger\ConsoleLogger;
|
||||||
|
|
||||||
abstract class BaseCommand extends Command
|
abstract class BaseCommand extends Command
|
||||||
@@ -82,15 +78,6 @@ abstract class BaseCommand extends Command
|
|||||||
{
|
{
|
||||||
$this->input = $input;
|
$this->input = $input;
|
||||||
$this->output = $output;
|
$this->output = $output;
|
||||||
|
|
||||||
// windows fallback
|
|
||||||
Prompt::fallbackWhen(PHP_OS_FAMILY === 'Windows');
|
|
||||||
ConfirmPrompt::fallbackUsing(function (ConfirmPrompt $prompt) use ($input, $output) {
|
|
||||||
$helper = new QuestionHelper();
|
|
||||||
$case = $prompt->default ? ' [Y/n] ' : ' [y/N] ';
|
|
||||||
$question = new ConfirmationQuestion($prompt->label . $case, $prompt->default);
|
|
||||||
return $helper->ask($input, $output, $question);
|
|
||||||
});
|
|
||||||
if ($this->shouldExecute()) {
|
if ($this->shouldExecute()) {
|
||||||
try {
|
try {
|
||||||
return $this->handle();
|
return $this->handle();
|
||||||
|
|||||||
@@ -75,9 +75,8 @@ class DoctorCommand extends BaseCommand
|
|||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
$this->output->writeln('<error>' . $e->getMessage() . '</error>');
|
$this->output->writeln('<error>' . $e->getMessage() . '</error>');
|
||||||
|
|
||||||
if (extension_loaded('pcntl')) {
|
pcntl_signal(SIGINT, SIG_IGN);
|
||||||
pcntl_signal(SIGINT, SIG_IGN);
|
|
||||||
}
|
|
||||||
return static::FAILURE;
|
return static::FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,23 +34,12 @@ final class CheckListHandler
|
|||||||
*/
|
*/
|
||||||
public function emitFix(OutputInterface $output, CheckResult $result): void
|
public function emitFix(OutputInterface $output, CheckResult $result): void
|
||||||
{
|
{
|
||||||
if (PHP_OS_FAMILY === 'Windows') {
|
pcntl_signal(SIGINT, function () use ($output) {
|
||||||
sapi_windows_set_ctrl_handler(function () use ($output) {
|
$output->writeln('<error>You cancelled fix</error>');
|
||||||
$output->writeln('<error>You cancelled fix</error>');
|
});
|
||||||
});
|
|
||||||
} elseif (extension_loaded('pcntl')) {
|
|
||||||
pcntl_signal(SIGINT, function () use ($output) {
|
|
||||||
$output->writeln('<error>You cancelled fix</error>');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$fix_result = call_user_func($this->fix_map[$result->getFixItem()], ...$result->getFixParams());
|
$fix_result = call_user_func($this->fix_map[$result->getFixItem()], ...$result->getFixParams());
|
||||||
|
pcntl_signal(SIGINT, SIG_IGN);
|
||||||
if (PHP_OS_FAMILY === 'Windows') {
|
|
||||||
sapi_windows_set_ctrl_handler(null);
|
|
||||||
} elseif (extension_loaded('pcntl')) {
|
|
||||||
pcntl_signal(SIGINT, SIG_IGN);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($fix_result) {
|
if ($fix_result) {
|
||||||
$output->writeln('<info>Fix done</info>');
|
$output->writeln('<info>Fix done</info>');
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ class OSCheckList
|
|||||||
#[AsCheckItem('if current OS are supported', level: 999)]
|
#[AsCheckItem('if current OS are supported', level: 999)]
|
||||||
public function checkOS(): ?CheckResult
|
public function checkOS(): ?CheckResult
|
||||||
{
|
{
|
||||||
if (!in_array(PHP_OS_FAMILY, ['Darwin', 'Linux', 'BSD', 'Windows'])) {
|
if (!in_array(PHP_OS_FAMILY, ['Darwin', 'Linux', 'BSD'])) {
|
||||||
return CheckResult::fail('Current OS is not supported: ' . PHP_OS_FAMILY);
|
return CheckResult::fail('Current OS is not supported');
|
||||||
}
|
}
|
||||||
$distro = PHP_OS_FAMILY === 'Linux' ? (' ' . SystemUtil::getOSRelease()['dist']) : '';
|
$distro = PHP_OS_FAMILY === 'Linux' ? (' ' . SystemUtil::getOSRelease()['dist']) : '';
|
||||||
return CheckResult::ok(PHP_OS_FAMILY . ' ' . php_uname('m') . $distro . ', supported');
|
return CheckResult::ok(PHP_OS_FAMILY . ' ' . php_uname('m') . $distro . ', supported');
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\doctor\item;
|
|
||||||
|
|
||||||
use SPC\builder\windows\SystemUtil;
|
|
||||||
use SPC\doctor\AsCheckItem;
|
|
||||||
use SPC\doctor\AsFixItem;
|
|
||||||
use SPC\doctor\CheckResult;
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
|
|
||||||
class WindowsToolCheckList
|
|
||||||
{
|
|
||||||
#[AsCheckItem('if git are installed', limit_os: 'Windows', level: 999)]
|
|
||||||
public function checkGit(): ?CheckResult
|
|
||||||
{
|
|
||||||
if (SystemUtil::findCommand('git.exe') === null) {
|
|
||||||
return CheckResult::fail('Git not installed, please install git for windows manually, see: https://git-scm.com/download/win');
|
|
||||||
// return CheckResult::fail('Git not installed, see https://static-php.dev/en/guide/windows-setup.html');
|
|
||||||
}
|
|
||||||
return CheckResult::ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[AsCheckItem('if php-sdk-binary-tools are downloaded', limit_os: 'Windows', level: 998)]
|
|
||||||
public function checkSDK(): ?CheckResult
|
|
||||||
{
|
|
||||||
if (!file_exists(PHP_SDK_PATH . DIRECTORY_SEPARATOR . 'phpsdk-starter.bat')) {
|
|
||||||
return CheckResult::fail('php-sdk-binary-tools not downloaded', 'install-php-sdk');
|
|
||||||
}
|
|
||||||
return CheckResult::ok(PHP_SDK_PATH);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[AsFixItem('install-php-sdk')]
|
|
||||||
public function installPhpSdk(): bool
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
cmd(true)->exec('git clone https://github.com/php/php-sdk-binary-tools.git ' . PHP_SDK_PATH);
|
|
||||||
} catch (RuntimeException) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -233,7 +233,6 @@ class FileSystem
|
|||||||
throw new FileSystemException("unknown archive format: {$filename}");
|
throw new FileSystemException("unknown archive format: {$filename}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self::emitSourceExtractHook($name);
|
|
||||||
} catch (RuntimeException $e) {
|
} catch (RuntimeException $e) {
|
||||||
if (PHP_OS_FAMILY === 'Windows') {
|
if (PHP_OS_FAMILY === 'Windows') {
|
||||||
f_passthru('rmdir /s /q ' . SOURCE_PATH . "/{$name}");
|
f_passthru('rmdir /s /q ' . SOURCE_PATH . "/{$name}");
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ class SourcePatcher
|
|||||||
// FileSystem::addSourceExtractHook('swow', [SourcePatcher::class, 'patchSwow']);
|
// FileSystem::addSourceExtractHook('swow', [SourcePatcher::class, 'patchSwow']);
|
||||||
FileSystem::addSourceExtractHook('micro', [SourcePatcher::class, 'patchMicro']);
|
FileSystem::addSourceExtractHook('micro', [SourcePatcher::class, 'patchMicro']);
|
||||||
FileSystem::addSourceExtractHook('openssl', [SourcePatcher::class, 'patchOpenssl11Darwin']);
|
FileSystem::addSourceExtractHook('openssl', [SourcePatcher::class, 'patchOpenssl11Darwin']);
|
||||||
FileSystem::addSourceExtractHook('swoole', [SourcePatcher::class, 'patchSwoole']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -160,17 +159,6 @@ class SourcePatcher
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function patchSwoole(): bool
|
|
||||||
{
|
|
||||||
// swoole hook needs pdo/pdo.h
|
|
||||||
FileSystem::replaceFileStr(
|
|
||||||
SOURCE_PATH . '/php-src/ext/swoole/config.m4',
|
|
||||||
'PHP_ADD_INCLUDE([$ext_srcdir])',
|
|
||||||
"PHP_ADD_INCLUDE( [\$ext_srcdir] )\n PHP_ADD_INCLUDE([\$abs_srcdir/ext])"
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws FileSystemException
|
* @throws FileSystemException
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ class UnixShell
|
|||||||
|
|
||||||
public function __construct(?bool $debug = null)
|
public function __construct(?bool $debug = null)
|
||||||
{
|
{
|
||||||
if (PHP_OS_FAMILY === 'Windows') {
|
|
||||||
throw new RuntimeException('Windows cannot use UnixShell');
|
|
||||||
}
|
|
||||||
$this->debug = $debug ?? defined('DEBUG_MODE');
|
$this->debug = $debug ?? defined('DEBUG_MODE');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,90 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\util;
|
|
||||||
|
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
use ZM\Logger\ConsoleColor;
|
|
||||||
|
|
||||||
class WindowsCmd
|
|
||||||
{
|
|
||||||
private ?string $cd = null;
|
|
||||||
|
|
||||||
private bool $debug;
|
|
||||||
|
|
||||||
private array $env = [];
|
|
||||||
|
|
||||||
public function __construct(?bool $debug = null)
|
|
||||||
{
|
|
||||||
if (PHP_OS_FAMILY !== 'Windows') {
|
|
||||||
throw new RuntimeException('Only windows can use WindowsCmd');
|
|
||||||
}
|
|
||||||
$this->debug = $debug ?? defined('DEBUG_MODE');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function cd(string $dir): WindowsCmd
|
|
||||||
{
|
|
||||||
logger()->info('Entering dir: ' . $dir);
|
|
||||||
$c = clone $this;
|
|
||||||
$c->cd = $dir;
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public function exec(string $cmd): WindowsCmd
|
|
||||||
{
|
|
||||||
/* @phpstan-ignore-next-line */
|
|
||||||
logger()->info(ConsoleColor::yellow('[EXEC] ') . ConsoleColor::green($cmd));
|
|
||||||
if ($this->cd !== null) {
|
|
||||||
$cmd = 'cd /d ' . escapeshellarg($this->cd) . ' && ' . $cmd;
|
|
||||||
}
|
|
||||||
if (!$this->debug) {
|
|
||||||
$cmd .= ' >nul 2>&1';
|
|
||||||
}
|
|
||||||
echo $cmd . PHP_EOL;
|
|
||||||
|
|
||||||
f_passthru($cmd);
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function execWithResult(string $cmd, bool $with_log = true): array
|
|
||||||
{
|
|
||||||
if ($with_log) {
|
|
||||||
/* @phpstan-ignore-next-line */
|
|
||||||
logger()->info(ConsoleColor::blue('[EXEC] ') . ConsoleColor::green($cmd));
|
|
||||||
} else {
|
|
||||||
logger()->debug('Running command with result: ' . $cmd);
|
|
||||||
}
|
|
||||||
exec($cmd, $out, $code);
|
|
||||||
return [$code, $out];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setEnv(array $env): WindowsCmd
|
|
||||||
{
|
|
||||||
$this->env = array_merge($this->env, $env);
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public function execWithEnv(string $cmd): WindowsCmd
|
|
||||||
{
|
|
||||||
if ($this->getEnvString() !== '') {
|
|
||||||
return $this->exec($this->getEnvString() . "call {$cmd}");
|
|
||||||
}
|
|
||||||
return $this->exec($cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getEnvString(): string
|
|
||||||
{
|
|
||||||
$str = '';
|
|
||||||
foreach ($this->env as $k => $v) {
|
|
||||||
$str .= 'set ' . $k . '=' . $v . ' && ';
|
|
||||||
}
|
|
||||||
return $str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,7 +5,7 @@ declare(strict_types=1);
|
|||||||
use ZM\Logger\ConsoleLogger;
|
use ZM\Logger\ConsoleLogger;
|
||||||
|
|
||||||
define('WORKING_DIR', getcwd());
|
define('WORKING_DIR', getcwd());
|
||||||
define('ROOT_DIR', dirname(__DIR__, 2));
|
const ROOT_DIR = __DIR__ . '/../..';
|
||||||
|
|
||||||
// CLI start time
|
// CLI start time
|
||||||
define('START_TIME', microtime(true));
|
define('START_TIME', microtime(true));
|
||||||
@@ -22,10 +22,6 @@ define('SEPARATED_PATH', [
|
|||||||
BUILD_ROOT_PATH,
|
BUILD_ROOT_PATH,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (PHP_OS_FAMILY === 'Windows') {
|
|
||||||
define('PHP_SDK_PATH', is_string($a = getenv('PHP_SDK_PATH')) ? $a : (WORKING_DIR . DIRECTORY_SEPARATOR . 'php-sdk-binary-tools'));
|
|
||||||
}
|
|
||||||
|
|
||||||
// dangerous command
|
// dangerous command
|
||||||
const DANGER_CMD = [
|
const DANGER_CMD = [
|
||||||
'rm',
|
'rm',
|
||||||
|
|||||||
@@ -3,10 +3,8 @@
|
|||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use SPC\exception\RuntimeException;
|
|
||||||
use SPC\exception\WrongUsageException;
|
use SPC\exception\WrongUsageException;
|
||||||
use SPC\util\UnixShell;
|
use SPC\util\UnixShell;
|
||||||
use SPC\util\WindowsCmd;
|
|
||||||
use ZM\Logger\ConsoleLogger;
|
use ZM\Logger\ConsoleLogger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,7 +68,7 @@ function osfamily2dir(): string
|
|||||||
/**
|
/**
|
||||||
* Execute the shell command, and the output will be directly printed in the terminal. If there is an error, an exception will be thrown
|
* Execute the shell command, and the output will be directly printed in the terminal. If there is an error, an exception will be thrown
|
||||||
*
|
*
|
||||||
* @throws RuntimeException
|
* @throws \SPC\exception\RuntimeException
|
||||||
*/
|
*/
|
||||||
function f_passthru(string $cmd): ?bool
|
function f_passthru(string $cmd): ?bool
|
||||||
{
|
{
|
||||||
@@ -88,7 +86,7 @@ function f_passthru(string $cmd): ?bool
|
|||||||
}
|
}
|
||||||
$ret = passthru($cmd, $code);
|
$ret = passthru($cmd, $code);
|
||||||
if ($code !== 0) {
|
if ($code !== 0) {
|
||||||
throw new RuntimeException('Command run failed with code[' . $code . ']: ' . $cmd, $code);
|
throw new \SPC\exception\RuntimeException('Command run failed with code[' . $code . ']: ' . $cmd, $code);
|
||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
@@ -122,8 +120,3 @@ function shell(?bool $debug = null): UnixShell
|
|||||||
{
|
{
|
||||||
return new UnixShell($debug);
|
return new UnixShell($debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
function cmd(?bool $debug = null): WindowsCmd
|
|
||||||
{
|
|
||||||
return new WindowsCmd($debug);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,55 +2,11 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
# If you want to test new extensions here, just modify it.
|
||||||
* This is GitHub Actions automatic test extension args generator.
|
$extensions = 'password-argon2,apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,event,exif,fileinfo,filter,ftp,gd,gmp,iconv,imagick,imap,intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,posix,protobuf,readline,redis,session,shmop,simplexml,soap,sockets,sqlite3,swoole,sysvmsg,sysvsem,sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib';
|
||||||
* You can edit $extensions, $with_libs and $base_combination.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// --------------------------------- edit area ---------------------------------
|
if (PHP_OS_FAMILY === 'Darwin') {
|
||||||
|
$extensions .= ',sodium';
|
||||||
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
|
||||||
$extensions = 'xml,intl';
|
|
||||||
|
|
||||||
// If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`).
|
|
||||||
$with_libs = '';
|
|
||||||
|
|
||||||
// Please change your test base combination. We recommend testing with `common`.
|
|
||||||
// You can use `common`, `bulk`, `minimal` or `none`.
|
|
||||||
$base_combination = 'minimal';
|
|
||||||
|
|
||||||
// -------------------------- code area, do not modify --------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get combination for tests, do not modify it if not necessary.
|
|
||||||
*/
|
|
||||||
function _getCombination(string $type = 'common'): string
|
|
||||||
{
|
|
||||||
return match ($type) {
|
|
||||||
'common' => 'bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,' .
|
|
||||||
'mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,' .
|
|
||||||
'sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip',
|
|
||||||
'bulk' => 'apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,event,exif,fileinfo,filter,ftp,gd,gmp,iconv,imagick,imap,' .
|
|
||||||
'intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,' .
|
|
||||||
'posix,protobuf,readline,redis,session,shmop,simplexml,soap,sockets,sodium,sqlite3,swoole,sysvmsg,sysvsem,' .
|
|
||||||
'sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib',
|
|
||||||
'minimal' => 'pcntl,posix,mbstring,tokenizer,phar',
|
|
||||||
default => '', // none
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($argv[1])) {
|
echo $extensions;
|
||||||
exit("Please use 'extensions', 'cmd' or 'libs' as output type");
|
|
||||||
}
|
|
||||||
|
|
||||||
$trim_value = "\r\n \t,";
|
|
||||||
|
|
||||||
$final_extensions = trim(trim($extensions, $trim_value) . ',' . _getCombination($base_combination), $trim_value);
|
|
||||||
$final_libs = trim($with_libs, $trim_value);
|
|
||||||
|
|
||||||
echo match ($argv[1]) {
|
|
||||||
'extensions' => $final_extensions,
|
|
||||||
'libs' => $final_libs,
|
|
||||||
'cmd' => $final_extensions . ($final_libs === '' ? '' : (' --with-libs=' . $final_libs)),
|
|
||||||
default => '',
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
assert(function_exists('swoole_cpu_num'));
|
|
||||||
assert(function_exists('swoole_string'));
|
|
||||||
assert(class_exists('Swoole\Coroutine'));
|
|
||||||
assert(class_exists('Swoole\Coroutine\Http2\Client'));
|
|
||||||
assert(class_exists('Swoole\Coroutine\Redis'));
|
|
||||||
assert(class_exists('Swoole\Coroutine\WaitGroup'));
|
|
||||||
assert(class_exists('Swoole\Http2\Request'));
|
|
||||||
assert(constant('SWOOLE_VERSION'));
|
|
||||||
Reference in New Issue
Block a user