[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <444e7e7b-c576-38a9-9f85-b169b32c3807@linux.intel.com>
Date: Wed, 8 Mar 2023 14:29:34 +0200
From: Péter Ujfalusi <peter.ujfalusi@...ux.intel.com>
To: Masahiro Yamada <masahiroy@...nel.org>,
linux-kbuild@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, Ben Hutchings <ben@...adent.org.uk>,
Nathan Chancellor <nathan@...nel.org>,
Nick Desaulniers <ndesaulniers@...gle.com>,
Nicolas Schier <nicolas@...sle.eu>,
"Bossart, Pierre-louis" <pierre-louis.bossart@...el.com>,
"Vehmanen, Kai" <kai.vehmanen@...el.com>,
"Girdwood, Liam R" <liam.r.girdwood@...el.com>,
peter.ujfalusi@...ux.intel.com
Subject: Re: [PATCH v6 11/12] kbuild: deb-pkg: improve the usability of source
package
On 15/02/2023 03:20, Masahiro Yamada wrote:
> Improve the source package support in case the dpkg-buildpackage is
> directly used to build binary packages.
>
> For cross-compiling, you can set CROSS_COMPILE via the environment
> variable, but it is better to set it automatically - set it to
> ${DEB_HOST_GNU_TYPE}- if we are cross-compiling but not from the top
> Makefile.
>
> The generated source package may be carried to a different build
> environment, which may have a different compiler installed.
> Run olddefconfig first to set new CONFIG options to their default
> values without prompting.
>
> Take KERNELRELEASE and KBUILD_BUILD_VERSION from the version field of
> debian/changelog in case it is updated afterwards.
I just arrived to this patch when trying to update the kernel for SOF
from 6.2.0 base to 6.3.0-rc1:
https://github.com/thesofproject/linux/pull/4223#issuecomment-1459997676
Our CI is building a kernel deb package from PRs to test with this command:
make bindeb-pkg LOCALVERSION=-$PRIDV-default KDEB_PKGVERSION=$(make
kernelversion)-$GITSHA
The files, directories and the name of the deb package follows the rule
set up by scripts/setlocalversion, taking into account the LOCALVERSION,
CONFIG_LOCALVERSION and CONFIG_LOCALVERSION_AUTO, but the built kernel
is using the version derived from KDEB_PKGVERSION and the system is not
able to boot up since the modules are in a different directory then they
should be.
Something like this:
make bindeb-pkg LOCALVERSION=-testbuild
vmlinuz-6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty
/lib/modules/6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty/
strings vmlinuz-6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty | grep 6.3
6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty
Then with the KDEB_PKGVERSION:
make bindeb-pkg LOCALVERSION=-testbuild KDEB_PKGVERSION=$(make
kernelversion)-notworking
vmlinuz-6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty
/lib/modules/6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty/
strings vmlinuz-6.3.0-rc1-testbuild-05827-g863ad81a6aa9-dirty | grep 6.3
6.3.0-rc1
in this case modprobe will not find the modules, it is looking for them
under /lib/modules/6.3.0-rc1
Reverting this patch makes the created deb package usable, the system
is bootable.
We use the LOCALVERSION to feed in PR inforamtion and the
KDEB_PKGVERSION is used fro additional information, like build ID.
Do you have any suggestion on how to get the functionality back or we
must stop using the KDEB_PKGVERSION altogether?
Thank you,
--
Péter
>
> Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
> ---
>
> Changes in v6:
> - New patch
>
> scripts/package/deb-build-option | 16 ++++++++++++++++
> scripts/package/mkdebian | 9 ++++-----
> 2 files changed, 20 insertions(+), 5 deletions(-)
> create mode 100755 scripts/package/deb-build-option
>
> diff --git a/scripts/package/deb-build-option b/scripts/package/deb-build-option
> new file mode 100755
> index 000000000000..b079b0d121d4
> --- /dev/null
> +++ b/scripts/package/deb-build-option
> @@ -0,0 +1,16 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +# Set up CROSS_COMPILE if we are cross-compiling, but not called from the
> +# kernel toplevel Makefile
> +if [ -z "${CROSS_COMPILE}${cross_compiling}" -a "${DEB_HOST_ARCH}" != "${DEB_BUILD_ARCH}" ]; then
> + echo CROSS_COMPILE=${DEB_HOST_GNU_TYPE}-
> +fi
> +
> +version=$(dpkg-parsechangelog -S Version)
> +version_upstream="${version%-*}"
> +debian_revision="${version#${version_upstream}}"
> +debian_revision="${debian_revision#*-}"
> +
> +echo KERNELRELEASE=${version_upstream}
> +echo KBUILD_BUILD_VERSION=${debian_revision}
> diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
> index eef20d5dc288..f74380036bb5 100755
> --- a/scripts/package/mkdebian
> +++ b/scripts/package/mkdebian
> @@ -90,10 +90,8 @@ rm -rf debian
> version=$KERNELRELEASE
> if [ -n "$KDEB_PKGVERSION" ]; then
> packageversion=$KDEB_PKGVERSION
> - revision=${packageversion##*-}
> else
> - revision=$($srctree/init/build-version)
> - packageversion=$version-$revision
> + packageversion=$version-$($srctree/init/build-version)
> fi
> sourcename=${KDEB_SOURCENAME:-linux-upstream}
>
> @@ -244,8 +242,9 @@ srctree ?= .
>
> build-indep:
> build-arch:
> - \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
> - KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
> + \$(MAKE) -f \$(srctree)/Makefile ARCH=${ARCH} \
> + \$(shell \$(srctree)/scripts/package/deb-build-option) \
> + olddefconfig all
>
> build: build-arch
>
--
Péter
Powered by blists - more mailing lists