nix - Nix:如何用全局覆盖覆盖 stdenv.cc?
问题描述
我想stdenv.cc
使用覆盖(即不更改nixpkgs)全局覆盖特定的GCC版本(不一定在nixpkgs中)。有没有办法做到这一点?
像这样的覆盖会导致无限递归(因为包gcc49
有stdenv
作为输入):
self: super:
{
stdenv = super.overrideCC super.stdenv super.gcc49;
}
改变stdenv.cc
全局的正确方法是什么?
手动设置stdenv = ...
是import nixpkgs
不可行的,因为我cc
不仅想在构建/使用 nix 表达式时替换,而且在例如nix-shell -p package
.
有人可以帮我弄这个吗?
解决方案
(import <nixpkgs> { overlays = [(self: super: { gcc = self.gcc10; })]; }).stdenv.cc
这将返回 gcc-10.1.0 的派生,因此它可以工作。
推荐阅读
- python - python打开不同文件夹中的csv文件
- c# - 查看字符串列表的条目,尝试每个条目以查看是否与应该将 bool 变为 true 的目标匹配
- swift - 如何调用带参数的函数
- python - MLFlow sklearn 自动记录在 colab 中打印太多信息消息
- xml - 是否可以以正式的方式将 UML 活动图转换为 XML 树?
- neo4j - 在 Cypher 中使用 CREATE、SET 和添加关系
- node.js - 如果在将公司添加到工作经验时未找到公司,则创建“新公司”
- javascript - 在 ReactJs 中使用地图功能时显示错误
- css - react-bootstrap-typeahead 中的 angledown 图标
- bootstrap-vue - bootstrapVue的b-modal中的标题对齐中心