Remove patch point

This commit is contained in:
crazywhalecc
2026-04-20 11:29:16 +08:00
parent 69d4c16fcb
commit 05900c2d6c
5 changed files with 6 additions and 95 deletions

View File

@@ -26,7 +26,6 @@ use StaticPHP\Util\InteractiveTerm;
use StaticPHP\Util\SourcePatcher; use StaticPHP\Util\SourcePatcher;
use StaticPHP\Util\SPCConfigUtil; use StaticPHP\Util\SPCConfigUtil;
use StaticPHP\Util\System\UnixUtil; use StaticPHP\Util\System\UnixUtil;
use StaticPHP\Util\V2CompatLayer;
use ZM\Logger\ConsoleColor; use ZM\Logger\ConsoleColor;
trait unix trait unix
@@ -62,7 +61,6 @@ trait unix
public function buildconfForUnix(TargetPackage $package): void public function buildconfForUnix(TargetPackage $package): void
{ {
InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./buildconf')); InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./buildconf'));
V2CompatLayer::emitPatchPoint('before-php-buildconf');
shell()->cd($package->getSourceDir())->exec(getenv('SPC_CMD_PREFIX_PHP_BUILDCONF')); shell()->cd($package->getSourceDir())->exec(getenv('SPC_CMD_PREFIX_PHP_BUILDCONF'));
} }
@@ -70,7 +68,6 @@ trait unix
public function configureForUnix(TargetPackage $package, PackageInstaller $installer): void public function configureForUnix(TargetPackage $package, PackageInstaller $installer): void
{ {
InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./configure')); InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./configure'));
V2CompatLayer::emitPatchPoint('before-php-configure');
$cmd = getenv('SPC_CMD_PREFIX_PHP_CONFIGURE'); $cmd = getenv('SPC_CMD_PREFIX_PHP_CONFIGURE');
$args = []; $args = [];
@@ -183,8 +180,6 @@ trait unix
#[Stage] #[Stage]
public function makeForUnix(TargetPackage $package, PackageInstaller $installer): void public function makeForUnix(TargetPackage $package, PackageInstaller $installer): void
{ {
V2CompatLayer::emitPatchPoint('before-php-make');
logger()->info('cleaning up php-src build files'); logger()->info('cleaning up php-src build files');
shell()->cd($package->getSourceDir())->exec('make clean'); shell()->cd($package->getSourceDir())->exec('make clean');

View File

@@ -22,7 +22,6 @@ use StaticPHP\Util\FileSystem;
use StaticPHP\Util\InteractiveTerm; use StaticPHP\Util\InteractiveTerm;
use StaticPHP\Util\SourcePatcher; use StaticPHP\Util\SourcePatcher;
use StaticPHP\Util\System\WindowsUtil; use StaticPHP\Util\System\WindowsUtil;
use StaticPHP\Util\V2CompatLayer;
use ZM\Logger\ConsoleColor; use ZM\Logger\ConsoleColor;
trait windows trait windows
@@ -38,7 +37,6 @@ trait windows
public function buildconfForWindows(TargetPackage $package, PackageInstaller $installer): void public function buildconfForWindows(TargetPackage $package, PackageInstaller $installer): void
{ {
InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./buildconf.bat')); InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./buildconf.bat'));
V2CompatLayer::emitPatchPoint('before-php-buildconf');
cmd()->cd($package->getSourceDir())->exec('.\buildconf.bat'); cmd()->cd($package->getSourceDir())->exec('.\buildconf.bat');
if ($package->getBuildOption('enable-micro-win32') && $installer->isPackageResolved('php-micro')) { if ($package->getBuildOption('enable-micro-win32') && $installer->isPackageResolved('php-micro')) {
@@ -52,7 +50,6 @@ trait windows
public function configureForWindows(TargetPackage $package, PackageInstaller $installer): void public function configureForWindows(TargetPackage $package, PackageInstaller $installer): void
{ {
InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./configure.bat')); InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./configure.bat'));
V2CompatLayer::emitPatchPoint('before-php-configure');
$args = [ $args = [
'--disable-all', '--disable-all',
"--with-php-build={$package->getBuildRootPath()}", "--with-php-build={$package->getBuildRootPath()}",
@@ -232,7 +229,6 @@ trait windows
#[Stage] #[Stage]
public function makeForWindows(TargetPackage $package, PackageInstaller $installer): void public function makeForWindows(TargetPackage $package, PackageInstaller $installer): void
{ {
V2CompatLayer::emitPatchPoint('before-php-make');
InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('nmake clean')); InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('nmake clean'));
cmd()->cd($package->getSourceDir())->exec('nmake clean'); cmd()->cd($package->getSourceDir())->exec('nmake clean');

View File

@@ -52,7 +52,6 @@ class PackageInstaller
ApplicationContext::set(PackageInstaller::class, $this); ApplicationContext::set(PackageInstaller::class, $this);
$builder = new PackageBuilder($options); $builder = new PackageBuilder($options);
ApplicationContext::set(PackageBuilder::class, $builder); ApplicationContext::set(PackageBuilder::class, $builder);
ApplicationContext::set('patch_point', '');
// Check for no-download option // Check for no-download option
if (!empty($options['no-download'])) { if (!empty($options['no-download'])) {

View File

@@ -5,11 +5,6 @@ declare(strict_types=1);
namespace StaticPHP\Util; namespace StaticPHP\Util;
use StaticPHP\Artifact\Artifact; use StaticPHP\Artifact\Artifact;
use StaticPHP\DI\ApplicationContext;
use StaticPHP\Exception\InterruptException;
use StaticPHP\Exception\WrongUsageException;
use StaticPHP\Package\PackageBuilder;
use StaticPHP\Package\PackageInstaller;
use StaticPHP\Package\TargetPackage; use StaticPHP\Package\TargetPackage;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputOption;
@@ -70,71 +65,15 @@ class V2CompatLayer
} }
} }
public static function beforeExtractHook(Artifact $artifact): void public static function beforeExtractHook(Artifact $artifact): void {}
{
self::emitPatchPoint(match ($artifact->getName()) {
'php-src' => 'before-php-extract',
'micro' => 'before-micro-extract',
default => '',
});
}
public static function afterExtractHook(Artifact $artifact): void public static function afterExtractHook(Artifact $artifact): void {}
{
self::emitPatchPoint(match ($artifact->getName()) {
'php-src' => 'after-php-extract',
'micro' => 'after-micro-extract',
default => '',
});
}
public static function beforeExtsExtractHook(): void public static function beforeExtsExtractHook(): void {}
{
self::emitPatchPoint('before-exts-extract');
}
public static function afterExtsExtractHook(): void public static function afterExtsExtractHook(): void {}
{
self::emitPatchPoint('after-exts-extract');
}
public static function beforeLibExtractHook(string $pkg): void public static function beforeLibExtractHook(string $pkg): void {}
{
self::emitPatchPoint("before-library[{$pkg}]-extract");
}
public static function afterLibExtractHook(string $pkg): void public static function afterLibExtractHook(string $pkg): void {}
{
self::emitPatchPoint("after-library[{$pkg}]-extract");
}
public static function emitPatchPoint(string $point_name): void
{
if ($point_name === '') {
return;
}
if (!ApplicationContext::has(PackageInstaller::class)) {
return;
}
$builder = ApplicationContext::get(PackageBuilder::class);
$patch_points = $builder->getOption('with-added-patch', []);
ApplicationContext::set('patch_point', $point_name);
foreach ($patch_points as $patch_point) {
if (!file_exists($patch_point)) {
throw new WrongUsageException("Additional patch script {$patch_point} does not exist!");
}
logger()->debug("Applying additional patch script {$patch_point}");
try {
require $patch_point;
} catch (InterruptException $e) {
if ($e->getCode() === 0) {
logger()->notice('Patch script ' . $patch_point . ' interrupted' . ($e->getMessage() ? (': ' . $e->getMessage()) : '.'));
} else {
logger()->error('Patch script ' . $patch_point . ' interrupted with error code [' . $e->getCode() . ']' . ($e->getMessage() ? (': ' . $e->getMessage()) : '.'));
}
}
}
ApplicationContext::set('patch_point', '');
}
} }

View File

@@ -3,7 +3,6 @@
declare(strict_types=1); declare(strict_types=1);
use StaticPHP\Exception\ExecutionException; use StaticPHP\Exception\ExecutionException;
use StaticPHP\Exception\InterruptException;
use StaticPHP\Exception\WrongUsageException; use StaticPHP\Exception\WrongUsageException;
use StaticPHP\Runtime\Shell\DefaultShell; use StaticPHP\Runtime\Shell\DefaultShell;
use StaticPHP\Runtime\Shell\UnixShell; use StaticPHP\Runtime\Shell\UnixShell;
@@ -120,18 +119,6 @@ function cmd(?bool $debug = null): WindowsCmd
return new WindowsCmd($debug); return new WindowsCmd($debug);
} }
/**
* Get current patch point.
*/
function patch_point(): string
{
if (StaticPHP\DI\ApplicationContext::has('patch_point')) {
/* @phpstan-ignore-next-line */
return StaticPHP\DI\ApplicationContext::get('patch_point');
}
return '';
}
// Add log filter value(s) to prevent secret leak // Add log filter value(s) to prevent secret leak
function spc_add_log_filter(array|string $filter): void function spc_add_log_filter(array|string $filter): void
{ {
@@ -158,11 +145,6 @@ function spc_write_log(mixed $stream, string $data): false|int
return fwrite($stream, $data); return fwrite($stream, $data);
} }
function patch_point_interrupt(int $retcode, string $msg = ''): InterruptException
{
return new InterruptException(message: $msg, code: $retcode);
}
// ------- function f_* part ------- // ------- function f_* part -------
// f_ means standard function wrapper // f_ means standard function wrapper