#build #make #maker #makefile #implemented #posix-compatible

app makers

用 Rust 实现的 POSIX 兼容的 make 工具

8 个版本 (有破坏性更新)

0.7.0 2021 年 4 月 14 日
0.6.1 2021 年 4 月 7 日
0.5.0 2021 年 4 月 4 日
0.4.0 2021 年 4 月 4 日
0.1.0 2021 年 3 月 27 日

#1562开发工具

每月 30 次下载

自定义许可协议

155KB
4K SLoC

makers

A (主要) POSIX 兼容的 make 工具,用 Rust 实现。并不旨在完全支持 每个 GNU make 功能,但会添加与现有 GNUish makefile 兼容所必需的功能。

通过运行 RUST_LOG=makers=warn 可以获得一些信息,通过运行 RUST_LOG=makers=debug 可以获得更多信息,而通过运行 RUST_LOG=makers=trace 可以获得大量信息(可能仅适用于调试 makefile 或 makers 本身的小量信息)。有关更具体的配置,请参阅 env_logger Rust 包的文档

一致性

  • 国际化(LANG/LC_ALL/LC_CTYPE/LC_MESSAGES)未实现
  • XSI 一致性(SCCS 集成)未实现
  • 信号处理未实现
  • 库处理未实现
  • 一些 POSIX 规定的功能尚未实现(搜索 TODO 以获取列表)
  • 内建宏 MAKE 被定义为 makers 的路径
  • 指定 .POSIX 特殊目标不会禁用扩展(但您可以通过使用 --no-default-features 来安装以仅获得 POSIX 行为)

状态

我没有为大多数 makers 编写单元测试,但有一些 集成测试 尝试用 makers 构建各种基于 make 的项目。

测试的具体项目

1.0 版本所需功能的列表

  • 在 Linux 上测试过
  • 大多数内容的单元测试
  • 没有 TODO

变更日志

v0.7.0 - 2021-04-13

  • 实现 GNU 风格的函数 abspathfirstword
  • 实现 GNU 风格的范围推理规则("静态模式")

v0.6.1 - 2021-04-06

  • 使 export/unexport 真正持久化,以便在执行时可用

v0.6.0 - 2021-04-06

  • 实现 GNU 风格的函数 findstringrealpathdirlastwordwordssubsterrorwordpatsubstaddsuffix
  • 提供 GNU 风格的内建变量 MAKECMDGOALSCURDIRMAKEFILE_LIST
  • 修复嵌套条件处理错误
  • 在硬错误之前尝试构建缺失的包含 makefile
  • 实现 GNU 风格的 export/unexport 指令

v0.5.0 - 2021-04-04

  • 添加详细日志记录
  • 部分修复 $<(旧:所有依赖项,新:第一个依赖项,指定:由推理规则添加的第一个依赖项)
  • 如果可以找到,将内建宏 $(MAKE) 设置为 makers 的完整路径
  • %-匹配改为拒绝部分模式匹配,但允许 % 中的所有字符
  • 实现 GNU 风格的函数 andorstrip

v0.4.0 - 2021-04-03

  • 修复换行符处理,使转义换行符和条件行按预期工作
  • 实现 GNU 风格的 %-匹配推理规则
  • .PHONY 特殊目标的依赖项现在始终假设过时,直到重建,无论文件系统状态如何
  • 给予用户定义的推理规则高于内建的优先级

v0.3.0 - 2021-04-03

  • 允许使用 --no-default-features 安装以实现纯 POSIX 兼容性
  • 实现 GNU 风格的函数 iforiginshell(不设置 .SHELLSTATUS)、eval
  • 实现 GNU 风格的 define
  • 改进错误报告

v0.2.0 - 2021-04-01

  • 部分实现 GNU 风格的条件(仅支持参数周围的括号)
  • 实现一些 GNU 风格的函数:filterfilter-outsortnotdirbasenameaddprefixwildcardforeachcall
  • 改进解析错误错误报告

v0.1.0 - 2021-03-25

  • 初始发布

贡献者

许可证

Indie Code Catalog Standard Deal 下发布,版本 3.0.0 或更高。

商业许可证可通过 Indie Code Catalog 购买。

minuteæ

正式发音为 /ˈmeɪ.kɹɪz/(好像在说 "make risotto",但半途而废)。

依赖项

~10–21MB
~279K SLoC