主要观点:
- Nixpkgs 是大型纯函数程序,构建众多开源项目,结构重要,包应独立可读,避免意外复杂性。
- 以交叉编译为例说明偏离理想结构会导致问题,如早期 Nixpkgs 交叉编译历史中 per-platform 包的问题。
- 后来改进为用全局
cross
参数和单个包函数,减少重复,但仍有不足,如glibc
中binutilsCross
的问题。 - 2017 年作者完成 Nixpkgs 交叉编译 overhaul,不再需要
binutilsCross
等,更好地实现了包的独立性原则。 libcCross
包长期存在,后终于在近十年后被修复,stdenv.cc.libc
可满足需求。- 编译器和标准库相关问题导致构建混乱,尤其是交叉编译时,新构建的编译器用于构建库会产生问题。
- 一些项目已开始重新思考编译器引导方式,如
musl-cross-make
、Exherbo 等,Nixpkgs 中 LLVM 已开始改变,GCC 也有新进展,希望未来其他编译器也能如此。
关键信息:
- Nixpkgs 结构重要,包应独立可读。
- 早期交叉编译 per-platform 包问题及改进。
- 2017 年 Nixpkgs 交叉编译 overhaul 及相关变化。
libcCross
的存在与修复。- 编译器和标准库相关问题及其他项目的尝试。
重要细节:
- 早期 Nixpkgs 交叉编译分支
2aba922d
的相关代码及问题。 - 2017 年作者对 Nixpkgs 交叉编译的 overhaul 内容,如
glibc
中binutilsCross
的去除。 libcCross
长期存在的原因及最终修复的 PR。- 编译器和标准库相关问题的具体例子及图表说明。
- 其他项目如
musl-cross-make
、Exherbo 等的相关情况。 - Nixpkgs 中 LLVM 和 GCC 的新进展及相关 PR。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。