Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ci] [windows] Try OPAM 2.2 for the Windows build #815

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 8 additions & 166 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- v8.21
- v8.20
- v8.19
- v8.18
Expand All @@ -13,6 +14,7 @@ on:
pull_request:
branches:
- main
- v8.21
- v8.20
- v8.19
- v8.18
Expand All @@ -30,27 +32,9 @@ jobs:
strategy:
matrix:
include:
- os: ubuntu-latest
ocaml: 4.14.x
- os: ubuntu-latest
ocaml: 4.13.x
- os: ubuntu-latest
ocaml: 4.12.x
- os: ubuntu-latest
ocaml: 5.0.x
- os: ubuntu-latest
ocaml: 5.1.x
- os: ubuntu-latest
ocaml: 5.2.x
- os: macos-latest
ocaml: 4.14.x
- name: Windows Latest
ocaml: 4.14
ocaml: 4.14.x
os: windows-latest
opam-repositories: |
windows-5.0: https://github.com/dra27/opam-repository.git#windows-5.0
opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset
default: https://github.com/ocaml/opam-repository.git
fail-fast: false

runs-on: ${{ matrix.os }}
Expand All @@ -63,14 +47,16 @@ jobs:
submodules: recursive

- name: 🐫 Setup OCaml
uses: ocaml/setup-ocaml@v2
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml }}
dune-cache: true
opam-repositories: ${{ matrix.opam-repositories }}

- name: 🐫🐪🐫 Get dependencies
run: opam exec -- make opam-deps
run: |
opam pin add --dev dune
opam pin add --dev ocamlfind
opam exec -- make opam-deps

- name: 🐛 Special Windows Config [only on Win CI]
if: matrix.os == 'windows-latest'
Expand All @@ -84,147 +70,3 @@ jobs:

- name: 🐛 Test fcc
run: opam exec -- make test-compiler

build-js:
name: Web Worker Build
strategy:
fail-fast: false
runs-on: ubuntu-latest

steps:
# OPAM figures out everything but the libgmp-dev:i386
# dependency, maybe worth fixing this upstream in the opam
# repository
- 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 -o Acquire::Retries=30 install gcc-multilib g++-multilib pkg-config libgmp-dev libgmp-dev:i386 -y

- name: 🔭 Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: 🐫 Setup OCaml
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: "ocaml-variants.4.14.2+options,ocaml-option-32bit"
dune-cache: true

- name: 🐫🐪🐫 Get dependencies
run: |
opam exec -- make opam-deps
opam pin add js_of_ocaml-compiler https://github.com/ejgallego/js_of_ocaml.git#fix_build_fs_target -y
opam pin add js_of_ocaml https://github.com/ejgallego/js_of_ocaml.git#fix_build_fs_target -y
opam install zarith_stubs_js js_of_ocaml-ppx -y

- name: 💉💉💉 Patch Coq
run: make patch-for-js

- name: 🦏🧱🦏 Build coq-lsp JS version 🦏🦏🦏
run: |
opam exec -- make controller-js/coq-fs-core.js
opam exec -- make js

- name: 🚀 Setup node
uses: actions/setup-node@v4
with:
node-version: 22

- name: 🦏🧱🦏 Build coq-lsp VSCode extension 🦏🦏🦏
run: opam exec -- make extension

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: coq-lsp_worker and front-end
path: |
editor/code/package.json
editor/code/README.md
editor/code/CHANGELOG.md
editor/code/syntaxes
editor/code/out/
editor/code/coq.configuration.json
compression-level: 9
build-opam:
name: Opam dev install
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: 🔭 Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: 🐫 Setup OCaml
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: 4.14.x
dune-cache: true

- name: Install Coq and SerAPI into OPAM switch
run: |
opam install lwt logs # Also build pet-server
opam install memprof-limits # We need to do this to avoid coq-lsp rebuilding Coq below due to deptops
opam install vendor/coq/{coq-core,coq-stdlib,coqide-server,coq}.opam

- name: Install `coq-lsp` into OPAM switch
run: opam install .

- name: Test `coq-lsp` in installed switch
run: opam exec -- fcc examples/Demo.v

- name: Test `pet-server` is built
run: opam exec -- which pet-server

build-nix:
name: Nix
strategy:
matrix:
os: [ubuntu-latest, macOS-latest]
fail-fast: false

runs-on: ${{ matrix.os }}

steps:
- name: 🔭 Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: ❄️ Setup Nix
uses: cachix/install-nix-action@v27

- name: 🧱 Build coq-lsp
run: nix build '.?submodules=1#'

client-compile:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./editor/code
steps:
- name: 🔭 Checkout code
uses: actions/checkout@v4
- name: 🚀 Setup node
uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx --yes @vscode/vsce ls

nix-flake-check:
name: Nix Flake Check
runs-on: ubuntu-latest
steps:
- name: 🔭 Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: ❄️ Setup Nix
uses: cachix/install-nix-action@v18
- name: 📐 Run flake check
run: nix flake check