Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4
@ 2020-10-31 16:17 Piraty
  2020-10-31 16:27 ` [PR PATCH] [Updated] " Piraty
                   ` (60 more replies)
  0 siblings, 61 replies; 62+ messages in thread
From: Piraty @ 2020-10-31 16:17 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 383 bytes --]

There is a new pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

rpi-kernel: build a subpackage for each flavor, add rpi4




@Duncaen @pbui 

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 12904 bytes --]

From b2c22ecad05932e3a954132e78574fe0ff29943e Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: don't depend on rpi-kernel anymore

Now that we have rpi4 it's not sufficient to determine the rpi variant
by looking at XBPS_TARGET_MACHINE anymore.

In case rpi-base requires modification for a specific variant that has
the same XBPS_TARGET_MACHINE as another variant, rpi-base needs to be
split into rpi{N}-base; then rpi{N}-base can depend on rpi{N}-kernel
again.
---
 srcpkgs/rpi-base/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index a1e15b06280..c1115087cd5 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -1,14 +1,14 @@
 # Template file for 'rpi-base'
 pkgname=rpi-base
 version=2.5
-revision=4
+revision=5
 homepage="http://www.voidlinux.org"
 short_desc="Void Linux RaspberryPi base files"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="Public Domain"
 
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
+depends="virtual?ntp-daemon rpi-firmware"
 
 do_install() {
 	case "$XBPS_TARGET_MACHINE" in

From 944112b26a867dc330beecdeecf30f8369055798 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: build a subpackage for each flavor

add rpi4

[ci skip]
---
 srcpkgs/rpi-kernel/template | 236 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 210 insertions(+), 34 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index 7bce019015f..2a62cc192d1 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.68
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
 maintainer="Peter Bui <pbui@github.bx612.space>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=e0dc98befadb4c8c66aa0e73d9d79f10b20e29fb758ab870a0c6c708e3a0abb7
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,109 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+subpackages="rpi-kernel-headers"
+for _f in $_flavors; do
+	subpackages+=" ${_f}-kernel-headers ${_f}-kernel"
+done
+
+# support legacy installations. don't drop before 2021-12 !!
+# make the meta packages depend on the new flavor packages
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _f in $_flavors ; do
+		msg_normal "$_f: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				msg_normal "$_f: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_f"
+				;;
+			configure)
+				cd "$wrksrc/../$_f"
+				_configure $_f
+				;;
+			build)
+				cd "$wrksrc/../$_f"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_f"
+				_install $_f
+				mv "$DESTDIR" "$DESTDIR/../$_f"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +178,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +194,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -128,12 +208,16 @@ do_install() {
 	# Install device tree blobs
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
-	#move rpi3's dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
-		;;
+	#move dtb that ended up in /boot/broadcom
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-rpi-4-b.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
 	vmkdir boot
 	# Generate kernel.img and install it to destdir.
@@ -155,11 +239,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +267,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +325,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers} (transitional)"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
@ 2020-10-31 16:27 ` Piraty
  2020-10-31 16:36 ` Piraty
                   ` (59 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2020-10-31 16:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 441 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

rpi-kernel: build a subpackage for each flavor, add rpi4
see: https://github.com/void-linux/void-mklive/pull/153


@Duncaen @pbui 

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 13374 bytes --]

From b2c22ecad05932e3a954132e78574fe0ff29943e Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: don't depend on rpi-kernel anymore

Now that we have rpi4 it's not sufficient to determine the rpi variant
by looking at XBPS_TARGET_MACHINE anymore.

In case rpi-base requires modification for a specific variant that has
the same XBPS_TARGET_MACHINE as another variant, rpi-base needs to be
split into rpi{N}-base; then rpi{N}-base can depend on rpi{N}-kernel
again.
---
 srcpkgs/rpi-base/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index a1e15b06280..c1115087cd5 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -1,14 +1,14 @@
 # Template file for 'rpi-base'
 pkgname=rpi-base
 version=2.5
-revision=4
+revision=5
 homepage="http://www.voidlinux.org"
 short_desc="Void Linux RaspberryPi base files"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="Public Domain"
 
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
+depends="virtual?ntp-daemon rpi-firmware"
 
 do_install() {
 	case "$XBPS_TARGET_MACHINE" in

From f9e560483eb6341c5df85310087b5edc7a4b2084 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: build a subpackage for each flavor

This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

[ci skip]
---
 srcpkgs/rpi-kernel/template | 236 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 210 insertions(+), 34 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index 7bce019015f..2a62cc192d1 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.68
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
 maintainer="Peter Bui <pbui@github.bx612.space>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=e0dc98befadb4c8c66aa0e73d9d79f10b20e29fb758ab870a0c6c708e3a0abb7
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,109 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+subpackages="rpi-kernel-headers"
+for _f in $_flavors; do
+	subpackages+=" ${_f}-kernel-headers ${_f}-kernel"
+done
+
+# support legacy installations. don't drop before 2021-12 !!
+# make the meta packages depend on the new flavor packages
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _f in $_flavors ; do
+		msg_normal "$_f: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				msg_normal "$_f: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_f"
+				;;
+			configure)
+				cd "$wrksrc/../$_f"
+				_configure $_f
+				;;
+			build)
+				cd "$wrksrc/../$_f"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_f"
+				_install $_f
+				mv "$DESTDIR" "$DESTDIR/../$_f"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +178,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +194,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -128,12 +208,16 @@ do_install() {
 	# Install device tree blobs
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
-	#move rpi3's dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
-		;;
+	#move dtb that ended up in /boot/broadcom
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-rpi-4-b.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
 	vmkdir boot
 	# Generate kernel.img and install it to destdir.
@@ -155,11 +239,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +267,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +325,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers} (transitional)"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
  2020-10-31 16:27 ` [PR PATCH] [Updated] " Piraty
@ 2020-10-31 16:36 ` Piraty
  2020-11-06 23:34 ` [NEEDS TESTERS] " liketechnik
                   ` (58 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2020-10-31 16:36 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 441 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

rpi-kernel: build a subpackage for each flavor, add rpi4
see: https://github.com/void-linux/void-mklive/pull/153


@Duncaen @pbui 

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 13510 bytes --]

From ad1db8b74ffcaf583bace3dcd790f639ea16910a Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: don't depend on rpi-kernel anymore

Now that we have rpi4 it's not sufficient to determine the rpi variant
by looking at XBPS_TARGET_MACHINE anymore.

In case rpi-base requires modification for a specific variant that has
the same XBPS_TARGET_MACHINE as another variant, rpi-base needs to be
split into rpi{N}-base; then rpi{N}-base can depend on rpi{N}-kernel
again.
---
 srcpkgs/rpi-base/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index a1e15b06280..8e156d679cf 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -1,14 +1,14 @@
 # Template file for 'rpi-base'
 pkgname=rpi-base
 version=2.5
-revision=4
+revision=5
 homepage="http://www.voidlinux.org"
 short_desc="Void Linux RaspberryPi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
+depends="virtual?ntp-daemon rpi-firmware"
 
 do_install() {
 	case "$XBPS_TARGET_MACHINE" in

From 47229809163e2902e9f0f81fc81ef4508b41c170 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: build a subpackage for each flavor

This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4
* adopt, as suggested by former maintainer Peter Bui.

[ci skip]
---
 srcpkgs/rpi-kernel/template | 238 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 211 insertions(+), 35 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index 7bce019015f..f08b65a33ea 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.68
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
-maintainer="Peter Bui <pbui@github.bx612.space>"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
+maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=e0dc98befadb4c8c66aa0e73d9d79f10b20e29fb758ab870a0c6c708e3a0abb7
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,109 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+subpackages="rpi-kernel-headers"
+for _f in $_flavors; do
+	subpackages+=" ${_f}-kernel-headers ${_f}-kernel"
+done
+
+# support legacy installations. don't drop before 2021-12 !!
+# make the meta packages depend on the new flavor packages
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _f in $_flavors ; do
+		msg_normal "$_f: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				msg_normal "$_f: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_f"
+				;;
+			configure)
+				cd "$wrksrc/../$_f"
+				_configure $_f
+				;;
+			build)
+				cd "$wrksrc/../$_f"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_f"
+				_install $_f
+				mv "$DESTDIR" "$DESTDIR/../$_f"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +178,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +194,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -128,12 +208,16 @@ do_install() {
 	# Install device tree blobs
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
-	#move rpi3's dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
-		;;
+	#move dtb that ended up in /boot/broadcom
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-rpi-4-b.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
 	vmkdir boot
 	# Generate kernel.img and install it to destdir.
@@ -155,11 +239,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +267,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +325,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers} (transitional)"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
  2020-10-31 16:27 ` [PR PATCH] [Updated] " Piraty
  2020-10-31 16:36 ` Piraty
@ 2020-11-06 23:34 ` liketechnik
  2020-11-16  3:32 ` [PR REVIEW] " agausmann
                   ` (57 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: liketechnik @ 2020-11-06 23:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 731 bytes --]

New comment by liketechnik on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-723346459

Comment:
(I hope it's appropriate to ask here)
I'd love to help testing, but I'm not sure how/what.

I'm currently running void (64bit) on a rpi4 (currently put void's kernel packages on hold an manually copied the latest release from the rpi firmware repository). I also have a rpi3 available, although I'd need some more time to buy an SD-card for it and set the system up on it.

What would be the next steps for me? (e. g. what pre-requisites do I need [local repository to compile the packages?] and what would I need to change on my rpi [which packages would be updated/installed new)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (2 preceding siblings ...)
  2020-11-06 23:34 ` [NEEDS TESTERS] " liketechnik
@ 2020-11-16  3:32 ` agausmann
  2020-11-16  3:34 ` agausmann
                   ` (56 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-16  3:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 488 bytes --]

New review comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r523882387

Comment:
These dependencies are also set for the flavor packages, causing for example `rpi4-kernel` to depend on `rpi3-kernel`, since `rpi4-kernel` is built for `aarch64`. This is definitely unwanted, and causes problems with `./mkplatformfs.sh rpi4 ...` when it attempts to install both `rpi3-kernel` and `rpi4-kernel`, as the files will conflict.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (3 preceding siblings ...)
  2020-11-16  3:32 ` [PR REVIEW] " agausmann
@ 2020-11-16  3:34 ` agausmann
  2020-11-16  3:36 ` agausmann
                   ` (55 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-16  3:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

New review comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r523882694

Comment:
Same issue as on [line 71](#diff-7c06a56d03c82f4f91449e0b8baba00fa54433735eee8b84183aa75909a25b34R71)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (4 preceding siblings ...)
  2020-11-16  3:34 ` agausmann
@ 2020-11-16  3:36 ` agausmann
  2020-11-16  3:57 ` agausmann
                   ` (54 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-16  3:36 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 629 bytes --]

New review comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r523882387

Comment:
These dependencies are also set for the flavor packages, causing for example `rpi4-kernel` to depend on `rpi3-kernel`, since `rpi4-kernel` is built for `aarch64`. This is definitely unwanted, and causes problems with `./mkplatformfs.sh rpi4 ...` when it attempts to install both `rpi3-kernel` and `rpi4-kernel`, as the files will conflict.

My guess is this also happens for `rpi{1,2,3}-kernel`, which will depend on themselves, though that didn't cause any noticeable problems.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (5 preceding siblings ...)
  2020-11-16  3:36 ` agausmann
@ 2020-11-16  3:57 ` agausmann
  2020-11-16  3:58 ` agausmann
                   ` (53 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-16  3:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 427 bytes --]

New comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-727720492

Comment:
Tested on my rpi1, builds and boots to a login shell successfully. USB, video and networking all seem to be fine; didn't expect much to change there, but just for the sake of completeness.

Also tried to test on rpi4, but ran into issues while building, which I have detailed above.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (6 preceding siblings ...)
  2020-11-16  3:57 ` agausmann
@ 2020-11-16  3:58 ` agausmann
  2020-11-16  3:59 ` agausmann
                   ` (52 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-16  3:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 509 bytes --]

New comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-727720492

Comment:
Tested on my rpi1, builds and boots to a login shell successfully. Ran into one issue with the changes to mklive, but I made a comment there for it. USB, video and networking all seem to be fine; didn't expect much to change there, but just for the sake of completeness.

Also tried to test on rpi4, but ran into issues while building, which I have detailed above.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (7 preceding siblings ...)
  2020-11-16  3:58 ` agausmann
@ 2020-11-16  3:59 ` agausmann
  2020-11-17  9:10 ` [PR REVIEW] " Piraty
                   ` (51 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-16  3:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

New comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-727720492

Comment:
Tested on my rpi1, builds and boots to a login shell successfully. Ran into one issue with the changes to mklive, but I made a comment there for it. USB, video and networking all seem to be fine; didn't expect much to change at that level anyway.

Also tried to test on rpi4, but ran into issues while building, which I have detailed above.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (8 preceding siblings ...)
  2020-11-16  3:59 ` agausmann
@ 2020-11-17  9:10 ` Piraty
  2020-11-22 18:23 ` Piraty
                   ` (50 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2020-11-17  9:10 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 205 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r524993731

Comment:
oh right. will fix it. transition handling is not ideal yet

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (9 preceding siblings ...)
  2020-11-17  9:10 ` [PR REVIEW] " Piraty
@ 2020-11-22 18:23 ` Piraty
  2020-11-22 19:48 ` Piraty
                   ` (49 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2020-11-22 18:23 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1529 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r528384827

Comment:
i cannot confirm. `depends=` is not inherited by subpakages. the toplevel declaration you refereced only affects the meta packages, see below (notice `run_depends`)
```
$ XBPS_TARGET_ARCH=aarch64-musl xbps-query --repository=$HOME/src/void-packages/hostdir/binpkgs -M -R rpi4-kernel                                                                                       
architecture: aarch64-musl
filename-sha256: 422a8449148b60cf6dd53f80f61f2b556b4bb505cc6588e6c5877721e6273054
filename-size: 28MB
homepage: http://www.kernel.org
installed_size: 39MB
license: GPL-2.0-only
maintainer: Piraty <piraty1@inbox.ru>
pkgname: rpi4-kernel
pkgver: rpi4-kernel-5.4.68_1
repository: /home/piraty/src/void-packages/hostdir/binpkgs
short_desc: Linux kernel for Raspberry Pi 4 (5.4 [git e82816d])

$ XBPS_TARGET_ARCH=aarch64-musl xbps-query --repository=$HOME/src/void-packages/hostdir/binpkgs -M -R rpi-kernel
architecture: aarch64-musl
filename-sha256: 0686ecf163d116935cac4c2f744ff3d00e2baf023ff952cd4c4c143ba4752a24
filename-size: 529B
homepage: http://www.kernel.org
installed_size: 0B
license: GPL-2.0-only
maintainer: Piraty <piraty1@inbox.ru>
pkgname: rpi-kernel
pkgver: rpi-kernel-5.4.68_1
repository: /home/piraty/src/void-packages/hostdir/binpkgs
run_depends:
        rpi3-kernel>=0
short_desc: Linux kernel for Raspberry Pi (5.4 series [git e82816d])
```

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (10 preceding siblings ...)
  2020-11-22 18:23 ` Piraty
@ 2020-11-22 19:48 ` Piraty
  2020-11-22 20:58 ` agausmann
                   ` (48 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2020-11-22 19:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 273 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r528395022

Comment:
that doesn't make sense. this is set on the subpackage only, i don't see how rpi3-kernel-headers would pull rpi4-kernel-headers

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (11 preceding siblings ...)
  2020-11-22 19:48 ` Piraty
@ 2020-11-22 20:58 ` agausmann
  2020-12-29  7:49 ` manneorama
                   ` (47 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: agausmann @ 2020-11-22 20:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1013 bytes --]

New review comment by agausmann on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r528403377

Comment:
Yes, I get the same result that you do. However this is still somehow a problem, even if this isn't the source. When I run `./xbps-src -a aarch64 pkg rpi4-kernel`, for some reason. it also builds `rpi-kernel`, `rpi-kernel-headers`, and transitively, `rpi3-kernel` and `rpi3-kernel-headers`. And then, for some reason, `./mkplatformfs.sh rpi4 ...` attempts to install them.

```
$ ls hostdir/binpkgs/rpi-kernel-flavor-subpackage/
aarch64-repodata                          rpi3-kernel-headers-5.4.68_1.aarch64.xbps
rpi-kernel-5.4.68_1.aarch64.xbps          rpi4-kernel-5.4.68_1.aarch64.xbps
rpi-kernel-headers-5.4.68_1.aarch64.xbps  rpi4-kernel-headers-5.4.68_1.aarch64.xbps
rpi3-kernel-5.4.68_1.aarch64.xbps
```
see also: the [build log](https://termbin.com/9he0z) for `./xbps-src -a aarch64 pkg rpi4-kernel`, which builds both rpi3-kernel and rpi4-kernel.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (12 preceding siblings ...)
  2020-11-22 20:58 ` agausmann
@ 2020-12-29  7:49 ` manneorama
  2020-12-29  7:59 ` manneorama
                   ` (46 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2020-12-29  7:49 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1103 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-751984525

Comment:
Currently trying to test this rebased on top of the current void-packages master (on top of `f66d93e241420fbb17f8c1fffadf897bba676382` to be specific). Kernel package builds fine but during building of base-system I run into a strange error while building `elfutils`. 

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libelf/libelf.so: undefined reference to symbol 'inflateEnd'
/usr/bin/ld: /lib64/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13
```

I'm not exactly sure where to start digging, but I will do my best. Any help is appreciated.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (13 preceding siblings ...)
  2020-12-29  7:49 ` manneorama
@ 2020-12-29  7:59 ` manneorama
  2020-12-29  8:10 ` manneorama
                   ` (45 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2020-12-29  7:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1269 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-751984525

Comment:
Currently trying to test this rebased on top of the current void-packages master (on top of `f66d93e241420fbb17f8c1fffadf897bba676382` to be specific). Kernel package builds fine but during building of base-system I run into a strange error while building `elfutils`. 

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libelf/libelf.so: undefined reference to symbol 'inflateEnd'
/usr/bin/ld: /lib64/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13
```

I'm not exactly sure where to start digging, but I will do my best. Any help is appreciated.

UPDATE:
Building `libelf` from master at `f66d93e241420fbb17f8c1fffadf897bba676382` works fine. So there may be something in these two commits causing the issue.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (14 preceding siblings ...)
  2020-12-29  7:59 ` manneorama
@ 2020-12-29  8:10 ` manneorama
  2020-12-29  9:03 ` manneorama
                   ` (44 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2020-12-29  8:10 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1569 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-751984525

Comment:
Currently trying to test this rebased on top of the current void-packages master (on top of `f66d93e241420fbb17f8c1fffadf897bba676382` to be specific). Kernel package builds fine but during building of base-system I run into a strange error while building `elfutils`. 

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libelf/libelf.so: undefined reference to symbol 'inflateEnd'
/usr/bin/ld: /lib64/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13
```

I'm not exactly sure where to start digging, but I will do my best. Any help is appreciated.

**UPDATE:**
Building `libelf` from master at `f66d93e241420fbb17f8c1fffadf897bba676382` works fine. So there may be something in these two commits causing the issue.

**UPDATE 2:**
Building `libelf` standalone (`./xbps-src -a aarch64 pkg libelf`) works fine even from the rebased branch so I'm guessing this is because, as opposed to using `-N pkg base-system`, the standalone build will use upstream packages for dependency resolution instead of local ones?

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (15 preceding siblings ...)
  2020-12-29  8:10 ` manneorama
@ 2020-12-29  9:03 ` manneorama
  2020-12-29  9:48 ` manneorama
                   ` (43 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2020-12-29  9:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2491 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-751984525

Comment:
Currently trying to test this rebased on top of the current void-packages master (on top of `f66d93e241420fbb17f8c1fffadf897bba676382` to be specific). Kernel package builds fine but during building of base-system I run into a strange error while building `elfutils`. 

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libelf/libelf.so: undefined reference to symbol 'inflateEnd'
/usr/bin/ld: /lib64/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13
```

I'm not exactly sure where to start digging, but I will do my best. Any help is appreciated.

**UPDATE:**
Building `libelf` from master at `f66d93e241420fbb17f8c1fffadf897bba676382` works fine. So there may be something in these two commits causing the issue.

**UPDATE 2:**
Building `libelf` standalone (`./xbps-src -a aarch64 pkg libelf`) works fine even from the rebased branch so I'm guessing this is because, as opposed to using `-N pkg base-system`, the standalone build will use upstream packages for dependency resolution instead of local ones?

**UPDATE 3:**
Manually adding `-lz` to `masterdir/builddir/elfutils-0.182/debuginfod/Makefile +475` hacks around the missing symbol above. But then new errors, related to `zstd` instead, appears.

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libdw/libdw.so: undefined reference to symbol 'ZSTD_decompressStream'
/usr/bin/ld: /lib64/libzstd.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:19
```

I can't quickly hack around this because adding `-lzstd` the linker is unable to find the lib. Currently stuck.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (16 preceding siblings ...)
  2020-12-29  9:03 ` manneorama
@ 2020-12-29  9:48 ` manneorama
  2020-12-29 10:53 ` manneorama
                   ` (42 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2020-12-29  9:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2495 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-751984525

Comment:
Currently trying to test this rebased on top of the current void-packages master (on top of `f66d93e241420fbb17f8c1fffadf897bba676382` to be specific). Kernel package builds fine but during building of base-system I run into a strange error while building `elfutils`. 

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libelf/libelf.so: undefined reference to symbol 'inflateEnd'
/usr/bin/ld: /lib64/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13
```

I'm not exactly sure where to start digging, but I will do my best. Any help is appreciated.

**UPDATE:**
Building `libelf` from master at `f66d93e241420fbb17f8c1fffadf897bba676382` works fine. ~~So there may be something in these two commits causing the issue.~~

**UPDATE 2:**
Building `libelf` standalone (`./xbps-src -a aarch64 pkg libelf`) works fine even from the rebased branch so I'm guessing this is because, as opposed to using `-N pkg base-system`, the standalone build will use upstream packages for dependency resolution instead of local ones?

**UPDATE 3:**
Manually adding `-lz` to `masterdir/builddir/elfutils-0.182/debuginfod/Makefile +475` hacks around the missing symbol above. But then new errors, related to `zstd` instead, appears.

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libdw/libdw.so: undefined reference to symbol 'ZSTD_decompressStream'
/usr/bin/ld: /lib64/libzstd.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:19
```

I can't quickly hack around this because adding `-lzstd` the linker is unable to find the lib. Currently stuck.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (17 preceding siblings ...)
  2020-12-29  9:48 ` manneorama
@ 2020-12-29 10:53 ` manneorama
  2020-12-31  1:42 ` [PR PATCH] [Updated] " Piraty
                   ` (41 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2020-12-29 10:53 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2704 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-751984525

Comment:
Currently trying to test this rebased on top of the current void-packages master (on top of `f66d93e241420fbb17f8c1fffadf897bba676382` to be specific). Kernel package builds fine but during building of base-system I run into a strange error while building `elfutils`. 

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libelf/libelf.so: undefined reference to symbol 'inflateEnd'
/usr/bin/ld: /lib64/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:13
```

I'm not exactly sure where to start digging, but I will do my best. Any help is appreciated.

**UPDATE:**
Building `libelf` from master at `f66d93e241420fbb17f8c1fffadf897bba676382` works fine. ~~So there may be something in these two commits causing the issue.~~

**UPDATE 2:**
Building `libelf` standalone (`./xbps-src -a aarch64 pkg libelf`) works fine even from the rebased branch so I'm guessing this is because, as opposed to using `-N pkg base-system`, the standalone build will use upstream packages for dependency resolution instead of local ones?

**UPDATE 3:**
Manually adding `-lz` to `masterdir/builddir/elfutils-0.182/debuginfod/Makefile +475` hacks around the missing symbol above. But then new errors, related to `zstd` instead, appears.

```
Making all in debuginfod
  CXXLD    debuginfod
/usr/bin/ld: ../libdw/libdw.so: undefined reference to symbol 'ZSTD_decompressStream'
/usr/bin/ld: /lib64/libzstd.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:581: debuginfod] Error 1
make[1]: *** [Makefile:502: all-recursive] Error 1
make: *** [Makefile:418: all] Error 2
=> ERROR: elfutils-0.182_4: do_build: '${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}' exited with 2
=> ERROR:   in do_build() at common/build-style/gnu-configure.sh:19
```

I can't quickly hack around this because adding `-lzstd` the linker is unable to find the lib. Currently stuck.

As far as I can determine, all packages relevant to this issue define the correct dependencies. But I’m unsure how transitive deps are handled and where/how link flags and options are defined/inherited. 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (18 preceding siblings ...)
  2020-12-29 10:53 ` manneorama
@ 2020-12-31  1:42 ` Piraty
  2021-01-03 23:08 ` manneorama
                   ` (40 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2020-12-31  1:42 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 961 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

----
see: https://github.com/void-linux/void-mklive/pull/153 as well


@Duncaen @pbui 

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 13949 bytes --]

From c5c6d57085bbe270b845d795d5784397ae305277 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: don't depend on rpi-kernel anymore

Now that we have rpi4 it's not sufficient to determine the rpi variant
by looking at XBPS_TARGET_MACHINE anymore.

In case rpi-base requires modification for a specific variant that has
the same XBPS_TARGET_MACHINE as another variant, rpi-base needs to be
split into rpi{N}-base; then rpi{N}-base can depend on rpi{N}-kernel
again.
---
 srcpkgs/rpi-base/INSTALL.mgs | 10 ++++++++++
 srcpkgs/rpi-base/template    |  4 ++--
 2 files changed, 12 insertions(+), 2 deletions(-)
 create mode 100644 srcpkgs/rpi-base/INSTALL.mgs

diff --git a/srcpkgs/rpi-base/INSTALL.mgs b/srcpkgs/rpi-base/INSTALL.mgs
new file mode 100644
index 00000000000..e6c0dc26c4e
--- /dev/null
+++ b/srcpkgs/rpi-base/INSTALL.mgs
@@ -0,0 +1,10 @@
+WARNING
+
+rpi-base dropped the dependency on rpi-kernel which very likely made rpi-kernel
+an orphan package on your system.
+
+To mark rpi-kernel as 'manual' (so you don't accidentally remove it during
+system cleanup), please run:
+
+	xbps-pkgdb -m manual rpi-kernel
+
diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..81c2925c0c6 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -3,9 +3,9 @@ pkgname=rpi-base
 version=2.6
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
+depends="virtual?ntp-daemon rpi-firmware"
 short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 

From 92349692477d765f60d7176dff757d89c6ae1398 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: build a subpackage for each flavor

This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4
* adopt, as suggested by former maintainer Peter Bui.

[ci skip]
---
 srcpkgs/rpi-kernel/template | 238 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 211 insertions(+), 35 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index 7bce019015f..1033650cdfc 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.68
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
-maintainer="Peter Bui <pbui@github.bx612.space>"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
+maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=e0dc98befadb4c8c66aa0e73d9d79f10b20e29fb758ab870a0c6c708e3a0abb7
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,109 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+subpackages="rpi-kernel-headers"
+for _f in $_flavors; do
+	subpackages+=" ${_f}-kernel-headers ${_f}-kernel"
+done
+
+# support legacy installations. don't drop before 2021-12 !!
+# make the meta packages depend on the new flavor packages
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _f in $_flavors ; do
+		msg_normal "$_f: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				msg_normal "$_f: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_f"
+				;;
+			configure)
+				cd "$wrksrc/../$_f"
+				_configure $_f
+				;;
+			build)
+				cd "$wrksrc/../$_f"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_f"
+				_install $_f
+				mv "$DESTDIR" "$DESTDIR/../$_f"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +178,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +194,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -128,12 +208,16 @@ do_install() {
 	# Install device tree blobs
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
-	#move rpi3's dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
-		;;
+	#move dtb that ended up in /boot/broadcom
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-rpi-4-b.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
 	vmkdir boot
 	# Generate kernel.img and install it to destdir.
@@ -155,11 +239,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +267,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +325,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (19 preceding siblings ...)
  2020-12-31  1:42 ` [PR PATCH] [Updated] " Piraty
@ 2021-01-03 23:08 ` manneorama
  2021-01-05  9:36 ` Anachron
                   ` (39 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2021-01-03 23:08 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 799 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-753689713

Comment:
I finally gave in and simply built everything on an existing rpi4 installation instead of going the cross compile route. With the small modification I mentioned in the `void-mklive` PR I could successfully build an image and boot off of it. 

I don’t know if my host setup or the cross compilation in `xbps-src` is broken for rpi4, but something is wrong at least. I was able to get around the original issue by just starting over (?). But then I had other issues and at one point the compiler somehow disappeared which is when I gave up. I will have another, more structured, go at the cross compilation once I’m done testing the image I now have. 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (20 preceding siblings ...)
  2021-01-03 23:08 ` manneorama
@ 2021-01-05  9:36 ` Anachron
  2021-01-05 19:48 ` LeamHall
                   ` (38 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Anachron @ 2021-01-05  9:36 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 336 bytes --]

New comment by Anachron on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-754522438

Comment:
Has someone replaced their RPI 3 B+ install with this PR yet? I'm thinking about copying the sdcard and modifying the install here and there to not need to reinstall and reconfigure everything. 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (21 preceding siblings ...)
  2021-01-05  9:36 ` Anachron
@ 2021-01-05 19:48 ` LeamHall
  2021-01-06 19:21 ` manneorama
                   ` (37 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: LeamHall @ 2021-01-05 19:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 261 bytes --]

New comment by LeamHall on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-754859314

Comment:
Noob question; is there a mailing list or IRC channel I can get on to watch this? my RPi 4 should be here tomorrow.  :)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (22 preceding siblings ...)
  2021-01-05 19:48 ` LeamHall
@ 2021-01-06 19:21 ` manneorama
  2021-01-07  1:18 ` CMB
                   ` (36 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: manneorama @ 2021-01-06 19:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 374 bytes --]

New comment by manneorama on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-755551540

Comment:
I've been running this on my Pi 4B's for a few days now and so far it's rock solid. All my pi's are headless so I have not tested graphical output, but networking (wired and wireless) and everything else seems to work as expected.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (23 preceding siblings ...)
  2021-01-06 19:21 ` manneorama
@ 2021-01-07  1:18 ` CMB
  2021-01-07  2:04 ` LeamHall
                   ` (35 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: CMB @ 2021-01-07  1:18 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 338 bytes --]

New comment by CMB on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-755821843

Comment:
I built this and then made an image for my Pi 4 using the void-mklive
pull request, updating the case statement for selecting the kernel,
as discussed in that PR.  It appears to be working quite well.


^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (24 preceding siblings ...)
  2021-01-07  1:18 ` CMB
@ 2021-01-07  2:04 ` LeamHall
  2021-01-07  2:20 ` LeamHall
                   ` (34 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: LeamHall @ 2021-01-07  2:04 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 585 bytes --]

New comment by LeamHall on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-754859314

Comment:
Noob question; is there a mailing list or IRC channel I can get on to watch this? my RPi 4 should be here tomorrow.  :)

**Addendum:** Trying to follow the directions above, and it looks like i'm not set up for builds? Is there a setup document I can study?

./xbps-src -a aarch64-musl pkg rpi-base
=> ERROR: rpi-base is not a bootstrap package and cannot be built without it.
=> ERROR: Please install bootstrap packages and try again.


^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (25 preceding siblings ...)
  2021-01-07  2:04 ` LeamHall
@ 2021-01-07  2:20 ` LeamHall
  2021-01-11  0:24 ` [PR REVIEW] " ahesford
                   ` (33 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: LeamHall @ 2021-01-07  2:20 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 710 bytes --]

New comment by LeamHall on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-754859314

Comment:
Noob question; is there a mailing list or IRC channel I can get on to watch this? my RPi 4 should be here tomorrow.  :)

**Addendum:** Trying to follow the directions above, and it looks like i'm not set up for builds? Is there a setup document I can study?

./xbps-src -a aarch64-musl pkg rpi-base
=> ERROR: rpi-base is not a bootstrap package and cannot be built without it.
=> ERROR: Please install bootstrap packages and try again.

**Addendum 2:** Found some stuff, working through it. Any pointers from people who do this a lot would be appreciated.   :)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (26 preceding siblings ...)
  2021-01-07  2:20 ` LeamHall
@ 2021-01-11  0:24 ` ahesford
  2021-01-11  2:02 ` ericonr
                   ` (32 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ahesford @ 2021-01-11  0:24 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 179 bytes --]

New review comment by ahesford on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554646048

Comment:
Revbump for the dependency drop

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (27 preceding siblings ...)
  2021-01-11  0:24 ` [PR REVIEW] " ahesford
@ 2021-01-11  2:02 ` ericonr
  2021-01-11  2:02 ` ericonr
                   ` (31 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ericonr @ 2021-01-11  2:02 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554659214

Comment:
I still think current users shouldn't have to change anything about their current systems to get things working. The amount of information contained in this package is small enough that a `rpi4-base` package wouldn't be undue maintenance in almost any way.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (28 preceding siblings ...)
  2021-01-11  2:02 ` ericonr
@ 2021-01-11  2:02 ` ericonr
  2021-01-11  2:57 ` jsumners
                   ` (30 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ericonr @ 2021-01-11  2:02 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 414 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554659214

Comment:
I still think current users shouldn't have to change anything about their current systems to get (and keep) things working. The amount of information contained in this package is small enough that a `rpi4-base` package wouldn't be undue maintenance in almost any way.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (29 preceding siblings ...)
  2021-01-11  2:02 ` ericonr
@ 2021-01-11  2:57 ` jsumners
  2021-01-11  3:17 ` ericonr
                   ` (29 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: jsumners @ 2021-01-11  2:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 236 bytes --]

New review comment by jsumners on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554668135

Comment:
What current systems? Void does not currently support RPI4 without a lot of manual work.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (30 preceding siblings ...)
  2021-01-11  2:57 ` jsumners
@ 2021-01-11  3:17 ` ericonr
  2021-01-11  3:51 ` jsumners
                   ` (28 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ericonr @ 2021-01-11  3:17 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 220 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554671598

Comment:
Current users of the `rpi-base` packages, so rpi zero, 1, 2 and 3 owners.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (31 preceding siblings ...)
  2021-01-11  3:17 ` ericonr
@ 2021-01-11  3:51 ` jsumners
  2021-01-11  4:14 ` ericonr
                   ` (27 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: jsumners @ 2021-01-11  3:51 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 289 bytes --]

New review comment by jsumners on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554677973

Comment:
Those are technically different architectures. I wouldn't think it wise to try and run an install targeting any of those on any other device.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (32 preceding siblings ...)
  2021-01-11  3:51 ` jsumners
@ 2021-01-11  4:14 ` ericonr
  2021-01-11  5:04 ` ahesford
                   ` (26 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ericonr @ 2021-01-11  4:14 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 660 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554693233

Comment:
I'm not sure I get what you mean.

My point is that `rpi-base` currently works and pulls all dependencies for current rpi users. With this change, they will also have to download the kernel for their specific board. It would be simpler for them, without much more work on our side, to have a `rpi4-base` package for rpi4 users (it could even be a subpackage here), while current users don't get an orphaned kernel package or have to remember to install new systems with `rpi-base` *and* `rpi$something-kernel`. 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (33 preceding siblings ...)
  2021-01-11  4:14 ` ericonr
@ 2021-01-11  5:04 ` ahesford
  2021-01-11 11:19 ` Piraty
                   ` (25 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ahesford @ 2021-01-11  5:04 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 568 bytes --]

New review comment by ahesford on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554727891

Comment:
I don't like the idea of a separate `rpi4-base` because the distinction is arbitrary. The problem compounds when there is a Raspberry Pi 5 and so on. Suddenly every new hardware release that requires a different kernel gets paired with a new `-base` just to pull in that kernel.

The only difference needed to move from rpi3 to rpi4 is the kernel, so let's decouple the kernel from the base and keep things consistent.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (34 preceding siblings ...)
  2021-01-11  5:04 ` ahesford
@ 2021-01-11 11:19 ` Piraty
  2021-01-11 11:21 ` Piraty
                   ` (24 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-11 11:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 278 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554977740

Comment:
that was my point, yet i didn't come up with a solution that doesn't require user intervention for existing install (1rpi{0,1,2,3}1)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (35 preceding siblings ...)
  2021-01-11 11:19 ` Piraty
@ 2021-01-11 11:21 ` Piraty
  2021-01-11 11:25 ` Piraty
                   ` (23 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-11 11:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 278 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554977740

Comment:
that was my point, yet i didn't come up with a solution that doesn't require user intervention for existing install (`rpi{0,1,2,3}`)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (36 preceding siblings ...)
  2021-01-11 11:21 ` Piraty
@ 2021-01-11 11:25 ` Piraty
  2021-01-11 13:17 ` ahesford
                   ` (22 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-11 11:25 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r554977740

Comment:
maybe rpi{0,1,2,3,4}-base is what we need then to make it more obvious and have a single point of entry?

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (37 preceding siblings ...)
  2021-01-11 11:25 ` Piraty
@ 2021-01-11 13:17 ` ahesford
  2021-01-11 13:20 ` ericonr
                   ` (21 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ahesford @ 2021-01-11 13:17 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 470 bytes --]

New review comment by ahesford on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r555039334

Comment:
Having per-model bases seems better than playing "one of these things is not like the other" with `rpi-base` and `rpi4-base`. I don't think there's a lot of added value in making the `-base` depend on the kernel, but if there is agreement with the position of @ericonr, might as well split them all if we're splitting one.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (38 preceding siblings ...)
  2021-01-11 13:17 ` ahesford
@ 2021-01-11 13:20 ` ericonr
  2021-01-12 20:19 ` [PR PATCH] [Updated] " Piraty
                   ` (20 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ericonr @ 2021-01-11 13:20 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 208 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r555040991

Comment:
For what it's worth, rpi0 and rpi1 would be the same package.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (39 preceding siblings ...)
  2021-01-11 13:20 ` ericonr
@ 2021-01-12 20:19 ` Piraty
  2021-01-13  2:42 ` [PR REVIEW] " ahesford
                   ` (19 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-12 20:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1643 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

see: https://github.com/void-linux/void-mklive/pull/153 as well
@Duncaen @pbui 

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images (from branch https://github.com/void-linux/void-mklive/pull/153)
```
cd void-mklive
d=$(date '+%Y%m%d')
repo=$(xdistdir)/hostdir/binpkgs/
make XBPS_REPOSITORY="-r $repo" void-aarch64-musl-ROOTFS-$d.tar.xz void-rpi3-musl-$d.img.xz void-rpi4-musl-$d.img.xz
```

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 14253 bytes --]

From fa55dad53d1572a0f3c24c04234cfaf30ca30b95 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: don't depend on rpi-kernel anymore

Now that we have rpi4 it's not sufficient to determine the rpi variant
by looking at XBPS_TARGET_MACHINE anymore.

In case rpi-base requires modification for a specific variant that has
the same XBPS_TARGET_MACHINE as another variant, rpi-base needs to be
split into rpi{N}-base; then rpi{N}-base can depend on rpi{N}-kernel
again.
---
 srcpkgs/rpi-base/INSTALL.mgs | 17 +++++++++++++++++
 srcpkgs/rpi-base/template    |  4 ++--
 2 files changed, 19 insertions(+), 2 deletions(-)
 create mode 100644 srcpkgs/rpi-base/INSTALL.mgs

diff --git a/srcpkgs/rpi-base/INSTALL.mgs b/srcpkgs/rpi-base/INSTALL.mgs
new file mode 100644
index 00000000000..62f3d772b8d
--- /dev/null
+++ b/srcpkgs/rpi-base/INSTALL.mgs
@@ -0,0 +1,17 @@
+WARNING
+
+If you read this on one of rpi0,rpi1,rpi2,rpi3, manual action may be required!
+
+rpi-base dropped the dependency on rpi-kernel which very likely made rpi-kernel
+an orphan package on your system.
+Instead, flavor-dependant kernel packages were introduced.
+
+To mark rpi-kernel as 'manual' (so you don't accidentally remove it during
+orphan removal), please run:
+
+	# check if the kernel package is an orphan
+	xbps-query -O | grep 'rpi[123]-kernel'
+
+	# mark it as explicitly installed
+	xbps-pkgdb -m manual $(xbps-query -O | grep 'rpi[123]-kernel')
+
diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..81c2925c0c6 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -3,9 +3,9 @@ pkgname=rpi-base
 version=2.6
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
+depends="virtual?ntp-daemon rpi-firmware"
 short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 

From 2bd77c2081779c6270a485ec07f9a95d008fce3f Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: build a subpackage for each flavor

This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4
* adopt, as suggested by former maintainer Peter Bui.

[ci skip]
---
 srcpkgs/rpi-kernel/template | 238 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 211 insertions(+), 35 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index 7bce019015f..1033650cdfc 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.68
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
-maintainer="Peter Bui <pbui@github.bx612.space>"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
+maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=e0dc98befadb4c8c66aa0e73d9d79f10b20e29fb758ab870a0c6c708e3a0abb7
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,109 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+subpackages="rpi-kernel-headers"
+for _f in $_flavors; do
+	subpackages+=" ${_f}-kernel-headers ${_f}-kernel"
+done
+
+# support legacy installations. don't drop before 2021-12 !!
+# make the meta packages depend on the new flavor packages
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _f in $_flavors ; do
+		msg_normal "$_f: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				msg_normal "$_f: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_f"
+				;;
+			configure)
+				cd "$wrksrc/../$_f"
+				_configure $_f
+				;;
+			build)
+				cd "$wrksrc/../$_f"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_f"
+				_install $_f
+				mv "$DESTDIR" "$DESTDIR/../$_f"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +178,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +194,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -128,12 +208,16 @@ do_install() {
 	# Install device tree blobs
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
-	#move rpi3's dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
-		;;
+	#move dtb that ended up in /boot/broadcom
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-rpi-4-b.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
 	vmkdir boot
 	# Generate kernel.img and install it to destdir.
@@ -155,11 +239,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +267,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +325,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (40 preceding siblings ...)
  2021-01-12 20:19 ` [PR PATCH] [Updated] " Piraty
@ 2021-01-13  2:42 ` ahesford
  2021-01-16 22:38 ` CameronNemo
                   ` (18 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ahesford @ 2021-01-13  2:42 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1408 bytes --]

New review comment by ahesford on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r556227141

Comment:
This block causes problems because some dtb files are missing in `rpi3-kernel` and `rpi4-kernel` (the same problem affects the current `rpi3-kernel` package). For example, on my 3b+ which tries to use NFS root with kernel IP configuration, the Ethernet adapter gets a new, random MAC address with every boot. The `smsc95xx.macaddr` kernel command-line argument makes no difference. The problem is resolved by copying `/boot/broadcom/bcm2710-rpi-3-b-plus.dtb` and `/boot/broadcom/bcm2837-rpi-3-b-plus.dtb` to `/boot`.

I think the right thing here is to copy all of the relevant family and SoC dtb files (see [this table](https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi#hardware)):

```bash
case "$rpi_flavor in
	rpi3)
		mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
		;;
	rpi4)
		mv ${DESTDIR}/boot/broadcom/bcm2711-*.dtb ${DESTDIR}/boot
		;;
esac
rm -rf ${DESTDIR}/broadcom
```
This should capture all of the proper DTBs for `rpi3`-class hardware. For `rpi4`, there is currently only one DTB, but it looks like there are more `bcm2711-*` DTBs for the RPi 400 and CM4 [coming in 5.10.x](https://github.com/raspberrypi/linux/tree/rpi-5.10.y/arch/arm/boot/dts), so doing a glob probably saves us some trouble later.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (41 preceding siblings ...)
  2021-01-13  2:42 ` [PR REVIEW] " ahesford
@ 2021-01-16 22:38 ` CameronNemo
  2021-01-16 23:36 ` [PR PATCH] [Updated] " Piraty
                   ` (17 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: CameronNemo @ 2021-01-16 22:38 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 396 bytes --]

New review comment by CameronNemo on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r559048276

Comment:
@agausmann the behavior you described for building subpackages is expected. You build a source package, and all of its subpackages get built. If there are issues with how mkplatformfs handles things, then we can iron it out in the PR over there.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (42 preceding siblings ...)
  2021-01-16 22:38 ` CameronNemo
@ 2021-01-16 23:36 ` Piraty
  2021-01-16 23:37 ` [PR REVIEW] " Piraty
                   ` (16 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-16 23:36 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1643 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

see: https://github.com/void-linux/void-mklive/pull/153 as well
@Duncaen @pbui 

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images (from branch https://github.com/void-linux/void-mklive/pull/153)
```
cd void-mklive
d=$(date '+%Y%m%d')
repo=$(xdistdir)/hostdir/binpkgs/
make XBPS_REPOSITORY="-r $repo" void-aarch64-musl-ROOTFS-$d.tar.xz void-rpi3-musl-$d.img.xz void-rpi4-musl-$d.img.xz
```

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 14364 bytes --]

From 5b70f6488ad43a3e6663b66b56248c8c58124c62 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: don't depend on rpi-kernel anymore

Now that we have rpi4 it's not sufficient to determine the rpi variant
by looking at XBPS_TARGET_MACHINE anymore.

In case rpi-base requires modification for a specific variant that has
the same XBPS_TARGET_MACHINE as another variant, rpi-base needs to be
split into rpi{N}-base; then rpi{N}-base can depend on rpi{N}-kernel
again.
---
 srcpkgs/rpi-base/INSTALL.mgs | 17 +++++++++++++++++
 srcpkgs/rpi-base/template    |  4 ++--
 2 files changed, 19 insertions(+), 2 deletions(-)
 create mode 100644 srcpkgs/rpi-base/INSTALL.mgs

diff --git a/srcpkgs/rpi-base/INSTALL.mgs b/srcpkgs/rpi-base/INSTALL.mgs
new file mode 100644
index 00000000000..62f3d772b8d
--- /dev/null
+++ b/srcpkgs/rpi-base/INSTALL.mgs
@@ -0,0 +1,17 @@
+WARNING
+
+If you read this on one of rpi0,rpi1,rpi2,rpi3, manual action may be required!
+
+rpi-base dropped the dependency on rpi-kernel which very likely made rpi-kernel
+an orphan package on your system.
+Instead, flavor-dependant kernel packages were introduced.
+
+To mark rpi-kernel as 'manual' (so you don't accidentally remove it during
+orphan removal), please run:
+
+	# check if the kernel package is an orphan
+	xbps-query -O | grep 'rpi[123]-kernel'
+
+	# mark it as explicitly installed
+	xbps-pkgdb -m manual $(xbps-query -O | grep 'rpi[123]-kernel')
+
diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..81c2925c0c6 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -3,9 +3,9 @@ pkgname=rpi-base
 version=2.6
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
+depends="virtual?ntp-daemon rpi-firmware"
 short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 

From 6af31dd6fe48fcbd0f921a26b13e92177a67f08d Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: build a subpackage for each flavor

This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  respective (former one-per-arch) rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4
* adopt, as suggested by former maintainer Peter Bui.

[ci skip]
---
 srcpkgs/rpi-kernel/template | 240 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 212 insertions(+), 36 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index 7bce019015f..ba07081190a 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.68
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
-maintainer="Peter Bui <pbui@github.bx612.space>"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
+maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=e0dc98befadb4c8c66aa0e73d9d79f10b20e29fb758ab870a0c6c708e3a0abb7
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,109 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+subpackages="rpi-kernel-headers"
+for _f in $_flavors; do
+	subpackages+=" ${_f}-kernel-headers ${_f}-kernel"
+done
+
+# support legacy installations. don't drop before 2021-12 !!
+# make the meta packages depend on the new flavor packages
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _f in $_flavors ; do
+		msg_normal "$_f: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				msg_normal "$_f: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_f"
+				;;
+			configure)
+				cd "$wrksrc/../$_f"
+				_configure $_f
+				;;
+			build)
+				cd "$wrksrc/../$_f"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_f"
+				_install $_f
+				mv "$DESTDIR" "$DESTDIR/../$_f"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +178,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +194,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -128,15 +208,19 @@ do_install() {
 	# Install device tree blobs
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
-	#move rpi3's dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm2710-rpi-3-b.dtb ${DESTDIR}/boot
-		;;
+	# move dtb that ended up in /boot/broadcom
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-*.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
-	vmkdir boot
 	# Generate kernel.img and install it to destdir.
+	vmkdir boot
 	case "$XBPS_TARGET_MACHINE" in
 	aarch64*)
 		cp arch/arm64/boot/Image ${DESTDIR}/boot/kernel8.img
@@ -155,11 +239,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +267,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +325,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (43 preceding siblings ...)
  2021-01-16 23:36 ` [PR PATCH] [Updated] " Piraty
@ 2021-01-16 23:37 ` Piraty
  2021-01-16 23:49 ` Piraty
                   ` (15 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-16 23:37 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 178 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r559053155

Comment:
good catch @ahesford , thank you

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (44 preceding siblings ...)
  2021-01-16 23:37 ` [PR REVIEW] " Piraty
@ 2021-01-16 23:49 ` Piraty
  2021-01-16 23:49 ` Piraty
                   ` (14 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-16 23:49 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1122 bytes --]

New comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-761699486

Comment:
to sum up current state of discussion:
- is building all flavors in the rpi-kernel template fine with everyone? (split into disinct templates could be done later anyway).
  - pro: one commit per update
  - con: unnecessarily long build times if i just need rpi3 but build rpi4 as well in the same run
- as with the current patch, rpi-kernel will become an orphan for installed rpi{0,1,2,3} systmes but pull in the new rpi{1,2,3}-kernel. an appropriate INSTALL.msg is provided
- how to handle rpi0 (as pointed out by @ericonr [here](https://github.com/void-linux/void-packages/pull/26000#discussion_r555040991))? just implicitly assume to run rpi1-kernel?
- better split rpi-base into rpi{1,2,3,4}-base as well? that might resolve the rpi-kernel orphan situation as the transitional dummy rpi-base could pull rpi{1,2,3}-base as per target arch mapping which ensures the dependency chain is kept intact
  -

@the-maldridge @pbui @ahesford @ericonr @void-linux/pkg-committers 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [NEEDS TESTERS] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (45 preceding siblings ...)
  2021-01-16 23:49 ` Piraty
@ 2021-01-16 23:49 ` Piraty
  2021-01-17  0:22 ` [WIP] " ahesford
                   ` (13 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-16 23:49 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1117 bytes --]

New comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-761699486

Comment:
to sum up current state of discussion:
- is building all flavors in the rpi-kernel template fine with everyone? (split into disinct templates could be done later anyway).
  - pro: one commit per update
  - con: unnecessarily long build times if i just need rpi3 but build rpi4 as well in the same run
- as with the current patch, rpi-kernel will become an orphan for installed rpi{0,1,2,3} systmes but pull in the new rpi{1,2,3}-kernel. an appropriate INSTALL.msg is provided
- how to handle rpi0 (as pointed out by @ericonr [here](https://github.com/void-linux/void-packages/pull/26000#discussion_r555040991))? just implicitly assume to run rpi1-kernel?
- better split rpi-base into rpi{1,2,3,4}-base as well? that might resolve the rpi-kernel orphan situation as the transitional dummy rpi-base could pull rpi{1,2,3}-base as per target arch mapping which ensures the dependency chain is kept intact

@the-maldridge @pbui @ahesford @ericonr @void-linux/pkg-committers 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (46 preceding siblings ...)
  2021-01-16 23:49 ` Piraty
@ 2021-01-17  0:22 ` ahesford
  2021-01-18  9:44 ` [PR REVIEW] " Piraty
                   ` (12 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ahesford @ 2021-01-17  0:22 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 995 bytes --]

New comment by ahesford on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-761703372

Comment:
I think it's OK for the Zero to require `rpi1-kernel` because it's a first-generation RPi SoC. By the same token, I believe a few later RPi 2 designs should be able to run`rpi3-kernel` (with the dtb copy fix, anyway) because those are effectively third-generation SoCs in the second-generation form factor (not that we should advertise this---sufficiently knowledgeable users can find their way).

I don't have a strong opinion about splitting `rpi-base`. As @ericonr points out, this would let people simply pick the right base to grab what they need. (Should these depend on one of `base-{minimal,voidstrap,system}` to provide a more proper "base"?) On the other hand, the only difference is in the kernel dependency, so the HOWTO isn't made much more complicated by telling users to install `rpi-base` plus the kernel for their hardware generation.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR REVIEW] [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (47 preceding siblings ...)
  2021-01-17  0:22 ` [WIP] " ahesford
@ 2021-01-18  9:44 ` Piraty
  2021-01-18 21:48 ` ericonr
                   ` (11 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-01-18  9:44 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 176 bytes --]

New review comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#discussion_r559053155

Comment:
good catch @ahesford , applied

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (48 preceding siblings ...)
  2021-01-18  9:44 ` [PR REVIEW] " Piraty
@ 2021-01-18 21:48 ` ericonr
  2021-01-23 17:30 ` Bridouz
                   ` (10 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: ericonr @ 2021-01-18 21:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 976 bytes --]

New comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-762484641

Comment:
> is building all flavors in the rpi-kernel template fine with everyone? (split into disinct templates could be done later anyway).

maybe make a build option (or one build option for each) to enable either one, if possible/simple? That way the day-to-day maintenance remains simple, but someone wanting to build locally can select just one.

> how to handle rpi0 (as pointed out by @ericonr here)? just implicitly assume to run rpi1-kernel?

Yes. Just make the `short_desc` for `rpi1-base` and `rpi1-kernel` mention "raspberrypi zero and 1" or similar).

> better split rpi-base into rpi{1,2,3,4}-base as well? that might resolve the rpi-kernel orphan situation as the transitional dummy rpi-base could pull rpi{1,2,3}-base as per target arch mapping which ensures the dependency chain is kept intact

This is my preference.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (49 preceding siblings ...)
  2021-01-18 21:48 ` ericonr
@ 2021-01-23 17:30 ` Bridouz
  2021-01-23 20:22 ` jsumners
                   ` (9 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Bridouz @ 2021-01-23 17:30 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

New comment by Bridouz on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-766145797

Comment:
So until this PR is merged we should kept 'linux-rpi' back on Rpi 4 ('rootfs' images found on reddit) right ?

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (50 preceding siblings ...)
  2021-01-23 17:30 ` Bridouz
@ 2021-01-23 20:22 ` jsumners
  2021-01-28  6:28 ` Bridouz
                   ` (8 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: jsumners @ 2021-01-23 20:22 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 722 bytes --]

New comment by jsumners on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-766173730

Comment:
> So until this PR is merged we should kept 'linux-rpi' back on Rpi 4 ('rootfs' images found on reddit) right ?

I do not know what images you refer to, but I most certainly _would not_ trust any image floating around on Reddit. If you are having issues building this branch and need a pre-built image, you would be better off trusting my image found at https://github.com/void-linux/void-packages/pull/23541#issuecomment-683442628 . It's not _much_ better than trusting some random image on Reddit, but at least I took care to publish it via as trustworthy a medium as I could.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (51 preceding siblings ...)
  2021-01-23 20:22 ` jsumners
@ 2021-01-28  6:28 ` Bridouz
  2021-02-05 10:20 ` paper42
                   ` (7 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Bridouz @ 2021-01-28  6:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 251 bytes --]

New comment by Bridouz on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-766145797

Comment:
So until this PR is merged we should keep 'rpi-kernel' back on Rpi 4 ('rootfs' images found on reddit) right ?

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (52 preceding siblings ...)
  2021-01-28  6:28 ` Bridouz
@ 2021-02-05 10:20 ` paper42
  2021-02-10 19:03 ` jsav0
                   ` (6 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: paper42 @ 2021-02-05 10:20 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 227 bytes --]

New comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-773940670

Comment:
5.10 is now available for Raspberry Pi. Should it be updated in a separate PR or here?

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (53 preceding siblings ...)
  2021-02-05 10:20 ` paper42
@ 2021-02-10 19:03 ` jsav0
  2021-02-11 19:45 ` [PR PATCH] [Updated] " Piraty
                   ` (5 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: jsav0 @ 2021-02-10 19:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 296 bytes --]

New comment by jsav0 on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-776939257

Comment:
Confirmed cross-compiling and then booting two RPI4s 4GB models here, no issues but the kernel is 5.4.68_1. When can we expect this to be officially merged? 

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (54 preceding siblings ...)
  2021-02-10 19:03 ` jsav0
@ 2021-02-11 19:45 ` Piraty
  2021-02-11 20:01 ` [PR PATCH] [Updated] [WIP] rpi-kernel: split into flavor packages, " Piraty
                   ` (4 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-02-11 19:45 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1604 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[WIP] rpi-kernel: build a subpackage for each flavor, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  new rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

see: https://github.com/void-linux/void-mklive/pull/153 as well
@Duncaen @pbui 

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images (from branch https://github.com/void-linux/void-mklive/pull/153)
```
cd void-mklive
d=$(date '+%Y%m%d')
repo=$(xdistdir)/hostdir/binpkgs/
make XBPS_REPOSITORY="-r $repo" void-aarch64-musl-ROOTFS-$d.tar.xz void-rpi3-musl-$d.img.xz void-rpi4-musl-$d.img.xz
```

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 16081 bytes --]

From 906458a78ef5aaaa83905cfbac03c4795f4cd354 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: split into flavor packages

Now that we have rpi4 it's not sufficient to determine the rpi flavor by
looking at XBPS_TARGET_MACHINE anymore (rpi3 and rpi4 both run on aarch64).
---
 srcpkgs/rpi-base/template | 65 ++++++++++++++++++++++++++++++++++++---
 srcpkgs/rpi1-base         |  1 +
 srcpkgs/rpi2-base         |  1 +
 srcpkgs/rpi3-base         |  1 +
 srcpkgs/rpi4-base         |  1 +
 5 files changed, 64 insertions(+), 5 deletions(-)
 create mode 120000 srcpkgs/rpi1-base
 create mode 120000 srcpkgs/rpi2-base
 create mode 120000 srcpkgs/rpi3-base
 create mode 120000 srcpkgs/rpi4-base

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..fb19dc80d04 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -3,12 +3,67 @@ pkgname=rpi-base
 version=2.6
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
-short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_style=meta
+short_desc="Void Linux Raspberry Pi base files (transitional dummy package)"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 
-do_install() {
-	vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+_base_depends="virtual?ntp-daemon rpi-firmware"
+
+# support legacy installations (before rpi4 was added)                      
+# make the meta package depend on the flavor package                                                                                   
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends="rpi1-base" ;;
+	armv7*) depends="rpi2-base" ;;
+	aarch64*) depends="rpi3-base" ;;
+esac
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*)
+		subpackages="rpi1-base"
+		;;
+	armv7*)
+		subpackages="rpi2-base"
+		;;
+	aarch64*)
+		subpackages="rpi3-base rpi4-base"
+		;;
+esac
+
+
+rpi1-base_package() {
+	depends="${_base_depends} rpi1-kernel"
+	short_desc="Void Linux Raspberry Pi zero / 1 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi2-base_package() {
+	depends="${_base_depends} rpi2-kernel"
+	short_desc="Void Linux Raspberry Pi 2 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+
+rpi3-base_package() {
+	depends="${_base_depends} rpi3-kernel"
+	short_desc="Void Linux Raspberry Pi 3 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi4-base_package() {
+	depends="${_base_depends} rpi4-kernel"
+	short_desc="Void Linux Raspberry Pi 4 base files"
+	conflicts="rpi3-base"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
 }
diff --git a/srcpkgs/rpi1-base b/srcpkgs/rpi1-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi1-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi2-base b/srcpkgs/rpi2-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi2-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi3-base b/srcpkgs/rpi3-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi3-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi4-base b/srcpkgs/rpi4-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi4-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file

From 6b3000c49cbb5472a7ec18631aa2935da9fde0b3 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: split into flavor packages

This now buils all Raspberry Pi kernels from a single template by using
individual builddir/destdir for each flavor and performing all stages
independently with help of the `_flavor_stage()` function.

* rpi-kernel is an empty meta package now that is built by default for
  every arch and is kept to serve legacy installations as it depends on
  the appropriate new flavor rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4 while at it :-)
---
 srcpkgs/rpi-kernel/template | 239 +++++++++++++++++++++++++++++++-----
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 213 insertions(+), 34 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index f9f170aedc0..722630ca1da 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -11,11 +11,14 @@ _gitshort="${_githash:0:7}"
 pkgname=rpi-kernel
 version=5.4.83
 revision=1
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
 maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=4a98ea0d68c6e74d479789c12fc97619c872cb2607ae87a881a9491c1c3fbc35
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,31 +51,112 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+subpackages="rpi-kernel-headers"
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+for _flavor in $_flavors; do
+	subpackages+=" ${_flavor}-kernel-headers ${_flavor}-kernel"
+done
+
+# support legacy installations (before rpi4 was added)
+# meta package depend on the flavor package so the kernel doesn't end up orphaned
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _flavor in $_flavors ; do
+		msg_normal "$_flavor: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				# copy extraced sources to flavor specific dir
+				msg_normal "$_flavor: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_flavor"
+				;;
+			configure)
+				cd "$wrksrc/../$_flavor"
+				_configure $_flavor
+				;;
+			build)
+				cd "$wrksrc/../$_flavor"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_flavor"
+				_install $_flavor
+				mv "$DESTDIR" "$DESTDIR/../$_flavor"
+				mkdir -p "$DESTDIR" 
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
@@ -101,7 +181,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +197,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -129,14 +212,18 @@ do_install() {
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
 	# move dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
-		;;
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-*.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
-	vmkdir boot
 	# Generate kernel.img and install it to destdir.
+	vmkdir boot
 	case "$XBPS_TARGET_MACHINE" in
 	aarch64*)
 		cp arch/arm64/boot/Image ${DESTDIR}/boot/kernel8.img
@@ -155,11 +242,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +270,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +328,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] rpi-kernel: split into flavor packages, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (55 preceding siblings ...)
  2021-02-11 19:45 ` [PR PATCH] [Updated] " Piraty
@ 2021-02-11 20:01 ` Piraty
  2021-02-11 20:03 ` Piraty
                   ` (3 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-02-11 20:01 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1596 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[WIP] rpi-kernel: split into flavor packages, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  new rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

see: https://github.com/void-linux/void-mklive/pull/153 as well
@Duncaen @pbui 

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images (from branch https://github.com/void-linux/void-mklive/pull/153)
```
cd void-mklive
d=$(date '+%Y%m%d')
repo=$(xdistdir)/hostdir/binpkgs/
make XBPS_REPOSITORY="-r $repo" void-aarch64-musl-ROOTFS-$d.tar.xz void-rpi3-musl-$d.img.xz void-rpi4-musl-$d.img.xz
```

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 16189 bytes --]

From 994d60831a70b3d3a74e817ca491f5e1cbc8fc22 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: split into flavor packages

Now that we have rpi4 it's not sufficient to determine the rpi flavor by
looking at XBPS_TARGET_MACHINE anymore (rpi3 and rpi4 both run on aarch64).
---
 srcpkgs/rpi-base/template | 67 +++++++++++++++++++++++++++++++++++----
 srcpkgs/rpi1-base         |  1 +
 srcpkgs/rpi2-base         |  1 +
 srcpkgs/rpi3-base         |  1 +
 srcpkgs/rpi4-base         |  1 +
 5 files changed, 65 insertions(+), 6 deletions(-)
 create mode 120000 srcpkgs/rpi1-base
 create mode 120000 srcpkgs/rpi2-base
 create mode 120000 srcpkgs/rpi3-base
 create mode 120000 srcpkgs/rpi4-base

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..119b226ea02 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -1,14 +1,69 @@
 # Template file for 'rpi-base'
 pkgname=rpi-base
-version=2.6
+version=3.0
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
-short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_style=meta
+short_desc="Void Linux Raspberry Pi base files (transitional dummy package)"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 
-do_install() {
-	vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+_base_depends="virtual?ntp-daemon rpi-firmware"
+
+# support legacy installations (before rpi4 was added)
+# make the meta package depend on the flavor package
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends="rpi1-base" ;;
+	armv7*) depends="rpi2-base" ;;
+	aarch64*) depends="rpi3-base" ;;
+esac
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*)
+		subpackages="rpi1-base"
+		;;
+	armv7*)
+		subpackages="rpi2-base"
+		;;
+	aarch64*)
+		subpackages="rpi3-base rpi4-base"
+		;;
+esac
+
+
+rpi1-base_package() {
+	depends="${_base_depends} rpi1-kernel"
+	short_desc="Void Linux Raspberry Pi zero / 1 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi2-base_package() {
+	depends="${_base_depends} rpi2-kernel"
+	short_desc="Void Linux Raspberry Pi 2 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+
+rpi3-base_package() {
+	depends="${_base_depends} rpi3-kernel"
+	short_desc="Void Linux Raspberry Pi 3 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi4-base_package() {
+	depends="${_base_depends} rpi4-kernel"
+	short_desc="Void Linux Raspberry Pi 4 base files"
+	conflicts="rpi3-base"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
 }
diff --git a/srcpkgs/rpi1-base b/srcpkgs/rpi1-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi1-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi2-base b/srcpkgs/rpi2-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi2-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi3-base b/srcpkgs/rpi3-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi3-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi4-base b/srcpkgs/rpi4-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi4-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file

From bd2177bd21d7709ebfe02bccec9a134c67f18f12 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: split into flavor packages

This now buils all Raspberry Pi kernels from a single template by using
individual builddir/destdir for each flavor and performing all stages
independently with help of the `_flavor_stage()` function.

* rpi-kernel is an empty meta package now that is built by default for
  every arch and is kept to serve legacy installations as it depends on
  the appropriate new flavor rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4 while at it :-)
---
 srcpkgs/rpi-kernel/template | 243 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 215 insertions(+), 36 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index f9f170aedc0..e0d678815cd 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -10,12 +10,15 @@ _gitshort="${_githash:0:7}"
 
 pkgname=rpi-kernel
 version=5.4.83
-revision=1
+revision=2
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
 maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=4a98ea0d68c6e74d479789c12fc97619c872cb2607ae87a881a9491c1c3fbc35
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,36 +51,117 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+subpackages="rpi-kernel-headers"
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+for _flavor in $_flavors; do
+	subpackages+=" ${_flavor}-kernel-headers ${_flavor}-kernel"
+done
+
+# support legacy installations (before rpi4 was added)
+# meta package depend on the flavor package so the kernel doesn't end up orphaned
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _flavor in $_flavors ; do
+		msg_normal "$_flavor: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				# copy extraced sources to flavor specific dir
+				msg_normal "$_flavor: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_flavor"
+				;;
+			configure)
+				cd "$wrksrc/../$_flavor"
+				_configure $_flavor
+				;;
+			build)
+				cd "$wrksrc/../$_flavor"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_flavor"
+				_install $_flavor
+				mv "$DESTDIR" "$DESTDIR/../$_flavor"
+				mkdir -p "$DESTDIR"
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
 	echo "CONFIG_CGROUP_PIDS=y" >> "$defconfig"
-	
+
 	# IR Remote Support
 	echo "CONFIG_RC_CORE=y" >> "$defconfig"
 	echo "CONFIG_LIRC=y" >> "$defconfig"
@@ -101,7 +181,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +197,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -129,14 +212,18 @@ do_install() {
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
 	# move dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
-		;;
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-*.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
-	vmkdir boot
 	# Generate kernel.img and install it to destdir.
+	vmkdir boot
 	case "$XBPS_TARGET_MACHINE" in
 	aarch64*)
 		cp arch/arm64/boot/Image ${DESTDIR}/boot/kernel8.img
@@ -155,11 +242,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +270,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +328,104 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] rpi-kernel: split into flavor packages, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (56 preceding siblings ...)
  2021-02-11 20:01 ` [PR PATCH] [Updated] [WIP] rpi-kernel: split into flavor packages, " Piraty
@ 2021-02-11 20:03 ` Piraty
  2021-02-12 18:15 ` Piraty
                   ` (2 subsequent siblings)
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-02-11 20:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1596 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[WIP] rpi-kernel: split into flavor packages, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  new rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

see: https://github.com/void-linux/void-mklive/pull/153 as well
@Duncaen @pbui 

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images (from branch https://github.com/void-linux/void-mklive/pull/153)
```
cd void-mklive
d=$(date '+%Y%m%d')
repo=$(xdistdir)/hostdir/binpkgs/
make XBPS_REPOSITORY="-r $repo" void-aarch64-musl-ROOTFS-$d.tar.xz void-rpi3-musl-$d.img.xz void-rpi4-musl-$d.img.xz
```

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 16249 bytes --]

From 994d60831a70b3d3a74e817ca491f5e1cbc8fc22 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: split into flavor packages

Now that we have rpi4 it's not sufficient to determine the rpi flavor by
looking at XBPS_TARGET_MACHINE anymore (rpi3 and rpi4 both run on aarch64).
---
 srcpkgs/rpi-base/template | 67 +++++++++++++++++++++++++++++++++++----
 srcpkgs/rpi1-base         |  1 +
 srcpkgs/rpi2-base         |  1 +
 srcpkgs/rpi3-base         |  1 +
 srcpkgs/rpi4-base         |  1 +
 5 files changed, 65 insertions(+), 6 deletions(-)
 create mode 120000 srcpkgs/rpi1-base
 create mode 120000 srcpkgs/rpi2-base
 create mode 120000 srcpkgs/rpi3-base
 create mode 120000 srcpkgs/rpi4-base

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..119b226ea02 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -1,14 +1,69 @@
 # Template file for 'rpi-base'
 pkgname=rpi-base
-version=2.6
+version=3.0
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
-short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_style=meta
+short_desc="Void Linux Raspberry Pi base files (transitional dummy package)"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 
-do_install() {
-	vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+_base_depends="virtual?ntp-daemon rpi-firmware"
+
+# support legacy installations (before rpi4 was added)
+# make the meta package depend on the flavor package
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends="rpi1-base" ;;
+	armv7*) depends="rpi2-base" ;;
+	aarch64*) depends="rpi3-base" ;;
+esac
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*)
+		subpackages="rpi1-base"
+		;;
+	armv7*)
+		subpackages="rpi2-base"
+		;;
+	aarch64*)
+		subpackages="rpi3-base rpi4-base"
+		;;
+esac
+
+
+rpi1-base_package() {
+	depends="${_base_depends} rpi1-kernel"
+	short_desc="Void Linux Raspberry Pi zero / 1 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi2-base_package() {
+	depends="${_base_depends} rpi2-kernel"
+	short_desc="Void Linux Raspberry Pi 2 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+
+rpi3-base_package() {
+	depends="${_base_depends} rpi3-kernel"
+	short_desc="Void Linux Raspberry Pi 3 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi4-base_package() {
+	depends="${_base_depends} rpi4-kernel"
+	short_desc="Void Linux Raspberry Pi 4 base files"
+	conflicts="rpi3-base"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
 }
diff --git a/srcpkgs/rpi1-base b/srcpkgs/rpi1-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi1-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi2-base b/srcpkgs/rpi2-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi2-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi3-base b/srcpkgs/rpi3-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi3-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi4-base b/srcpkgs/rpi4-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi4-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file

From d4eaed45ad2d892b0c85ab31cbb381543fbb9f95 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: split into flavor packages

This now buils all Raspberry Pi kernels from a single template by using
individual builddir/destdir for each flavor and performing all stages
independently with help of the `_flavor_stage()` function.

* rpi-kernel is an empty meta package now that is built by default for
  every arch and is kept to serve legacy installations as it depends on
  the appropriate new flavor rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4 while at it :-)
---
 srcpkgs/rpi-kernel/template | 245 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 217 insertions(+), 36 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index f9f170aedc0..43cce898005 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -10,12 +10,15 @@ _gitshort="${_githash:0:7}"
 
 pkgname=rpi-kernel
 version=5.4.83
-revision=1
+revision=2
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
 maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=4a98ea0d68c6e74d479789c12fc97619c872cb2607ae87a881a9491c1c3fbc35
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,36 +51,117 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+subpackages="rpi-kernel-headers"
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+for _flavor in $_flavors; do
+	subpackages+=" ${_flavor}-kernel-headers ${_flavor}-kernel"
+done
+
+# support legacy installations (before rpi4 was added)
+# meta package depend on the flavor package so the kernel doesn't end up orphaned
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _flavor in $_flavors ; do
+		msg_normal "$_flavor: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				# copy extraced sources to flavor specific dir
+				msg_normal "$_flavor: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_flavor"
+				;;
+			configure)
+				cd "$wrksrc/../$_flavor"
+				_configure $_flavor
+				;;
+			build)
+				cd "$wrksrc/../$_flavor"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_flavor"
+				_install $_flavor
+				mv "$DESTDIR" "$DESTDIR/../$_flavor"
+				mkdir -p "$DESTDIR"
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
 	echo "CONFIG_CGROUP_PIDS=y" >> "$defconfig"
-	
+
 	# IR Remote Support
 	echo "CONFIG_RC_CORE=y" >> "$defconfig"
 	echo "CONFIG_LIRC=y" >> "$defconfig"
@@ -101,7 +181,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +197,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -129,14 +212,18 @@ do_install() {
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
 	# move dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
-		;;
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-*.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
-	vmkdir boot
 	# Generate kernel.img and install it to destdir.
+	vmkdir boot
 	case "$XBPS_TARGET_MACHINE" in
 	aarch64*)
 		cp arch/arm64/boot/Image ${DESTDIR}/boot/kernel8.img
@@ -155,11 +242,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +270,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +328,106 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	conflicts="rpi3-kernel"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	conflicts="rpi3-kernel-headers"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] rpi-kernel: split into flavor packages, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (57 preceding siblings ...)
  2021-02-11 20:03 ` Piraty
@ 2021-02-12 18:15 ` Piraty
  2021-04-27 19:43 ` [WIP] rpi-kernel: build flavor subpackages, " Piraty
  2021-04-27 19:43 ` [PR PATCH] [Closed]: " Piraty
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-02-12 18:15 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1596 bytes --]

There is an updated pull request by Piraty against master on the void-packages repository

https://github.com/Piraty/void-packages rpi-kernel-flavor-subpackage
https://github.com/void-linux/void-packages/pull/26000

[WIP] rpi-kernel: split into flavor packages, add rpi4
This enables building all Raspberry Pi kernels from a single template by
using individual builddir/destdir for each flavor and performing all
stages independently with help of the `_flavor_stage()` function.

* rpi-kernel is a meta package now that is built by default for every
  arch and continues to serve legacy installations as it depends on the
  new rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4

see: https://github.com/void-linux/void-mklive/pull/153 as well
@Duncaen @pbui 

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images (from branch https://github.com/void-linux/void-mklive/pull/153)
```
cd void-mklive
d=$(date '+%Y%m%d')
repo=$(xdistdir)/hostdir/binpkgs/
make XBPS_REPOSITORY="-r $repo" void-aarch64-musl-ROOTFS-$d.tar.xz void-rpi3-musl-$d.img.xz void-rpi4-musl-$d.img.xz
```

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

A patch file from https://github.com/void-linux/void-packages/pull/26000.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rpi-kernel-flavor-subpackage-26000.patch --]
[-- Type: text/x-diff, Size: 16249 bytes --]

From 2d57f3b19efb5337f93045357ed4a3ff013b1a75 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Mon, 26 Oct 2020 21:33:08 +0100
Subject: [PATCH 1/2] rpi-base: split into flavor packages

Now that we have rpi4 it's not sufficient to determine the rpi flavor by
looking at XBPS_TARGET_MACHINE anymore (rpi3 and rpi4 both run on aarch64).
---
 srcpkgs/rpi-base/template | 67 +++++++++++++++++++++++++++++++++++----
 srcpkgs/rpi1-base         |  1 +
 srcpkgs/rpi2-base         |  1 +
 srcpkgs/rpi3-base         |  1 +
 srcpkgs/rpi4-base         |  1 +
 5 files changed, 65 insertions(+), 6 deletions(-)
 create mode 120000 srcpkgs/rpi1-base
 create mode 120000 srcpkgs/rpi2-base
 create mode 120000 srcpkgs/rpi3-base
 create mode 120000 srcpkgs/rpi4-base

diff --git a/srcpkgs/rpi-base/template b/srcpkgs/rpi-base/template
index 8fcf3581efd..119b226ea02 100644
--- a/srcpkgs/rpi-base/template
+++ b/srcpkgs/rpi-base/template
@@ -1,14 +1,69 @@
 # Template file for 'rpi-base'
 pkgname=rpi-base
-version=2.6
+version=3.0
 revision=1
 archs="armv6l* armv7l* aarch64*"
-depends="virtual?ntp-daemon rpi-firmware rpi-kernel"
-short_desc="Void Linux Raspberry Pi base files"
-maintainer="Orphaned <orphan@voidlinux.org>"
+build_style=meta
+short_desc="Void Linux Raspberry Pi base files (transitional dummy package)"
+maintainer="Piraty <piraty1@inbox.ru>"
 license="Public Domain"
 homepage="https://www.voidlinux.org"
 
-do_install() {
-	vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+_base_depends="virtual?ntp-daemon rpi-firmware"
+
+# support legacy installations (before rpi4 was added)
+# make the meta package depend on the flavor package
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends="rpi1-base" ;;
+	armv7*) depends="rpi2-base" ;;
+	aarch64*) depends="rpi3-base" ;;
+esac
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*)
+		subpackages="rpi1-base"
+		;;
+	armv7*)
+		subpackages="rpi2-base"
+		;;
+	aarch64*)
+		subpackages="rpi3-base rpi4-base"
+		;;
+esac
+
+
+rpi1-base_package() {
+	depends="${_base_depends} rpi1-kernel"
+	short_desc="Void Linux Raspberry Pi zero / 1 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi2-base_package() {
+	depends="${_base_depends} rpi2-kernel"
+	short_desc="Void Linux Raspberry Pi 2 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+
+rpi3-base_package() {
+	depends="${_base_depends} rpi3-kernel"
+	short_desc="Void Linux Raspberry Pi 3 base files"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
+}
+
+rpi4-base_package() {
+	depends="${_base_depends} rpi4-kernel"
+	short_desc="Void Linux Raspberry Pi 4 base files"
+	conflicts="rpi3-base"
+	pkg_install() {
+		vinstall "${FILESDIR}/71-raspberrypi.rules" 644 usr/lib/udev/rules.d
+	}
 }
diff --git a/srcpkgs/rpi1-base b/srcpkgs/rpi1-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi1-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi2-base b/srcpkgs/rpi2-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi2-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi3-base b/srcpkgs/rpi3-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi3-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file
diff --git a/srcpkgs/rpi4-base b/srcpkgs/rpi4-base
new file mode 120000
index 00000000000..c004915dfa8
--- /dev/null
+++ b/srcpkgs/rpi4-base
@@ -0,0 +1 @@
+rpi-base
\ No newline at end of file

From eecb72b930a088338770a395718d40541c3d0798 Mon Sep 17 00:00:00 2001
From: Piraty <piraty1@inbox.ru>
Date: Sun, 18 Oct 2020 22:04:24 +0200
Subject: [PATCH 2/2] rpi-kernel: split into flavor packages

This now buils all Raspberry Pi kernels from a single template by using
individual builddir/destdir for each flavor and performing all stages
independently with help of the `_flavor_stage()` function.

* rpi-kernel is an empty meta package now that is built by default for
  every arch and is kept to serve legacy installations as it depends on
  the appropriate new flavor rpi{1,2,3}-kernel package.
* subpackages are enabled conditionally for each arch.
* add rpi4 while at it :-)
---
 srcpkgs/rpi-kernel/template | 245 ++++++++++++++++++++++++++++++------
 srcpkgs/rpi1-kernel         |   1 +
 srcpkgs/rpi1-kernel-headers |   1 +
 srcpkgs/rpi2-kernel         |   1 +
 srcpkgs/rpi2-kernel-headers |   1 +
 srcpkgs/rpi3-kernel         |   1 +
 srcpkgs/rpi3-kernel-headers |   1 +
 srcpkgs/rpi4-kernel         |   1 +
 srcpkgs/rpi4-kernel-headers |   1 +
 9 files changed, 217 insertions(+), 36 deletions(-)
 create mode 120000 srcpkgs/rpi1-kernel
 create mode 120000 srcpkgs/rpi1-kernel-headers
 create mode 120000 srcpkgs/rpi2-kernel
 create mode 120000 srcpkgs/rpi2-kernel-headers
 create mode 120000 srcpkgs/rpi3-kernel
 create mode 120000 srcpkgs/rpi3-kernel-headers
 create mode 120000 srcpkgs/rpi4-kernel
 create mode 120000 srcpkgs/rpi4-kernel-headers

diff --git a/srcpkgs/rpi-kernel/template b/srcpkgs/rpi-kernel/template
index f9f170aedc0..43cce898005 100644
--- a/srcpkgs/rpi-kernel/template
+++ b/srcpkgs/rpi-kernel/template
@@ -10,12 +10,15 @@ _gitshort="${_githash:0:7}"
 
 pkgname=rpi-kernel
 version=5.4.83
-revision=1
+revision=2
+build_style=meta
+archs="armv6l* armv7l* aarch64*"
 wrksrc="linux-${_githash}"
+hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
 maintainer="Piraty <piraty1@inbox.ru>"
 homepage="http://www.kernel.org"
 license="GPL-2.0-only"
-short_desc="The Linux kernel for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+short_desc="Linux kernel for Raspberry Pi - transitional dummy package"
 distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
 checksum=4a98ea0d68c6e74d479789c12fc97619c872cb2607ae87a881a9491c1c3fbc35
 python_version=2
@@ -27,13 +30,9 @@ nostrip=yes
 noverifyrdeps=yes
 noshlibprovides=yes
 
-# RPi, RPi2, RPi3
-archs="armv6l* armv7l* aarch64*"
-hostmakedepends="perl kmod uboot-mkimage libressl-devel bc bison flex"
-makedepends="ncurses-devel"
-triggers="kernel-hooks"
+_triggers="kernel-hooks"
 # These files could be modified when an external module is built.
-mutable_files="
+_mutable_files="
 	/usr/lib/modules/${_kernver}/modules.dep
 	/usr/lib/modules/${_kernver}/modules.dep.bin
 	/usr/lib/modules/${_kernver}/modules.symbols
@@ -52,36 +51,117 @@ if [ "$CROSS_BUILD" ]; then
 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
 fi
 
+subpackages="rpi-kernel-headers"
+
+# handle all raspberry pi flavors
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) _flavors=rpi1 ;;
+	armv7*) _flavors=rpi2 ;;
+	aarch64*) _flavors="rpi3 rpi4" ;;
+esac
+
+for _flavor in $_flavors; do
+	subpackages+=" ${_flavor}-kernel-headers ${_flavor}-kernel"
+done
+
+# support legacy installations (before rpi4 was added)
+# meta package depend on the flavor package so the kernel doesn't end up orphaned
+# !! don't drop before 2022-02 !!
+case "$XBPS_TARGET_MACHINE" in
+	armv6*) depends=rpi1-kernel ;;
+	armv7*) depends=rpi2-kernel ;;
+	aarch64*) depends=rpi3-kernel ;;
+esac
+
+_flavor_stage() {
+	stage="$1"
+
+	for _flavor in $_flavors ; do
+		msg_normal "$_flavor: $stage\n"
+		(
+		case "$stage" in
+			pre_configure)
+				# copy extraced sources to flavor specific dir
+				msg_normal "$_flavor: prepare build dir, please wait...\n"
+				cp -a "$wrksrc" "$wrksrc/../$_flavor"
+				;;
+			configure)
+				cd "$wrksrc/../$_flavor"
+				_configure $_flavor
+				;;
+			build)
+				cd "$wrksrc/../$_flavor"
+				_build
+				;;
+			install)
+				cd "$wrksrc/../$_flavor"
+				_install $_flavor
+				mv "$DESTDIR" "$DESTDIR/../$_flavor"
+				mkdir -p "$DESTDIR"
+				;;
+		esac
+		)
+	done
+}
+
+_flavor_subpkg_install_kernel() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove /boot
+		vmove /usr/lib
+	)
+}
+_flavor_subpkg_install_headers() {
+	(
+		export DESTDIR="$DESTDIR/../$1"
+		vmove usr/src
+		vmove usr/lib/modules/${_kernver}/build
+	)
+}
+
+
 pre_configure() {
-	# Remove .git directory, otherwise scripts/setkernelversion.sh
-	# modifies KERNELRELEASE and appends + to it.
-	rm -rf .git
+	_flavor_stage pre_configure
 }
+
 do_configure() {
+	_flavor_stage configure
+}
+
+do_build() {
+	_flavor_stage build
+}
+
+do_install() {
+	_flavor_stage install
+}
+
+_configure() {
+	local rpi_flavor="$1"
 	local target defconfig
 
 	# Use upstream's default configuration, no need to maintain ours.
-	case "$XBPS_TARGET_MACHINE" in
-		# RPi3
-		aarch64*)
-			target=bcmrpi3_defconfig
+	case "$rpi_flavor" in
+		rpi1)
+			target=bcmrpi_defconfig
 			;;
-		# RPi2 / RPi3
-		armv7l*)
+		rpi2)
 			target=bcm2709_defconfig
 			;;
-		# RPi1
-		armv6l*)
-			target=bcmrpi_defconfig
+		rpi3)
+			target=bcmrpi3_defconfig
+			;;
+		rpi4)
+			target=bcm2711_defconfig
 			;;
 	esac
-
 	defconfig="arch/${_arch}/configs/${target}"
+
 	echo "CONFIG_CONNECTOR=y" >> "$defconfig"
 	echo "CONFIG_PROC_EVENTS=y" >> "$defconfig"
 	echo "CONFIG_F2FS_FS_SECURITY=y" >> "$defconfig"
 	echo "CONFIG_CGROUP_PIDS=y" >> "$defconfig"
-	
+
 	# IR Remote Support
 	echo "CONFIG_RC_CORE=y" >> "$defconfig"
 	echo "CONFIG_LIRC=y" >> "$defconfig"
@@ -101,7 +181,8 @@ do_configure() {
 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
 	vsed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
 }
-do_build() {
+
+_build() {
 	local target
 
 	case "$XBPS_TARGET_MACHINE" in
@@ -116,11 +197,13 @@ do_build() {
 	make ${makejobs} ${_cross} ARCH=${_arch} prepare
 	make ${makejobs} ${_cross} ARCH=${_arch} ${target}
 }
-do_install() {
+
+_install() {
+	local rpi_flavor="$1"
 	local hdrdest
 
 	# Run depmod after compressing modules.
-	sed -i '2iexit 0' scripts/depmod.sh
+	vsed -i '2iexit 0' scripts/depmod.sh
 
 	# Install kernel, firmware and modules
 	make ${makejobs} ARCH=${_arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
@@ -129,14 +212,18 @@ do_install() {
 	make ${makejobs} ARCH=${_arch} INSTALL_DTBS_PATH=${DESTDIR}/boot dtbs_install
 
 	# move dtb that ended up in /boot/broadcom
-	case "$XBPS_TARGET_MACHINE" in
-	aarch64*)
-		mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
-		;;
+	case "$rpi_flavor" in
+		rpi3)
+			mv ${DESTDIR}/boot/broadcom/bcm{2710,2837}-*.dtb ${DESTDIR}/boot
+			;;
+		rpi4)
+			mv ${DESTDIR}/boot/broadcom/bcm2711-*.dtb ${DESTDIR}/boot
+			;;
 	esac
+	rm -rf ${DESTDIR}/boot/broadcom
 
-	vmkdir boot
 	# Generate kernel.img and install it to destdir.
+	vmkdir boot
 	case "$XBPS_TARGET_MACHINE" in
 	aarch64*)
 		cp arch/arm64/boot/Image ${DESTDIR}/boot/kernel8.img
@@ -155,11 +242,12 @@ do_install() {
 	vmkdir usr
 	mv ${DESTDIR}/lib ${DESTDIR}/usr
 
+	(
 	cd ${DESTDIR}/usr/lib/modules/${_kernver}
 	rm -f source build
 	ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build
+	)
 
-	cd ${wrksrc}
 	# Install required headers to build external modules
 	install -Dm644 Makefile ${hdrdest}/Makefile
 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
@@ -182,7 +270,6 @@ do_install() {
 		[ -d include/$i ] && cp -a include/$i ${hdrdest}/include
 	done
 
-	cd ${wrksrc}
 	# Remove helper binaries built for host,
 	# if generated files from the scripts/ directory need to be included,
 	# they need to be copied to ${hdrdest} before this step
@@ -241,20 +328,106 @@ do_install() {
 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
 
 	# Compress all modules with xz to save a few MBs.
-	msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
+	msg_normal "$rpi_flavor: compressing kernel modules with gzip, please wait...\n"
 	find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9
 
 	# ... and run depmod again.
 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
 }
 
+# legacy
 rpi-kernel-headers_package() {
+	short_desc="${short_desc/kernel/kernel headers}"
+	build_style=meta
+	case "$XBPS_TARGET_MACHINE" in
+		armv6*) depends=rpi1-kernel-headers ;;
+		armv7*) depends=rpi2-kernel-headers ;;
+		aarch64*) depends=rpi3-kernel-headers ;;
+	esac
+}
+
+rpi1-kernel_package() {
 	nostrip=yes
 	noverifyrdeps=yes
 	noshlibprovides=yes
-	short_desc="The Linux kernel headers for Raspberry Pi (${version%.*} series [git ${_gitshort}])"
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
 	pkg_install() {
-		vmove usr/src
-		vmove usr/lib/modules/${_kernver}/build
+		_flavor_subpkg_install_kernel rpi1
+	}
+}
+rpi1-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi zero / 1 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi1
+	}
+}
+
+rpi2-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	triggers="$_triggers"
+	mutable_files="$_mutable_files"
+	short_desc="Linux kernel for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi2
+	}
+}
+rpi2-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 2 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi2
+	}
+}
+
+rpi3-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi3
+	}
+}
+rpi3-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 3 (${version%.*} [git ${_gitshort}])"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi3
+	}
+}
+
+rpi4-kernel_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	mutable_files="$_mutable_files"
+	triggers="$_triggers"
+	short_desc="Linux kernel for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	conflicts="rpi3-kernel"
+	pkg_install() {
+		_flavor_subpkg_install_kernel rpi4
+	}
+}
+rpi4-kernel-headers_package() {
+	nostrip=yes
+	noverifyrdeps=yes
+	noshlibprovides=yes
+	short_desc="Linux kernel headers for Raspberry Pi 4 (${version%.*} [git ${_gitshort}])"
+	conflicts="rpi3-kernel-headers"
+	pkg_install() {
+		_flavor_subpkg_install_headers rpi4
 	}
 }
diff --git a/srcpkgs/rpi1-kernel b/srcpkgs/rpi1-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi1-kernel-headers b/srcpkgs/rpi1-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi1-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel b/srcpkgs/rpi2-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi2-kernel-headers b/srcpkgs/rpi2-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi2-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel b/srcpkgs/rpi3-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi3-kernel-headers b/srcpkgs/rpi3-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi3-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel b/srcpkgs/rpi4-kernel
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file
diff --git a/srcpkgs/rpi4-kernel-headers b/srcpkgs/rpi4-kernel-headers
new file mode 120000
index 00000000000..3b4ec073331
--- /dev/null
+++ b/srcpkgs/rpi4-kernel-headers
@@ -0,0 +1 @@
+rpi-kernel
\ No newline at end of file

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [WIP] rpi-kernel: build flavor subpackages, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (58 preceding siblings ...)
  2021-02-12 18:15 ` Piraty
@ 2021-04-27 19:43 ` Piraty
  2021-04-27 19:43 ` [PR PATCH] [Closed]: " Piraty
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-04-27 19:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

New comment by Piraty on void-packages repository

https://github.com/void-linux/void-packages/pull/26000#issuecomment-827876560

Comment:
after i took some long thought on this topic, i'll close this PR and pursue https://github.com/void-linux/void-packages/pull/29139 instead.
Reasoning: keeping templates split for each kernel appears to be a cleaner solution and might be beneficial for (future future) kernel build style, as well as build times when building one of rpi3 or rpi4

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PR PATCH] [Closed]: [WIP] rpi-kernel: build flavor subpackages, add rpi4
  2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
                   ` (59 preceding siblings ...)
  2021-04-27 19:43 ` [WIP] rpi-kernel: build flavor subpackages, " Piraty
@ 2021-04-27 19:43 ` Piraty
  60 siblings, 0 replies; 62+ messages in thread
From: Piraty @ 2021-04-27 19:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1236 bytes --]

There's a closed pull request on the void-packages repository

[WIP] rpi-kernel: build flavor subpackages, add rpi4
https://github.com/void-linux/void-packages/pull/26000

Description:
This now builds all Raspberry Pi kernels from a single template by using
individual builddir/destdir for each flavor and performing all stages
independently with help of the `_flavor_stage()` function.
    
 * rpi-kernel is an empty meta package now that is built by default for
   every arch and is kept to serve legacy installations as it depends on
   the appropriate new flavor rpi{1,2,3}-kernel package.
 * subpackages are enabled conditionally for each arch.
 * add rpi4 while at it :-)

see: https://github.com/void-linux/void-mklive/pull/153 as well

---

### How to
Build packages
```
cd void-packages
./xbps-src -m masterdir.rpi4 binary-bootstrap
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-base
./xbps-src -m masterdir.rpi4 -a aarch64-musl pkg rpi-kernel
```
Build images: see https://github.com/void-linux/void-mklive/pull/153

---

### Remaining issues
- [ ] change to `rpi-base` require manual action for existing instals (`rpi{0,1,2,3}`). (rpi-kernel will result in an orphan) is there a better way?

^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2021-04-27 19:43 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-31 16:17 [PR PATCH] rpi-kernel: build a subpackage for each flavor, add rpi4 Piraty
2020-10-31 16:27 ` [PR PATCH] [Updated] " Piraty
2020-10-31 16:36 ` Piraty
2020-11-06 23:34 ` [NEEDS TESTERS] " liketechnik
2020-11-16  3:32 ` [PR REVIEW] " agausmann
2020-11-16  3:34 ` agausmann
2020-11-16  3:36 ` agausmann
2020-11-16  3:57 ` agausmann
2020-11-16  3:58 ` agausmann
2020-11-16  3:59 ` agausmann
2020-11-17  9:10 ` [PR REVIEW] " Piraty
2020-11-22 18:23 ` Piraty
2020-11-22 19:48 ` Piraty
2020-11-22 20:58 ` agausmann
2020-12-29  7:49 ` manneorama
2020-12-29  7:59 ` manneorama
2020-12-29  8:10 ` manneorama
2020-12-29  9:03 ` manneorama
2020-12-29  9:48 ` manneorama
2020-12-29 10:53 ` manneorama
2020-12-31  1:42 ` [PR PATCH] [Updated] " Piraty
2021-01-03 23:08 ` manneorama
2021-01-05  9:36 ` Anachron
2021-01-05 19:48 ` LeamHall
2021-01-06 19:21 ` manneorama
2021-01-07  1:18 ` CMB
2021-01-07  2:04 ` LeamHall
2021-01-07  2:20 ` LeamHall
2021-01-11  0:24 ` [PR REVIEW] " ahesford
2021-01-11  2:02 ` ericonr
2021-01-11  2:02 ` ericonr
2021-01-11  2:57 ` jsumners
2021-01-11  3:17 ` ericonr
2021-01-11  3:51 ` jsumners
2021-01-11  4:14 ` ericonr
2021-01-11  5:04 ` ahesford
2021-01-11 11:19 ` Piraty
2021-01-11 11:21 ` Piraty
2021-01-11 11:25 ` Piraty
2021-01-11 13:17 ` ahesford
2021-01-11 13:20 ` ericonr
2021-01-12 20:19 ` [PR PATCH] [Updated] " Piraty
2021-01-13  2:42 ` [PR REVIEW] " ahesford
2021-01-16 22:38 ` CameronNemo
2021-01-16 23:36 ` [PR PATCH] [Updated] " Piraty
2021-01-16 23:37 ` [PR REVIEW] " Piraty
2021-01-16 23:49 ` Piraty
2021-01-16 23:49 ` Piraty
2021-01-17  0:22 ` [WIP] " ahesford
2021-01-18  9:44 ` [PR REVIEW] " Piraty
2021-01-18 21:48 ` ericonr
2021-01-23 17:30 ` Bridouz
2021-01-23 20:22 ` jsumners
2021-01-28  6:28 ` Bridouz
2021-02-05 10:20 ` paper42
2021-02-10 19:03 ` jsav0
2021-02-11 19:45 ` [PR PATCH] [Updated] " Piraty
2021-02-11 20:01 ` [PR PATCH] [Updated] [WIP] rpi-kernel: split into flavor packages, " Piraty
2021-02-11 20:03 ` Piraty
2021-02-12 18:15 ` Piraty
2021-04-27 19:43 ` [WIP] rpi-kernel: build flavor subpackages, " Piraty
2021-04-27 19:43 ` [PR PATCH] [Closed]: " Piraty

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).