Merge tag 'sound-fix-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[linux-2.6-microblaze.git] / scripts / package / mkdebian
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 -e
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 [ -n "$KBUILD_DEBARCH" ] ; 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 email=${DEBEMAIL-$EMAIL}
129
130 # use email string directly if it contains <email>
131 if echo "${email}" | grep -q '<.*>'; then
132         maintainer=${email}
133 else
134         # or construct the maintainer string
135         user=${KBUILD_BUILD_USER-$(id -nu)}
136         name=${DEBFULLNAME-${user}}
137         if [ -z "${email}" ]; then
138                 buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)}
139                 email="${user}@${buildhost}"
140         fi
141         maintainer="${name} <${email}>"
142 fi
143
144 if [ "$1" = --need-source ]; then
145         gen_source
146 fi
147
148 # Some variables and settings used throughout the script
149 version=$KERNELRELEASE
150 if [ -n "$KDEB_PKGVERSION" ]; then
151         packageversion=$KDEB_PKGVERSION
152 else
153         packageversion=$(${srctree}/scripts/setlocalversion --no-local ${srctree})-$($srctree/init/build-version)
154 fi
155 sourcename=${KDEB_SOURCENAME:-linux-upstream}
156
157 if [ "$ARCH" = "um" ] ; then
158         packagename=user-mode-linux
159 else
160         packagename=linux-image
161 fi
162
163 debarch=
164 set_debarch
165
166 # Try to determine distribution
167 if [ -n "$KDEB_CHANGELOG_DIST" ]; then
168         distribution=$KDEB_CHANGELOG_DIST
169 # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
170 elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
171         : # nothing to do in this case
172 else
173         distribution="unstable"
174         echo >&2 "Using default distribution of 'unstable' in the changelog"
175         echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
176 fi
177
178 echo $debarch > debian/arch
179
180 # Generate a simple changelog template
181 cat <<EOF > debian/changelog
182 $sourcename ($packageversion) $distribution; urgency=low
183
184   * Custom built Linux kernel.
185
186  -- $maintainer  $(date -R)
187 EOF
188
189 # Generate a control file
190 cat <<EOF > debian/control
191 Source: $sourcename
192 Section: kernel
193 Priority: optional
194 Maintainer: $maintainer
195 Rules-Requires-Root: no
196 Build-Depends: debhelper-compat (= 12)
197 Build-Depends-Arch: bc, bison, cpio, flex, kmod, libelf-dev:native, libssl-dev:native, rsync
198 Homepage: https://www.kernel.org/
199
200 Package: $packagename-$version
201 Architecture: $debarch
202 Description: Linux kernel, version $version
203  This package contains the Linux kernel, modules and corresponding other
204  files, version: $version.
205 EOF
206
207 if [ "${SRCARCH}" != um ]; then
208 cat <<EOF >> debian/control
209
210 Package: linux-libc-dev
211 Section: devel
212 Provides: linux-kernel-headers
213 Architecture: $debarch
214 Description: Linux support headers for userspace development
215  This package provides userspaces headers from the Linux kernel.  These headers
216  are used by the installed headers for GNU glibc and other system libraries.
217 Multi-Arch: same
218 EOF
219
220 if is_enabled CONFIG_MODULES; then
221 cat <<EOF >> debian/control
222
223 Package: linux-headers-$version
224 Architecture: $debarch
225 Description: Linux kernel headers for $version on $debarch
226  This package provides kernel header files for $version on $debarch
227  .
228  This is useful for people who need to build external modules
229 EOF
230 fi
231 fi
232
233 if is_enabled CONFIG_DEBUG_INFO; then
234 cat <<EOF >> debian/control
235
236 Package: linux-image-$version-dbg
237 Section: debug
238 Architecture: $debarch
239 Description: Linux kernel debugging symbols for $version
240  This package will come in handy if you need to debug the kernel. It provides
241  all the necessary debug symbols for the kernel and its modules.
242 EOF
243 fi
244
245 cat <<EOF > debian/rules.vars
246 ARCH := ${ARCH}
247 KERNELRELEASE := ${KERNELRELEASE}
248 EOF
249
250 cp "${srctree}/scripts/package/debian/copyright" debian/
251 cp "${srctree}/scripts/package/debian/rules" debian/
252
253 exit 0