Re: [PATCH] kbuild: add debug package to pacman PKGBUILD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 01, 2024 at 08:53:54PM +0200, Thomas Weißschuh wrote:
> On 2024-08-01 11:36:37+0000, Nathan Chancellor wrote:
> > Hi Jose,
> > 
> > On Thu, Aug 01, 2024 at 07:29:40AM -0600, Jose Fernandez wrote:
> > > Add a new -debug package to the pacman PKGBUILD that will contain the
> > > vmlinux image for debugging purposes. This package depends on the
> > > -headers package and will be installed in /usr/src/debug/${pkgbase}.
> > > 
> > > The vmlinux image is needed to debug core dumps with tools like crash.
> > > 
> > > Signed-off-by: Jose Fernandez <jose.fernandez@xxxxxxxxx>
> > > Reviewed-by: Peter Jung <ptr1337@xxxxxxxxxxx>
> > 
> > This appears to add a non-trivial amount of time to the build when benchmarking
> > with Arch Linux's configuration (I measure 9% with hyperfine):
> 
> As nothing more is compiled, I guess this is just the additional
> packaging.
> 
> > Benchmark 1: pacman-pkg @ 21b136cc63d2 ("minmax: fix up min3() and max3() too")
> >   Time (mean ± σ):     579.541 s ±  0.585 s    [User: 22156.731 s, System: 3681.698 s]
> >   Range (min … max):   578.894 s … 580.033 s    3 runs
> > 
> > Benchmark 2: pacman-pkg @ c5af4db0563b ("kbuild: add debug package to pacman PKGBUILD")
> >   Time (mean ± σ):     633.419 s ±  0.972 s    [User: 22247.886 s, System: 3673.879 s]
> >   Range (min … max):   632.302 s … 634.070 s    3 runs
> > 
> > Summary
> >   pacman-pkg @ 21b136cc63d2 ("minmax: fix up min3() and max3() too") ran
> >     1.09 ± 0.00 times faster than pacman-pkg @ c5af4db0563b ("kbuild: add debug package to pacman PKGBUILD")
> > 
> > It would be nice to add some option to avoid building this package for
> > developers who may not want it (I know I personally would not want it
> > with that penalty because I do a lot of bisects) or maybe adding a
> > target to build this package with the rest like 'pacman-pkg-with-dbg' or
> > something? Also, couldn't vmlinux be obtained from vmlinuz that already
> > exists in the main package via scripts/extract-vmlinux?
> 
> Jose:
> 
> In the vanilla PKGBUILD vmlinux is part of the linux-headers package:
> linux-headers /usr/lib/modules/6.10.2-arch1-1/build/vmlinux
> 
> Given that you already gate the new -debug package on CONFIG_MODULES,
> why not add the file to that package?
> 
> Then we could still discuss if it makes sense to gate vmlinux on
> CONFIG_MODULES or if -headers should be enabled unconditionally again.

I think having -headers be enabled/built by default is probably okay
since a regular user/builder might have external modules that need to be
rebuilt against the new kernel. However, I (and likely many other
upstream developers, however many use Arch) never build external modules
against my kernels, so it would be nice to have some way to opt out of
this penalty. I suspect it is just compressing down such a massive
vmlinux that causes this? I have not had access to a build log with my
testing, so unsure.

> Or we wait for somebody to show up and ask for it.

I won't insist though so if we want to wait for someone else, that's
fine with me too.

> > Cheers,
> > Nathan
> > 
> > > ---
> > >  scripts/package/PKGBUILD | 10 ++++++++++
> > >  1 file changed, 10 insertions(+)
> > > 
> > > diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
> > > index 663ce300dd06..beda3db21863 100644
> > > --- a/scripts/package/PKGBUILD
> > > +++ b/scripts/package/PKGBUILD
> > > @@ -6,6 +6,7 @@ pkgbase=${PACMAN_PKGBASE:-linux-upstream}
> > >  pkgname=("${pkgbase}" "${pkgbase}-api-headers")
> > >  if grep -q CONFIG_MODULES=y include/config/auto.conf; then
> > >  	pkgname+=("${pkgbase}-headers")
> > > +	pkgname+=("${pkgbase}-debug")
> > >  fi
> > >  pkgver="${KERNELRELEASE//-/_}"
> > >  # The PKGBUILD is evaluated multiple times.
> > > @@ -89,6 +90,15 @@ _package-headers() {
> > >  	ln -sr "${builddir}" "${pkgdir}/usr/src/${pkgbase}"
> > >  }
> > >  
> > > +_package-debug(){
> > > +    pkgdesc="Non-stripped vmlinux file for the ${pkgdesc} kernel"
> > > +    depends=(${pkgbase}-headers)
> > > +
> > > +    cd "${objtree}"
> > > +    mkdir -p "$pkgdir/usr/src/debug/${pkgbase}"
> > > +    install -Dt "$pkgdir/usr/src/debug/${pkgbase}" -m644 vmlinux
> > > +}
> > > +
> > >  _package-api-headers() {
> > >  	pkgdesc="Kernel headers sanitized for use in userspace"
> > >  	provides=(linux-api-headers)
> > > -- 
> > > 2.46.0
> > > 




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux