mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-02 14:25:41 +08:00
Merge branch 'v3' into v3c/artifact-static-helpers
This commit is contained in:
@@ -73,13 +73,20 @@ class LinuxMuslCheck
|
||||
$prefix = 'sudo ';
|
||||
logger()->warning('Current user is not root, using sudo for running command');
|
||||
}
|
||||
$sysEnv = ['CC' => 'gcc', 'CXX' => 'g++', 'AR' => 'ar', 'LD' => 'ld', 'RANLIB' => 'ranlib'];
|
||||
$envFlags = '';
|
||||
foreach ($sysEnv as $k => $v) {
|
||||
$envFlags .= "{$k}={$v} ";
|
||||
}
|
||||
$envFlags = rtrim($envFlags);
|
||||
$shell = shell()->cd(SOURCE_PATH . '/musl-wrapper')
|
||||
->exec('CC=gcc CXX=g++ AR=ar LD=ld ./configure --disable-gcc-wrapper')
|
||||
->exec('CC=gcc CXX=g++ AR=ar LD=ld make -j');
|
||||
->setEnv($sysEnv)
|
||||
->exec('./configure --disable-gcc-wrapper')
|
||||
->exec('make -j');
|
||||
if ($prefix !== '') {
|
||||
f_passthru('cd ' . SOURCE_PATH . "/musl-wrapper && CC=gcc CXX=g++ AR=ar LD=ld {$prefix}make install");
|
||||
f_passthru('cd ' . SOURCE_PATH . "/musl-wrapper && {$envFlags} {$prefix}make install");
|
||||
} else {
|
||||
$shell->exec("CC=gcc CXX=g++ AR=ar LD=ld {$prefix}make install");
|
||||
$shell->exec("{$prefix}make install");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -256,10 +256,30 @@ function clean_spaces(string $string): string
|
||||
*/
|
||||
function deduplicate_flags(string $flags): string
|
||||
{
|
||||
$tokens = preg_split('/\s+/', trim($flags));
|
||||
// Flags that take their value as a separate token.
|
||||
static $paired = [
|
||||
'-Xclang', '-Xpreprocessor', '-Xlinker', '-Xassembler',
|
||||
'-framework', '-arch', '-target',
|
||||
'-include', '-imacros', '-isystem', '-isysroot', '-iquote', '-idirafter',
|
||||
'-MT', '-MF', '-MQ',
|
||||
];
|
||||
|
||||
$tokens = preg_split('/\s+/', trim($flags)) ?: [];
|
||||
|
||||
// Group paired flag+value into a single atom before dedup.
|
||||
$atoms = [];
|
||||
$n = count($tokens);
|
||||
for ($i = 0; $i < $n; ++$i) {
|
||||
if (in_array($tokens[$i], $paired, true) && $i + 1 < $n) {
|
||||
$atoms[] = $tokens[$i] . ' ' . $tokens[$i + 1];
|
||||
++$i;
|
||||
} else {
|
||||
$atoms[] = $tokens[$i];
|
||||
}
|
||||
}
|
||||
|
||||
// Reverse, unique, reverse back - keeps last occurrence of duplicates
|
||||
$deduplicated = array_reverse(array_unique(array_reverse($tokens)));
|
||||
$deduplicated = array_reverse(array_unique(array_reverse($atoms)));
|
||||
|
||||
return implode(' ', $deduplicated);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user