Re: [PATCH 1/7] kbuild: do not put .scmversion into the source tarball

From: Thierry Reding
Date: Fri Jan 27 2023 - 10:08:07 EST


On Sun, Jan 22, 2023 at 11:14:21PM +0900, Masahiro Yamada wrote:
> .scmversion is used by (src)rpm-pkg and deb-pkg to carry KERNELRELEASE.
>
> In fact, deb-pkg does not rely on it any more because the generated
> debian/rules specifies KERNELRELEASE from the command line.
>
> Do likwise for (src)rpm-pkg, and remove this feature.
>
> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> ---
>
> scripts/Makefile.package | 6 ++----
> scripts/package/mkspec | 6 +++---
> scripts/setlocalversion | 19 +------------------
> 3 files changed, 6 insertions(+), 25 deletions(-)

Hi Masahiro,

I've been observing some strange behaviour when doing incremental builds
on recent linux-next versions. What happens is that the kernel version
doesn't get updated as I switch branches.

For instance I was rebuilding in a kernel tree which I hadn't touched in
a very long while and rebased on a recent linux-next. The kernel version
then stayed at the prior version rather than being updated to reflect
the actual state of the working tree.

Reverting all of the seven patches in this series fixes the issue, but I
don't really have a clue where exactly it fails. Do you have any ideas
how to fix this?

Thanks,
Thierry

>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 525a2820976f..e84c4e8ceb8e 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -32,7 +32,7 @@ export KDEB_SOURCENAME
> TAR_CONTENT := Documentation LICENSES arch block certs crypto drivers fs \
> include init io_uring ipc kernel lib mm net rust \
> samples scripts security sound tools usr virt \
> - .config .scmversion Makefile \
> + .config Makefile \
> Kbuild Kconfig COPYING $(wildcard localversion*)
> MKSPEC := $(srctree)/scripts/package/mkspec
>
> @@ -47,10 +47,8 @@ if test "$(objtree)" != "$(srctree)"; then \
> echo >&2; \
> false; \
> fi ; \
> -$(srctree)/scripts/setlocalversion --save-scmversion; \
> tar -I $(KGZIP) -c $(RCS_TAR_IGNORE) -f $(2).tar.gz \
> - --transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3); \
> -rm -f $(objtree)/.scmversion
> + --transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3)
>
> # rpm-pkg
> # ---------------------------------------------------------------------------
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index adab28fa7f89..d3c6701b7769 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -90,7 +90,7 @@ $S rm -f scripts/basic/fixdep scripts/kconfig/conf
> $S rm -f tools/objtool/{fixdep,objtool}
> $S
> $S %build
> -$S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
> +$S $MAKE %{?_smp_mflags} KERNELRELEASE=%{version} KBUILD_BUILD_VERSION=%{release}
> $S
> %install
> mkdir -p %{buildroot}/boot
> @@ -101,8 +101,8 @@ $S
> %else
> cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
> %endif
> -$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
> - $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
> +$M $MAKE %{?_smp_mflags} KERNELRELEASE=%{version} INSTALL_MOD_PATH=%{buildroot} modules_install
> + $MAKE %{?_smp_mflags} KERNELRELEASE=%{version} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
> cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
> cp .config %{buildroot}/boot/config-$KERNELRELEASE
> $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
> diff --git a/scripts/setlocalversion b/scripts/setlocalversion
> index af4754a35e66..3b31702b4a4a 100755
> --- a/scripts/setlocalversion
> +++ b/scripts/setlocalversion
> @@ -11,16 +11,11 @@
> #
>
> usage() {
> - echo "Usage: $0 [--save-scmversion] [srctree]" >&2
> + echo "Usage: $0 [srctree]" >&2
> exit 1
> }
>
> -scm_only=false
> srctree=.
> -if test "$1" = "--save-scmversion"; then
> - scm_only=true
> - shift
> -fi
> if test $# -gt 0; then
> srctree=$1
> shift
> @@ -35,10 +30,6 @@ scm_version()
> short=false
>
> cd "$srctree"
> - if test -e .scmversion; then
> - cat .scmversion
> - return
> - fi
> if test "$1" = "--short"; then
> short=true
> fi
> @@ -103,14 +94,6 @@ collect_files()
> echo "$res"
> }
>
> -if $scm_only; then
> - if test ! -e .scmversion; then
> - res=$(scm_version)
> - echo "$res" >.scmversion
> - fi
> - exit
> -fi
> -
> if ! test -e include/config/auto.conf; then
> echo "Error: kernelrelease not valid - run 'make prepare' to update it" >&2
> exit 1
> --
> 2.34.1
>

Attachment: signature.asc
Description: PGP signature