OXYGENHUB
◆ main x16-emulator / .flow / pipeline.kdl
1.7 KiB · last changed ci: point at oxygenflow#73 for the syscall tier's loopback sockets 15 days ago source blame history raw
1
// x16emu's pipeline on OxygenFlow: every push to a bookmark on OxygenHub
2
// builds the emulator natively on narvi-1, a real riscv64 board, and boots
3
// what it built to BASIC. The jobs appear as checks on the change and in the
4
// Flow tab. The retro-remote-debug-controller subrepo (src/extern) is put in
5
// the workspace by the runner.
6
//
7
// The control-API conformance suite (.github/workflows/conformance.yml on
8
// x86) is not run here: it talks to the emulator over TCP on 127.0.0.1, and
9
// the syscall tier refuses every socket family but AF_UNIX, even with
10
// network "loopback" (oxygenflow#73). It passes 22/22 run by hand on narvi.
11
schema-version 1
12
13
// Ubuntu 24.04 riscv64 with gcc, make, SDL2, zlib and the R49 ROM
14
// (.flow/image/build-riscv64.sh), in the syscall tier: narvi's Ky X1 has no
15
// hardware virtualisation, so no microVM. `runs-on` keeps it on a RISC-V
16
// runner.
17
sandbox "x16-riscv64" {
18
    runtime "syscall"
19
    rootfs "cas://blob/127605eab9812e79d7c80d99e012105ca12dc7060bec8bffb81576660981c157"
20
    runs-on "riscv64"
21
    memory-limit "2GiB"
22
    cpu-limit 6
23
    network "isolated"
24
}
25
26
// make as README.md gives it, -Werror included; the binary is kept with the
27
// runner's signed receipt and handed to the boot job.
28
job "build" {
29
    sandbox "x16-riscv64"
30
    timeout "30m"
31
    exec "sh" "-eu" ".flow/jobs/build.sh"
32
    output {
33
        artifact "x16emu-linux-riscv64" {
34
            path "/src/x16emu"
35
        }
36
    }
37
}
38
39
// That binary boots the R49 ROM headless and runs a BASIC program.
40
job "boot" {
41
    sandbox "x16-riscv64"
42
    depends-on "build"
43
    timeout "10m"
44
    input {
45
        artifact "x16emu-linux-riscv64" from "build"
46
        path "/src/x16emu"
47
    }
48
    exec "sh" "-eu" ".flow/jobs/boot.sh"
49
}