name: Build Vinix on: workflow_call: pull_request: paths-ignore: - '**.md' - '**.yml' - '!**/vinix_ci.yml' - 'cmd/tools/vrepl.v' push: branches: - master paths-ignore: - '**.md' - '**.yml' - '!**/vinix_ci.yml' - 'cmd/tools/vrepl.v' concurrency: group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} cancel-in-progress: true jobs: vinix-build: runs-on: ubuntu-20.04 timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Build V run: make -j4 && ./v symlink - name: Install dependencies run: | ./v retry -- sudo apt update ./v retry -- sudo apt install build-essential -y - name: Clone current Vinix run: ./v retry -- git clone --depth=1 https://github.com/vlang/vinix.git - name: Download Vinix kernel dependencies run: cd vinix/kernel && ./get-deps - name: Attempt to build the Vinix kernel (debug) run: | set -e cd vinix/kernel make PROD=false \ CFLAGS="-Ulinux -U__linux -U__linux__ -U__gnu_linux__ -D__vinix__ -O2 -g -pipe" \ V="$(realpath ../../v)" make clean - name: Attempt to build the Vinix kernel (prod) run: | set -e cd vinix/kernel make PROD=true \ CFLAGS="-Ulinux -U__linux -U__linux__ -U__gnu_linux__ -D__vinix__ -O2 -g -pipe" \ V="$(realpath ../../v)" make clean - name: Attempt to build the util-vinix (debug) run: | set -e cd vinix/util-vinix make PROD=false \ VFLAGS="-os vinix -gc none" \ CFLAGS="-Ulinux -U__linux -U__linux__ -U__gnu_linux__ -D__vinix__ -O2 -g -pipe" \ V="$(realpath ../../v)" make clean - name: Attempt to build the util-vinix (prod) run: | set -e cd vinix/util-vinix make PROD=true \ VFLAGS="-os vinix -gc none" \ CFLAGS="-Ulinux -U__linux -U__linux__ -U__gnu_linux__ -D__vinix__ -O2 -g -pipe" \ V="$(realpath ../../v)" make clean