aports/main/u-boot/APKBUILD
2025-04-08 14:43:32 +00:00

203 lines
5.9 KiB
Text

# Contributor: He Yangxuan <yangxuan8282@gmail.com>
# Contributor: Timo Teras <timo.teras@iki.fi>
# Maintainer: Milan P. Stanić <mps@arvanta.net>
pkgname=u-boot
pkgver=2025.04
pkgrel=0
pkgdesc="u-boot bootloader common files"
url="https://www.denx.de/wiki/U-Boot/"
arch="all !s390x !ppc64le"
license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause WITH eCos-exception-2.0 IBM-pibs
ISC LGPL-2.0-only LGPL-2.1-only X11"
options="!check" # no tests
makedepends="
bc
bison
dtc
flex
gawk
gnutls-dev
linux-headers
ncurses-dev
openssl-dev
py3-elftools
py3-setuptools
python3-dev
swig
util-linux-dev
"
if [ "$CARCH" = "aarch64" ]; then
makedepends="$makedepends arm-trusted-firmware"
fi
source="https://ftp.denx.de/pub/u-boot/u-boot-${pkgver//_/-}.tar.bz2
README.txt
update-u-boot
fix-tools-build.patch
"
builddir="$srcdir"/u-boot-${pkgver//_/-}
if [ "$CARCH" = "riscv64" ]; then
makedepends="$makedepends opensbi"
export OPENSBI=/usr/share/opensbi/generic/firmware/fw_dynamic.bin
fi
# secfixes:
# 2021.04-r0:
# - CVE-2021-27097
# - CVE-2021-27138
case "$CARCH" in
arm*) board_configs="
beagleboard:am335x_evm
linksprite:Linksprite_pcDuino3_Nano
cuboxi:mx6cuboxi
raspberrypi:rpi_0_w,rpi,rpi_2,rpi_3_32b
wandboard:wandboard
qemu:qemu_arm
odroid:odroid,odroid-xu3
sunxi:LicheePi_Zero,Bananapi,Lamobo_R1,Cubieboard,Cubieboard2,orangepi_pc
";;
aarch64) board_configs="
thunderx:thunderx_88xx
raspberrypi:rpi_3,rpi_arm64
odroid:odroid-c2,odroid-n2
snapdragon:qcom
exynos:a3y17lte,a5y17lte,a7y17lte
libretech:libretech-cc
rockchip:rockpro64-rk3399,roc-pc-rk3399,roc-cc-rk3328,pinebook-pro-rk3399
qemu:qemu_arm64
sunxi:pine64-lts,pinebook,orangepi_3,orangepi_zero3,teres_i,a64-olinuxino,a64-olinuxino-emmc,nanopi_neo2,pine64_plus
";;
riscv64) board_configs="
qemu:qemu-riscv64,qemu-riscv64_smode
unleashed:sifive_unleashed
unmatched:sifive_unmatched
starfive:starfive_visionfive2
";;
esac
for board_config in $board_configs; do
_allboards="$_allboards $pkgname-${board_config%%:*}"
done
subpackages="$_allboards $pkgname-tools"
case "$CARCH" in
arm*|aarch64|riscv64) subpackages="$pkgname-all:_all $_allboards $pkgname-tools";;
esac
build() {
touch include/config.h
LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > include/timestamp_autogenerated.h
LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h
local board_config board
for board_config in $board_configs; do
local configs="${board_config#*:}"
for board in ${configs//,/ }; do
msg "Building u-boot for $board"
case "$board" in
"pine64-lts"|"pinebook"|"teres_i"|"a64-olinuxino"|"a64-olinuxino-emmc"|"pine64_plus")
export BL31="/usr/share/arm-trusted-firmware/sun50i_a64/bl31.bin"
export SCP=/dev/null;;
"orangepi_3"|"orangepi_zero3")
export BL31="/usr/share/arm-trusted-firmware/sun50i_h6/bl31.bin";;
"pinebook-pro-rk3399"|"rockpro64-rk3399"|"roc-pc-rk3399")
export BL31="/usr/share/arm-trusted-firmware/rk3399/bl31.elf";;
"roc-cc-rk3328")
export BL31="/usr/share/arm-trusted-firmware/rk3328/bl31.elf";;
esac
export BUILD_DIR="$builddir"/build/$board
mkdir -p "$BUILD_DIR"
make O="$BUILD_DIR" ${board}_config
make O="$BUILD_DIR" all
done
done
msg "Building u-boot-tools"
make tools-only_defconfig
make tools-all
}
package() {
case "$CARCH" in
x86*) return;;
esac
cd "$builddir"/build
mkdir -p "$pkgdir"/usr/share/$pkgname "$pkgdir"/usr/sbin
install "$srcdir"/README.txt "$pkgdir"/usr/share/$pkgname/README.txt
install "$srcdir"/update-u-boot "$pkgdir"/usr/sbin
}
tools() {
pkgdesc="u-boot bootloader utility tools"
provides="uboot-tools"
replaces="uboot-tools"
mkdir -p $pkgdir
mkdir $subpkgdir
cd "$builddir"
for tool in dumpimage env/fw_printenv \
fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr img2srec \
mkenvimage mkimage ncb proftool; do
install -D tools/$tool \
$subpkgdir/usr/bin/"$(basename $tool)"
done
install -Dm644 tools/env/fw_env.config \
"$subpkgdir/usr/share/doc/$pkgname/examples/fw_env.config"
cd "$subpkgdir"/usr/bin
ln -sf fw_printenv fw_setenv
}
_all() {
pkgdesc="u-boot for all boards (meta package)"
depends="$_allboards"
mkdir -p "$subpkgdir"/
}
_split_boards() {
cd "$builddir"/build
pkgdesc="u-boot for $1"
depends="u-boot"
shift
local board
for board; do
msg "Including board $board"
mkdir -p "$subpkgdir"/usr/share/$pkgname/$board
export BUILD_DIR="$builddir"/build/$board
local board_images=""
case "$board" in
"sifive_unleashed") board_images="u-boot.itb spl/u-boot-spl.bin --" ;;
"sifive_unmatched") board_images="u-boot.itb spl/u-boot-spl.bin --" ;;
"starfive_visionfive2") board_images="u-boot.itb spl/u-boot-spl.bin.normal.out --" ;;
"pinebook-pro-rk3399"|"rockpro64-rk3399"|"roc-pc-rk3399"|"roc-cc-rk3328") board_images="u-boot-rockchip.bin --" ;;
esac
local ok=no
for image in $board_images u-boot-sunxi-with-spl.bin -- MLO SPL u-boot.img -- u-boot.bin; do
if [ "$image" = "--" ]; then
[ "$ok" = yes ] && break
continue
fi
if [ -e "$BUILD_DIR"/$image ]; then
cp "$BUILD_DIR"/$image "$subpkgdir"/usr/share/$pkgname/$board
ok=yes
fi
done
[ "$ok" = yes ] || return
done
}
for board_config in $board_configs; do
_board="${board_config%%:*}"
_configs="${board_config#*:}"
eval "$_board() { _split_boards $_board ${_configs//,/ }; }"
done
sha512sums="
f2ce2d34880e347165656060ac2956050112ed4cd14cbca2ca736d2ad26f660bb09a17fe79b988f2702f0f65cf43d5263f9ff4d41338e3865962b7f9f01a0f0d u-boot-2025.04.tar.bz2
f8c9bb6e84d6f0620c976ac7ad5dd7ec7ff9dfdd4b1d03d2bf6653e7beccf80bdf2debfc92fb1f696dba92fb40287d3c45897e0078951451d0835cb61a5f16d1 README.txt
6cf882785fa12abcfdfa82119f6a3446229bc75f4c19d5751676625dda81df5ca428c2b631187ecbc39261b081b1a8b53bceeac9f43a3229f7610abc4d9862a2 update-u-boot
1ccba2c96703d82e16126c77c8a88e468ecd704a0a89b015efb7889ca40c6f6a05104269f465cb0d79b824d8e0d1616689d8165c70403a8f52c7d91fa1637623 fix-tools-build.patch
"