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

TOMOYO Linux Cross Reference
Linux/scripts/package/mkdebian

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

  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 host_gnu=$(dpkg-architecture -a "${debarch}" -q DEB_HOST_GNU_TYPE | sed 's/_/-/g')
183 
184 # Generate a simple changelog template
185 cat <<EOF > debian/changelog
186 $sourcename ($packageversion) $distribution; urgency=low
187 
188   * Custom built Linux kernel.
189 
190  -- $maintainer  $(date -R)
191 EOF
192 
193 # Generate a control file
194 cat <<EOF > debian/control
195 Source: $sourcename
196 Section: kernel
197 Priority: optional
198 Maintainer: $maintainer
199 Rules-Requires-Root: no
200 Build-Depends: debhelper-compat (= 12)
201 Build-Depends-Arch: bc, bison, cpio, flex,
202  gcc-${host_gnu} <!pkg.${sourcename}.nokernelheaders>,
203  kmod, libelf-dev:native,
204  libssl-dev:native, libssl-dev <!pkg.${sourcename}.nokernelheaders>,
205  rsync
206 Homepage: https://www.kernel.org/
207 
208 Package: $packagename-$version
209 Architecture: $debarch
210 Description: Linux kernel, version $version
211  This package contains the Linux kernel, modules and corresponding other
212  files, version: $version.
213 EOF
214 
215 if [ "${SRCARCH}" != um ]; then
216 cat <<EOF >> debian/control
217 
218 Package: linux-libc-dev
219 Section: devel
220 Provides: linux-kernel-headers
221 Architecture: $debarch
222 Description: Linux support headers for userspace development
223  This package provides userspaces headers from the Linux kernel.  These headers
224  are used by the installed headers for GNU glibc and other system libraries.
225 Multi-Arch: same
226 EOF
227 
228 if is_enabled CONFIG_MODULES; then
229 cat <<EOF >> debian/control
230 
231 Package: linux-headers-$version
232 Architecture: $debarch
233 Build-Profiles: <!pkg.${sourcename}.nokernelheaders>
234 Description: Linux kernel headers for $version on $debarch
235  This package provides kernel header files for $version on $debarch
236  .
237  This is useful for people who need to build external modules
238 EOF
239 fi
240 fi
241 
242 if is_enabled CONFIG_DEBUG_INFO; then
243 cat <<EOF >> debian/control
244 
245 Package: linux-image-$version-dbg
246 Section: debug
247 Architecture: $debarch
248 Build-Profiles: <!pkg.${sourcename}.nokerneldbg>
249 Description: Linux kernel debugging symbols for $version
250  This package will come in handy if you need to debug the kernel. It provides
251  all the necessary debug symbols for the kernel and its modules.
252 EOF
253 fi
254 
255 cat <<EOF > debian/rules.vars
256 ARCH := ${ARCH}
257 KERNELRELEASE := ${KERNELRELEASE}
258 EOF
259 
260 cp "${srctree}/scripts/package/debian/copyright" debian/
261 cp "${srctree}/scripts/package/debian/rules" debian/
262 
263 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