diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-11-14 20:38:05 -0500 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-11-14 20:38:05 -0500 |
| commit | 42249094f79422fbf5ed4b54eeb48ff096809b8f (patch) | |
| tree | 91e6850c8c7e8cc284cf8bb6363f8662f84011f4 /scripts/package/builddeb | |
| parent | 936816161978ca716a56c5e553c68f25972b1e3a (diff) | |
| parent | 2c027b7c48a888ab173ba45babb4525e278375d9 (diff) | |
Merge branch 'next' into for-linus
Merge first round of changes for 3.13 merge window.
Diffstat (limited to 'scripts/package/builddeb')
| -rw-r--r-- | scripts/package/builddeb | 94 |
1 files changed, 78 insertions, 16 deletions
diff --git a/scripts/package/builddeb b/scripts/package/builddeb index acb86507828a..90e521fde35f 100644 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb | |||
| @@ -41,9 +41,9 @@ create_package() { | |||
| 41 | parisc*) | 41 | parisc*) |
| 42 | debarch=hppa ;; | 42 | debarch=hppa ;; |
| 43 | mips*) | 43 | mips*) |
| 44 | debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y .config && echo el) ;; | 44 | debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;; |
| 45 | arm*) | 45 | arm*) |
| 46 | debarch=arm$(grep -q CONFIG_AEABI=y .config && echo el) ;; | 46 | debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;; |
| 47 | *) | 47 | *) |
| 48 | echo "" >&2 | 48 | echo "" >&2 |
| 49 | echo "** ** ** WARNING ** ** **" >&2 | 49 | echo "** ** ** WARNING ** ** **" >&2 |
| @@ -78,17 +78,35 @@ tmpdir="$objtree/debian/tmp" | |||
| 78 | fwdir="$objtree/debian/fwtmp" | 78 | fwdir="$objtree/debian/fwtmp" |
| 79 | kernel_headers_dir="$objtree/debian/hdrtmp" | 79 | kernel_headers_dir="$objtree/debian/hdrtmp" |
| 80 | libc_headers_dir="$objtree/debian/headertmp" | 80 | libc_headers_dir="$objtree/debian/headertmp" |
| 81 | dbg_dir="$objtree/debian/dbgtmp" | ||
| 81 | packagename=linux-image-$version | 82 | packagename=linux-image-$version |
| 82 | fwpackagename=linux-firmware-image | 83 | fwpackagename=linux-firmware-image-$version |
| 83 | kernel_headers_packagename=linux-headers-$version | 84 | kernel_headers_packagename=linux-headers-$version |
| 84 | libc_headers_packagename=linux-libc-dev | 85 | libc_headers_packagename=linux-libc-dev |
| 86 | dbg_packagename=$packagename-dbg | ||
| 85 | 87 | ||
| 86 | if [ "$ARCH" = "um" ] ; then | 88 | if [ "$ARCH" = "um" ] ; then |
| 87 | packagename=user-mode-linux-$version | 89 | packagename=user-mode-linux-$version |
| 88 | fi | 90 | fi |
| 89 | 91 | ||
| 92 | # Not all arches have the same installed path in debian | ||
| 93 | # XXX: have each arch Makefile export a variable of the canonical image install | ||
| 94 | # path instead | ||
| 95 | case $ARCH in | ||
| 96 | um) | ||
| 97 | installed_image_path="usr/bin/linux-$version" | ||
| 98 | ;; | ||
| 99 | parisc|mips|powerpc) | ||
| 100 | installed_image_path="boot/vmlinux-$version" | ||
| 101 | ;; | ||
| 102 | *) | ||
| 103 | installed_image_path="boot/vmlinuz-$version" | ||
| 104 | esac | ||
| 105 | |||
| 106 | BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)" | ||
| 107 | |||
| 90 | # Setup the directory structure | 108 | # Setup the directory structure |
| 91 | rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" | 109 | rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" |
| 92 | mkdir -m 755 -p "$tmpdir/DEBIAN" | 110 | mkdir -m 755 -p "$tmpdir/DEBIAN" |
| 93 | mkdir -p "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename" | 111 | mkdir -p "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename" |
| 94 | mkdir -m 755 -p "$fwdir/DEBIAN" | 112 | mkdir -m 755 -p "$fwdir/DEBIAN" |
| @@ -101,26 +119,29 @@ mkdir -p "$kernel_headers_dir/lib/modules/$version/" | |||
| 101 | if [ "$ARCH" = "um" ] ; then | 119 | if [ "$ARCH" = "um" ] ; then |
| 102 | mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" | 120 | mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" |
| 103 | fi | 121 | fi |
| 122 | if [ -n "$BUILD_DEBUG" ] ; then | ||
| 123 | mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename" | ||
| 124 | mkdir -m 755 -p "$dbg_dir/DEBIAN" | ||
| 125 | fi | ||
| 104 | 126 | ||
| 105 | # Build and install the kernel | 127 | # Build and install the kernel |
| 106 | if [ "$ARCH" = "um" ] ; then | 128 | if [ "$ARCH" = "um" ] ; then |
| 107 | $MAKE linux | 129 | $MAKE linux |
| 108 | cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" | 130 | cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" |
| 109 | cp .config "$tmpdir/usr/share/doc/$packagename/config" | 131 | cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" |
| 110 | gzip "$tmpdir/usr/share/doc/$packagename/config" | 132 | gzip "$tmpdir/usr/share/doc/$packagename/config" |
| 111 | cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version" | ||
| 112 | else | 133 | else |
| 113 | cp System.map "$tmpdir/boot/System.map-$version" | 134 | cp System.map "$tmpdir/boot/System.map-$version" |
| 114 | cp .config "$tmpdir/boot/config-$version" | 135 | cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" |
| 115 | # Not all arches include the boot path in KBUILD_IMAGE | 136 | fi |
| 116 | if [ -e $KBUILD_IMAGE ]; then | 137 | # Not all arches include the boot path in KBUILD_IMAGE |
| 117 | cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version" | 138 | if [ -e $KBUILD_IMAGE ]; then |
| 118 | else | 139 | cp $KBUILD_IMAGE "$tmpdir/$installed_image_path" |
| 119 | cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version" | 140 | else |
| 120 | fi | 141 | cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path" |
| 121 | fi | 142 | fi |
| 122 | 143 | ||
| 123 | if grep -q '^CONFIG_MODULES=y' .config ; then | 144 | if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then |
| 124 | INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install | 145 | INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install |
| 125 | rm -f "$tmpdir/lib/modules/$version/build" | 146 | rm -f "$tmpdir/lib/modules/$version/build" |
| 126 | rm -f "$tmpdir/lib/modules/$version/source" | 147 | rm -f "$tmpdir/lib/modules/$version/source" |
| @@ -128,6 +149,20 @@ if grep -q '^CONFIG_MODULES=y' .config ; then | |||
| 128 | mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/" | 149 | mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/" |
| 129 | rmdir "$tmpdir/lib/modules/$version" | 150 | rmdir "$tmpdir/lib/modules/$version" |
| 130 | fi | 151 | fi |
| 152 | if [ -n "$BUILD_DEBUG" ] ; then | ||
| 153 | ( | ||
| 154 | cd $tmpdir | ||
| 155 | for module in $(find lib/modules/ -name *.ko); do | ||
| 156 | mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) | ||
| 157 | # only keep debug symbols in the debug file | ||
| 158 | objcopy --only-keep-debug $module $dbg_dir/usr/lib/debug/$module | ||
| 159 | # strip original module from debug symbols | ||
| 160 | objcopy --strip-debug $module | ||
| 161 | # then add a link to those | ||
| 162 | objcopy --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module | ||
| 163 | done | ||
| 164 | ) | ||
| 165 | fi | ||
| 131 | fi | 166 | fi |
| 132 | 167 | ||
| 133 | if [ "$ARCH" != "um" ]; then | 168 | if [ "$ARCH" != "um" ]; then |
| @@ -149,7 +184,7 @@ set -e | |||
| 149 | # Pass maintainer script parameters to hook scripts | 184 | # Pass maintainer script parameters to hook scripts |
| 150 | export DEB_MAINT_PARAMS="\$*" | 185 | export DEB_MAINT_PARAMS="\$*" |
| 151 | 186 | ||
| 152 | test -d $debhookdir/$script.d && run-parts --arg="$version" $debhookdir/$script.d | 187 | test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d |
| 153 | exit 0 | 188 | exit 0 |
| 154 | EOF | 189 | EOF |
| 155 | chmod 755 "$tmpdir/DEBIAN/$script" | 190 | chmod 755 "$tmpdir/DEBIAN/$script" |
| @@ -245,11 +280,12 @@ fi | |||
| 245 | # Build header package | 280 | # Build header package |
| 246 | (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") | 281 | (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") |
| 247 | (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") | 282 | (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") |
| 248 | (cd $objtree; find arch/$SRCARCH/include .config Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") | 283 | (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") |
| 249 | destdir=$kernel_headers_dir/usr/src/linux-headers-$version | 284 | destdir=$kernel_headers_dir/usr/src/linux-headers-$version |
| 250 | mkdir -p "$destdir" | 285 | mkdir -p "$destdir" |
| 251 | (cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) | 286 | (cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) |
| 252 | (cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) | 287 | (cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) |
| 288 | (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be | ||
| 253 | ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" | 289 | ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" |
| 254 | rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" | 290 | rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" |
| 255 | arch=$(dpkg --print-architecture) | 291 | arch=$(dpkg --print-architecture) |
| @@ -299,4 +335,30 @@ fi | |||
| 299 | 335 | ||
| 300 | create_package "$packagename" "$tmpdir" | 336 | create_package "$packagename" "$tmpdir" |
| 301 | 337 | ||
| 338 | if [ -n "$BUILD_DEBUG" ] ; then | ||
| 339 | # Build debug package | ||
| 340 | # Different tools want the image in different locations | ||
| 341 | # perf | ||
| 342 | mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/ | ||
| 343 | cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/ | ||
| 344 | # systemtap | ||
| 345 | mkdir -p $dbg_dir/usr/lib/debug/boot/ | ||
| 346 | ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version | ||
| 347 | # kdump-tools | ||
| 348 | ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version | ||
| 349 | |||
| 350 | cat <<EOF >> debian/control | ||
| 351 | |||
| 352 | Package: $dbg_packagename | ||
| 353 | Section: debug | ||
| 354 | Provides: linux-debug, linux-debug-$version | ||
| 355 | Architecture: any | ||
| 356 | Description: Linux kernel debugging symbols for $version | ||
| 357 | This package will come in handy if you need to debug the kernel. It provides | ||
| 358 | all the necessary debug symbols for the kernel and its modules. | ||
| 359 | EOF | ||
| 360 | |||
| 361 | create_package "$dbg_packagename" "$dbg_dir" | ||
| 362 | fi | ||
| 363 | |||
| 302 | exit 0 | 364 | exit 0 |
