kbuild: deb-pkg: split image and debug objects staging out into functions
Prepare for the refactoring in the next commit. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
parent
f50aa51c44
commit
b611daae5e
@ -51,6 +51,115 @@ create_package() {
|
||||
dpkg-deb $dpkg_deb_opts ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" ..
|
||||
}
|
||||
|
||||
install_linux_image () {
|
||||
pdir=$1
|
||||
pname=$2
|
||||
|
||||
rm -rf ${pdir}
|
||||
|
||||
# Only some architectures with OF support have this target
|
||||
if is_enabled CONFIG_OF_EARLY_FLATTREE && [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
|
||||
${MAKE} -f ${srctree}/Makefile INSTALL_DTBS_PATH="${pdir}/usr/lib/linux-image-${KERNELRELEASE}" dtbs_install
|
||||
fi
|
||||
|
||||
if is_enabled CONFIG_MODULES; then
|
||||
${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${pdir}" modules_install
|
||||
rm -f "${pdir}/lib/modules/${KERNELRELEASE}/build"
|
||||
rm -f "${pdir}/lib/modules/${KERNELRELEASE}/source"
|
||||
if [ "${SRCARCH}" = um ] ; then
|
||||
mkdir -p "${pdir}/usr/lib/uml/modules"
|
||||
mv "${pdir}/lib/modules/${KERNELRELEASE}" "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install the kernel
|
||||
if [ "${ARCH}" = um ] ; then
|
||||
mkdir -p "${pdir}/usr/bin" "${pdir}/usr/share/doc/${pname}"
|
||||
cp System.map "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}/System.map"
|
||||
cp ${KCONFIG_CONFIG} "${pdir}/usr/share/doc/${pname}/config"
|
||||
gzip "${pdir}/usr/share/doc/${pname}/config"
|
||||
else
|
||||
mkdir -p "${pdir}/boot"
|
||||
cp System.map "${pdir}/boot/System.map-${KERNELRELEASE}"
|
||||
cp ${KCONFIG_CONFIG} "${pdir}/boot/config-${KERNELRELEASE}"
|
||||
fi
|
||||
|
||||
# Not all arches have the same installed path in debian
|
||||
# XXX: have each arch Makefile export a variable of the canonical image install
|
||||
# path instead
|
||||
case "${SRCARCH}" in
|
||||
um)
|
||||
installed_image_path="usr/bin/linux-${KERNELRELEASE}";;
|
||||
parisc|mips|powerpc)
|
||||
installed_image_path="boot/vmlinux-${KERNELRELEASE}";;
|
||||
*)
|
||||
installed_image_path="boot/vmlinuz-${KERNELRELEASE}";;
|
||||
esac
|
||||
cp "$(${MAKE} -s -f ${srctree}/Makefile image_name)" "${pdir}/${installed_image_path}"
|
||||
|
||||
# Install the maintainer scripts
|
||||
# Note: hook scripts under /etc/kernel are also executed by official Debian
|
||||
# kernel packages, as well as kernel packages built using make-kpkg.
|
||||
# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
|
||||
# so do we; recent versions of dracut and initramfs-tools will obey this.
|
||||
debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
|
||||
for script in postinst postrm preinst prerm; do
|
||||
mkdir -p "${pdir}${debhookdir}/${script}.d"
|
||||
|
||||
mkdir -p "${pdir}/DEBIAN"
|
||||
cat <<-EOF > "${pdir}/DEBIAN/${script}"
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
# Pass maintainer script parameters to hook scripts
|
||||
export DEB_MAINT_PARAMS="\$*"
|
||||
|
||||
# Tell initramfs builder whether it's wanted
|
||||
export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
|
||||
|
||||
test -d ${debhookdir}/${script}.d && run-parts --arg="${KERNELRELEASE}" --arg="/${installed_image_path}" ${debhookdir}/${script}.d
|
||||
exit 0
|
||||
EOF
|
||||
chmod 755 "${pdir}/DEBIAN/${script}"
|
||||
done
|
||||
}
|
||||
|
||||
install_linux_image_dbg () {
|
||||
pdir=$1
|
||||
image_pdir=$2
|
||||
|
||||
rm -rf ${pdir}
|
||||
|
||||
for module in $(find ${image_pdir}/lib/modules/ -name *.ko -printf '%P\n'); do
|
||||
module=lib/modules/${module}
|
||||
mkdir -p $(dirname ${pdir}/usr/lib/debug/${module})
|
||||
# only keep debug symbols in the debug file
|
||||
${OBJCOPY} --only-keep-debug ${image_pdir}/${module} ${pdir}/usr/lib/debug/${module}
|
||||
# strip original module from debug symbols
|
||||
${OBJCOPY} --strip-debug ${image_pdir}/${module}
|
||||
# then add a link to those
|
||||
${OBJCOPY} --add-gnu-debuglink=${pdir}/usr/lib/debug/${module} ${image_pdir}/${module}
|
||||
done
|
||||
|
||||
# re-sign stripped modules
|
||||
if is_enabled CONFIG_MODULE_SIG_ALL; then
|
||||
${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${image_pdir}" modules_sign
|
||||
fi
|
||||
|
||||
# Build debug package
|
||||
# Different tools want the image in different locations
|
||||
# perf
|
||||
mkdir -p ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/
|
||||
cp vmlinux ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/
|
||||
# systemtap
|
||||
mkdir -p ${pdir}/usr/lib/debug/boot/
|
||||
ln -s ../lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/boot/vmlinux-${KERNELRELEASE}
|
||||
# kdump-tools
|
||||
ln -s lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/vmlinux-${KERNELRELEASE}
|
||||
}
|
||||
|
||||
deploy_kernel_headers () {
|
||||
pdir=$1
|
||||
|
||||
@ -105,8 +214,6 @@ deploy_libc_headers () {
|
||||
}
|
||||
|
||||
version=$KERNELRELEASE
|
||||
tmpdir=debian/linux-image
|
||||
dbg_dir=debian/linux-image-dbg
|
||||
packagename=linux-image-$version
|
||||
dbg_packagename=$packagename-dbg
|
||||
|
||||
@ -114,97 +221,7 @@ if [ "$ARCH" = "um" ] ; then
|
||||
packagename=user-mode-linux-$version
|
||||
fi
|
||||
|
||||
# Not all arches have the same installed path in debian
|
||||
# XXX: have each arch Makefile export a variable of the canonical image install
|
||||
# path instead
|
||||
case $ARCH in
|
||||
um)
|
||||
installed_image_path="usr/bin/linux-$version"
|
||||
;;
|
||||
parisc|mips|powerpc)
|
||||
installed_image_path="boot/vmlinux-$version"
|
||||
;;
|
||||
*)
|
||||
installed_image_path="boot/vmlinuz-$version"
|
||||
esac
|
||||
|
||||
BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes)
|
||||
|
||||
# Setup the directory structure
|
||||
rm -rf "$tmpdir" "$dbg_dir" debian/files
|
||||
mkdir -m 755 -p "$tmpdir/DEBIAN"
|
||||
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
|
||||
|
||||
# Install the kernel
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
|
||||
cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
|
||||
cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
|
||||
gzip "$tmpdir/usr/share/doc/$packagename/config"
|
||||
else
|
||||
cp System.map "$tmpdir/boot/System.map-$version"
|
||||
cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
|
||||
fi
|
||||
cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path"
|
||||
|
||||
if is_enabled CONFIG_OF_EARLY_FLATTREE; then
|
||||
# Only some architectures with OF support have this target
|
||||
if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then
|
||||
$MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
|
||||
fi
|
||||
fi
|
||||
|
||||
if is_enabled CONFIG_MODULES; then
|
||||
INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install
|
||||
rm -f "$tmpdir/lib/modules/$version/build"
|
||||
rm -f "$tmpdir/lib/modules/$version/source"
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
|
||||
rmdir "$tmpdir/lib/modules/$version"
|
||||
fi
|
||||
if [ -n "$BUILD_DEBUG" ] ; then
|
||||
for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
|
||||
module=lib/modules/$module
|
||||
mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
|
||||
# only keep debug symbols in the debug file
|
||||
$OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
|
||||
# strip original module from debug symbols
|
||||
$OBJCOPY --strip-debug $tmpdir/$module
|
||||
# then add a link to those
|
||||
$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
|
||||
done
|
||||
|
||||
# resign stripped modules
|
||||
if is_enabled CONFIG_MODULE_SIG_ALL; then
|
||||
INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install the maintainer scripts
|
||||
# Note: hook scripts under /etc/kernel are also executed by official Debian
|
||||
# kernel packages, as well as kernel packages built using make-kpkg.
|
||||
# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
|
||||
# so do we; recent versions of dracut and initramfs-tools will obey this.
|
||||
debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
|
||||
for script in postinst postrm preinst prerm ; do
|
||||
mkdir -p "$tmpdir$debhookdir/$script.d"
|
||||
cat <<EOF > "$tmpdir/DEBIAN/$script"
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
# Pass maintainer script parameters to hook scripts
|
||||
export DEB_MAINT_PARAMS="\$*"
|
||||
|
||||
# Tell initramfs builder whether it's wanted
|
||||
export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
|
||||
|
||||
test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
|
||||
exit 0
|
||||
EOF
|
||||
chmod 755 "$tmpdir/DEBIAN/$script"
|
||||
done
|
||||
rm -f debian/files
|
||||
|
||||
if [ "$ARCH" != "um" ]; then
|
||||
if is_enabled CONFIG_MODULES; then
|
||||
@ -216,20 +233,13 @@ if [ "$ARCH" != "um" ]; then
|
||||
create_package linux-libc-dev debian/linux-libc-dev
|
||||
fi
|
||||
|
||||
create_package "$packagename" "$tmpdir"
|
||||
install_linux_image debian/linux-image "$packagename"
|
||||
|
||||
if [ -n "$BUILD_DEBUG" ] ; then
|
||||
# Build debug package
|
||||
# Different tools want the image in different locations
|
||||
# perf
|
||||
mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
|
||||
cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
|
||||
# systemtap
|
||||
mkdir -p $dbg_dir/usr/lib/debug/boot/
|
||||
ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
|
||||
# kdump-tools
|
||||
ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
|
||||
create_package "$dbg_packagename" "$dbg_dir"
|
||||
if is_enabled CONFIG_DEBUG_INFO; then
|
||||
install_linux_image_dbg debian/linux-image-dbg debian/linux-image
|
||||
create_package "$dbg_packagename" debian/linux-image-dbg
|
||||
fi
|
||||
|
||||
create_package "$packagename" debian/linux-image
|
||||
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user