88 lines
3.6 KiB
YAML
88 lines
3.6 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
build-amd64-iso:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build kernel (amd64)
|
|
run: make -f Makefile.starkernel ARCH=amd64
|
|
- name: Pack El Torito ISO (amd64)
|
|
run: |
|
|
set -e
|
|
BUILD_DIR=build/amd64/kernel
|
|
mkdir -p "$BUILD_DIR/iso"
|
|
dd if=/dev/zero of="$BUILD_DIR/iso/efi.img" bs=512 count=8192
|
|
mformat -i "$BUILD_DIR/iso/efi.img" ::
|
|
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI
|
|
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI/BOOT
|
|
mcopy -i "$BUILD_DIR/iso/efi.img" "$BUILD_DIR/starkernel_loader.efi" ::/EFI/BOOT/BOOTX64.EFI
|
|
xorriso -as mkisofs -r -J -e efi.img -no-emul-boot \
|
|
-o "$BUILD_DIR/starkernel.iso" "$BUILD_DIR/iso"
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: lithosananke-amd64-iso
|
|
path: build/amd64/kernel/starkernel.iso
|
|
|
|
build-aarch64-iso:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build kernel (aarch64)
|
|
env:
|
|
PATH: /usr/lib/llvm-18/bin:/usr/bin:/bin
|
|
run: make -f Makefile.starkernel ARCH=aarch64
|
|
- name: Pack El Torito ISO (aarch64)
|
|
run: |
|
|
set -e
|
|
BUILD_DIR=build/aarch64/kernel
|
|
mkdir -p "$BUILD_DIR/iso/EFI/BOOT"
|
|
cp "$BUILD_DIR/starkernel_loader.efi" "$BUILD_DIR/iso/EFI/BOOT/BOOTAA64.EFI"
|
|
printf "FS0:\\\\EFI\\\\BOOT\\\\BOOTAA64.EFI\r\n" > "$BUILD_DIR/iso/startup.nsh"
|
|
dd if=/dev/zero of="$BUILD_DIR/iso/efi.img" bs=512 count=8192
|
|
mformat -i "$BUILD_DIR/iso/efi.img" ::
|
|
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI
|
|
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI/BOOT
|
|
mcopy -i "$BUILD_DIR/iso/efi.img" "$BUILD_DIR/starkernel_loader.efi" ::/EFI/BOOT/BOOTAA64.EFI
|
|
xorriso -as mkisofs -r -J -e efi.img -no-emul-boot \
|
|
-o "$BUILD_DIR/starkernel.iso" "$BUILD_DIR/iso"
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: lithosananke-aarch64-iso
|
|
path: build/aarch64/kernel/starkernel.iso
|
|
|
|
build-riscv64-img:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build kernel (riscv64)
|
|
run: make -f Makefile.starkernel ARCH=riscv64
|
|
- name: Pack GPT/FAT32 disk image (riscv64)
|
|
# El Torito ISO and -bios QEMU mode don't work on riscv64 virt,
|
|
# so this arch ships a raw GPT disk image instead of an ISO
|
|
# (same distinction Makefile.starkernel's own qemu target makes).
|
|
run: |
|
|
set -e
|
|
BUILD_DIR=build/riscv64/kernel
|
|
DISK="$BUILD_DIR/starkernel_rv64.img"
|
|
dd if=/dev/zero of="$DISK" bs=1M count=64
|
|
sgdisk -n 1:2048:131038 -t 1:ef00 -c 1:"EFI System" "$DISK"
|
|
dd if=/dev/zero of="$BUILD_DIR/esp_rv64.img" bs=512 count=128991
|
|
mkfs.fat -F 32 -n "ESP" "$BUILD_DIR/esp_rv64.img"
|
|
mmd -i "$BUILD_DIR/esp_rv64.img" ::/EFI
|
|
mmd -i "$BUILD_DIR/esp_rv64.img" ::/EFI/BOOT
|
|
mcopy -i "$BUILD_DIR/esp_rv64.img" "$BUILD_DIR/starkernel_loader.efi" ::/EFI/BOOT/BOOTRISCV64.EFI
|
|
mcopy -i "$BUILD_DIR/esp_rv64.img" "$BUILD_DIR/starkernel_kernel.elf" ::/kernel.elf
|
|
printf 'FS0:\\EFI\\BOOT\\BOOTRISCV64.EFI\r\n' > "$BUILD_DIR/startup.nsh"
|
|
mcopy -i "$BUILD_DIR/esp_rv64.img" "$BUILD_DIR/startup.nsh" ::/startup.nsh
|
|
dd if="$BUILD_DIR/esp_rv64.img" of="$DISK" bs=512 seek=2048 conv=notrunc
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: lithosananke-riscv64-img
|
|
path: build/riscv64/kernel/starkernel_rv64.img
|