Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions .github/workflows/uefi-only-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: uefi-only-build

# Controls when the action will run.
on:
# Triggers the workflow only on pull-requests when this file is changed.
# Intended use is to manually trigger runs after updating the repository
# variables `UEFI_DATE`, `UEFI_LINUX_TAG` or `UEFI_UBOOT_TAG`.
pull_request:
branches: [ main ]
paths: [ .github/workflows/uefi-only-build.yaml ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Allow being called from other workflows to deploy the artifact.
workflow_call:

jobs:
uefi-only-boot-bin:
runs-on: ubuntu-latest

env:
UEFI_ONLY_VERSION: uefi-only-${{ vars.UEFI_DATE }}-${{ vars.UEFI_LINUX_TAG }}

steps:
- name: Checkout
uses: actions/checkout@v5
with:
submodules: recursive

- name: Checkout linux
uses: actions/checkout@v5
with:
repository: AsahiLinux/linux
ref: ${{ vars.UEFI_LINUX_TAG }}
path: linux
sparse-checkout: 'arch/arm64/boot/dts/apple/'

- name: Checkout u-boot
uses: actions/checkout@v5
with:
repository: AsahiLinux/u-boot
ref: ${{ vars.UEFI_UBOOT_TAG }}
path: u-boot

- name: Install aarch64-linux-gnu- toolchain
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y \
gcc-aarch64-linux-gnu \
libgnutls28-dev \
device-tree-compiler

- name: Install aarch64-unknown-none-softfloat rust target
run: |
rustup target install aarch64-unknown-none-softfloat

- name: Build
run: |
cd m1n1
make -k -j2 ARCH=aarch64-linux-gnu- RELEASE=1

- name: Update u-boot apple device trees
run: |
cp -f linux/arch/arm64/boot/dts/apple/*.dts \
linux/arch/arm64/boot/dts/apple/*.dtsi \
linux/arch/arm64/boot/dts/apple/*.h \
u-boot/arch/arm/dts/

- name: Build u-boot
run: |
cd u-boot
make CROSS_COMPILE=aarch64-linux-gnu- apple_m1_defconfig
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm -k -j2

- name: Create m1n1 uefi only boot.bin
run: |
mkdir -p out/esp/m1n1/
gzip -k u-boot/u-boot-nodtb.bin
cat m1n1/build/m1n1.bin \
u-boot/arch/arm/dts/t60*.dtb \
u-boot/arch/arm/dts/t81*.dtb \
u-boot/u-boot-nodtb.bin.gz \
> out/esp/m1n1/boot.bin
cd out
zip -r ${{ env.UEFI_ONLY_VERSION }}.zip esp

- uses: actions/upload-artifact@v4
with:
name: uefi-only-boot.bin
path: |
out/${{ env.UEFI_ONLY_VERSION }}.zip
44 changes: 44 additions & 0 deletions .github/workflows/uefi-only-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: uefi-only-deploy

on:
workflow_dispatch:

env:
UEFI_ONLY_VERSION: uefi-only-${{ vars.UEFI_DATE }}-${{ vars.UEFI_LINUX_TAG }}

jobs:
build:
uses: ./.github/workflows/uefi-only-build.yaml

deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v5
with:
name: uefi-only-boot.bin

- name: Deploy to Bunny
env:
PKG_URL: https://storage.bunnycdn.com/asahilinux/os
PKG_VER: ${{ env.UEFI_ONLY_VERSION }}.zip
ACCESS_KEY: ${{ secrets.BUNNY_TOKEN }}
run: |
if [ ! -e "${PKG_VER}" ]; then
echo "Package not found!"
ls -R
exit 1
fi

upload() {
curl -# --fail --request PUT \
--url "${2}" \
--variable %ACCESS_KEY \
--expand-header 'AccessKey: {{ACCESS_KEY}}' \
-H "Content-Type: ${3}" \
-H "Accept: application/json" \
--data-binary @${1}
}

upload "${PKG_VER}" "${PKG_URL}/${PKG_VER}" "application/octet-stream"