-
Notifications
You must be signed in to change notification settings - Fork 40
114 lines (111 loc) · 3.52 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
name: CI
on:
push:
branches:
- v8.8
- v8.9
- v8.10
- v8.11
- v8.12
- v8.13
- v8.14
- v8.15
- v8.16
- v8.17
- v8.18
- v8.19
- v8.20
- main
pull_request:
branches:
- v8.8
- v8.9
- v8.10
- v8.11
- v8.12
- v8.13
- v8.14
- v8.15
- v8.16
- v8.17
- v8.18
- v8.19
- v8.20
- main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
strategy:
fail-fast: false
matrix:
ocaml-compiler: [4.12.x, 4.13.x, 4.14.x]
test-target: [test]
extra-opam: [coq.dev]
include:
- ocaml-compiler: 4.14.x
test-target: test
extra-opam:
coq-from-git: true
env:
OPAMJOBS: "2"
OPAMROOTISOK: "true"
OPAMYES: "true"
NJOBS: "2"
COQ_REPOS: "https://github.com/coq/coq.git"
COQ_BRANCH: "v8.20"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install apt dependencies
run: |
sudo apt-get install aptitude
sudo dpkg --add-architecture i386
sudo aptitude -o Acquire::Retries=30 update -q
sudo aptitude --log-resolver -o Acquire::Retries=30 install gcc-multilib libgmp-dev:i386 -y
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
uses: avsm/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
dune-cache: true
opam-pin: false
opam-repositories: |
default: https://opam.ocaml.org
coq-core-dev: http://coq.inria.fr/opam/core-dev
- name: Display OPAM Setup
run: opam list
- name: Install Coq via git
if: ${{ matrix.coq-from-git }}
run: |
# We are going to install Coq in a root dir as to keep our
# main working dir clean, however we need to spec the OPAM root
export OPAMSWITCH="$PWD"
# First we update SERAPI_COQ_HOME for future steps as per
# https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
echo "SERAPI_COQ_HOME=$HOME/coq-$COQ_BRANCH/_build/install/default/lib/" >> $GITHUB_ENV
# Clone Coq's repos
git clone --depth=3 -b "$COQ_BRANCH" "$COQ_REPOS" "$HOME/coq-$COQ_BRANCH"
# Note that Coq's 'make -C "$HOME/coq-$COQ_BRANCH" world'
# target now builds coqide too
cd "$HOME/coq-$COQ_BRANCH"
# Install deps for Coq, and build Coq
opam install --deps-only ./coq-core.opam
opam exec -- ./configure -prefix "$HOME/coq-$COQ_BRANCH/_build/install/default/"
opam exec -- make dunestrap
opam exec -- dune build -p coq-core,coq-stdlib,coq
- name: Extra OPAM Setup (Coq.dev, misc extra tools)
if: ${{ matrix.extra-opam != '' }}
run: opam install ${{ matrix.extra-opam }}
- name: Install SerAPI deps
run: |
opam install --ignore-constraints-on=coq --deps-only vendor/coq-lsp/coq-lsp.opam
opam install --ignore-constraints-on=coq,coq-lsp --deps-only .
- name: Build SerAPI
run: |
opam exec -- make -j "$NJOBS" SERAPI_COQ_HOME="$SERAPI_COQ_HOME"
ls -lR _build/install/default/bin || true
ls -l _build/install/default/lib/coq-serapi || true
- name: Test SerAPI
run: opam exec -- make -j "$NJOBS" SERAPI_COQ_HOME="$SERAPI_COQ_HOME" "${{ matrix.test-target }}"