patch before make for uv

This commit is contained in:
DubbleClick 2025-06-20 15:25:07 +07:00
parent 625ee2703d
commit 7d45415990
2 changed files with 22 additions and 4 deletions

View File

@ -208,6 +208,16 @@ class Extension
return false; return false;
} }
/**
* Patch code before shared extension make
* If you need to patch some code, overwrite this
* return true if you patched something, false if not
*/
public function patchBeforeSharedMake(): bool
{
return false;
}
/** /**
* @return string * @return string
* returns a command line string with all required shared extensions to load * returns a command line string with all required shared extensions to load
@ -408,6 +418,10 @@ class Extension
'$1 ' . $staticLibString '$1 ' . $staticLibString
); );
if ($this->patchBeforeSharedMake()) {
logger()->info('ext [ . ' . $this->getName() . '] patching before shared make');
}
shell()->cd($this->source_dir) shell()->cd($this->source_dir)
->setEnv($env) ->setEnv($env)
->exec('make clean') ->exec('make clean')

View File

@ -5,6 +5,8 @@ declare(strict_types=1);
namespace SPC\builder\extension; namespace SPC\builder\extension;
use SPC\builder\Extension; use SPC\builder\Extension;
use SPC\builder\linux\SystemUtil;
use SPC\store\FileSystem;
use SPC\util\CustomExt; use SPC\util\CustomExt;
#[CustomExt('uv')] #[CustomExt('uv')]
@ -17,10 +19,12 @@ class uv extends Extension
} }
} }
public function getStaticAndSharedLibs(): array public function patchBeforeSharedMake(): bool
{ {
[$static, $shared] = parent::getStaticAndSharedLibs(); if (SystemUtil::getLibcVersionIfExists() >= '2.17') {
$shared .= ' -lpthread'; return false;
return [$static, $shared]; }
FileSystem::replaceFileRegex($this->source_dir . '/Makefile', '/^(LDFLAGS =.*)$/', '$1 -luv -ldl -lrt -pthread');
return true;
} }
} }