From f5b348820b70929c595b6210554ca0eedf9ad6fb Mon Sep 17 00:00:00 2001 From: lufia Date: Sun, 20 Jul 2025 00:16:54 +0900 Subject: [PATCH 1/4] .github: add build workflow --- .github/workflows/build.tcl | 31 +++++++++++++++++++++++++++++++ .github/workflows/build.yml | 19 +++++++++++++++++++ cfg/pxe/525400123456 | 1 + 3 files changed, 51 insertions(+) create mode 100755 .github/workflows/build.tcl create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.tcl b/.github/workflows/build.tcl new file mode 100755 index 00000000..eef701f2 --- /dev/null +++ b/.github/workflows/build.tcl @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 20 +spawn sh boot/qemu +#exp_internal 1 + +# Boot up +expect "Selection: " +send "3\r" +expect "bootfile: " +send "2\r" +expect "\\\[tcp\\\]: " +sleep 1 +send "tcp\r" + +# Build sources +expect "term% " +send "cd /sys/src\r" +expect "term% " +send "objtype=386 mk libs cleanlibs\r" +#expect "term% " +#send "mk release clean\r" + +# Halt +expect "term% " +send "fshalt\r" +expect "done halting" + +# Enter QEMU monitor +send "\x1d" ; # Ctrl+Alt+2 +send "close\r" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..99338aba --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,19 @@ +name: Build + +on: + pull_request: +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - run: | + sudo apt update + sudo apt -y install qemu-kvm expect + + gh release download --pattern=x86.tar.gz + tar zxf x86.tar.gz + rm -f x86.tar.gz + ./.github/workflows/build.tcl + env: + GH_TOKEN: ${{ github.token }} diff --git a/cfg/pxe/525400123456 b/cfg/pxe/525400123456 index 7bfb4bd6..56db440b 100644 --- a/cfg/pxe/525400123456 +++ b/cfg/pxe/525400123456 @@ -32,3 +32,4 @@ sysname=gnot partition=new factotumopts=-n user=glenda +console=0 b115200 l8 pn s1 From c4bb4c0ac733c37055b9c8aa5f6ee6acce68011a Mon Sep 17 00:00:00 2001 From: lufia Date: Wed, 23 Jul 2025 01:12:38 +0900 Subject: [PATCH 2/4] boot/qemu: add -ci option for GitHub Actions --- .github/workflows/build.tcl | 2 +- boot/qemu | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.tcl b/.github/workflows/build.tcl index eef701f2..74f5cd13 100755 --- a/.github/workflows/build.tcl +++ b/.github/workflows/build.tcl @@ -1,7 +1,7 @@ #!/usr/bin/expect set timeout 20 -spawn sh boot/qemu +spawn sh boot/qemu -ci #exp_internal 1 # Boot up diff --git a/boot/qemu b/boot/qemu index 379c53ba..2fc6ec17 100644 --- a/boot/qemu +++ b/boot/qemu @@ -4,6 +4,7 @@ set -e cd $(dirname $0) pxe=pxeboot.raw +display=gtk vmdisk=false case "$1" in -pxenew) @@ -13,13 +14,18 @@ case "$1" in -mini) pxe=mini.raw shift + ;; +-ci) + display=none + shift + ;; esac case "$#" in 0) ;; *) - echo 'usage: boot/qemu [-pxenew]' >&2 + echo 'usage: boot/qemu [-pxenew] [-mini] [-ci]' >&2 exit 1 esac @@ -30,7 +36,7 @@ u9fs="guestfwd=tcp:10.0.2.1:564-cmd:../sys/src/cmd/unix/u9fs/u9fs -a none -u $US tftp='tftp=..' mac=mac=52:54:00:12:34:56 -qemu-system-x86_64 -m 1G -smp 1 -serial stdio \ +qemu-system-x86_64 -m 1G -smp 1 -serial stdio -display $display \ -drive file=$pxe,format=raw -snapshot \ -device virtio-net-pci,netdev=net0,$mac \ -netdev "user,id=net0,$u9fs,$tftp" From 9b839362601255f51cd5fd1957e7f5e645e4eb24 Mon Sep 17 00:00:00 2001 From: lufia Date: Mon, 4 May 2026 20:32:58 +0900 Subject: [PATCH 3/4] .github: add more scripts Change-Id: Icfe0dba35950c4e7fc96d657bf28bdb6daa388e8 --- .github/workflows/build.tcl | 59 +++++++++++++++++++++++++++---------- .github/workflows/build.yml | 11 +++++-- 2 files changed, 51 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.tcl b/.github/workflows/build.tcl index 74f5cd13..3987a3d6 100755 --- a/.github/workflows/build.tcl +++ b/.github/workflows/build.tcl @@ -1,31 +1,58 @@ #!/usr/bin/expect -set timeout 20 +set timeout 60 spawn sh boot/qemu -ci -#exp_internal 1 # Boot up expect "Selection: " -send "3\r" +send "4\r" expect "bootfile: " send "2\r" -expect "\\\[tcp\\\]: " -sleep 1 -send "tcp\r" +expect "term% " + +proc terminate {status} { + # Halt + expect "term% " + send "fshalt\r" + expect "done halting" + + # Enter QEMU monitor + send "\x1d" ; # Ctrl+Alt+2 + send "close\r" + + exit $status +} # Build sources -expect "term% " send "cd /sys/src\r" expect "term% " + +set timeout [expr 10*60] send "objtype=386 mk libs cleanlibs\r" -#expect "term% " -#send "mk release clean\r" +expect { + timeout { + puts stderr "timeout" + exit 1 + } + -re "mk: (.+): exit status=(.+)" { + terminate 1 + } + "term% " +} -# Halt -expect "term% " -send "fshalt\r" -expect "done halting" +set timeout [expr 2*60*60] +send "mk release\r" +expect { + timeout { + puts stderr "timeout" + exit 1 + } + -re "mk: (.+): exit status=(.+)" { + terminate 1 + } + "term% " +} -# Enter QEMU monitor -send "\x1d" ; # Ctrl+Alt+2 -send "close\r" +set timeout 60 +send "echo XXX:\$status\r" +terminate 0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 99338aba..d5f7a487 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,13 +7,18 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - run: | + - name: Setup qemu + run: | sudo apt update sudo apt -y install qemu-kvm expect - + - name: Install plan9 binaries from latest release + run: | gh release download --pattern=x86.tar.gz tar zxf x86.tar.gz rm -f x86.tar.gz - ./.github/workflows/build.tcl env: GH_TOKEN: ${{ github.token }} + - name: Run tests + run: | + ./boot/mkdirs + ./.github/workflows/build.tcl From fcc4b64e45ad7f81b67af752b7bee725ac08acb0 Mon Sep 17 00:00:00 2001 From: "KADOTA, Kyohei" Date: Tue, 5 May 2026 21:40:09 +0900 Subject: [PATCH 4/4] Apply suggestion from @lufia --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5f7a487..5c3390d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ jobs: run: | sudo apt update sudo apt -y install qemu-kvm expect - - name: Install plan9 binaries from latest release + - name: Install plan9 binaries from the latest release run: | gh release download --pattern=x86.tar.gz tar zxf x86.tar.gz