Add tryPatchMakefileUnix method to fix //lib path in Makefile for Linux builds

This commit is contained in:
crazywhalecc 2026-02-27 09:54:40 +08:00
parent f9fe2adb1d
commit b3d67b928a
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680

View File

@ -136,6 +136,18 @@ trait unix
}
}
#[BeforeStage('php', [self::class, 'makeForUnix'], 'php')]
#[PatchDescription('Patch Makefile to fix //lib path for Linux builds')]
public function tryPatchMakefileUnix(): void
{
if (SystemTarget::getTargetOS() !== 'Linux') {
return;
}
// replace //lib with /lib in Makefile
shell()->cd(SOURCE_PATH . '/php-src')->exec('sed -i "s|//lib|/lib|g" Makefile');
}
#[Stage]
public function makeForUnix(TargetPackage $package, PackageInstaller $installer): void
{
@ -168,9 +180,6 @@ trait unix
$concurrency = $builder->concurrency;
$vars = $this->makeVars($installer);
$makeArgs = $this->makeVarsToArgs($vars);
if (SystemTarget::getTargetOS() === 'Linux') {
shell()->cd($package->getSourceDir())->exec('sed -i "s|//lib|/lib|g" Makefile');
}
shell()->cd($package->getSourceDir())
->setEnv($vars)
->exec("make -j{$concurrency} {$makeArgs} cli");
@ -186,9 +195,6 @@ trait unix
$concurrency = $builder->concurrency;
$vars = $this->makeVars($installer);
$makeArgs = $this->makeVarsToArgs($vars);
if (SystemTarget::getTargetOS() === 'Linux') {
shell()->cd($package->getSourceDir())->exec('sed -i "s|//lib|/lib|g" Makefile');
}
shell()->cd($package->getSourceDir())
->setEnv($vars)
->exec("make -j{$concurrency} {$makeArgs} cgi");
@ -204,9 +210,6 @@ trait unix
$concurrency = $builder->concurrency;
$vars = $this->makeVars($installer);
$makeArgs = $this->makeVarsToArgs($vars);
if (SystemTarget::getTargetOS() === 'Linux') {
shell()->cd($package->getSourceDir())->exec('sed -i "s|//lib|/lib|g" Makefile');
}
shell()->cd($package->getSourceDir())
->setEnv($vars)
->exec("make -j{$concurrency} {$makeArgs} fpm");
@ -231,9 +234,6 @@ trait unix
$vars['EXTRA_CFLAGS'] .= $package->getBuildOption('with-micro-fake-cli', false) ? ' -DPHP_MICRO_FAKE_CLI' : '';
$makeArgs = $this->makeVarsToArgs($vars);
// build
if (SystemTarget::getTargetOS() === 'Linux') {
shell()->cd($package->getSourceDir())->exec('sed -i "s|//lib|/lib|g" Makefile');
}
shell()->cd($package->getSourceDir())
->setEnv($vars)
->exec("make -j{$builder->concurrency} {$makeArgs} micro");