diff --git a/src/Package/Artifact/llvm_compiler_rt.php b/src/Package/Artifact/llvm_compiler_rt.php index 974b9d57..166500b9 100644 --- a/src/Package/Artifact/llvm_compiler_rt.php +++ b/src/Package/Artifact/llvm_compiler_rt.php @@ -7,6 +7,7 @@ namespace Package\Artifact; use StaticPHP\Artifact\ArtifactDownloader; use StaticPHP\Artifact\Downloader\DownloadResult; use StaticPHP\Artifact\Downloader\Type\CheckUpdateResult; +use StaticPHP\Artifact\Downloader\Type\GitHubTokenSetupTrait; use StaticPHP\Attribute\Artifact\AfterBinaryExtract; use StaticPHP\Attribute\Artifact\CustomBinary; use StaticPHP\Attribute\Artifact\CustomBinaryCheckUpdate; @@ -21,6 +22,8 @@ use StaticPHP\Runtime\SystemTarget; */ class llvm_compiler_rt { + use GitHubTokenSetupTrait; + #[CustomBinary('llvm-compiler-rt', [ 'linux-x86_64', 'linux-aarch64', @@ -34,7 +37,7 @@ class llvm_compiler_rt $tarball = "compiler-rt-{$llvmVersion}.src.tar.xz"; $url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-{$llvmVersion}/{$tarball}"; $tarballPath = DOWNLOAD_PATH . '/' . $tarball; - default_shell()->executeCurlDownload($url, $tarballPath, retries: $downloader->getRetry()); + default_shell()->executeCurlDownload($url, $tarballPath, headers: $this->getGitHubTokenHeaders(), retries: $downloader->getRetry()); return DownloadResult::archive($tarball, ['url' => $url, 'version' => $llvmVersion], extract: '{source_path}/llvm-compiler-rt', verified: false, version: $llvmVersion); } diff --git a/src/Package/Artifact/llvm_tools.php b/src/Package/Artifact/llvm_tools.php index 5dd26214..3be55a93 100644 --- a/src/Package/Artifact/llvm_tools.php +++ b/src/Package/Artifact/llvm_tools.php @@ -7,6 +7,7 @@ namespace Package\Artifact; use StaticPHP\Artifact\ArtifactDownloader; use StaticPHP\Artifact\Downloader\DownloadResult; use StaticPHP\Artifact\Downloader\Type\CheckUpdateResult; +use StaticPHP\Artifact\Downloader\Type\GitHubTokenSetupTrait; use StaticPHP\Attribute\Artifact\AfterBinaryExtract; use StaticPHP\Attribute\Artifact\CustomBinary; use StaticPHP\Attribute\Artifact\CustomBinaryCheckUpdate; @@ -17,6 +18,8 @@ use StaticPHP\Package\PackageBuilder; class llvm_tools { + use GitHubTokenSetupTrait; + public const array TOOLS = ['llvm-objcopy', 'llvm-strip', 'llvm-profdata']; #[CustomBinary('llvm-tools', [ @@ -32,7 +35,7 @@ class llvm_tools $tarball = "llvm-project-{$llvmVersion}.src.tar.xz"; $url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-{$llvmVersion}/{$tarball}"; $tarballPath = DOWNLOAD_PATH . '/' . $tarball; - default_shell()->executeCurlDownload($url, $tarballPath, retries: $downloader->getRetry()); + default_shell()->executeCurlDownload($url, $tarballPath, headers: $this->getGitHubTokenHeaders(), retries: $downloader->getRetry()); return DownloadResult::archive($tarball, ['url' => $url, 'version' => $llvmVersion], extract: '{source_path}/llvm-tools', verified: false, version: $llvmVersion); } diff --git a/src/StaticPHP/Artifact/Artifact.php b/src/StaticPHP/Artifact/Artifact.php index f209006d..12b81a89 100644 --- a/src/StaticPHP/Artifact/Artifact.php +++ b/src/StaticPHP/Artifact/Artifact.php @@ -27,12 +27,18 @@ class Artifact /** @var null|callable Bind custom source fetcher callback */ protected mixed $custom_source_callback = null; + /** @var null|string Display label describing where the custom source callback came from */ + protected ?string $custom_source_callback_origin = null; + /** @var null|callable Bind custom source check-update callback */ protected mixed $custom_source_check_update_callback = null; /** @var array Bind custom binary fetcher callbacks */ protected mixed $custom_binary_callbacks = []; + /** @var array Display label per platform describing where the custom binary callback came from */ + protected array $custom_binary_callback_origins = []; + /** @var array Bind custom binary check-update callbacks */ protected array $custom_binary_check_update_callbacks = []; @@ -411,10 +417,13 @@ class Artifact /** * Set custom source fetcher callback. + * + * @param string $origin Short label shown in progress output (e.g. 'package downloader', 'custom url') */ - public function setCustomSourceCallback(callable $callback): void + public function setCustomSourceCallback(callable $callback, string $origin = 'package downloader'): void { $this->custom_source_callback = $callback; + $this->custom_source_callback_origin = $origin; } public function getCustomSourceCallback(): ?callable @@ -422,6 +431,11 @@ class Artifact return $this->custom_source_callback ?? null; } + public function getCustomSourceCallbackOrigin(): ?string + { + return $this->custom_source_callback_origin; + } + /** * Set custom source check-update callback. */ @@ -456,11 +470,19 @@ class Artifact * * @param string $target_os Target OS platform string (e.g. linux-x86_64) * @param callable $callback Custom binary fetcher callback + * @param string $origin Short label shown in progress output (e.g. 'package downloader') */ - public function setCustomBinaryCallback(string $target_os, callable $callback): void + public function setCustomBinaryCallback(string $target_os, callable $callback, string $origin = 'package downloader'): void { ConfigValidator::validatePlatformString($target_os); $this->custom_binary_callbacks[$target_os] = $callback; + $this->custom_binary_callback_origins[$target_os] = $origin; + } + + public function getCustomBinaryCallbackOrigin(): ?string + { + $current_platform = SystemTarget::getCurrentPlatformString(); + return $this->custom_binary_callback_origins[$current_platform] ?? null; } /** diff --git a/src/StaticPHP/Artifact/ArtifactDownloader.php b/src/StaticPHP/Artifact/ArtifactDownloader.php index 83e80f31..4b5a399a 100644 --- a/src/StaticPHP/Artifact/ArtifactDownloader.php +++ b/src/StaticPHP/Artifact/ArtifactDownloader.php @@ -554,8 +554,8 @@ class ArtifactDownloader $instance = null; $call = $this->downloaders[$item['config']['type']] ?? null; $type_display_name = match (true) { - $item['lock'] === 'source' && ($callback = $artifact->getCustomSourceCallback()) !== null => 'user defined source downloader', - $item['lock'] === 'binary' && ($callback = $artifact->getCustomBinaryCallback()) !== null => 'user defined binary downloader', + $item['lock'] === 'source' && $artifact->getCustomSourceCallback() !== null => $artifact->getCustomSourceCallbackOrigin() ?? 'source package downloader', + $item['lock'] === 'binary' && $artifact->getCustomBinaryCallback() !== null => $artifact->getCustomBinaryCallbackOrigin() ?? 'binary package downloader', default => SPC_DOWNLOAD_TYPE_DISPLAY_NAME[$item['config']['type']] ?? $item['config']['type'], }; $try_h = $try ? 'Try downloading' : 'Downloading'; @@ -838,21 +838,21 @@ class ArtifactDownloader if (isset($this->artifacts[$artifact_name])) { $this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $custom_url) { return (new Url())->download($artifact_name, ['url' => $custom_url], $downloader); - }); + }, 'custom url'); } } foreach ($this->custom_gits as $artifact_name => [$branch, $git_url]) { if (isset($this->artifacts[$artifact_name])) { $this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $branch, $git_url) { return (new Git())->download($artifact_name, ['rev' => $branch, 'url' => $git_url], $downloader); - }); + }, 'custom git'); } } foreach ($this->custom_locals as $artifact_name => $local_path) { if (isset($this->artifacts[$artifact_name])) { $this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $local_path) { return (new LocalDir())->download($artifact_name, ['dirname' => $local_path], $downloader); - }); + }, 'custom local dir'); } } }