几个月来都在 travis-ci 上编译 emacs native-comp,一直都很顺利,直到今天把 native-comp 分支代码更新到 9420ea6e0840bffcb140d3677dfdabb9251c1f63:
重试好几次,每次到 50 分钟就被强行结束:
⋊> [~/.r/nix-gccemacs-sierra] tail log.txt
ELC+ELN calc/calc-lang.elc
ELC+ELN calc/calc-macs.elc
ELC+ELN calc/calc-map.elc
ELC+ELN calc/calc-math.elc
ELC+ELN calc/calc-menu.elc
ELC+ELN calc/calc-misc.elc
The job exceeded the maximum time limit for jobs, and has been terminated.
50 分钟是 travis-ci 对单个任务的最大超时限制,唯一的解决方案可能是把任务拆分成多段 (stage)。
目前的 .travis.yml
:
language: nix
rvm: system
os: osx
matrix:
include:
- env: OSX=10.12
compiler: clang
osx_image: xcode9.2
install:
- ./install.sh
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 | cachix push gccemacs-sierra
其中比较费时步骤的是:1. install.sh
(安装 nix),2. nix-build -A emacsGccSierra
(编译 Emacs),尤其第 2. 步。
从日志来看,才编译到 C 字头的包就超时了,难道要把 Emacs 编译过程拆分成多步(1.开始编译直到B字头的包截止,2.继续编译C字头及其后面的包,… ),这可行吗?