~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/package/builddeb

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/package/builddeb (Version linux-6.12-rc7) and /scripts/package/builddeb (Version linux-4.10.17)


  1 #!/bin/sh                                           1 #!/bin/sh
  2 #                                                   2 #
  3 # builddeb 1.3                                      3 # builddeb 1.3
  4 # Copyright 2003 Wichert Akkerman <wichert@wigg      4 # Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
  5 #                                                   5 #
  6 # Simple script to generate a deb package for       6 # Simple script to generate a deb package for a Linux kernel. All the
  7 # complexity of what to do with a kernel after      7 # complexity of what to do with a kernel after it is installed or removed
  8 # is left to other scripts and packages: they       8 # is left to other scripts and packages: they can install scripts in the
  9 # /etc/kernel/{pre,post}{inst,rm}.d/ directori      9 # /etc/kernel/{pre,post}{inst,rm}.d/ directories (or an alternative location
 10 # specified in KDEB_HOOKDIR) that will be call     10 # specified in KDEB_HOOKDIR) that will be called on package install and
 11 # removal.                                         11 # removal.
 12                                                    12 
 13 set -eu                                        !!  13 set -e
 14                                                    14 
 15 is_enabled() {                                 !!  15 create_package() {
 16         grep -q "^$1=y" include/config/auto.co !!  16         local pname="$1" pdir="$2"
                                                   >>  17 
                                                   >>  18         mkdir -m 755 -p "$pdir/DEBIAN"
                                                   >>  19         mkdir -p "$pdir/usr/share/doc/$pname"
                                                   >>  20         cp debian/copyright "$pdir/usr/share/doc/$pname/"
                                                   >>  21         cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
                                                   >>  22         gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
                                                   >>  23         sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
                                                   >>  24                 | xargs -r0 md5sum > DEBIAN/md5sums"
                                                   >>  25 
                                                   >>  26         # Fix ownership and permissions
                                                   >>  27         chown -R root:root "$pdir"
                                                   >>  28         chmod -R go-w "$pdir"
                                                   >>  29         # in case we are in a restrictive umask environment like 0077
                                                   >>  30         chmod -R a+rX "$pdir"
                                                   >>  31 
                                                   >>  32         # Create the package
                                                   >>  33         dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
                                                   >>  34         dpkg --build "$pdir" ..
 17 }                                                  35 }
 18                                                    36 
 19 if_enabled_echo() {                            !!  37 set_debarch() {
 20         if is_enabled "$1"; then               !!  38         # Attempt to find the correct Debian architecture
 21                 echo -n "$2"                   !!  39         case "$UTS_MACHINE" in
 22         elif [ $# -ge 3 ]; then                !!  40         i386|ia64|alpha)
 23                 echo -n "$3"                   !!  41                 debarch="$UTS_MACHINE" ;;
                                                   >>  42         x86_64)
                                                   >>  43                 debarch=amd64 ;;
                                                   >>  44         sparc*)
                                                   >>  45                 debarch=sparc ;;
                                                   >>  46         s390*)
                                                   >>  47                 debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
                                                   >>  48         ppc*)
                                                   >>  49                 debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
                                                   >>  50         parisc*)
                                                   >>  51                 debarch=hppa ;;
                                                   >>  52         mips*)
                                                   >>  53                 debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
                                                   >>  54         aarch64|arm64)
                                                   >>  55                 debarch=arm64 ;;
                                                   >>  56         arm*)
                                                   >>  57                 if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
                                                   >>  58                     if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
                                                   >>  59                         debarch=armhf
                                                   >>  60                     else
                                                   >>  61                         debarch=armel
                                                   >>  62                     fi
                                                   >>  63                 else
                                                   >>  64                     debarch=arm
                                                   >>  65                 fi
                                                   >>  66                 ;;
                                                   >>  67         *)
                                                   >>  68                 debarch=$(dpkg --print-architecture)
                                                   >>  69                 echo "" >&2
                                                   >>  70                 echo "** ** **  WARNING  ** ** **" >&2
                                                   >>  71                 echo "" >&2
                                                   >>  72                 echo "Your architecture doesn't have it's equivalent" >&2
                                                   >>  73                 echo "Debian userspace architecture defined!" >&2
                                                   >>  74                 echo "Falling back to using your current userspace instead!" >&2
                                                   >>  75                 echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
                                                   >>  76                 echo "" >&2
                                                   >>  77         esac
                                                   >>  78         if [ -n "$KBUILD_DEBARCH" ] ; then
                                                   >>  79                 debarch="$KBUILD_DEBARCH"
 24         fi                                         80         fi
                                                   >>  81         forcearch="-DArchitecture=$debarch"
                                                   >>  82 
 25 }                                                  83 }
 26                                                    84 
 27 install_linux_image () {                       !!  85 # Some variables and settings used throughout the script
 28         pname=$1                               !!  86 version=$KERNELRELEASE
 29         pdir=debian/$1                         !!  87 revision=$(cat .version)
                                                   >>  88 if [ -n "$KDEB_PKGVERSION" ]; then
                                                   >>  89         packageversion=$KDEB_PKGVERSION
                                                   >>  90 else
                                                   >>  91         packageversion=$version-$revision
                                                   >>  92 fi
                                                   >>  93 sourcename=$KDEB_SOURCENAME
                                                   >>  94 tmpdir="$objtree/debian/tmp"
                                                   >>  95 fwdir="$objtree/debian/fwtmp"
                                                   >>  96 kernel_headers_dir="$objtree/debian/hdrtmp"
                                                   >>  97 libc_headers_dir="$objtree/debian/headertmp"
                                                   >>  98 dbg_dir="$objtree/debian/dbgtmp"
                                                   >>  99 packagename=linux-image-$version
                                                   >> 100 fwpackagename=linux-firmware-image-$version
                                                   >> 101 kernel_headers_packagename=linux-headers-$version
                                                   >> 102 libc_headers_packagename=linux-libc-dev
                                                   >> 103 dbg_packagename=$packagename-dbg
                                                   >> 104 debarch=
                                                   >> 105 forcearch=
                                                   >> 106 set_debarch
                                                   >> 107 
                                                   >> 108 if [ "$ARCH" = "um" ] ; then
                                                   >> 109         packagename=user-mode-linux-$version
                                                   >> 110 fi
                                                   >> 111 
                                                   >> 112 # Not all arches have the same installed path in debian
                                                   >> 113 # XXX: have each arch Makefile export a variable of the canonical image install
                                                   >> 114 # path instead
                                                   >> 115 case $ARCH in
                                                   >> 116 um)
                                                   >> 117         installed_image_path="usr/bin/linux-$version"
                                                   >> 118         ;;
                                                   >> 119 parisc|mips|powerpc)
                                                   >> 120         installed_image_path="boot/vmlinux-$version"
                                                   >> 121         ;;
                                                   >> 122 *)
                                                   >> 123         installed_image_path="boot/vmlinuz-$version"
                                                   >> 124 esac
 30                                                   125 
 31         # Only some architectures with OF supp !! 126 BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
 32         if is_enabled CONFIG_OF_EARLY_FLATTREE << 
 33                 ${MAKE} -f ${srctree}/Makefile << 
 34         fi                                     << 
 35                                                   127 
 36         ${MAKE} -f ${srctree}/Makefile INSTALL !! 128 # Setup the directory structure
 37         rm -f "${pdir}/lib/modules/${KERNELREL !! 129 rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
                                                   >> 130 mkdir -m 755 -p "$tmpdir/DEBIAN"
                                                   >> 131 mkdir -p "$tmpdir/lib" "$tmpdir/boot"
                                                   >> 132 mkdir -p "$fwdir/lib/firmware/$version/"
                                                   >> 133 mkdir -p "$kernel_headers_dir/lib/modules/$version/"
                                                   >> 134 
                                                   >> 135 # Build and install the kernel
                                                   >> 136 if [ "$ARCH" = "um" ] ; then
                                                   >> 137         mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
                                                   >> 138         $MAKE linux
                                                   >> 139         cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
                                                   >> 140         cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
                                                   >> 141         gzip "$tmpdir/usr/share/doc/$packagename/config"
                                                   >> 142 else
                                                   >> 143         cp System.map "$tmpdir/boot/System.map-$version"
                                                   >> 144         cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
                                                   >> 145 fi
                                                   >> 146 # Not all arches include the boot path in KBUILD_IMAGE
                                                   >> 147 if [ -e $KBUILD_IMAGE ]; then
                                                   >> 148         cp $KBUILD_IMAGE "$tmpdir/$installed_image_path"
                                                   >> 149 else
                                                   >> 150         cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
                                                   >> 151 fi
 38                                                   152 
 39         # Install the kernel                   !! 153 if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
 40         if [ "${ARCH}" = um ] ; then           !! 154         # Only some architectures with OF support have this target
 41                 mkdir -p "${pdir}/usr/lib/uml/ !! 155         if grep -q dtbs_install "${srctree}/arch/$SRCARCH/Makefile"; then
 42                 mv "${pdir}/lib/modules/${KERN !! 156                 $MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
 43                 mkdir -p "${pdir}/usr/bin" "${ << 
 44                 cp System.map "${pdir}/usr/lib << 
 45                 cp ${KCONFIG_CONFIG} "${pdir}/ << 
 46                 gzip "${pdir}/usr/share/doc/${ << 
 47         else                                   << 
 48                 mkdir -p "${pdir}/boot"        << 
 49                 cp System.map "${pdir}/boot/Sy << 
 50                 cp ${KCONFIG_CONFIG} "${pdir}/ << 
 51         fi                                        157         fi
                                                   >> 158 fi
 52                                                   159 
 53         # Not all arches have the same install !! 160 if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
 54         # XXX: have each arch Makefile export  !! 161         INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
 55         # path instead                         !! 162         rm -f "$tmpdir/lib/modules/$version/build"
 56         case "${SRCARCH}" in                   !! 163         rm -f "$tmpdir/lib/modules/$version/source"
 57         um)                                    !! 164         if [ "$ARCH" = "um" ] ; then
 58                 installed_image_path="usr/bin/ !! 165                 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
 59         parisc|mips|powerpc)                   !! 166                 rmdir "$tmpdir/lib/modules/$version"
 60                 installed_image_path="boot/vml !! 167         fi
 61         *)                                     !! 168         if [ -n "$BUILD_DEBUG" ] ; then
 62                 installed_image_path="boot/vml !! 169                 for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
 63         esac                                   !! 170                         module=lib/modules/$module
 64         cp "$(${MAKE} -s -f ${srctree}/Makefil !! 171                         mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
 65                                                !! 172                         # only keep debug symbols in the debug file
 66         # Install the maintainer scripts       !! 173                         $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
 67         # Note: hook scripts under /etc/kernel !! 174                         # strip original module from debug symbols
 68         # kernel packages, as well as kernel p !! 175                         $OBJCOPY --strip-debug $tmpdir/$module
 69         # make-kpkg sets $INITRD to indicate w !! 176                         # then add a link to those
 70         # so do we; recent versions of dracut  !! 177                         $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
 71         debhookdir=${KDEB_HOOKDIR:-/etc/kernel !! 178                 done
 72         for script in postinst postrm preinst  !! 179 
 73                 mkdir -p "${pdir}${debhookdir} !! 180                 # resign stripped modules
 74                                                !! 181                 MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)"
 75                 mkdir -p "${pdir}/DEBIAN"      !! 182                 if [ -n "$MODULE_SIG_ALL" ]; then
 76                 cat <<-EOF > "${pdir}/DEBIAN/$ !! 183                         INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_sign
 77                 #!/bin/sh                      !! 184                 fi
 78                                                !! 185         fi
 79                 set -e                         !! 186 fi
 80                                                << 
 81                 # Pass maintainer script param << 
 82                 export DEB_MAINT_PARAMS="\$*"  << 
 83                                                << 
 84                 # Tell initramfs builder wheth << 
 85                 export INITRD=$(if_enabled_ech << 
 86                                                << 
 87                 test -d ${debhookdir}/${script << 
 88                 exit 0                         << 
 89                 EOF                            << 
 90                 chmod 755 "${pdir}/DEBIAN/${sc << 
 91         done                                   << 
 92 }                                              << 
 93                                                   187 
 94 install_linux_image_dbg () {                   !! 188 if [ "$ARCH" != "um" ]; then
 95         pdir=debian/$1                         !! 189         $MAKE headers_check KBUILD_SRC=
                                                   >> 190         $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
                                                   >> 191 fi
                                                   >> 192 
                                                   >> 193 # Install the maintainer scripts
                                                   >> 194 # Note: hook scripts under /etc/kernel are also executed by official Debian
                                                   >> 195 # kernel packages, as well as kernel packages built using make-kpkg.
                                                   >> 196 # make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
                                                   >> 197 # so do we; recent versions of dracut and initramfs-tools will obey this.
                                                   >> 198 debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
                                                   >> 199 if grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
                                                   >> 200         want_initrd=Yes
                                                   >> 201 else
                                                   >> 202         want_initrd=No
                                                   >> 203 fi
                                                   >> 204 for script in postinst postrm preinst prerm ; do
                                                   >> 205         mkdir -p "$tmpdir$debhookdir/$script.d"
                                                   >> 206         cat <<EOF > "$tmpdir/DEBIAN/$script"
                                                   >> 207 #!/bin/sh
                                                   >> 208 
                                                   >> 209 set -e
                                                   >> 210 
                                                   >> 211 # Pass maintainer script parameters to hook scripts
                                                   >> 212 export DEB_MAINT_PARAMS="\$*"
                                                   >> 213 
                                                   >> 214 # Tell initramfs builder whether it's wanted
                                                   >> 215 export INITRD=$want_initrd
                                                   >> 216 
                                                   >> 217 test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
                                                   >> 218 exit 0
                                                   >> 219 EOF
                                                   >> 220         chmod 755 "$tmpdir/DEBIAN/$script"
                                                   >> 221 done
                                                   >> 222 
                                                   >> 223 # Try to determine maintainer and email values
                                                   >> 224 if [ -n "$DEBEMAIL" ]; then
                                                   >> 225        email=$DEBEMAIL
                                                   >> 226 elif [ -n "$EMAIL" ]; then
                                                   >> 227        email=$EMAIL
                                                   >> 228 else
                                                   >> 229        email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
                                                   >> 230 fi
                                                   >> 231 if [ -n "$DEBFULLNAME" ]; then
                                                   >> 232        name=$DEBFULLNAME
                                                   >> 233 elif [ -n "$NAME" ]; then
                                                   >> 234        name=$NAME
                                                   >> 235 else
                                                   >> 236        name="Anonymous"
                                                   >> 237 fi
                                                   >> 238 maintainer="$name <$email>"
                                                   >> 239 
                                                   >> 240 # Try to determine distribution
                                                   >> 241 if [ -n "$KDEB_CHANGELOG_DIST" ]; then
                                                   >> 242         distribution=$KDEB_CHANGELOG_DIST
                                                   >> 243 # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
                                                   >> 244 elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
                                                   >> 245         : # nothing to do in this case
                                                   >> 246 else
                                                   >> 247         distribution="unstable"
                                                   >> 248         echo >&2 "Using default distribution of 'unstable' in the changelog"
                                                   >> 249         echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
                                                   >> 250 fi
                                                   >> 251 
                                                   >> 252 # Generate a simple changelog template
                                                   >> 253 cat <<EOF > debian/changelog
                                                   >> 254 $sourcename ($packageversion) $distribution; urgency=low
                                                   >> 255 
                                                   >> 256   * Custom built Linux kernel.
                                                   >> 257 
                                                   >> 258  -- $maintainer  $(date -R)
                                                   >> 259 EOF
                                                   >> 260 
                                                   >> 261 # Generate copyright file
                                                   >> 262 cat <<EOF > debian/copyright
                                                   >> 263 This is a packacked upstream version of the Linux kernel.
                                                   >> 264 
                                                   >> 265 The sources may be found at most Linux ftp sites, including:
                                                   >> 266 ftp://ftp.kernel.org/pub/linux/kernel
                                                   >> 267 
                                                   >> 268 Copyright: 1991 - 2015 Linus Torvalds and others.
                                                   >> 269 
                                                   >> 270 The git repository for mainline kernel development is at:
                                                   >> 271 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
                                                   >> 272 
                                                   >> 273     This program is free software; you can redistribute it and/or modify
                                                   >> 274     it under the terms of the GNU General Public License as published by
                                                   >> 275     the Free Software Foundation; version 2 dated June, 1991.
                                                   >> 276 
                                                   >> 277 On Debian GNU/Linux systems, the complete text of the GNU General Public
                                                   >> 278 License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
                                                   >> 279 EOF
                                                   >> 280 
                                                   >> 281 
                                                   >> 282 build_depends="bc, kmod, cpio "
                                                   >> 283 
                                                   >> 284 # Generate a control file
                                                   >> 285 cat <<EOF > debian/control
                                                   >> 286 Source: $sourcename
                                                   >> 287 Section: kernel
                                                   >> 288 Priority: optional
                                                   >> 289 Maintainer: $maintainer
                                                   >> 290 Build-Depends: $build_depends
                                                   >> 291 Standards-Version: 3.8.4
                                                   >> 292 Homepage: http://www.kernel.org/
                                                   >> 293 EOF
                                                   >> 294 
                                                   >> 295 if [ "$ARCH" = "um" ]; then
                                                   >> 296         cat <<EOF >> debian/control
                                                   >> 297 
                                                   >> 298 Package: $packagename
                                                   >> 299 Provides: linux-image, linux-image-2.6, linux-modules-$version
                                                   >> 300 Architecture: any
                                                   >> 301 Description: User Mode Linux kernel, version $version
                                                   >> 302  User-mode Linux is a port of the Linux kernel to its own system call
                                                   >> 303  interface.  It provides a kind of virtual machine, which runs Linux
                                                   >> 304  as a user process under another Linux kernel.  This is useful for
                                                   >> 305  kernel development, sandboxes, jails, experimentation, and
                                                   >> 306  many other things.
                                                   >> 307  .
                                                   >> 308  This package contains the Linux kernel, modules and corresponding other
                                                   >> 309  files, version: $version.
                                                   >> 310 EOF
                                                   >> 311 
                                                   >> 312 else
                                                   >> 313         cat <<EOF >> debian/control
                                                   >> 314 
                                                   >> 315 Package: $packagename
                                                   >> 316 Provides: linux-image, linux-image-2.6, linux-modules-$version
                                                   >> 317 Suggests: $fwpackagename
                                                   >> 318 Architecture: any
                                                   >> 319 Description: Linux kernel, version $version
                                                   >> 320  This package contains the Linux kernel, modules and corresponding other
                                                   >> 321  files, version: $version.
                                                   >> 322 EOF
                                                   >> 323 
                                                   >> 324 fi
                                                   >> 325 
                                                   >> 326 # Build kernel header package
                                                   >> 327 (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
                                                   >> 328 (cd $srctree; find arch/*/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
                                                   >> 329 (cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
                                                   >> 330 (cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
                                                   >> 331 if grep -q '^CONFIG_STACK_VALIDATION=y' $KCONFIG_CONFIG ; then
                                                   >> 332         (cd $objtree; find tools/objtool -type f -executable) >> "$objtree/debian/hdrobjfiles"
                                                   >> 333 fi
                                                   >> 334 (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
                                                   >> 335 if grep -q '^CONFIG_GCC_PLUGINS=y' $KCONFIG_CONFIG ; then
                                                   >> 336         (cd $objtree; find scripts/gcc-plugins -name \*.so -o -name gcc-common.h) >> "$objtree/debian/hdrobjfiles"
                                                   >> 337 fi
                                                   >> 338 destdir=$kernel_headers_dir/usr/src/linux-headers-$version
                                                   >> 339 mkdir -p "$destdir"
                                                   >> 340 (cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
                                                   >> 341 (cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
                                                   >> 342 (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
                                                   >> 343 ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
                                                   >> 344 rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
                                                   >> 345 
                                                   >> 346 cat <<EOF >> debian/control
                                                   >> 347 
                                                   >> 348 Package: $kernel_headers_packagename
                                                   >> 349 Provides: linux-headers, linux-headers-2.6
                                                   >> 350 Architecture: any
                                                   >> 351 Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
                                                   >> 352  This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
                                                   >> 353  .
                                                   >> 354  This is useful for people who need to build external modules
                                                   >> 355 EOF
                                                   >> 356 
                                                   >> 357 # Do we have firmware? Move it out of the way and build it into a package.
                                                   >> 358 if [ -e "$tmpdir/lib/firmware" ]; then
                                                   >> 359         mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
                                                   >> 360         rmdir "$tmpdir/lib/firmware"
                                                   >> 361 
                                                   >> 362         cat <<EOF >> debian/control
                                                   >> 363 
                                                   >> 364 Package: $fwpackagename
                                                   >> 365 Architecture: all
                                                   >> 366 Description: Linux kernel firmware, version $version
                                                   >> 367  This package contains firmware from the Linux kernel, version $version.
                                                   >> 368 EOF
                                                   >> 369 
                                                   >> 370         create_package "$fwpackagename" "$fwdir"
                                                   >> 371 fi
                                                   >> 372 
                                                   >> 373 cat <<EOF >> debian/control
                                                   >> 374 
                                                   >> 375 Package: $libc_headers_packagename
                                                   >> 376 Section: devel
                                                   >> 377 Provides: linux-kernel-headers
                                                   >> 378 Architecture: any
                                                   >> 379 Description: Linux support headers for userspace development
                                                   >> 380  This package provides userspaces headers from the Linux kernel.  These headers
                                                   >> 381  are used by the installed headers for GNU glibc and other system libraries.
                                                   >> 382 EOF
                                                   >> 383 
                                                   >> 384 if [ "$ARCH" != "um" ]; then
                                                   >> 385         create_package "$kernel_headers_packagename" "$kernel_headers_dir"
                                                   >> 386         create_package "$libc_headers_packagename" "$libc_headers_dir"
                                                   >> 387 fi
 96                                                   388 
 97         # Parse modules.order directly because !! 389 create_package "$packagename" "$tmpdir"
 98         # compress modules, and then run unnee << 
 99         while read -r mod; do                  << 
100                 mod="${mod%.o}.ko"             << 
101                 dbg="${pdir}/usr/lib/debug/lib << 
102                 buildid=$("${READELF}" -n "${m << 
103                 link="${pdir}/usr/lib/debug/.b << 
104                                                << 
105                 mkdir -p "${dbg%/*}" "${link%/ << 
106                 "${OBJCOPY}" --only-keep-debug << 
107                 ln -sf --relative "${dbg}" "${ << 
108         done < modules.order                   << 
109                                                   390 
                                                   >> 391 if [ -n "$BUILD_DEBUG" ] ; then
110         # Build debug package                     392         # Build debug package
111         # Different tools want the image in di    393         # Different tools want the image in different locations
112         # perf                                    394         # perf
113         mkdir -p ${pdir}/usr/lib/debug/lib/mod !! 395         mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
114         cp vmlinux ${pdir}/usr/lib/debug/lib/m !! 396         cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
115         # systemtap                               397         # systemtap
116         mkdir -p ${pdir}/usr/lib/debug/boot/   !! 398         mkdir -p $dbg_dir/usr/lib/debug/boot/
117         ln -s ../lib/modules/${KERNELRELEASE}/ !! 399         ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
118         # kdump-tools                             400         # kdump-tools
119         ln -s lib/modules/${KERNELRELEASE}/vml !! 401         ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
120 }                                              << 
121                                                   402 
122 install_kernel_headers () {                    !! 403         cat <<EOF >> debian/control
123         pdir=debian/$1                         << 
124         version=${1#linux-headers-}            << 
125                                                << 
126         CC="${DEB_HOST_GNU_TYPE}-gcc" "${srctr << 
127                                                << 
128         mkdir -p $pdir/lib/modules/$version/   << 
129         ln -s /usr/src/linux-headers-$version  << 
130 }                                              << 
131                                                   404 
132 install_libc_headers () {                      !! 405 Package: $dbg_packagename
133         pdir=debian/$1                         !! 406 Section: debug
                                                   >> 407 Provides: linux-debug, linux-debug-$version
                                                   >> 408 Architecture: any
                                                   >> 409 Description: Linux kernel debugging symbols for $version
                                                   >> 410  This package will come in handy if you need to debug the kernel. It provides
                                                   >> 411  all the necessary debug symbols for the kernel and its modules.
                                                   >> 412 EOF
                                                   >> 413 
                                                   >> 414         create_package "$dbg_packagename" "$dbg_dir"
                                                   >> 415 fi
                                                   >> 416 
                                                   >> 417 if [ "x$1" = "xdeb-pkg" ]
                                                   >> 418 then
                                                   >> 419     cat <<EOF > debian/rules
                                                   >> 420 #!/usr/bin/make -f
                                                   >> 421 
                                                   >> 422 build:
                                                   >> 423         \$(MAKE)
                                                   >> 424 
                                                   >> 425 binary-arch:
                                                   >> 426         \$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg
                                                   >> 427 
                                                   >> 428 clean:
                                                   >> 429         rm -rf debian/*tmp debian/files
                                                   >> 430         mv debian/ debian.backup # debian/ might be cleaned away
                                                   >> 431         \$(MAKE) clean
                                                   >> 432         mv debian.backup debian
                                                   >> 433 
                                                   >> 434 binary: binary-arch
                                                   >> 435 EOF
                                                   >> 436         mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz
                                                   >> 437         tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control}
                                                   >> 438         dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
                                                   >> 439                 -b / ../${sourcename}_${version}.orig.tar.gz  ../${sourcename}_${packageversion}.debian.tar.gz
                                                   >> 440         mv ${sourcename}_${packageversion}*dsc ..
                                                   >> 441         dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes
                                                   >> 442 else
                                                   >> 443         dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes
                                                   >> 444 fi
134                                                   445 
135         $MAKE -f $srctree/Makefile headers_ins !! 446 exit 0
136                                                << 
137         # move asm headers to /usr/include/<li << 
138         # used by Debian-based distros (to sup << 
139         mkdir "$pdir/usr/include/${DEB_HOST_MU << 
140         mv "$pdir/usr/include/asm" "$pdir/usr/ << 
141 }                                              << 
142                                                << 
143 package=$1                                     << 
144                                                << 
145 case "${package}" in                           << 
146 *-dbg)                                         << 
147         install_linux_image_dbg "${package}";; << 
148 linux-image-*|user-mode-linux-*)               << 
149         install_linux_image "${package}";;     << 
150 linux-libc-dev)                                << 
151         install_libc_headers "${package}";;    << 
152 linux-headers-*)                               << 
153         install_kernel_headers "${package}";;  << 
154 esac                                           << 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php