diff mbox series

kbuild: Restore .version auto-increment behaviour for Debian/RPM packages

Message ID 20221113160237.3152770-1-maz@kernel.org (mailing list archive)
State New, archived
Headers show
Series kbuild: Restore .version auto-increment behaviour for Debian/RPM packages | expand

Commit Message

Marc Zyngier Nov. 13, 2022, 4:02 p.m. UTC
Since 2df8220cc511 ("kbuild: build init/built-in.a just once"),
generating Debian packages using 'make bindeb-pkg' results in
packages that are stuck to the same .version, leading to unexpected
behaviours (multiple packages with the same version).

Restore the previous behaviour by calling init/build-version
instead of reading the .version file. This is likely to result
in too many .version bumps, but this is what was happening before
(although the bump was affecting builds made the current one).

Only tested with bindeb-pkg.

Fixes: 2df8220cc511 ("kbuild: build init/built-in.a just once")
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Michal Marek <michal.lkml@markovi.net>
Cc: Nick Desaulniers <ndesaulniers@google.com>
---
 scripts/package/mkdebian | 2 +-
 scripts/package/mkspec   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Masahiro Yamada Nov. 15, 2022, 12:09 a.m. UTC | #1
On Mon, Nov 14, 2022 at 1:02 AM Marc Zyngier <maz@kernel.org> wrote:
>
> diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
> index 60a2a63a5e90..e5c983afddab 100755
> --- a/scripts/package/mkdebian
> +++ b/scripts/package/mkdebian
> @@ -90,7 +90,7 @@ if [ -n "$KDEB_PKGVERSION" ]; then
>         packageversion=$KDEB_PKGVERSION
>         revision=${packageversion##*-}
>  else
> -       revision=$(cat .version 2>/dev/null||echo 1)
> +       revision=$(init/build-version)


This does not work for out-of-tree builds
because init/build-version is a check-in source file.



For example, "make O=/tmp/foo bindeb-pkg" fails with:
.../linux/scripts/package/mkdebian: 93: init/build-version: not found


The correct code is:


          revision=$($srctree/init/build-version)




>         packageversion=$version-$revision
>  fi
>  sourcename=$KDEB_SOURCENAME
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index 70392fd2fd29..9cbd45f497ba 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -42,7 +42,7 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
>         Name: kernel
>         Summary: The Linux Kernel
>         Version: $__KERNELRELEASE
> -       Release: $(cat .version 2>/dev/null || echo 1)
> +       Release: $(init/build-version)


Ditto.

          Release: $($srctree/init/build-version)




>         License: GPL
>         Group: System Environment/Kernel
>         Vendor: The Linux Community
> --
> 2.34.1
>


--
Best Regards
Masahiro Yamada
Masahiro Yamada Nov. 15, 2022, 3:36 a.m. UTC | #2
On Tue, Nov 15, 2022 at 9:09 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Mon, Nov 14, 2022 at 1:02 AM Marc Zyngier <maz@kernel.org> wrote:
> >
> > diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
> > index 60a2a63a5e90..e5c983afddab 100755
> > --- a/scripts/package/mkdebian
> > +++ b/scripts/package/mkdebian
> > @@ -90,7 +90,7 @@ if [ -n "$KDEB_PKGVERSION" ]; then
> >         packageversion=$KDEB_PKGVERSION
> >         revision=${packageversion##*-}
> >  else
> > -       revision=$(cat .version 2>/dev/null||echo 1)
> > +       revision=$(init/build-version)
>
>
> This does not work for out-of-tree builds
> because init/build-version is a check-in source file.
>
>
>
> For example, "make O=/tmp/foo bindeb-pkg" fails with:
> .../linux/scripts/package/mkdebian: 93: init/build-version: not found
>
>
> The correct code is:
>
>
>           revision=$($srctree/init/build-version)
>
>
>
>
> >         packageversion=$version-$revision
> >  fi
> >  sourcename=$KDEB_SOURCENAME
> > diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> > index 70392fd2fd29..9cbd45f497ba 100755
> > --- a/scripts/package/mkspec
> > +++ b/scripts/package/mkspec
> > @@ -42,7 +42,7 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> >         Name: kernel
> >         Summary: The Linux Kernel
> >         Version: $__KERNELRELEASE
> > -       Release: $(cat .version 2>/dev/null || echo 1)
> > +       Release: $(init/build-version)
>
>
> Ditto.
>
>           Release: $($srctree/init/build-version)



No, mkspec needs no change because binrpm-pkg builds the kernel
_before_ generating the spec file.

If you increment the .version file here again, you would have
the revision mismatch between the package and the actual vmlinuz.



Please send the change for mkdebian only.



>
>
>
>
> >         License: GPL
> >         Group: System Environment/Kernel
> >         Vendor: The Linux Community
> > --
> > 2.34.1
> >
>
>
> --
> Best Regards
> Masahiro Yamada



--
Best Regards
Masahiro Yamada
Marc Zyngier Nov. 15, 2022, 7:17 p.m. UTC | #3
On Tue, 15 Nov 2022 03:36:05 +0000,
Masahiro Yamada <masahiroy@kernel.org> wrote:
> 
> On Tue, Nov 15, 2022 at 9:09 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > On Mon, Nov 14, 2022 at 1:02 AM Marc Zyngier <maz@kernel.org> wrote:
> > >
> > > diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
> > > index 60a2a63a5e90..e5c983afddab 100755
> > > --- a/scripts/package/mkdebian
> > > +++ b/scripts/package/mkdebian
> > > @@ -90,7 +90,7 @@ if [ -n "$KDEB_PKGVERSION" ]; then
> > >         packageversion=$KDEB_PKGVERSION
> > >         revision=${packageversion##*-}
> > >  else
> > > -       revision=$(cat .version 2>/dev/null||echo 1)
> > > +       revision=$(init/build-version)
> >
> >
> > This does not work for out-of-tree builds
> > because init/build-version is a check-in source file.
> >
> >
> >
> > For example, "make O=/tmp/foo bindeb-pkg" fails with:
> > .../linux/scripts/package/mkdebian: 93: init/build-version: not found
> >
> >
> > The correct code is:
> >
> >
> >           revision=$($srctree/init/build-version)
> >
> >
> >
> >
> > >         packageversion=$version-$revision
> > >  fi
> > >  sourcename=$KDEB_SOURCENAME
> > > diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> > > index 70392fd2fd29..9cbd45f497ba 100755
> > > --- a/scripts/package/mkspec
> > > +++ b/scripts/package/mkspec
> > > @@ -42,7 +42,7 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> > >         Name: kernel
> > >         Summary: The Linux Kernel
> > >         Version: $__KERNELRELEASE
> > > -       Release: $(cat .version 2>/dev/null || echo 1)
> > > +       Release: $(init/build-version)
> >
> >
> > Ditto.
> >
> >           Release: $($srctree/init/build-version)
> 
> 
> 
> No, mkspec needs no change because binrpm-pkg builds the kernel
> _before_ generating the spec file.
> 
> If you increment the .version file here again, you would have
> the revision mismatch between the package and the actual vmlinuz.
> 
> 
> 
> Please send the change for mkdebian only.

Yup, good point on both count. Patch incoming shortly.

Thanks,

	M.
diff mbox series

Patch

diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
index 60a2a63a5e90..e5c983afddab 100755
--- a/scripts/package/mkdebian
+++ b/scripts/package/mkdebian
@@ -90,7 +90,7 @@  if [ -n "$KDEB_PKGVERSION" ]; then
 	packageversion=$KDEB_PKGVERSION
 	revision=${packageversion##*-}
 else
-	revision=$(cat .version 2>/dev/null||echo 1)
+	revision=$(init/build-version)
 	packageversion=$version-$revision
 fi
 sourcename=$KDEB_SOURCENAME
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
index 70392fd2fd29..9cbd45f497ba 100755
--- a/scripts/package/mkspec
+++ b/scripts/package/mkspec
@@ -42,7 +42,7 @@  sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
 	Name: kernel
 	Summary: The Linux Kernel
 	Version: $__KERNELRELEASE
-	Release: $(cat .version 2>/dev/null || echo 1)
+	Release: $(init/build-version)
 	License: GPL
 	Group: System Environment/Kernel
 	Vendor: The Linux Community