Merge tag 'soc-ep93xx-dt-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-block.git] / scripts / package / mkdebian
CommitLineData
b41d920a
RV
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
c0414419 7set -eu
b41d920a 8
08d3892c 9is_enabled() {
6fb7ef5a 10 grep -q "^$1=y" include/config/auto.conf
08d3892c
BH
11}
12
13if_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
b41d920a 21set_debarch() {
c0414419 22 if [ "${KBUILD_DEBARCH:+set}" ]; then
f2abcc13
BH
23 debarch="$KBUILD_DEBARCH"
24 return
25 fi
26
b41d920a
RV
27 # Attempt to find the correct Debian architecture
28 case "$UTS_MACHINE" in
0df8e970 29 i386|alpha|m68k|riscv*)
b41d920a
RV
30 debarch="$UTS_MACHINE" ;;
31 x86_64)
32 debarch=amd64 ;;
33 sparc*)
7e548e9a 34 debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;;
b41d920a 35 s390*)
4260ecd0 36 debarch=s390x ;;
b41d920a 37 ppc*)
7e548e9a
MY
38 if is_enabled CONFIG_64BIT; then
39 debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el)
50d511ba 40 else
7e548e9a 41 debarch=powerpc$(if_enabled_echo CONFIG_SPE spe)
50d511ba
BH
42 fi
43 ;;
b41d920a
RV
44 parisc*)
45 debarch=hppa ;;
46 mips*)
7e548e9a
MY
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
159b3794
BH
51 else
52 debarch=mips
53 fi
54 ;;
b41d920a
RV
55 aarch64|arm64)
56 debarch=arm64 ;;
57 arm*)
7e548e9a
MY
58 if is_enabled CONFIG_AEABI; then
59 debarch=arm$(if_enabled_echo CONFIG_VFP hf el)
b41d920a 60 else
08d3892c 61 debarch=arm
b41d920a
RV
62 fi
63 ;;
822f44fb
BH
64 openrisc)
65 debarch=or1k ;;
79a85b55 66 sh)
7e548e9a
MY
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)
79a85b55
BH
71 fi
72 ;;
73 esac
74 if [ -z "$debarch" ]; then
091d30ae 75 debarch=$(dpkg-architecture -qDEB_HOST_ARCH)
b41d920a
RV
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
091d30ae 81 echo "Falling back to the current host architecture ($debarch)." >&2
b41d920a
RV
82 echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
83 echo "" >&2
79a85b55 84 fi
b41d920a
RV
85}
86
aa7d233f
MY
87# Create debian/source/ if it is a source package build
88gen_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
7bf4582d 125rm -rf debian
aa7d233f
MY
126mkdir debian
127
d67015ee
MY
128user=${KBUILD_BUILD_USER:-$(id -nu)}
129name=${DEBFULLNAME:-${user}}
c5209080
MY
130if [ "${DEBEMAIL:+set}" ]; then
131 email=${DEBEMAIL}
aa7d233f 132else
d67015ee 133 buildhost=${KBUILD_BUILD_HOST:-$(hostname -f 2>/dev/null || hostname)}
c5209080 134 email="${user}@${buildhost}"
aa7d233f 135fi
c5209080 136maintainer="${name} <${email}>"
aa7d233f 137
c0414419
MY
138while [ $# -gt 0 ]; do
139 case "$1" in
140 --need-source)
141 gen_source
142 shift
143 ;;
144 *)
145 break
146 ;;
147 esac
148done
7bf4582d 149
b41d920a
RV
150# Some variables and settings used throughout the script
151version=$KERNELRELEASE
c0414419 152if [ "${KDEB_PKGVERSION:+set}" ]; then
b41d920a
RV
153 packageversion=$KDEB_PKGVERSION
154else
ae4c4cee 155 packageversion=$(${srctree}/scripts/setlocalversion --no-local ${srctree})-$($srctree/scripts/build-version)
b41d920a 156fi
6eabebb1 157sourcename=${KDEB_SOURCENAME:-linux-upstream}
b41d920a
RV
158
159if [ "$ARCH" = "um" ] ; then
0fa21cf4
MY
160 packagename=user-mode-linux
161else
162 packagename=linux-image
b41d920a
RV
163fi
164
0fa21cf4
MY
165debarch=
166set_debarch
167
b41d920a 168# Try to determine distribution
c0414419 169if [ "${KDEB_CHANGELOG_DIST:+set}" ]; then
b41d920a
RV
170 distribution=$KDEB_CHANGELOG_DIST
171# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
172elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
173 : # nothing to do in this case
174else
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"
178fi
179
b41d920a
RV
180echo $debarch > debian/arch
181
182# Generate a simple changelog template
183cat <<EOF > debian/changelog
184$sourcename ($packageversion) $distribution; urgency=low
185
186 * Custom built Linux kernel.
187
188 -- $maintainer $(date -R)
189EOF
190
b41d920a
RV
191# Generate a control file
192cat <<EOF > debian/control
193Source: $sourcename
194Section: kernel
195Priority: optional
196Maintainer: $maintainer
3e854180 197Rules-Requires-Root: no
5e73758b 198Build-Depends: debhelper-compat (= 12)
b88365b6 199Build-Depends-Arch: bc, bison, cpio, flex, kmod, libelf-dev:native, libssl-dev:native, rsync
16a122c7 200Homepage: https://www.kernel.org/
b41d920a 201
0fa21cf4 202Package: $packagename-$version
b41d920a
RV
203Architecture: $debarch
204Description: Linux kernel, version $version
205 This package contains the Linux kernel, modules and corresponding other
206 files, version: $version.
36862e14
MY
207EOF
208
209if [ "${SRCARCH}" != um ]; then
210cat <<EOF >> debian/control
b41d920a 211
b41d920a
RV
212Package: linux-libc-dev
213Section: devel
214Provides: linux-kernel-headers
215Architecture: $debarch
216Description: 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.
5a464217 219Multi-Arch: same
d9dac147
RK
220EOF
221
bac977cb
MY
222if is_enabled CONFIG_MODULES; then
223cat <<EOF >> debian/control
224
0fa21cf4 225Package: linux-headers-$version
bac977cb
MY
226Architecture: $debarch
227Description: 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
231EOF
232fi
36862e14 233fi
bac977cb 234
d9dac147
RK
235if is_enabled CONFIG_DEBUG_INFO; then
236cat <<EOF >> debian/control
b41d920a 237
0fa21cf4 238Package: linux-image-$version-dbg
b41d920a
RV
239Section: debug
240Architecture: $debarch
241Description: 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.
244EOF
d9dac147 245fi
b41d920a 246
d9287ea8
MY
247cat <<EOF > debian/rules.vars
248ARCH := ${ARCH}
249KERNELRELEASE := ${KERNELRELEASE}
b41d920a 250EOF
d9287ea8 251
9c65810c 252cp "${srctree}/scripts/package/debian/copyright" debian/
d9287ea8 253cp "${srctree}/scripts/package/debian/rules" debian/
b41d920a
RV
254
255exit 0