刚刚看到 nix-community/emacs-overlay@pr#32
已经可以编译 native-comp 了。并且每日编译的二进制放在 Cachix 托管 ( GitHub - nix-community/infra: nix-community infrastructure [maintainer=@zowoq] ):
This machine is perfect for running heavy builds.
- Provider: Hetzner
- CPU: AMD Ryzen 7 1700X Eight-Core Processor
- RAM: 64GB
All the builds on this machine are pushed to https://nix-community.cachix.org/
Thanks to Cachix for sponsoring our binary cache!
但是不太明白 Cachix 怎么用的:
1. Install Nix
$ bash <(curl -L https://nixos.org/nix/install)
2. Install Cachix client
$ nix-env -iA cachix -f https://cachix.org/api/v1/install
3. Start using the binary cache
$ cachix use nix-community
$ nix-build
copying path '/nix/store/n1gwpmvmcgsbnr0a8ncflhvc59db775h-myproject-1.0.0' from 'https://nix-community.cachix.org'
...
第 3. 步的 build 感觉有点困惑,这个动作不像是要取回二进制文件?
应该如何从 Cachix 取得二进制文件,以避免在本机 build ?
1 个赞
应该可以这么安装:
- 添加 emacs-overlay 的 channel
nix-channel --add https://hydra.nix-community.org/jobset/emacs-overlay/unstable/channel/latest emacs
nix-channel --update
- 安装并使用 cachix 添加缓存仓库
- 最后安装 emacsGcc
nix-env -Ai emacs.emacsGcc
-
参考
Nix Community
https://hydra.nix-community.org/jobset/emacs-overlay/unstable/channel/latest
Cachix - Nix binary cache hosting
-
ps: 正在尝试中,因为网速问题卡在了
copying path ‘/nix/store/0bf8l70dbqci8h7ay70a820ag9asq8p4-emacs-gcc-20200719.0’ from ‘https://nix-community.cachix.org’…
我自己现在可以来回答一下这个问题了。
cachix 示范的第 3 步的确指向不明确,给初次接触的用户造成一些困扰。
其实只要 cachix use <repo>
之后,无论 build 还是安装,只要引用到 <repo>
里的内容,就都会尝试去 cachix 上搜索/下载,示范这么写就无歧义了:
nix-env -iA emacs-25-2 -f https://github.com/purcell/nix-emacs-ci/archive/master.tar.gz
但 cachix 不可能知道项目的细节,所以它只能提供一个模凌两可的示范代码。
一个可能导致二进制无法下载的原因是:上传内容不完整。每次 nix-env -i xxx
的时候,依然在本机编译。
我在 GitHub - twlz0ne/nix-gccemacs-sierra: Build gccemacs for macOS 10.12 Sierra using Nix. 就遇到了,刚开始的 .travis.yml
是随便抄了一份,但似乎 cachix push <repo> --watch-store&
监测上传内容不完整,即使末尾 sleep
等待 10 秒:
script:
- nix-env -iA cachix -f https://cachix.org/api/v1/install
- cachix use gccemacs-sierra
- if [ -n "$CACHIX_SIGNING_KEY" ]; then cachix push gccemacs-sierra --watch-store; fi &
- - nix-build -A emacsGccSierra
- - sleep 10 # to allow cachix finish uploading
+ - nix-build -A emacsGccSierra | cachix push gccemacs-sierra
后来改成两次 push
,才终于正常。再执行 nix-env -i xxx
就能看到从 cachix 下载了。
1 个赞