Re: [PATCH] kbuild: rpm-pkg: Add dtbs support

From: Masahiro Yamada
Date: Thu Jul 20 2023 - 14:42:40 EST


On Wed, Jul 12, 2023 at 3:42 PM Janne Grunau via B4 Relay
<devnull+j.jannau.net@xxxxxxxxxx> wrote:
>
> From: Janne Grunau <j@xxxxxxxxxx>
>
> Based on the dtbs support in builddeb. Both Fedora and openSUSE kernel
> rpm install their dtbs in "/boot/dtb-${KERNELRELEASE}". There seems no
> other popular rpm based distributions which would benefit from dtbs
> support and are not derived from those two.
>
> Signed-off-by: Janne Grunau <j@xxxxxxxxxx>
> ---
> scripts/package/mkspec | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index 8049f0e2c110..a170b0c0a93f 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -28,6 +28,14 @@ else
> M=DEL
> fi
>
> +# Only some architectures with OF support have the dtbs_install target
> +if grep -q CONFIG_OF_EARLY_FLATTREE=y include/config/auto.conf && \
> + [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
> + D=
> +else
> + D=DEL
> +fi

This is unneeded. See below.



> +
> __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
> EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
> --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
> @@ -38,6 +46,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
> # Labels:
> # $S: this line is enabled only when building source package
> # $M: this line is enabled only when CONFIG_MODULES is enabled
> +# $D: this line is enabled only when CONFIG_OF_EARLY_FLATTREE is enabled and
> +# the arch has a dts directory
> sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> Name: kernel
> Summary: The Linux Kernel
> @@ -103,6 +113,7 @@ $S
> %endif
> $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
> $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
> +$D $MAKE %{?_smp_mflags} INSTALL_DTBS_PATH=%{buildroot}/boot/dtb-${KERNELRELEASE} dtbs_install



Like deb-pkg, you can check CONFIG_OF_EARLY_FLATTREE
while building the package instead of while creating the spec file.

if grep -q CONFIG_OF_EARLY_FLATTREE=y include/config/auto.conf; then
$MAKE %{?_smp_mflags}
INSTALL_DTBS_PATH=%{buildroot}/boot/dtb-${KERNELRELEASE} dtbs_install
fi

(please note it is untested)


The reason for $S and $M is because they determine
whether the kernel-devel package is needed.
But, I regret the implementation was too ugly.
I will clean up mkspec.
Please submit v2 after the code clean-up.



> cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
> cp .config %{buildroot}/boot/config-$KERNELRELEASE
> $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
>
> ---
> base-commit: 06c2afb862f9da8dc5efa4b6076a0e48c3fbaaa5
> change-id: 20230712-kbuild_rpm_dtbs-d055a3780bbe
>
> Best regards,
> --
> Janne Grunau <j@xxxxxxxxxx>
>


--
Best Regards
Masahiro Yamada