mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-08 17:35:36 +08:00
refactor: move getLibExtra* to Package base, add ToolPackage support to executors and builders
- Move getLibExtraCFlags/getLibExtraCxxFlags/getLibExtraLdFlags/getLibExtraLibs from LibraryPackage to Package base class so ToolPackage can also use them - Full ToolPackage implementation: getBuildRootPath, getIncludeDir, getLibDir, getBinDir, getToolField with platform suffix support - Update PackageBuilder to support building ToolPackage (not just LibraryPackage) - Update PackageInstaller: support ToolPackage in download/extract/install pipeline, auto-install build-time tools, record installed versions - Allow LibraryPackage|ToolPackage union type in all Executor classes and UnixShell::initializeEnv
This commit is contained in:
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace StaticPHP\Package;
|
||||
|
||||
use StaticPHP\Artifact\ArtifactCache;
|
||||
use StaticPHP\Config\PackageConfig;
|
||||
use StaticPHP\DI\ApplicationContext;
|
||||
use StaticPHP\Exception\SPCException;
|
||||
@@ -39,8 +40,8 @@ class PackageBuilder
|
||||
public function buildPackage(Package $package, bool $force = false): int
|
||||
{
|
||||
// init build dirs
|
||||
if (!$package instanceof LibraryPackage) {
|
||||
throw new SPCInternalException('Please, never try to build non-library packages directly.');
|
||||
if (!$package instanceof LibraryPackage && !$package instanceof ToolPackage) {
|
||||
throw new SPCInternalException('Please, never try to build non-library, non-tool packages directly.');
|
||||
}
|
||||
FileSystem::createDir($package->getBuildRootPath());
|
||||
FileSystem::createDir($package->getIncludeDir());
|
||||
@@ -78,6 +79,14 @@ class PackageBuilder
|
||||
$this->installLicense($package, $license);
|
||||
}
|
||||
}
|
||||
|
||||
// Record the installed version for tool packages built from source, so
|
||||
// `check-update --installed` reflects what's actually on disk (mirrors the
|
||||
// binary-install recording in PackageInstaller::installBinary()).
|
||||
if ($package instanceof ToolPackage) {
|
||||
$source_info = ApplicationContext::get(ArtifactCache::class)->getSourceInfo($package->getName());
|
||||
ToolVersionRegistry::record($package->getName(), $source_info['version'] ?? null);
|
||||
}
|
||||
} catch (SPCException $e) {
|
||||
// Ensure package information is bound if not already
|
||||
if ($e->getPackageInfo() === null) {
|
||||
|
||||
Reference in New Issue
Block a user