#checksum #infrastructure #utility #command #tool #pkgsrc #mk

应用 mktool

用于增强 pkgsrc/mk 基础设施的通用工具

16 个版本

0.1.16 2024年8月24日
0.1.15 2024年8月24日

199文件系统

Download history 65/week @ 2024-07-27 710/week @ 2024-08-03 35/week @ 2024-08-10 528/week @ 2024-08-17

每月 1,338 下载

ISC 许可证

46KB
876 代码行

mktool

本工具旨在收集一系列实用程序来替换 pkgsrc 的 mk 基础设施的一部分。

mk/ 目录下,许多目标是通过 shell 和 awk 的组合实现的,并且可能会因输入大小增长而出现性能不足的问题。

例如,随着在较新的 Go 软件中使用 Go 模块的增加,www/grafana 现在有超过 5,000 个 distfiles。这暴露了当前 pkgsrc 校验和脚本的各个方面,难以解决。此工具在 32 核 SmartOS 主机上运行时实现了以下性能改进的替代方案:

命令 现有的 pkgsrc 脚本 mktool 加速
bmake checksum 10 秒 2 秒 5 倍
bmake distinfo 3 分钟 30 秒 2 秒 100 倍
bmake fetch 47 分钟 58 秒 5 秒 500 倍

由于 pkgsrc 力求尽可能具有可移植性,在任何时候,mktool 实现的任何命令都不会成为强制性的。此工具仅存在于那些能够运行 Rust 软件的人中,以显著提高 pkgsrc 性能。

安装

使用 cargo 安装

cargo install mktool

并将其添加到 mk.conf

TOOLS_PLATFORM.mktool=  ${HOME}/.cargo/bin/mktool

对 pkgsrc 基础设施的钩子尚未提交。在此之前,您需要手动应用 这些更改集。一旦获得批准,这些更改集有望很快被添加。

命令

这些是目前实现的命令。

checksum

pkgsrc/mk/checksum/checksum.awk 的替代方案

distinfo

pkgsrc/mk/checksum/distinfo.awk 的替代方案

fetch

pkgsrc/mk/fetch/fetch 的替代方案

pkgsrc/pkgtools/mktools 提供的 mk-buildlink-symlinks 工具的替代方案

依赖项

~9–22MB
~360K SLoC