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

TOMOYO Linux Cross Reference
Linux/scripts/package/mkdebian

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ 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.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/sh
  2 #
  3 # Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
  4 #
  5 # Simple script to generate a debian/ directory for a Linux kernel.
  6 
  7 set -eu
  8 
  9 is_enabled() {
 10         grep -q "^$1=y" include/config/auto.conf
 11 }
 12 
 13 if_enabled_echo() {
 14         if is_enabled "$1"; then
 15                 echo -n "$2"
 16         elif [ $# -ge 3 ]; then
 17                 echo -n "$3"
 18         fi
 19 }
 20 
 21 set_debarch() {
 22         if [ "${KBUILD_DEBARCH:+set}" ]; then
 23                 debarch="$KBUILD_DEBARCH"
 24                 return
 25         fi
 26 
 27         # Attempt to find the correct Debian architecture
 28         case "$UTS_MACHINE" in
 29         i386|alpha|m68k|riscv*)
 30                 debarch="$UTS_MACHINE" ;;
 31         x86_64)
 32                 debarch=amd64 ;;
 33         sparc*)
 34                 debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;;
 35         s390*)
 36                 debarch=s390x ;;
 37         ppc*)
 38                 if is_enabled CONFIG_64BIT; then
 39                         debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el)
 40                 else
 41                         debarch=powerpc$(if_enabled_echo CONFIG_SPE spe)
 42                 fi
 43                 ;;
 44         parisc*)
 45                 debarch=hppa ;;
 46         mips*)
 47                 if is_enabled CONFIG_CPU_LITTLE_ENDIAN; then
 48                         debarch=mips$(if_enabled_echo CONFIG_64BIT 64)$(if_enabled_echo CONFIG_CPU_MIPSR6 r6)el
 49                 elif is_enabled CONFIG_CPU_MIPSR6; then
 50                         debarch=mips$(if_enabled_echo CONFIG_64BIT 64)r6
 51                 else
 52                         debarch=mips
 53                 fi
 54                 ;;
 55         aarch64|arm64)
 56                 debarch=arm64 ;;
 57         arm*)
 58                 if is_enabled CONFIG_AEABI; then
 59                         debarch=arm$(if_enabled_echo CONFIG_VFP hf el)
 60                 else
 61                         debarch=arm
 62                 fi
 63                 ;;
 64         openrisc)
 65                 debarch=or1k ;;
 66         sh)
 67                 if is_enabled CONFIG_CPU_SH3; then
 68                         debarch=sh3$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
 69                 elif is_enabled CONFIG_CPU_SH4; then
 70                         debarch=sh4$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
 71                 fi
 72                 ;;
 73         esac
 74         if [ -z "$debarch" ]; then
 75                 debarch=$(dpkg-architecture -qDEB_HOST_ARCH)
 76                 echo "" >&2
 77                 echo "** ** **  WARNING  ** ** **" >&2
 78                 echo "" >&2
 79                 echo "Your architecture doesn't have its equivalent" >&2
 80                 echo "Debian userspace architecture defined!" >&2
 81                 echo "Falling back to the current host architecture ($debarch)." >&2
 82                 echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
 83                 echo "" >&2
 84         fi
 85 }
 86 
 87 # Create debian/source/ if it is a source package build
 88 gen_source ()
 89 {
 90         mkdir -p debian/source
 91 
 92         echo "3.0 (quilt)" > debian/source/format
 93 
 94         {
 95                 echo "diff-ignore"
 96                 echo "extend-diff-ignore = .*"
 97         } > debian/source/local-options
 98 
 99         # Add .config as a patch
100         mkdir -p debian/patches
101         {
102                 echo "Subject: Add .config"
103                 echo "Author: ${maintainer}"
104                 echo
105                 echo "--- /dev/null"
106                 echo "+++ linux/.config"
107                 diff -u /dev/null "${KCONFIG_CONFIG}" | tail -n +3
108         } > debian/patches/config.patch
109         echo config.patch > debian/patches/series
110 
111         "${srctree}/scripts/package/gen-diff-patch" debian/patches/diff.patch
112         if [ -s debian/patches/diff.patch ]; then
113                 sed -i "
114                         1iSubject: Add local diff
115                         1iAuthor: ${maintainer}
116                         1i
117                 " debian/patches/diff.patch
118 
119                 echo diff.patch >> debian/patches/series
120         else
121                 rm -f debian/patches/diff.patch
122         fi
123 }
124 
125 rm -rf debian
126 mkdir debian
127 
128 user=${KBUILD_BUILD_USER:-$(id -nu)}
129 name=${DEBFULLNAME:-${user}}
130 if [ "${DEBEMAIL:+set}" ]; then
131         email=${DEBEMAIL}
132 else
133         buildhost=${KBUILD_BUILD_HOST:-$(hostname -f 2>/dev/null || hostname)}
134         email="${user}@${buildhost}"
135 fi
136 maintainer="${name} <${email}>"
137 
138 while [ $# -gt 0 ]; do
139         case "$1" in
140         --need-source)
141                 gen_source
142                 shift
143                 ;;
144         *)
145                 break
146                 ;;
147         esac
148 done
149 
150 # Some variables and settings used throughout the script
151 version=$KERNELRELEASE
152 if [ "${KDEB_PKGVERSION:+set}" ]; then
153         packageversion=$KDEB_PKGVERSION
154 else
155         packageversion=$(${srctree}/scripts/setlocalversion --no-local ${srctree})-$($srctree/scripts/build-version)
156 fi
157 sourcename=${KDEB_SOURCENAME:-linux-upstream}
158 
159 if [ "$ARCH" = "um" ] ; then
160         packagename=user-mode-linux
161 else
162         packagename=linux-image
163 fi
164 
165 debarch=
166 set_debarch
167 
168 # Try to determine distribution
169 if [ "${KDEB_CHANGELOG_DIST:+set}" ]; then
170         distribution=$KDEB_CHANGELOG_DIST
171 # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
172 elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
173         : # nothing to do in this case
174 else
175         distribution="unstable"
176         echo >&2 "Using default distribution of 'unstable' in the changelog"
177         echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
178 fi
179 
180 echo $debarch > debian/arch
181 
182 # Generate a simple changelog template
183 cat <<EOF > debian/changelog
184 $sourcename ($packageversion) $distribution; urgency=low
185 
186   * Custom built Linux kernel.
187 
188  -- $maintainer  $(date -R)
189 EOF
190 
191 # Generate a control file
192 cat <<EOF > debian/control
193 Source: $sourcename
194 Section: kernel
195 Priority: optional
196 Maintainer: $maintainer
197 Rules-Requires-Root: no
198 Build-Depends: debhelper-compat (= 12)
199 Build-Depends-Arch: bc, bison, cpio, flex, kmod, libelf-dev:native, libssl-dev:native, rsync
200 Homepage: https://www.kernel.org/
201 
202 Package: $packagename-$version
203 Architecture: $debarch
204 Description: Linux kernel, version $version
205  This package contains the Linux kernel, modules and corresponding other
206  files, version: $version.
207 EOF
208 
209 if [ "${SRCARCH}" != um ]; then
210 cat <<EOF >> debian/control
211 
212 Package: linux-libc-dev
213 Section: devel
214 Provides: linux-kernel-headers
215 Architecture: $debarch
216 Description: Linux support headers for userspace development
217  This package provides userspaces headers from the Linux kernel.  These headers
218  are used by the installed headers for GNU glibc and other system libraries.
219 Multi-Arch: same
220 EOF
221 
222 if is_enabled CONFIG_MODULES; then
223 cat <<EOF >> debian/control
224 
225 Package: linux-headers-$version
226 Architecture: $debarch
227 Description: Linux kernel headers for $version on $debarch
228  This package provides kernel header files for $version on $debarch
229  .
230  This is useful for people who need to build external modules
231 EOF
232 fi
233 fi
234 
235 if is_enabled CONFIG_DEBUG_INFO; then
236 cat <<EOF >> debian/control
237 
238 Package: linux-image-$version-dbg
239 Section: debug
240 Architecture: $debarch
241 Description: Linux kernel debugging symbols for $version
242  This package will come in handy if you need to debug the kernel. It provides
243  all the necessary debug symbols for the kernel and its modules.
244 EOF
245 fi
246 
247 cat <<EOF > debian/rules.vars
248 ARCH := ${ARCH}
249 KERNELRELEASE := ${KERNELRELEASE}
250 EOF
251 
252 cp "${srctree}/scripts/package/debian/copyright" debian/
253 cp "${srctree}/scripts/package/debian/rules" debian/
254 
255 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