All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anisse Astier <anisse@astier.eu>
To: linux-kbuild@vger.kernel.org
Cc: Anisse Astier <anisse@astier.eu>,
	linux-kernel@vger.kernel.org, Michal Marek <mmarek@suse.cz>,
	maximilian attems <max@stro.at>
Subject: Re: [PATCH 1/2] deb-pkg: split debug symbols in their own package
Date: Thu, 4 Apr 2013 10:04:55 +0200	[thread overview]
Message-ID: <20130404100455.64367233@serenity> (raw)
In-Reply-To: <1363946761-7449-1-git-send-email-anisse@astier.eu>

Any comments ?

Anisse

On Fri, 22 Mar 2013 11:06:00 +0100, Anisse Astier <anisse@astier.eu> wrote :

> This can reduce almost 3 times the size of the linux-image package,
> while keeping the debug symbols available for this particular build, in
> their own package.
> 
> This mimics the way kernels are built in debian, ubuntu, or with
> make-kpkg, and comes at the price of a small slowdown in the building of
> packages.
> 
> Signed-off-by: Anisse Astier <anisse@astier.eu>
> ---
>  scripts/package/builddeb | 33 ++++++++++++++++++++++++++++++++-
>  1 file changed, 32 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/package/builddeb b/scripts/package/builddeb
> index acb8650..7f7a7fd 100644
> --- a/scripts/package/builddeb
> +++ b/scripts/package/builddeb
> @@ -78,17 +78,19 @@ tmpdir="$objtree/debian/tmp"
>  fwdir="$objtree/debian/fwtmp"
>  kernel_headers_dir="$objtree/debian/hdrtmp"
>  libc_headers_dir="$objtree/debian/headertmp"
> +dbg_dir="$objtree/debian/dbgtmp"
>  packagename=linux-image-$version
>  fwpackagename=linux-firmware-image
>  kernel_headers_packagename=linux-headers-$version
>  libc_headers_packagename=linux-libc-dev
> +dbg_packagename=$packagename-dbg
>  
>  if [ "$ARCH" = "um" ] ; then
>  	packagename=user-mode-linux-$version
>  fi
>  
>  # Setup the directory structure
> -rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir"
> +rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir"
>  mkdir -m 755 -p "$tmpdir/DEBIAN"
>  mkdir -p  "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
>  mkdir -m 755 -p "$fwdir/DEBIAN"
> @@ -98,6 +100,8 @@ mkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename"
>  mkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
>  mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
>  mkdir -p "$kernel_headers_dir/lib/modules/$version/"
> +mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename"
> +mkdir -m 755 -p "$dbg_dir/DEBIAN"
>  if [ "$ARCH" = "um" ] ; then
>  	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
>  fi
> @@ -128,8 +132,24 @@ if grep -q '^CONFIG_MODULES=y' .config ; then
>  		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
>  		rmdir "$tmpdir/lib/modules/$version"
>  	fi
> +	# Build debug package
> +	(
> +		cd $tmpdir
> +		for module in $(find lib/modules/ -name *.ko); do
> +			mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
> +			# only keep debug symbols in the debug file
> +			objcopy --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
> +			# strip original module from debug symbols
> +			objcopy --strip-debug $module
> +			# then add a link to those
> +			objcopy --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
> +		done
> +	)
>  fi
>  
> +mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
> +cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
> +
>  if [ "$ARCH" != "um" ]; then
>  	$MAKE headers_check KBUILD_SRC=
>  	$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
> @@ -297,6 +317,17 @@ if [ "$ARCH" != "um" ]; then
>  	create_package "$libc_headers_packagename" "$libc_headers_dir"
>  fi
>  
> +cat <<EOF >> debian/control
> +
> +Package: $dbg_packagename
> +Section: devel
> +Provides: linux-debug, linux-debug-$version
> +Architecture: any
> +Description: Linux kernel debugging symbols for $version
> + This package will come in handy if you need to debug the kernel.
> +EOF
> +
> +create_package "$dbg_packagename" "$dbg_dir"
>  create_package "$packagename" "$tmpdir"
>  
>  exit 0

  parent reply	other threads:[~2013-04-04  8:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-22 10:06 [PATCH 1/2] deb-pkg: split debug symbols in their own package Anisse Astier
2013-03-22 10:06 ` [PATCH 2/2] deb-pkg: add a hook argument to match debian hooks parameters Anisse Astier
2013-04-04  8:04 ` Anisse Astier [this message]
2013-04-08 10:29 ` [PATCH 1/2] deb-pkg: split debug symbols in their own package Michal Marek
2013-04-08 17:06   ` Anisse Astier
2013-04-08 17:06     ` Anisse Astier
2013-04-09 10:05     ` Anisse Astier
2013-04-19  8:05       ` Anisse Astier
2013-05-03 15:08         ` Anisse Astier
2013-05-03 15:19           ` Michal Marek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130404100455.64367233@serenity \
    --to=anisse@astier.eu \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=max@stro.at \
    --cc=mmarek@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.