Skip to content

Commit 5c1bcba

Browse files
authored
Merge pull request #1093 from kernelkit/images
Add workflow for building bootloaders
2 parents 14dd7cb + eefe84f commit 5c1bcba

File tree

10 files changed

+206
-83
lines changed

10 files changed

+206
-83
lines changed

.github/workflows/build-boot.yml

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
name: Build Bootloaders
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
branch:
7+
description: 'Branch to build from'
8+
default: 'main'
9+
type: string
10+
11+
jobs:
12+
build:
13+
name: Build ${{ matrix.defconfig }}
14+
runs-on: ubuntu-latest
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
defconfig:
19+
- fireant_boot
20+
- cn9130_crb_boot
21+
- aarch64_qemu_boot
22+
- rpi4_boot
23+
env:
24+
MAKEFLAGS: -j5
25+
steps:
26+
- name: Cleanup Build Folder
27+
run: |
28+
ls -la ./
29+
rm -rf ./* || true
30+
rm -rf ./.??* || true
31+
ls -la ./
32+
33+
- name: Checkout infix repo
34+
uses: actions/checkout@v4
35+
with:
36+
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.branch || github.ref }}
37+
clean: true
38+
fetch-depth: 0
39+
submodules: recursive
40+
41+
- name: Set Build Variables
42+
id: vars
43+
run: |
44+
defconfig=${{ matrix.defconfig }}
45+
version=$(awk -F'"' '/BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE=/ {print $2}' configs/${defconfig}_defconfig)
46+
version=${version:-git}
47+
filename=$(echo "${defconfig}" | tr '_' '-')
48+
49+
# TODO: Replace hardcoded rev with actual revision stepping
50+
rev="latest"
51+
52+
archive="${filename}-${version}-${rev}.tar.gz"
53+
dirname="${filename}-${version}-${rev}"
54+
55+
echo "defconfig=${defconfig}" >> $GITHUB_OUTPUT
56+
echo "version=${version}" >> $GITHUB_OUTPUT
57+
echo "rev=${rev}" >> $GITHUB_OUTPUT
58+
echo "archive=${archive}" >> $GITHUB_OUTPUT
59+
echo "dirname=${dirname}" >> $GITHUB_OUTPUT
60+
61+
echo "Building ${defconfig}_defconfig, version ${version}-${rev}, artifact ${archive} ..."
62+
63+
- name: Restore Cache of dl/
64+
uses: actions/cache@v4
65+
with:
66+
path: dl/
67+
key: dl-boot-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }}
68+
restore-keys: |
69+
dl-boot-
70+
dl-
71+
72+
- name: Restore Cache of .ccache/
73+
uses: actions/cache@v4
74+
with:
75+
path: .ccache/
76+
key: ccache-boot-${{ matrix.defconfig }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
77+
restore-keys: |
78+
ccache-boot-${{ matrix.defconfig }}-
79+
ccache-boot-
80+
ccache-
81+
82+
- name: Configure ${{ matrix.defconfig }}_defconfig
83+
run: |
84+
make ${{ matrix.defconfig }}_defconfig
85+
86+
- name: Build ${{ matrix.defconfig }}_defconfig
87+
run: |
88+
echo "Building ${{ matrix.defconfig }}_defconfig ..."
89+
make -j$((`getconf _NPROCESSORS_ONLN` / 2 + 2))
90+
91+
- name: Resulting size of build
92+
run: |
93+
printf "Size of output/images/: "
94+
ls -l output/images/
95+
96+
- name: Prepare ${{ matrix.defconfig }} Artifact
97+
run: |
98+
cd output/
99+
mv images ${{ steps.vars.outputs.dirname }}
100+
tar cfz ${{ steps.vars.outputs.archive }} ${{ steps.vars.outputs.dirname }}/
101+
102+
- uses: actions/upload-artifact@v4
103+
with:
104+
path: output/${{ steps.vars.outputs.archive }}
105+
name: artifact-${{ matrix.defconfig }}
106+
107+
publish:
108+
name: Upload Bootloader Artifacts
109+
runs-on: ubuntu-latest
110+
needs: build
111+
permissions:
112+
contents: write
113+
steps:
114+
- uses: actions/download-artifact@v4
115+
with:
116+
pattern: "artifact-*"
117+
merge-multiple: true
118+
119+
- name: Create checksums ...
120+
run: |
121+
for file in *.tar.gz; do
122+
sha256sum $file > $file.sha256
123+
done
124+
125+
- uses: ncipollo/release-action@v1
126+
with:
127+
allowUpdates: true
128+
omitName: true
129+
omitBody: true
130+
omitBodyDuringUpdate: true
131+
prerelease: true
132+
tag: "latest-boot"
133+
token: ${{ secrets.GITHUB_TOKEN }}
134+
artifacts: "*.tar.gz*"
135+
136+
- name: Summary
137+
run: |
138+
cat <<EOF >> $GITHUB_STEP_SUMMARY
139+
# Bootloader Build Complete! :rocket:
140+
141+
For the public download links of these bootloader artifacts, please see:
142+
<https://github.com/kernelkit/infix/releases/tag/latest-boot>
143+
EOF
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# QEMU-specific U-Boot config
2+
# Enable PCI MMC for QEMU virtualized environment
3+
CONFIG_MMC_PCI=y

board/common/post-image.sh

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -86,28 +86,30 @@ if [ "$FIT_IMAGE" = "y" ]; then
8686
$common/mkfit.sh
8787
fi
8888

89+
# Only for regular builds, not bootloader-only builds
8990
if [ "$BR2_TARGET_ROOTFS_SQUASHFS" = "y" ]; then
9091
rel=$(ver)
9192
ln -sf rootfs.squashfs "$BINARIES_DIR/${NAME}${rel}.img"
9293
if [ -n "$rel" ]; then
9394
ln -sf "${NAME}${rel}.img" "$BINARIES_DIR/${NAME}.img"
9495
fi
95-
fi
9696

97-
# Menuconfig support for modifying Qemu args in release tarballs
98-
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/rootfs/usr/bin/onieprom" "$BINARIES_DIR/"
99-
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/qemu/qemu.sh" "$BINARIES_DIR/"
100-
sed -e "s/@ARCH@/QEMU_$BR2_ARCH/" \
101-
-e "s/@DISK_IMG@/$diskimg/" \
102-
< "$BR2_EXTERNAL_INFIX_PATH/board/common/qemu/Config.in.in" \
103-
> "$BINARIES_DIR/Config.in"
104-
rm -f "$BINARIES_DIR/qemu.cfg"
105-
CONFIG_="CONFIG_" BR2_CONFIG="$BINARIES_DIR/qemu.cfg" \
106-
"$O/build/buildroot-config/conf" --olddefconfig "$BINARIES_DIR/Config.in"
107-
rm -f "$BINARIES_DIR/qemu.cfg.old" "$BINARIES_DIR/.config.old"
108-
109-
# Quick intro for beginners, with links to more information
110-
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/README.txt" "$BINARIES_DIR/"
97+
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/rootfs/usr/bin/onieprom" "$BINARIES_DIR/"
98+
99+
# Menuconfig support for modifying Qemu args in release tarballs
100+
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/qemu/qemu.sh" "$BINARIES_DIR/"
101+
sed -e "s/@ARCH@/QEMU_$BR2_ARCH/" \
102+
-e "s/@DISK_IMG@/$diskimg/" \
103+
< "$BR2_EXTERNAL_INFIX_PATH/board/common/qemu/Config.in.in" \
104+
> "$BINARIES_DIR/Config.in"
105+
rm -f "$BINARIES_DIR/qemu.cfg"
106+
CONFIG_="CONFIG_" BR2_CONFIG="$BINARIES_DIR/qemu.cfg" \
107+
"$O/build/buildroot-config/conf" --olddefconfig "$BINARIES_DIR/Config.in"
108+
rm -f "$BINARIES_DIR/qemu.cfg.old" "$BINARIES_DIR/.config.old"
109+
110+
# Quick intro for beginners, with links to more information
111+
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/README.txt" "$BINARIES_DIR/"
112+
fi
111113

112114
boards=$(${BR2_EXTERNAL_INFIX_PATH}/board/common/selected-boards.sh ${BR2_EXTERNAL_INFIX_PATH} ${O})
113115
for board in $boards; do

board/common/uboot/extras.config

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ CONFIG_CMD_SETEXPR_FMT=y
2020

2121
CONFIG_MMC=y
2222
CONFIG_MMC_SDHCI=y
23-
CONFIG_MMC_PCI=y
2423
CONFIG_CMD_MMC=y
2524

2625
CONFIG_FS_SQUASHFS=y

configs/aarch64_qemu_boot_defconfig

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,11 @@ BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
2020
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
2121
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.07.02"
2222
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="qemu_arm64"
23-
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/extras.config"
23+
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/extras.config $(BR2_EXTERNAL_INFIX_PATH)/board/aarch64/qemu/uboot/extras.config"
2424
BR2_TARGET_UBOOT_FORMAT_DTB=y
2525
BR2_PACKAGE_HOST_GENIMAGE=y
2626
BR2_PACKAGE_HOST_RAUC=y
2727
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
2828
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
2929
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
30-
TRUSTED_KEYS=y
31-
TRUSTED_KEYS_DEVELOPMENT=y
32-
DISK_IMAGE_BOOT_BIN=y
33-
DISK_IMAGE_BOOT_DATA="${BINARIES_DIR}/flash-image.bin"
34-
DISK_IMAGE_BOOT_OFFSET=0x00200000
30+
# GNS3_APPLIANCE is not set

configs/cn9130_crb_boot_defconfig

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,4 @@ BR2_PACKAGE_HOST_RAUC=y
3838
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
3939
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
4040
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
41-
TRUSTED_KEYS=y
42-
TRUSTED_KEYS_DEVELOPMENT=y
43-
DISK_IMAGE_BOOT_BIN=y
44-
DISK_IMAGE_BOOT_DATA="${BINARIES_DIR}/flash-image.bin"
45-
DISK_IMAGE_BOOT_OFFSET=0x00200000
41+
# GNS3_APPLIANCE is not set

configs/fireant_boot_defconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_INFIX_PATH)/patches"
1111
BR2_INIT_NONE=y
1212
BR2_SYSTEM_BIN_SH_NONE=y
1313
# BR2_PACKAGE_BUSYBOX is not set
14+
BR2_PACKAGE_LIBBSD=y
1415
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
1516
# BR2_TARGET_ROOTFS_TAR is not set
1617
BR2_TARGET_UBOOT=y
@@ -20,3 +21,5 @@ BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/kernelkit/u-boot.git"
2021
BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="c3d9cdcc7d9e3eb490d4036f5eece3fb91a2485c"
2122
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mscc_fireant_pcb135_emmc"
2223
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/extras.config"
24+
BR2_TARGET_UBOOT_NEEDS_DTC=y
25+
# GNS3_APPLIANCE is not set

configs/rpi4_boot_defconfig

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
BR2_aarch64=y
2+
BR2_cortex_a72=y
3+
BR2_TOOLCHAIN_EXTERNAL=y
4+
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
5+
BR2_DL_DIR="$(BR2_EXTERNAL_INFIX_PATH)/dl"
6+
BR2_CCACHE=y
7+
BR2_CCACHE_DIR="$(BR2_EXTERNAL_INFIX_PATH)/.ccache"
8+
BR2_ENABLE_DEBUG=y
9+
BR2_PACKAGE_OVERRIDE_FILE="$(BR2_EXTERNAL_INFIX_PATH)/local.mk"
10+
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_INFIX_PATH)/patches"
11+
BR2_SSP_NONE=y
12+
BR2_INIT_NONE=y
13+
BR2_SYSTEM_BIN_SH_NONE=y
14+
BR2_ROOTFS_POST_IMAGE_SCRIPT="${BR2_EXTERNAL_INFIX_PATH}/board/common/post-image.sh"
15+
# BR2_PACKAGE_BUSYBOX is not set
16+
BR2_PACKAGE_RPI_FIRMWARE=y
17+
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/config.txt"
18+
BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/cmdline.txt"
19+
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
20+
# BR2_TARGET_ROOTFS_TAR is not set
21+
BR2_TARGET_UBOOT=y
22+
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
23+
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
24+
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2025.01"
25+
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_arm64"
26+
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="${BR2_EXTERNAL_INFIX_PATH}/board/common/uboot/extras.config ${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/uboot/extras.config"
27+
BR2_TARGET_UBOOT_NEEDS_DTC=y
28+
BR2_TARGET_UBOOT_FORMAT_DTB=y
29+
BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
30+
BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="arch/arm/dts/infix-key.dtbo arch/arm/dts/rpi-env.dtbo"
31+
BR2_TARGET_UBOOT_CUSTOM_DTS_PATH="${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/uboot/rpi-env.dtso"
32+
BR2_PACKAGE_HOST_GENIMAGE=y
33+
BR2_PACKAGE_HOST_RAUC=y
34+
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
35+
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
36+
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
37+
# GNS3_APPLIANCE is not set

package/board/raspberry-pi-4/Config.in

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,6 @@ config BR2_PACKAGE_RASPBERRY_PI_4
99
select BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4
1010
select BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X
1111
select SDCARD_AUX
12-
select BR2_TARGET_UBOOT
13-
select BR2_TARGET_UBOOT_FORMAT_CUSTOM
14-
select BR2_TARGET_UBOOT_NEEDS_DTC
1512
select BR2_TARGET_UBOOT_NEEDS_UBOOT_TOOLS
16-
select BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
1713
help
1814
Raspberry pi 4
19-
20-
# Don't redefine - just set conditional defaults
21-
if BR2_PACKAGE_RASPBERRY_PI_4
22-
23-
config BR2_TARGET_UBOOT_BOARD_DEFCONFIG
24-
default "rpi_arm64"
25-
26-
config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES
27-
default "${BR2_EXTERNAL_INFIX_PATH}/board/common/uboot/extras.config ${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/uboot/extras.config"
28-
29-
config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
30-
default "arch/arm/dts/infix-key.dtbo arch/arm/dts/rpi-env.dtbo"
31-
32-
config BR2_TARGET_UBOOT_CUSTOM_DTS_PATH
33-
default "${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/uboot/rpi-env.dtso"
34-
35-
config BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE
36-
default "${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/config.txt"
37-
38-
config BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE
39-
default "${BR2_EXTERNAL_INFIX_PATH}/src/board/raspberry-pi-4/cmdline.txt"
40-
41-
endif

patches/arm-trusted-firmware/v2.9/0002-marvell-Allow-mv-ddr-marvell-to-be-built-from-tarbal.patch

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)