Nix + Mac 用户现在可以直接下载编译好的 emacs-nativecomp 可执行文件了

https://github.com/NixOS/nixpkgs/pull/94637 之后,在 macOS 上编译 native-comp 分支应该不会有问题了。

然而对于十年前的老电脑来说,编译时间恐怕是最大的障碍。所以我打算用 travis-ci 编译 mac 版本的 native-comp,然后把编译好的二进制上传到 cachix,省时又低碳:

( 10.12 特供 :point_right: GitHub - twlz0ne/nix-gccemacs-sierra: Build gccemacs for macOS 10.12 Sierra using Nix. )

nix 脚本修改自:

https://github.com/mjlbach/emacs-pgtk-nativecomp-overlay/

欢迎下载测试。

2 个赞

原本打算把 CI 迁移到 github action,但是它最低只支持 macOS 10.15,所以为了我自己的老爷笔记本,只好把项目一拆为二,支持 macOS 10.12 的继续使用 travis 编译。

10.12(sierra) 版在我电脑上可以运行,10.15(darwin) 版会出错,应该是我系统太旧的原因:

⋊> emacs --version
dyld: lazy symbol binding failed: Symbol not found: _aligned_alloc
  Referenced from: /Users/*/.nix-profile/bin/emacs
  Expected in: /nix/store/hw4x6gakgd43f13zys92ng0hj0acisls-Libsystem-osx-10.12.6/lib/libSystem.B.dylib

dyld: Symbol not found: _aligned_alloc
  Referenced from: /Users/*/.nix-profile/bin/emacs
  Expected in: /nix/store/hw4x6gakgd43f13zys92ng0hj0acisls-Libsystem-osx-10.12.6/lib/libSystem.B.dylib

fish: “emacs --version” terminated by signal SIGABRT (Abort)

另外一个比较明显的差异是,travis-ci 上传的二进制文件量是 github action 上传的 3 倍,难道是因为 github action 的 cachix 上传脚本是官方提供,优化掉了很多不必要的内容?

1 个赞

感谢。这是我第一次在Mac (10.15)上下载安装Nix。 我完全不懂Nix,按照提示安装好 (Pull pre-built binaries from Cachix as recommended) 后,把整个Nix下的Emacs 目录拷贝到我的Home 目录下, 也依然OK。 目前可以运行gccEmacs了!

1 个赞

欢迎入坑 Nix。

虽然你的 GccEmac 已经跑起来了。但我还是要说一下,README 中关于 symlink 的说明不太正确,详见讨论 https://github.com/daviderestivo/homebrew-emacs-head/issues/23#issuecomment-692680879

如果 native-comp 最新提交没有解决 symlink 问题,我将在 nix 脚本中加入自动创建 symlink 和 wrapper 的步骤,免去用户手动设置。

对, 我其实遇到这个问题了, 然后我就在local 路径跑,看着这样可以找到相对路径的动态链接。我对Nix懵逼中,先用用看。。。

大佬能不能给个nix-darwin入坑教程?homebrew用的我好难受,想换了

nix 有啥特别的好处吗?是不是都需要重新编译。

我也还没入门。

先当作 homebrew 用起来把。

我是10.15以后的用户,当前commit如果有symlink问题你就加 postFixup 修复一下,如果上游修复了这边删除代码就好。nix每次build都是一个全新的Dev. nix-drawin没啥特殊的配置,就是类似与Nixos-build 这么一个配置 可以参考我的配置 https://github.com/GTrunSec/my-profile/tree/master/darwin 我基本在drawin下也是Home-manager控制包括emacs

已经修复,我等下PR

我在使用GccEmacs的时候,在python project, lsp-mode 看起来不能启动。在普通的emacs上没有这类问题,你有遇到过类似的问题么?我理解GccEmacs 不应该影响我使用任何包,和在其他emacs上使用没有区别?

没遇到这个问题。

建议你写个最小配置来验证一下。

好耶,大家都不喜欢 homebrew 呢!

已经可以正常运行了,虽然也不知道为什么。 确实感到比之前emacs28.05(not nativecomp) 流畅一些,有时候写些不太思考的代码,愿意用gccemacs 加快码代码速度。

小问题,gccemacs启动是只能terminal 形式么? 我运行emacs 时,会开一个terminal,打开GUI界面?

open ~/.nix-profile/Applications/Emacs.app
2 个赞

我今天参考你的github repo,重新运行命令更新了gccemacs。 现在可以在任意位置打开gccemacs,而没有相对路径动态链接找不到的报错。 感谢!

太感谢了,终于不用自己折腾就用上了!

问个问题,如果想要更新是否直接运行下面这行命令就行?

nix-env -iA emacsGccDarwin -f https://github.com/twlz0ne/nix-gccemacs-darwin/archive/master.zip

首次安装:

nix-env -iA cachix -f https://cachix.org/api/v1/install
cachix use gccemacs-darwin
nix-env -iA emacsGccDarwin -f https://github.com/twlz0ne/nix-gccemacs-darwin/archive/master.zip

更新:

nix-env -iA emacsGccDarwin -f https://github.com/twlz0ne/nix-gccemacs-darwin/archive/master.zip
4 个赞

大佬,能不能直接提供一个macOS的pre-built binary 下载,不想折腾nix啊

我觉得其实和nix 没啥太大关系。。。就是一顿操作就能用了。。。

Standalone / Portable binary?

恐怕要修改一堆的链接目标,Nix 默认路径为 /nix/store…。看到有个 https://github.com/matthewbauer/nix-bundle 似乎是可以用来做这件事,不知是否靠谱。

其实如果把 Nix 当作 Homebrew 用,安装很简单:https://nixos.org/guides/install-nix.html