mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 04:44:53 +08:00
optimize install musl wrapper and cross make function
This commit is contained in:
parent
ca1189b6ca
commit
b6409bded4
@ -61,25 +61,7 @@ class LinuxMuslCheck
|
|||||||
if (!file_exists($cross_compile_lib) || !file_exists($cross_compile_gcc)) {
|
if (!file_exists($cross_compile_lib) || !file_exists($cross_compile_gcc)) {
|
||||||
$this->installMuslCrossMake();
|
$this->installMuslCrossMake();
|
||||||
}
|
}
|
||||||
|
// TODO: add path using putenv instead of editing /etc/profile
|
||||||
$prefix = '';
|
|
||||||
if (get_current_user() !== 'root') {
|
|
||||||
$prefix = 'sudo ';
|
|
||||||
logger()->warning('Current user is not root, using sudo for running command');
|
|
||||||
}
|
|
||||||
$profile = '/etc/profile';
|
|
||||||
if (file_exists('~/.bash_profile')) {
|
|
||||||
$profile = '~/.bash_profile';
|
|
||||||
} elseif (file_exists('~/.profile')) {
|
|
||||||
$profile = '~/.profile';
|
|
||||||
}
|
|
||||||
if (!file_exists($profile)) {
|
|
||||||
shell(true)->exec($prefix . 'touch ' . $profile);
|
|
||||||
}
|
|
||||||
if (!getenv('PATH') || !str_contains(getenv('PATH'), '/usr/local/musl/bin')) {
|
|
||||||
$fix_path = 'echo "export PATH=/usr/local/musl/bin:$PATH" >> ' . $profile . ' && export PATH=/usr/local/musl/bin:$PATH';
|
|
||||||
shell(true)->exec($prefix . $fix_path);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
} catch (RuntimeException) {
|
} catch (RuntimeException) {
|
||||||
return false;
|
return false;
|
||||||
@ -98,32 +80,36 @@ class LinuxMuslCheck
|
|||||||
$prefix = 'sudo ';
|
$prefix = 'sudo ';
|
||||||
logger()->warning('Current user is not root, using sudo for running command');
|
logger()->warning('Current user is not root, using sudo for running command');
|
||||||
}
|
}
|
||||||
|
$musl_version_name = 'musl-1.2.4';
|
||||||
$musl_source = [
|
$musl_source = [
|
||||||
'type' => 'url',
|
'type' => 'url',
|
||||||
'url' => 'https://musl.libc.org/releases/musl-1.2.4.tar.gz',
|
'url' => "https://musl.libc.org/releases/{$musl_version_name}.tar.gz",
|
||||||
];
|
];
|
||||||
Downloader::downloadSource('musl-1.2.4', $musl_source);
|
Downloader::downloadSource($musl_version_name, $musl_source);
|
||||||
FileSystem::extractSource('musl-1.2.4', DOWNLOAD_PATH . '/musl-1.2.4.tar.gz');
|
FileSystem::extractSource($musl_version_name, DOWNLOAD_PATH . "/{$musl_version_name}.tar.gz");
|
||||||
$musl_gcc_install_cmd = 'cd ' . SOURCE_PATH . '/musl-1.2.4 && \
|
shell(true)->cd(SOURCE_PATH . "/{$musl_version_name}")
|
||||||
./configure --enable-wrapper=gcc && \
|
->exec('./configure --enable-wrapper=gcc')
|
||||||
make -j && make install';
|
->exec('make -j')
|
||||||
shell(true)->exec($prefix . $musl_gcc_install_cmd);
|
->exec("{$prefix}make install");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws DownloaderException
|
* @throws DownloaderException
|
||||||
* @throws RuntimeException
|
|
||||||
* @throws FileSystemException
|
* @throws FileSystemException
|
||||||
|
* @throws RuntimeException
|
||||||
|
* @throws WrongUsageException
|
||||||
*/
|
*/
|
||||||
public function installMuslCrossMake(): void
|
public function installMuslCrossMake(): void
|
||||||
{
|
{
|
||||||
$arch = arch2gnu(php_uname('m'));
|
$arch = arch2gnu(php_uname('m'));
|
||||||
$musl_compile_source = [
|
$musl_compile_source = [
|
||||||
'type' => 'url',
|
'type' => 'url',
|
||||||
'url' => "https://musl.cc/{$arch}-linux-musl-cross.tgz",
|
'url' => "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/{$arch}-musl-toolchain.tgz",
|
||||||
];
|
];
|
||||||
|
logger()->info('Downloading ' . $musl_compile_source['url']);
|
||||||
Downloader::downloadSource('musl-compile', $musl_compile_source);
|
Downloader::downloadSource('musl-compile', $musl_compile_source);
|
||||||
FileSystem::extractSource('musl-compile', DOWNLOAD_PATH . "/{$arch}-linux-musl-cross.tgz");
|
logger()->info('Extracting musl-cross');
|
||||||
|
FileSystem::extractSource('musl-compile', DOWNLOAD_PATH . "/{$arch}-musl-toolchain.tgz");
|
||||||
shell(true)->exec('cp -rf ' . SOURCE_PATH . '/musl-compile/* /usr/local/musl');
|
shell(true)->exec('cp -rf ' . SOURCE_PATH . '/musl-compile/* /usr/local/musl');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user