linux-ampere-fourier: bootstrap PKGBUILD (CoolPi GenBook RK3588)
Sibling to kernel-agent PR #8 which lands the scope-tagged board patches + fleet/ampere.yaml manifest. This PR carries the makepkg-side recipe. ## Baseline marfrit/linux-rk3588-marfrit @ f8f3ad9 (mainline v7.0-rc3 + 18 commits): 10 by Markus Fritsche (board DTS + Kconfig + suspend/wakeup + bt) 4 by Shawn Lin (phy: rockchip-snps-pcie3 stability) 2 by Cristian Ciocaltea (clk + dw-dp bridge — Collabora) 1 by Sebastian Reichel (Rock 5 ITX hdmirx — unused by ampere) 1 by Pedro Alves (CLK_SET_RATE_PARENT VOP2 fix) The 6 board-relevant patches (pwm15 pinctrl + RK806 power-off + genbook pwm-fan/speaker/USB-C/lid) are scope-tagged in kernel-agent. The 12 others are 'cherry-picks-in-baseline' currently — splitting them into scope-tagged patches is a follow-up. ## Source distribution The kernel tree isn't pushable to Gitea (boltzmann's working clone is shallow). Tarball (260MB) doesn't belong in marfrit-packages either. Pragmatic shortcut: ship prebuild.sh that produces the tarball locally from $LINUX_RK3588_MARFRIT_TREE (default ~/src/linux-rockchip) just before makepkg runs. PKGBUILD source array references the tarball by name; makepkg picks it up from the PKGBUILD dir. Build flow: cd arch/linux-ampere-fourier ./prebuild.sh # produces 260MB tarball; idempotent w/ sha check makepkg -s --noconfirm Future iteration: host the tarball on Gitea release assets or packages.reauktion.de/sources/ and switch source to URL. ## What the PR ships PKGBUILD — the recipe (linux-rk3588-marfrit @ f8f3ad9) config — snapshot of ampere's /proc/config.gz linux-ampere-fourier.preset — mkinitcpio preset, /boot/firmware/ paths extlinux-add.hook — alpm hook, fires on /boot/firmware/Image* changes extlinux-add.sh — idempotent managed-label injector for /boot/firmware/extlinux/extlinux.conf (vfat on mmcblk0p1, ampere-specific path) prebuild.sh — source-staging helper (see above) README.md — build + install runbook ## ampere-specific boot path differences vs fresnel ampere boots from /boot/firmware/ (vfat partition), not /boot/ (root partition) like fresnel. The PKGBUILD installs Image + initramfs + DTB under /boot/firmware/ directly. The extlinux-add hook fires on /boot/firmware/<X> path changes and edits /boot/firmware/extlinux/extlinux.conf. The mkinitcpio preset writes initramfs to /boot/firmware/. Only one PRESET ('default') — no fallback image — because /boot/firmware is ~1G total and two ~20MB initramfs files plus the DTB and a couple of kernel-image backups would squeeze it tight. ## Out of scope this PR - Ask 2 (VP9 enablement) and Ask 3 (AV1 dec) from kernel-agent issue #6 - Build + publish + install (sequenced after this PR + kernel-agent PR #8 merge) - Splitting the 12 non-board commits into scope-tagged kernel-agent patches
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
# Maintainer: Markus Fritsche <mfritsche@reauktion.de>
|
||||
#
|
||||
# linux-ampere-fourier — CoolPi GenBook (RK3588) kernel from the
|
||||
# marfrit-iterated linux-rk3588-marfrit branch (pinned commit).
|
||||
#
|
||||
# Baseline carries the marfrit RK3588 delta on top of mainline v7.0-rc3:
|
||||
# 10 Markus commits (board DTS + Kconfig + suspend/wakeup + bluetooth)
|
||||
# plus 8 upstream cherry-picks (Shawn Lin's pcie3 phy series, Collabora
|
||||
# clk/dts/dw-dp fixes, Sebastian Reichel's Rock 5 ITX hdmirx). The 6
|
||||
# board-relevant patches are scope-tagged in marfrit/kernel-agent under
|
||||
# patches/{soc,module,board}/ — see fleet/ampere.yaml manifest.
|
||||
#
|
||||
# Coexists with the user's other extlinux labels in
|
||||
# /boot/firmware/extlinux/extlinux.conf; never edits them. Adds a
|
||||
# managed `linux-ampere-fourier` label (the user sets `default` manually
|
||||
# after verifying boot).
|
||||
#
|
||||
# Bootloader path: /boot/firmware/ (vfat on mmcblk0p1). Kernel +
|
||||
# initramfs + DTB land there directly. Reverting = boot a different
|
||||
# extlinux label (e.g. arch_mainline, ubuntu_mainline).
|
||||
|
||||
pkgbase=linux-ampere-fourier
|
||||
pkgname=("$pkgbase" "$pkgbase-headers")
|
||||
pkgver=7.0rc3.kafr1
|
||||
pkgrel=1
|
||||
pkgdesc='CoolPi GenBook kernel (linux-rk3588-marfrit @ f8f3ad9 + RK3588 cherry-picks + GenBook DTS)'
|
||||
arch=(aarch64)
|
||||
url='https://git.reauktion.de/marfrit/kernel-agent'
|
||||
license=(GPL-2.0-only)
|
||||
makedepends=(
|
||||
bc cpio gettext kmod libelf pahole perl python tar xz
|
||||
ccache
|
||||
uboot-tools dtc
|
||||
)
|
||||
options=('!strip')
|
||||
|
||||
# Pinned tip of marfrit/linux-rk3588-marfrit. 18 commits ahead of v7.0-rc3:
|
||||
# 10 by Markus Fritsche (board/SoC/module/Bluetooth/Kconfig)
|
||||
# 4 by Shawn Lin (phy: rockchip-snps-pcie3 stability series)
|
||||
# 2 by Cristian Ciocaltea (clk + dw-dp bridge — Collabora track)
|
||||
# 1 by Sebastian Reichel (Rock 5 ITX hdmirx — not used by ampere)
|
||||
# 1 by Pedro Alves (CLK_SET_RATE_PARENT VOP2 fix)
|
||||
_commit=f8f3ad934433bd7e1207d9b0b37e817a692b7ee9
|
||||
|
||||
source=(
|
||||
# Local tarball produced by ./prebuild.sh from a local clone of the
|
||||
# linux-rk3588-marfrit branch. Not fetched from a URL because the
|
||||
# boltzmann working clone is shallow (gitea push rejects) and the
|
||||
# 260MB tarball isn't committed to marfrit-packages. Run prebuild.sh
|
||||
# before makepkg; see README in this dir.
|
||||
"linux-rk3588-marfrit-${_commit:0:7}.tar.gz"
|
||||
'config' # snapshot of running ampere kernel's /proc/config.gz (7.0.0-rc3-ARCH+)
|
||||
'linux-ampere-fourier.preset'
|
||||
'extlinux-add.hook'
|
||||
'extlinux-add.sh'
|
||||
)
|
||||
sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP')
|
||||
|
||||
# kernelrelease becomes <Makefile-VERSION>.<PATCH>.<SUBLEVEL><EXTRAVERSION><LOCALVERSION>
|
||||
# i.e. 7.0.0-rc3-ampere-fourier. Module dir + EXTRAVERSION suffix keep
|
||||
# this disjoint from the hand-managed /boot/firmware/Image-7.0.0-rc3-ARCH+
|
||||
# that's currently on the host.
|
||||
_kernver=7.0.0-rc3-ampere-fourier
|
||||
_srcdir=linux-rk3588-marfrit
|
||||
|
||||
prepare() {
|
||||
cd "${_srcdir}"
|
||||
|
||||
echo ":: writing config"
|
||||
cp "${srcdir}/config" .config
|
||||
|
||||
# LOCALVERSION suffix to differentiate from upstream-stock builds.
|
||||
scripts/config --set-str LOCALVERSION "-ampere-fourier"
|
||||
scripts/config -d LOCALVERSION_AUTO
|
||||
|
||||
echo ":: olddefconfig (accept new symbols sensibly)"
|
||||
make olddefconfig
|
||||
|
||||
make -s kernelrelease > version
|
||||
echo ":: kernel release: $(<version)"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${_srcdir}"
|
||||
unset LDFLAGS
|
||||
# Native build only — no distcc per kernel-agent policy
|
||||
# (feedback_kernel_agent_no_distcc.md). ccache stays.
|
||||
export CC="ccache gcc"
|
||||
export HOSTCC="ccache gcc"
|
||||
make ${MAKEFLAGS:--j$(nproc)} Image modules dtbs
|
||||
}
|
||||
|
||||
_package() {
|
||||
pkgdesc='CoolPi GenBook overclocked kernel (ampere-fourier baseline)'
|
||||
depends=(coreutils kmod mkinitcpio uboot-tools)
|
||||
optdepends=('linux-firmware: firmware images needed for some devices')
|
||||
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
|
||||
|
||||
cd "${_srcdir}"
|
||||
local _kver
|
||||
_kver=$(<version)
|
||||
|
||||
# Kernel image into the vfat firmware partition (where extlinux looks).
|
||||
install -Dm644 arch/arm64/boot/Image \
|
||||
"${pkgdir}/boot/firmware/Image-ampere-fourier"
|
||||
|
||||
# Single DTB for the GenBook target — install directly under
|
||||
# /boot/firmware/ (no subdir, matches existing host convention).
|
||||
install -Dm644 arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dtb \
|
||||
"${pkgdir}/boot/firmware/rk3588-coolpi-cm5-genbook.dtb-ampere-fourier"
|
||||
|
||||
ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="${pkgdir}/usr" \
|
||||
INSTALL_MOD_STRIP=1 modules_install
|
||||
rm -f "${pkgdir}/usr/lib/modules/${_kver}/"{source,build}
|
||||
|
||||
install -Dm644 "${srcdir}/${pkgbase}.preset" \
|
||||
"${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
|
||||
|
||||
install -Dm755 "${srcdir}/extlinux-add.hook" \
|
||||
"${pkgdir}/usr/share/libalpm/hooks/95-${pkgbase}-extlinux.hook"
|
||||
install -Dm755 "${srcdir}/extlinux-add.sh" \
|
||||
"${pkgdir}/usr/share/libalpm/scripts/${pkgbase}-extlinux"
|
||||
}
|
||||
|
||||
_package-headers() {
|
||||
pkgdesc='Headers and scripts for the linux-ampere-fourier kernel'
|
||||
depends=(pahole)
|
||||
|
||||
cd "${_srcdir}"
|
||||
local _kver _builddir
|
||||
_kver=$(<version)
|
||||
_builddir="${pkgdir}/usr/lib/modules/${_kver}/build"
|
||||
|
||||
install -Dt "${_builddir}" -m644 .config Makefile Module.symvers System.map vmlinux version
|
||||
install -Dt "${_builddir}/kernel" -m644 kernel/Makefile
|
||||
|
||||
cp -a scripts "${_builddir}"
|
||||
install -Dt "${_builddir}/arch/arm64" -m644 arch/arm64/Makefile
|
||||
cp -a arch/arm64/include "${_builddir}/arch/arm64/"
|
||||
cp -a include "${_builddir}/"
|
||||
|
||||
find . -name 'Kbuild' -exec install -Dm644 {} "${_builddir}/{}" \;
|
||||
find . -name 'Kconfig*' -exec install -Dm644 {} "${_builddir}/{}" \;
|
||||
|
||||
install -d "${pkgdir}/usr/src"
|
||||
ln -sr "${_builddir}" "${pkgdir}/usr/src/${pkgbase}"
|
||||
}
|
||||
|
||||
eval "package_${pkgbase}() { _package; }"
|
||||
eval "package_${pkgbase}-headers() { _package-headers; }"
|
||||
Reference in New Issue
Block a user