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

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

 



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):

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?

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