diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index af6f6606..db757f2e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,7 @@ jobs: *.opam !ocaml-solo5-cross-aarch64.opam - name: Install ocaml-solo5 and dune - run: opam install ocaml-solo5 conf-libseccomp dune + run: opam install ocaml-solo5 conf-libseccomp dune fmt - name: Show the toolchain configuration run: | set -x @@ -35,3 +35,17 @@ jobs: run: MODE=muen opam exec -- dune build --root example - name: Compile examples with xen run: MODE=xen opam exec -- dune build --root example + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + sudo apt-get update + sudo apt-get install -y libvirt-clients libvirt-daemon-system libvirt-daemon virtinst bridge-utils qemu-kvm qemu-system-x86 + sudo usermod -a -G kvm,libvirt $USER + - name: Run a Solo5 unikernel (hvt) + run: | + opam exec -- dune describe location --root example --context solo5 --no-print-directory ./hello.exe &> unikernel.tmp + echo "UNIKERNEL=$(cat unikernel.tmp)" >> $GITHUB_ENV + - name: Run a simple Hello World! + run: opam exec -- solo5-hvt -- "example/$UNIKERNEL" diff --git a/example/dune.inc b/example/dune.inc index b885dfbd..5cfc9a76 100644 --- a/example/dune.inc +++ b/example/dune.inc @@ -10,7 +10,7 @@ ; Force linking the manifest in -cclib "-u __solo5_mft1_note") - (libraries solo5os) + (libraries solo5os fmt) (modes native)) (rule diff --git a/example/dune_gen.ml b/example/dune_gen.ml index 508ad818..b5581cf2 100644 --- a/example/dune_gen.ml +++ b/example/dune_gen.ml @@ -52,7 +52,7 @@ let print_rule test exitcode extraifs extralibs = exitcode let _ = - print_rule "hello" None [] []; + print_rule "hello" None [] ["fmt"]; print_rule "sysfail" (Some 2) [] []; print_rule "config" None [] []; print_rule "compilerlibsx86" None diff --git a/example/hello.ml b/example/hello.ml index ef16b82d..92c8f033 100644 --- a/example/hello.ml +++ b/example/hello.ml @@ -1 +1 @@ -let () = Printf.printf "Hello from OCaml on Solo5!\n%!";; +let () = Fmt.pr "Hello from OCaml on Solo5!\n%!";;