-
Notifications
You must be signed in to change notification settings - Fork 47
134 lines (124 loc) · 4.1 KB
/
build.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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: "Build"
on:
pull_request:
push:
branches:
main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
nix-build:
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
include:
- os: ubuntu-latest
os_attr: x86_64-linux
- os: macos-latest
os_attr: x86_64-macos
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: build hevm
run: nix build .#ci -L
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: hevm-${{ matrix.os_attr }}
path: result/bin/hevm
extra-tests:
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
include:
- os: ubuntu-latest
- os: macos-latest
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
# can't be run in nix build due to network usage
- name: run rpc tests
run: nix-shell --pure --command "cabal run rpc-tests"
# if we run this in nix build we often get killed due to oom in ci
- name: run ethereum tests
run: nix-shell --pure --command "cabal run ethereum-tests"
build-windows:
name: build (windows-latest)
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
path-type: inherit
update: true
install: >-
base-devel
gmp-devel
openssl-devel
git
unzip
pacboy: >-
cmake:p
ninja:p
gcc:p
autotools:p
gmp:p
openssl:p
- uses: haskell/actions/setup@v2
id: setup
with:
ghc-version: '9.2.8'
- name: build and install c dependencies
run: |
echo "::group::Installing libsecp256k1"
./.github/scripts/install-libsecp256k1.sh
echo "::endgroup::"
echo "::group::Installing libff"
./.github/scripts/install-libff.sh
echo "::endgroup::"
- name: Configure the build
run: |
cabal configure --disable-tests --disable-benchmarks --disable-documentation
cabal build --dry-run
# The last step generates dist-newstyle/cache/plan.json for the cache key.
- name: Restore cached dependencies
uses: actions/cache/restore@v3
id: cache
env:
key: ${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-cabal-${{ steps.setup.outputs.cabal-version }}
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ env.key }}-plan-${{ hashFiles('**/plan.json') }}
restore-keys: ${{ env.key }}-
- name: Install haskell dependencies
run: cabal build all --only-dependencies
# Cache dependencies already, so that we do not have to rebuild them should the subsequent steps fail.
- name: Save cached dependencies
uses: actions/cache/save@v3
# Caches are immutable, trying to save with the same key would error.
if: ${{ steps.cache.outputs.cache-primary-key != steps.cache.outputs.cache-matched-key }}
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ steps.cache.outputs.cache-primary-key }}
- name: build hevm library
run: |
cabal build --extra-include-dirs="$HOME/.local/include" --extra-lib-dirs="$HOME/.local/lib"
cabal-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: run cabal check
run: nix develop -c cabal check --verbose=3