~ [ 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-5.14.21)


  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 is_enabled() {
 16         grep -q "^$1=y" include/config/auto.co     16         grep -q "^$1=y" include/config/auto.conf
 17 }                                                  17 }
 18                                                    18 
 19 if_enabled_echo() {                                19 if_enabled_echo() {
 20         if is_enabled "$1"; then                   20         if is_enabled "$1"; then
 21                 echo -n "$2"                       21                 echo -n "$2"
 22         elif [ $# -ge 3 ]; then                    22         elif [ $# -ge 3 ]; then
 23                 echo -n "$3"                       23                 echo -n "$3"
 24         fi                                         24         fi
 25 }                                                  25 }
 26                                                    26 
 27 install_linux_image () {                       !!  27 create_package() {
 28         pname=$1                               !!  28         local pname="$1" pdir="$2"
 29         pdir=debian/$1                         !!  29         local dpkg_deb_opts
 30                                                !!  30 
 31         # Only some architectures with OF supp !!  31         mkdir -m 755 -p "$pdir/DEBIAN"
 32         if is_enabled CONFIG_OF_EARLY_FLATTREE !!  32         mkdir -p "$pdir/usr/share/doc/$pname"
 33                 ${MAKE} -f ${srctree}/Makefile !!  33         cp debian/copyright "$pdir/usr/share/doc/$pname/"
                                                   >>  34         cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
                                                   >>  35         gzip -n -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
                                                   >>  36         sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
                                                   >>  37                 | xargs -r0 md5sum > DEBIAN/md5sums"
                                                   >>  38 
                                                   >>  39         # Fix ownership and permissions
                                                   >>  40         if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
                                                   >>  41                 dpkg_deb_opts="--root-owner-group"
                                                   >>  42         else
                                                   >>  43                 chown -R root:root "$pdir"
 34         fi                                         44         fi
                                                   >>  45         chmod -R go-w "$pdir"
                                                   >>  46         # in case we are in a restrictive umask environment like 0077
                                                   >>  47         chmod -R a+rX "$pdir"
                                                   >>  48         # in case we build in a setuid/setgid directory
                                                   >>  49         chmod -R ug-s "$pdir"
                                                   >>  50 
                                                   >>  51         # Create the package
                                                   >>  52         dpkg-gencontrol -p$pname -P"$pdir"
                                                   >>  53         dpkg-deb $dpkg_deb_opts ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" ..
                                                   >>  54 }
                                                   >>  55 
                                                   >>  56 deploy_kernel_headers () {
                                                   >>  57         pdir=$1
                                                   >>  58 
                                                   >>  59         rm -rf $pdir
                                                   >>  60 
                                                   >>  61         (
                                                   >>  62                 cd $srctree
                                                   >>  63                 find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
                                                   >>  64                 find include scripts -type f -o -type l
                                                   >>  65                 find arch/$SRCARCH -name Kbuild.platforms -o -name Platform
                                                   >>  66                 find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
                                                   >>  67         ) > debian/hdrsrcfiles
                                                   >>  68 
                                                   >>  69         {
                                                   >>  70                 if is_enabled CONFIG_STACK_VALIDATION; then
                                                   >>  71                         echo tools/objtool/objtool
                                                   >>  72                 fi
                                                   >>  73 
                                                   >>  74                 find arch/$SRCARCH/include Module.symvers include scripts -type f
                                                   >>  75 
                                                   >>  76                 if is_enabled CONFIG_GCC_PLUGINS; then
                                                   >>  77                         find scripts/gcc-plugins -name \*.so
                                                   >>  78                 fi
                                                   >>  79         } > debian/hdrobjfiles
                                                   >>  80 
                                                   >>  81         destdir=$pdir/usr/src/linux-headers-$version
                                                   >>  82         mkdir -p $destdir
                                                   >>  83         tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
                                                   >>  84         tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
                                                   >>  85         rm -f debian/hdrsrcfiles debian/hdrobjfiles
 35                                                    86 
 36         ${MAKE} -f ${srctree}/Makefile INSTALL !!  87         # copy .config manually to be where it's expected to be
 37         rm -f "${pdir}/lib/modules/${KERNELREL !!  88         cp $KCONFIG_CONFIG $destdir/.config
 38                                                    89 
 39         # Install the kernel                   !!  90         mkdir -p $pdir/lib/modules/$version/
 40         if [ "${ARCH}" = um ] ; then           !!  91         ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
 41                 mkdir -p "${pdir}/usr/lib/uml/ << 
 42                 mv "${pdir}/lib/modules/${KERN << 
 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                                     << 
 52                                                << 
 53         # Not all arches have the same install << 
 54         # XXX: have each arch Makefile export  << 
 55         # path instead                         << 
 56         case "${SRCARCH}" in                   << 
 57         um)                                    << 
 58                 installed_image_path="usr/bin/ << 
 59         parisc|mips|powerpc)                   << 
 60                 installed_image_path="boot/vml << 
 61         *)                                     << 
 62                 installed_image_path="boot/vml << 
 63         esac                                   << 
 64         cp "$(${MAKE} -s -f ${srctree}/Makefil << 
 65                                                << 
 66         # Install the maintainer scripts       << 
 67         # Note: hook scripts under /etc/kernel << 
 68         # kernel packages, as well as kernel p << 
 69         # make-kpkg sets $INITRD to indicate w << 
 70         # so do we; recent versions of dracut  << 
 71         debhookdir=${KDEB_HOOKDIR:-/etc/kernel << 
 72         for script in postinst postrm preinst  << 
 73                 mkdir -p "${pdir}${debhookdir} << 
 74                                                << 
 75                 mkdir -p "${pdir}/DEBIAN"      << 
 76                 cat <<-EOF > "${pdir}/DEBIAN/$ << 
 77                 #!/bin/sh                      << 
 78                                                << 
 79                 set -e                         << 
 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 }                                                  92 }
 93                                                    93 
 94 install_linux_image_dbg () {                   !!  94 deploy_libc_headers () {
 95         pdir=debian/$1                         !!  95         pdir=$1
 96                                                    96 
 97         # Parse modules.order directly because !!  97         rm -rf $pdir
 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                                                    98 
110         # Build debug package                  !!  99         $MAKE -f $srctree/Makefile headers
111         # Different tools want the image in di !! 100         $MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH=$pdir/usr
112         # perf                                 << 
113         mkdir -p ${pdir}/usr/lib/debug/lib/mod << 
114         cp vmlinux ${pdir}/usr/lib/debug/lib/m << 
115         # systemtap                            << 
116         mkdir -p ${pdir}/usr/lib/debug/boot/   << 
117         ln -s ../lib/modules/${KERNELRELEASE}/ << 
118         # kdump-tools                          << 
119         ln -s lib/modules/${KERNELRELEASE}/vml << 
120 }                                              << 
121                                                   101 
122 install_kernel_headers () {                    !! 102         # move asm headers to /usr/include/<libc-machine>/asm to match the structure
123         pdir=debian/$1                         !! 103         # used by Debian-based distros (to support multi-arch)
124         version=${1#linux-headers-}            !! 104         host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH)
                                                   >> 105         mkdir $pdir/usr/include/$host_arch
                                                   >> 106         mv $pdir/usr/include/asm $pdir/usr/include/$host_arch/
                                                   >> 107 }
                                                   >> 108 
                                                   >> 109 version=$KERNELRELEASE
                                                   >> 110 tmpdir=debian/linux-image
                                                   >> 111 dbg_dir=debian/linux-image-dbg
                                                   >> 112 packagename=linux-image-$version
                                                   >> 113 dbg_packagename=$packagename-dbg
                                                   >> 114 
                                                   >> 115 if [ "$ARCH" = "um" ] ; then
                                                   >> 116         packagename=user-mode-linux-$version
                                                   >> 117 fi
                                                   >> 118 
                                                   >> 119 # Not all arches have the same installed path in debian
                                                   >> 120 # XXX: have each arch Makefile export a variable of the canonical image install
                                                   >> 121 # path instead
                                                   >> 122 case $ARCH in
                                                   >> 123 um)
                                                   >> 124         installed_image_path="usr/bin/linux-$version"
                                                   >> 125         ;;
                                                   >> 126 parisc|mips|powerpc)
                                                   >> 127         installed_image_path="boot/vmlinux-$version"
                                                   >> 128         ;;
                                                   >> 129 *)
                                                   >> 130         installed_image_path="boot/vmlinuz-$version"
                                                   >> 131 esac
125                                                   132 
126         CC="${DEB_HOST_GNU_TYPE}-gcc" "${srctr !! 133 BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes)
127                                                   134 
128         mkdir -p $pdir/lib/modules/$version/   !! 135 # Setup the directory structure
129         ln -s /usr/src/linux-headers-$version  !! 136 rm -rf "$tmpdir" "$dbg_dir" debian/files
130 }                                              !! 137 mkdir -m 755 -p "$tmpdir/DEBIAN"
                                                   >> 138 mkdir -p "$tmpdir/lib" "$tmpdir/boot"
                                                   >> 139 
                                                   >> 140 # Install the kernel
                                                   >> 141 if [ "$ARCH" = "um" ] ; then
                                                   >> 142         mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
                                                   >> 143         cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
                                                   >> 144         cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
                                                   >> 145         gzip "$tmpdir/usr/share/doc/$packagename/config"
                                                   >> 146 else
                                                   >> 147         cp System.map "$tmpdir/boot/System.map-$version"
                                                   >> 148         cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
                                                   >> 149 fi
                                                   >> 150 cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path"
131                                                   151 
132 install_libc_headers () {                      !! 152 if is_enabled CONFIG_OF_EARLY_FLATTREE; then
133         pdir=debian/$1                         !! 153         # Only some architectures with OF support have this target
                                                   >> 154         if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then
                                                   >> 155                 $MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
                                                   >> 156         fi
                                                   >> 157 fi
134                                                   158 
135         $MAKE -f $srctree/Makefile headers_ins !! 159 if is_enabled CONFIG_MODULES; then
                                                   >> 160         INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install
                                                   >> 161         rm -f "$tmpdir/lib/modules/$version/build"
                                                   >> 162         rm -f "$tmpdir/lib/modules/$version/source"
                                                   >> 163         if [ "$ARCH" = "um" ] ; then
                                                   >> 164                 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
                                                   >> 165                 rmdir "$tmpdir/lib/modules/$version"
                                                   >> 166         fi
                                                   >> 167         if [ -n "$BUILD_DEBUG" ] ; then
                                                   >> 168                 for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
                                                   >> 169                         module=lib/modules/$module
                                                   >> 170                         mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
                                                   >> 171                         # only keep debug symbols in the debug file
                                                   >> 172                         $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
                                                   >> 173                         # strip original module from debug symbols
                                                   >> 174                         $OBJCOPY --strip-debug $tmpdir/$module
                                                   >> 175                         # then add a link to those
                                                   >> 176                         $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
                                                   >> 177                 done
                                                   >> 178 
                                                   >> 179                 # resign stripped modules
                                                   >> 180                 if is_enabled CONFIG_MODULE_SIG_ALL; then
                                                   >> 181                         INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign
                                                   >> 182                 fi
                                                   >> 183         fi
                                                   >> 184 fi
136                                                   185 
137         # move asm headers to /usr/include/<li !! 186 # Install the maintainer scripts
138         # used by Debian-based distros (to sup !! 187 # Note: hook scripts under /etc/kernel are also executed by official Debian
139         mkdir "$pdir/usr/include/${DEB_HOST_MU !! 188 # kernel packages, as well as kernel packages built using make-kpkg.
140         mv "$pdir/usr/include/asm" "$pdir/usr/ !! 189 # make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
141 }                                              !! 190 # so do we; recent versions of dracut and initramfs-tools will obey this.
                                                   >> 191 debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
                                                   >> 192 for script in postinst postrm preinst prerm ; do
                                                   >> 193         mkdir -p "$tmpdir$debhookdir/$script.d"
                                                   >> 194         cat <<EOF > "$tmpdir/DEBIAN/$script"
                                                   >> 195 #!/bin/sh
                                                   >> 196 
                                                   >> 197 set -e
                                                   >> 198 
                                                   >> 199 # Pass maintainer script parameters to hook scripts
                                                   >> 200 export DEB_MAINT_PARAMS="\$*"
                                                   >> 201 
                                                   >> 202 # Tell initramfs builder whether it's wanted
                                                   >> 203 export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
                                                   >> 204 
                                                   >> 205 test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
                                                   >> 206 exit 0
                                                   >> 207 EOF
                                                   >> 208         chmod 755 "$tmpdir/DEBIAN/$script"
                                                   >> 209 done
                                                   >> 210 
                                                   >> 211 if [ "$ARCH" != "um" ]; then
                                                   >> 212         if is_enabled CONFIG_MODULES; then
                                                   >> 213                 deploy_kernel_headers debian/linux-headers
                                                   >> 214                 create_package linux-headers-$version debian/linux-headers
                                                   >> 215         fi
142                                                   216 
143 package=$1                                     !! 217         deploy_libc_headers debian/linux-libc-dev
                                                   >> 218         create_package linux-libc-dev debian/linux-libc-dev
                                                   >> 219 fi
144                                                   220 
145 case "${package}" in                           !! 221 create_package "$packagename" "$tmpdir"
146 *-dbg)                                         !! 222 
147         install_linux_image_dbg "${package}";; !! 223 if [ -n "$BUILD_DEBUG" ] ; then
148 linux-image-*|user-mode-linux-*)               !! 224         # Build debug package
149         install_linux_image "${package}";;     !! 225         # Different tools want the image in different locations
150 linux-libc-dev)                                !! 226         # perf
151         install_libc_headers "${package}";;    !! 227         mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
152 linux-headers-*)                               !! 228         cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
153         install_kernel_headers "${package}";;  !! 229         # systemtap
154 esac                                           !! 230         mkdir -p $dbg_dir/usr/lib/debug/boot/
                                                   >> 231         ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
                                                   >> 232         # kdump-tools
                                                   >> 233         ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
                                                   >> 234         create_package "$dbg_packagename" "$dbg_dir"
                                                   >> 235 fi
                                                   >> 236 
                                                   >> 237 exit 0
                                                      

~ [ 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