Refactor patching logic for Alpine Linux and macOS in attr.php

This commit is contained in:
crazywhalecc 2026-02-06 16:33:13 +08:00
parent c72a2b6228
commit d8d9f389ba
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680
2 changed files with 15 additions and 14 deletions

View File

@ -7,6 +7,7 @@ namespace Package\Artifact;
use StaticPHP\Artifact\Artifact;
use StaticPHP\Attribute\Artifact\AfterSourceExtract;
use StaticPHP\Attribute\PatchDescription;
use StaticPHP\Runtime\SystemTarget;
use StaticPHP\Util\SourcePatcher;
use StaticPHP\Util\System\LinuxUtil;
@ -16,8 +17,7 @@ class attr
#[PatchDescription('Patch attr for Alpine Linux (musl) and macOS - gethostname declaration')]
public function patchAttrForAlpine(Artifact $artifact): void
{
if (PHP_OS_FAMILY === 'Darwin' || PHP_OS_FAMILY === 'Linux' && LinuxUtil::isMuslDist()) {
SourcePatcher::patchFile('attr_alpine_gethostname.patch', $artifact->getSourceDir());
}
spc_skip_unless(SystemTarget::getTargetOS() === 'Darwin' || SystemTarget::getTargetOS() === 'Linux' && !LinuxUtil::isMuslDist(), 'Only for Alpine Linux (musl) and macOS');
SourcePatcher::patchFile('attr_alpine_gethostname.patch', $artifact->getSourceDir());
}
}

View File

@ -320,17 +320,6 @@ function get_display_path(string $path): string
throw new WrongUsageException("Cannot convert path: {$path}");
}
/**
* Get the global DI container instance.
*
* @deprecated Use ApplicationContext::getContainer() or dependency injection instead.
* This function is kept for backward compatibility during the migration period.
*/
function spc_container(): DI\Container
{
return \StaticPHP\DI\ApplicationContext::getContainer();
}
/**
* Skip the current operation if the condition is true.
* You should ALWAYS use this function inside an attribute callback.
@ -345,6 +334,18 @@ function spc_skip_if(bool $condition, string $message = ''): void
}
}
/**
* Skip the current operation unless the condition is true.
* You should ALWAYS use this function inside an attribute callback.
*
* @param bool $condition Condition to evaluate
* @param string $message Optional message for the skip exception
*/
function spc_skip_unless(bool $condition, string $message = ''): void
{
spc_skip_if(!$condition, $message);
}
/**
* Parse extension list from string, replace alias and filter internal extensions.
*