[PATCH v4 2/4] deb-pkg: split debug symbols in their own package
Anisse Astier
anisse at astier.eu
Mon May 20 13:34:28 UTC 2013
Hi Ben,
On Wed, May 8, 2013 at 5:14 AM, Ben Hutchings <ben at decadent.org.uk> wrote:
> On Tue, 2013-05-07 at 17:46 +0200, Anisse Astier 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 at astier.eu>
>> ---
>> scripts/package/builddeb | 43 ++++++++++++++++++++++++++++++++++++++++++-
>> 1 file changed, 42 insertions(+), 1 deletion(-)
>>
>> diff --git a/scripts/package/builddeb b/scripts/package/builddeb
>> index 2d84671..797484b 100644
>> --- a/scripts/package/builddeb
>> +++ b/scripts/package/builddeb
>> @@ -78,17 +78,21 @@ 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
>>
>> +BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $objtree/$KCONFIG_CONFIG || true)"
>
> As in the previous patch, you can omit $objtree/ here.
>
> [...]
>> @@ -128,6 +136,20 @@ if grep -q '^CONFIG_MODULES=y' $objtree/$KCONFIG_CONFIG ; then
>> mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
>> rmdir "$tmpdir/lib/modules/$version"
>> fi
>> + if [ -n "$BUILD_DEBUG" ] ; then
>> + (
>> + cd $tmpdir
>> + for module in $(find lib/modules/ -name *.ko); do
>
> What if this is a non-modular kernel?
It's not entirely apparent in the diff, but this code is inside an if
checking CONFIG_MODULES..
>
> [...]
>> +if [ -n "$BUILD_DEBUG" ] ; then
>> + # Build debug package
>> + mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
>> + cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
> [...]
>
> Different tools have different ideas about where vmlinux debuginfo
> should be. What I ended up doing in Debian's own kernel debug packages
> in wheezy was installing/symlinking to all of:
>
> /usr/lib/debug/boot/vmlinux-$version [systemtap]
> /usr/lib/debug/lib/modules/$version/vmlinux [perf]
> /usr/lib/debug/vmlinux-$version [kdump-tools]
>
> So unless anyone has a better suggestion I think you'd better do the
> same here.
>
> (But really, the Linux development community ought to agree on a single
> canonical path format that all such tools will support.)
I'll add the symlinks for the next iteration.
Thanks a lot for your review time.
Anisse
More information about the kernel-team
mailing list