@@ -16,68 +16,92 @@ jobs:
1616 test :
1717 name : Run examples on both architectures
1818 runs-on : ubuntu-latest
19+ strategy :
20+ fail-fast : false
21+ matrix :
22+ include :
23+ - ocukver : dev
24+ ukver : dev
25+ - ocukver : dev
26+ ukver : 0.18.0
27+ # The released OCaml/Unikraft packages sometimes fail to build because
28+ # the patches fail to apply
29+ # - ocukver: 1.0.0
30+ # ukver: dev
1931 steps :
2032 - name : Checkout code
2133 uses : actions/checkout@v4
2234 - name : Read the version number from gen_opams.ml
23- run : |
24- printf 'OCUKVER=%s\n' \
25- "$(awk '/^let version_ocaml_/ {gsub(/"/,"");print $4;}' gen_opams.ml)" \
26- >> "$GITHUB_ENV"
27- printf 'UKVER=%s\n' \
28- "$(awk '/^let version_unikraft/ {gsub(/"/,"");print $4;}' gen_opams.ml)" \
29- >> "$GITHUB_ENV"
35+ env :
36+ OCUKVER : ${{ matrix.ocukver }}
37+ UKVER : ${{ matrix.ukver }}
38+ run : |
39+ # OCaml/Unikraft version number
40+ V="$(awk '/^let version_o/ {gsub(/"/,"");print $4;}' gen_opams.ml)"
41+ [[ "$OCUKVER" = dev ]] && OCUKVER="$V"
42+ printf 'OCUKVER=%s\n' "$OCUKVER" >> "$GITHUB_ENV"
43+ # Unikraft version number
44+ U="$(awk '/^let version_u/ {gsub(/"/,"");print $4;}' gen_opams.ml)"
45+ [[ "$UKVER" = dev ]] && UKVER="$U"
46+ printf 'UKVER=%s\n' "$UKVER" >> "$GITHUB_ENV"
47+ # Log
48+ printf 'Dev versions:\n- OCaml/Unikraft: %s\n- Unikraft: %s\n' \
49+ "$V" "$U"
3050 - name : Install OCaml compiler
3151 uses : ocaml/setup-ocaml@v3
3252 with :
3353 ocaml-compiler : 5.3.0
3454 # We need to pin our packages with their real version numbers, to
3555 # satisfy the dependency bounds of the other packages
3656 opam-pin : false
37- - name : Pin packages
57+ - name : Pin Unikraft packages
3858 run : |
3959 opam pin add -yn "https://github.com/mirage/unikraft.git#$UKVER+mirage"
4060 opam pin add -yn "https://github.com/mirage/unikraft-lib-musl.git#$UKVER+mirage"
41- opam pin add -yn ocaml-unikraft.$OCUKVER .
42- opam pin add -yn ocaml-unikraft-arm64.$OCUKVER .
4361 opam pin add -yn ocaml-unikraft-backend-firecracker.$UKVER .
4462 opam pin add -yn ocaml-unikraft-backend-firecracker-arm64.$UKVER .
4563 opam pin add -yn ocaml-unikraft-backend-firecracker-x86_64.$UKVER .
4664 opam pin add -yn ocaml-unikraft-backend-qemu.$UKVER .
4765 opam pin add -yn ocaml-unikraft-backend-qemu-arm64.$UKVER .
4866 opam pin add -yn ocaml-unikraft-backend-qemu-x86_64.$UKVER .
49- opam pin add -yn ocaml-unikraft-default-arm64.$OCUKVER .
50- opam pin add -yn ocaml-unikraft-default-x86_64.$OCUKVER .
5167 opam pin add -yn ocaml-unikraft-option-debug.$UKVER .
5268 opam pin add -yn ocaml-unikraft-toolchain-arm64.$UKVER .
5369 opam pin add -yn ocaml-unikraft-toolchain-x86_64.$UKVER .
70+ if : ${{ matrix.ukver == 'dev' }}
71+ - name : Pin OCaml/Unikraft packages
72+ run : |
73+ opam pin add -yn ocaml-unikraft.$OCUKVER .
74+ opam pin add -yn ocaml-unikraft-arm64.$OCUKVER .
75+ opam pin add -yn ocaml-unikraft-default-arm64.$OCUKVER .
76+ opam pin add -yn ocaml-unikraft-default-x86_64.$OCUKVER .
5477 opam pin add -yn ocaml-unikraft-x86_64.$OCUKVER .
78+ if : ${{ matrix.ocukver == 'dev' }}
5579 - name : Install extra packages
5680 run : |
5781 sudo apt-get update -y
5882 sudo apt-get install -y qemu-system-x86 qemu-system-arm
5983 opam install dune
6084 - name : Install arch-specific packages
6185 run : |
62- opam install \
63- ocaml-unikraft-x86_64 \
64- ocaml-unikraft-backend-qemu-x86_64 \
65- ocaml-unikraft-backend-firecracker-x86_64 \
66- ocaml-unikraft-arm64 \
67- ocaml-unikraft-backend-qemu-arm64 \
68- ocaml-unikraft-backend-firecracker-arm64
86+ opam install \
87+ ocaml-unikraft-x86_64.$OCUKVER \
88+ ocaml-unikraft-backend-qemu-x86_64.$UKVER \
89+ ocaml-unikraft-backend-firecracker-x86_64.$UKVER \
90+ ocaml-unikraft-arm64.$OCUKVER \
91+ ocaml-unikraft-backend-qemu-arm64.$UKVER \
92+ ocaml-unikraft-backend-firecracker-arm64.$UKVER
6993 - name : Show configuration
7094 run : |
7195 opam exec -- ocamlc -config
7296 opam config list
7397 opam list
7498 - name : Install default packages
7599 run : |
76- opam install \
77- ocaml-unikraft \
78- ocaml-unikraft-default-arm64 \
79- ocaml-unikraft-backend-qemu \
80- ocaml-unikraft-backend-firecracker
100+ opam install \
101+ ocaml-unikraft.$OCUKVER \
102+ ocaml-unikraft-default-arm64.$OCUKVER \
103+ ocaml-unikraft-backend-qemu.$UKVER \
104+ ocaml-unikraft-backend-firecracker.$UKVER
81105 - name : Show toolchain configuration
82106 run : |
83107 opam exec -- ocamlfind -toolchain unikraft ocamlc -config
89113 opam exec -- dune runtest
90114 - name : Install the other default packages
91115 run : |
92- opam install ocaml-unikraft-default-x86_64
116+ opam install ocaml-unikraft-default-x86_64.$OCUKVER
93117 - name : Show configuration
94118 run : |
95119 opam exec -- ocamlfind -toolchain unikraft ocamlc -config
0 commit comments