Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+116 -106
+116 -106
scripts/package/builddeb
··· 51 51 dpkg-deb $dpkg_deb_opts ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" .. 52 52 } 53 53 54 + install_linux_image () { 55 + pdir=$1 56 + pname=$2 57 + 58 + rm -rf ${pdir} 59 + 60 + # Only some architectures with OF support have this target 61 + if is_enabled CONFIG_OF_EARLY_FLATTREE && [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then 62 + ${MAKE} -f ${srctree}/Makefile INSTALL_DTBS_PATH="${pdir}/usr/lib/linux-image-${KERNELRELEASE}" dtbs_install 63 + fi 64 + 65 + if is_enabled CONFIG_MODULES; then 66 + ${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${pdir}" modules_install 67 + rm -f "${pdir}/lib/modules/${KERNELRELEASE}/build" 68 + rm -f "${pdir}/lib/modules/${KERNELRELEASE}/source" 69 + if [ "${SRCARCH}" = um ] ; then 70 + mkdir -p "${pdir}/usr/lib/uml/modules" 71 + mv "${pdir}/lib/modules/${KERNELRELEASE}" "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}" 72 + fi 73 + fi 74 + 75 + # Install the kernel 76 + if [ "${ARCH}" = um ] ; then 77 + mkdir -p "${pdir}/usr/bin" "${pdir}/usr/share/doc/${pname}" 78 + cp System.map "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}/System.map" 79 + cp ${KCONFIG_CONFIG} "${pdir}/usr/share/doc/${pname}/config" 80 + gzip "${pdir}/usr/share/doc/${pname}/config" 81 + else 82 + mkdir -p "${pdir}/boot" 83 + cp System.map "${pdir}/boot/System.map-${KERNELRELEASE}" 84 + cp ${KCONFIG_CONFIG} "${pdir}/boot/config-${KERNELRELEASE}" 85 + fi 86 + 87 + # Not all arches have the same installed path in debian 88 + # XXX: have each arch Makefile export a variable of the canonical image install 89 + # path instead 90 + case "${SRCARCH}" in 91 + um) 92 + installed_image_path="usr/bin/linux-${KERNELRELEASE}";; 93 + parisc|mips|powerpc) 94 + installed_image_path="boot/vmlinux-${KERNELRELEASE}";; 95 + *) 96 + installed_image_path="boot/vmlinuz-${KERNELRELEASE}";; 97 + esac 98 + cp "$(${MAKE} -s -f ${srctree}/Makefile image_name)" "${pdir}/${installed_image_path}" 99 + 100 + # Install the maintainer scripts 101 + # Note: hook scripts under /etc/kernel are also executed by official Debian 102 + # kernel packages, as well as kernel packages built using make-kpkg. 103 + # make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and 104 + # so do we; recent versions of dracut and initramfs-tools will obey this. 105 + debhookdir=${KDEB_HOOKDIR:-/etc/kernel} 106 + for script in postinst postrm preinst prerm; do 107 + mkdir -p "${pdir}${debhookdir}/${script}.d" 108 + 109 + mkdir -p "${pdir}/DEBIAN" 110 + cat <<-EOF > "${pdir}/DEBIAN/${script}" 111 + 112 + #!/bin/sh 113 + 114 + set -e 115 + 116 + # Pass maintainer script parameters to hook scripts 117 + export DEB_MAINT_PARAMS="\$*" 118 + 119 + # Tell initramfs builder whether it's wanted 120 + export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No) 121 + 122 + test -d ${debhookdir}/${script}.d && run-parts --arg="${KERNELRELEASE}" --arg="/${installed_image_path}" ${debhookdir}/${script}.d 123 + exit 0 124 + EOF 125 + chmod 755 "${pdir}/DEBIAN/${script}" 126 + done 127 + } 128 + 129 + install_linux_image_dbg () { 130 + pdir=$1 131 + image_pdir=$2 132 + 133 + rm -rf ${pdir} 134 + 135 + for module in $(find ${image_pdir}/lib/modules/ -name *.ko -printf '%P\n'); do 136 + module=lib/modules/${module} 137 + mkdir -p $(dirname ${pdir}/usr/lib/debug/${module}) 138 + # only keep debug symbols in the debug file 139 + ${OBJCOPY} --only-keep-debug ${image_pdir}/${module} ${pdir}/usr/lib/debug/${module} 140 + # strip original module from debug symbols 141 + ${OBJCOPY} --strip-debug ${image_pdir}/${module} 142 + # then add a link to those 143 + ${OBJCOPY} --add-gnu-debuglink=${pdir}/usr/lib/debug/${module} ${image_pdir}/${module} 144 + done 145 + 146 + # re-sign stripped modules 147 + if is_enabled CONFIG_MODULE_SIG_ALL; then 148 + ${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${image_pdir}" modules_sign 149 + fi 150 + 151 + # Build debug package 152 + # Different tools want the image in different locations 153 + # perf 154 + mkdir -p ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/ 155 + cp vmlinux ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/ 156 + # systemtap 157 + mkdir -p ${pdir}/usr/lib/debug/boot/ 158 + ln -s ../lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/boot/vmlinux-${KERNELRELEASE} 159 + # kdump-tools 160 + ln -s lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/vmlinux-${KERNELRELEASE} 161 + } 162 + 54 163 deploy_kernel_headers () { 55 164 pdir=$1 56 165 ··· 214 105 } 215 106 216 107 version=$KERNELRELEASE 217 - tmpdir=debian/linux-image 218 - dbg_dir=debian/linux-image-dbg 219 108 packagename=linux-image-$version 220 109 dbg_packagename=$packagename-dbg 221 110 ··· 221 114 packagename=user-mode-linux-$version 222 115 fi 223 116 224 - # Not all arches have the same installed path in debian 225 - # XXX: have each arch Makefile export a variable of the canonical image install 226 - # path instead 227 - case $ARCH in 228 - um) 229 - installed_image_path="usr/bin/linux-$version" 230 - ;; 231 - parisc|mips|powerpc) 232 - installed_image_path="boot/vmlinux-$version" 233 - ;; 234 - *) 235 - installed_image_path="boot/vmlinuz-$version" 236 - esac 237 - 238 - BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes) 239 - 240 - # Setup the directory structure 241 - rm -rf "$tmpdir" "$dbg_dir" debian/files 242 - mkdir -m 755 -p "$tmpdir/DEBIAN" 243 - mkdir -p "$tmpdir/lib" "$tmpdir/boot" 244 - 245 - # Install the kernel 246 - if [ "$ARCH" = "um" ] ; then 247 - mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename" 248 - cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" 249 - cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" 250 - gzip "$tmpdir/usr/share/doc/$packagename/config" 251 - else 252 - cp System.map "$tmpdir/boot/System.map-$version" 253 - cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" 254 - fi 255 - cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path" 256 - 257 - if is_enabled CONFIG_OF_EARLY_FLATTREE; then 258 - # Only some architectures with OF support have this target 259 - if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then 260 - $MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install 261 - fi 262 - fi 263 - 264 - if is_enabled CONFIG_MODULES; then 265 - INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install 266 - rm -f "$tmpdir/lib/modules/$version/build" 267 - rm -f "$tmpdir/lib/modules/$version/source" 268 - if [ "$ARCH" = "um" ] ; then 269 - mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/" 270 - rmdir "$tmpdir/lib/modules/$version" 271 - fi 272 - if [ -n "$BUILD_DEBUG" ] ; then 273 - for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do 274 - module=lib/modules/$module 275 - mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) 276 - # only keep debug symbols in the debug file 277 - $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module 278 - # strip original module from debug symbols 279 - $OBJCOPY --strip-debug $tmpdir/$module 280 - # then add a link to those 281 - $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module 282 - done 283 - 284 - # resign stripped modules 285 - if is_enabled CONFIG_MODULE_SIG_ALL; then 286 - INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign 287 - fi 288 - fi 289 - fi 290 - 291 - # Install the maintainer scripts 292 - # Note: hook scripts under /etc/kernel are also executed by official Debian 293 - # kernel packages, as well as kernel packages built using make-kpkg. 294 - # make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and 295 - # so do we; recent versions of dracut and initramfs-tools will obey this. 296 - debhookdir=${KDEB_HOOKDIR:-/etc/kernel} 297 - for script in postinst postrm preinst prerm ; do 298 - mkdir -p "$tmpdir$debhookdir/$script.d" 299 - cat <<EOF > "$tmpdir/DEBIAN/$script" 300 - #!/bin/sh 301 - 302 - set -e 303 - 304 - # Pass maintainer script parameters to hook scripts 305 - export DEB_MAINT_PARAMS="\$*" 306 - 307 - # Tell initramfs builder whether it's wanted 308 - export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No) 309 - 310 - test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d 311 - exit 0 312 - EOF 313 - chmod 755 "$tmpdir/DEBIAN/$script" 314 - done 117 + rm -f debian/files 315 118 316 119 if [ "$ARCH" != "um" ]; then 317 120 if is_enabled CONFIG_MODULES; then ··· 233 216 create_package linux-libc-dev debian/linux-libc-dev 234 217 fi 235 218 236 - create_package "$packagename" "$tmpdir" 219 + install_linux_image debian/linux-image "$packagename" 237 220 238 - if [ -n "$BUILD_DEBUG" ] ; then 239 - # Build debug package 240 - # Different tools want the image in different locations 241 - # perf 242 - mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/ 243 - cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/ 244 - # systemtap 245 - mkdir -p $dbg_dir/usr/lib/debug/boot/ 246 - ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version 247 - # kdump-tools 248 - ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version 249 - create_package "$dbg_packagename" "$dbg_dir" 221 + if is_enabled CONFIG_DEBUG_INFO; then 222 + install_linux_image_dbg debian/linux-image-dbg debian/linux-image 223 + create_package "$dbg_packagename" debian/linux-image-dbg 250 224 fi 225 + 226 + create_package "$packagename" debian/linux-image 251 227 252 228 exit 0