aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/linters/lint
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-15 07:37:45 +0900
committernsfisis <nsfisis@gmail.com>2026-08-15 07:37:45 +0900
commit548463bad1f72c97f68b47f54a263a4f4ad87b3a (patch)
tree1285d740611be3ad175f9e57c61d880b500dd818 /scripts/linters/lint
parented8694f89eb7702eb7e617af29f8f444f32b8d3c (diff)
downloadphp-shirabe-548463bad1f72c97f68b47f54a263a4f4ad87b3a.tar.gz
php-shirabe-548463bad1f72c97f68b47f54a263a4f4ad87b3a.tar.zst
php-shirabe-548463bad1f72c97f68b47f54a263a4f4ad87b3a.zip
feat(php-rpc): embed the Composer PHP runtime in the executable
Plugins and scripts need the real `Composer\` classes and the packages Composer depends on, which so far came from a checkout found through SHIRABE_COMPOSER_PHP_DIR or a path next to the workspace. Neither exists for a distributed binary. The build script now archives those PHP sources into a phar the way Compiler.php does and the executable carries it. The worker maps it with Phar::loadPhar and reads a content-addressed sentinel back to tell a bundle it can use from one it cannot; where its PHP cannot open the phar, the bundle is unpacked once into the cache directory and autoloaded from there. SHIRABE_COMPOSER_PHP_DIR still overrides both for development. PHP locates a phar's manifest by the first __HALT_COMPILER(); token in the file, so the executable must hold no other copy of it: phar.rs builds the token at run time, and a linter keeps further literals out of the sources that reach the binary. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'scripts/linters/lint')
-rwxr-xr-xscripts/linters/lint4
1 files changed, 4 insertions, 0 deletions
diff --git a/scripts/linters/lint b/scripts/linters/lint
index 5f59945d..e90c3e0c 100755
--- a/scripts/linters/lint
+++ b/scripts/linters/lint
@@ -11,6 +11,7 @@ use Shirabe\Lint\Linters\NoBannedUse;
use Shirabe\Lint\Linters\NoDecorativeSectionComment;
use Shirabe\Lint\Linters\NoExceptionDowncast;
use Shirabe\Lint\Linters\NoFormatTrailingComma;
+use Shirabe\Lint\Linters\NoHaltCompilerLiteral;
use Shirabe\Lint\Linters\NoModRs;
use Shirabe\Lint\Linters\NoStdCollectionsMaps;
use Shirabe\Lint\Linters\NoUseAsAlias;
@@ -39,6 +40,9 @@ $runner = new Runner($rootDir, [
'crates/shirabe/src/package/loader/root_package_loader.rs',
'crates/shirabe-spdx-licenses/src/spdx_licenses.rs',
]],
+ [new NoHaltCompilerLiteral(), [
+ 'crates/shirabe-php-rpc/build.rs',
+ ]],
[new NoModRs(), []],
[new NoStdCollectionsMaps(), []],
[new NoUseAsAlias(), []],