diff options
author | Riku Voipio <riku.voipio@linaro.org> | 2018-04-05 07:22:29 -0400 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-04-07 06:04:02 -0400 |
commit | b41d920acff8305b8a25a183a8e4d41b8975097d (patch) | |
tree | ea8cebd8e42c7c85ecaea7154f91f34f5adffa4a /scripts | |
parent | a73619a845d5625079cc1b3b820f44c899618388 (diff) |
kbuild: deb-pkg: split generating packaging and build
Move debian/ directory generation out of builddeb to a new script,
mkdebian. The package build commands are kept in builddeb, which
is now an internal command called from debian/rules.
With these changes in place, we can now use dpkg-buildpackage from
deb-pkg and bindeb-pkg removing need for handrolled source/changes
generation.
This patch is based on the criticism of the current state of builddeb
discussed on:
https://patchwork.kernel.org/patch/9656403/
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/package/Makefile | 34 | ||||
-rwxr-xr-x | scripts/package/builddeb | 221 | ||||
-rwxr-xr-x | scripts/package/mkdebian | 189 |
3 files changed, 200 insertions, 244 deletions
diff --git a/scripts/package/Makefile b/scripts/package/Makefile index 9fbcf5ed0ca7..73503ebce632 100644 --- a/scripts/package/Makefile +++ b/scripts/package/Makefile | |||
@@ -24,6 +24,7 @@ | |||
24 | # Remove hyphens since they have special meaning in RPM filenames | 24 | # Remove hyphens since they have special meaning in RPM filenames |
25 | KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE)) | 25 | KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE)) |
26 | KDEB_SOURCENAME ?= linux-$(KERNELRELEASE) | 26 | KDEB_SOURCENAME ?= linux-$(KERNELRELEASE) |
27 | KBUILD_PKG_ROOTCMD ?="fakeroot -u" | ||
27 | export KDEB_SOURCENAME | 28 | export KDEB_SOURCENAME |
28 | # Include only those top-level files that are needed by make, plus the GPL copy | 29 | # Include only those top-level files that are needed by make, plus the GPL copy |
29 | TAR_CONTENT := $(KBUILD_ALLDIRS) .config .scmversion Makefile \ | 30 | TAR_CONTENT := $(KBUILD_ALLDIRS) .config .scmversion Makefile \ |
@@ -66,35 +67,20 @@ binrpm-pkg: FORCE | |||
66 | 67 | ||
67 | clean-files += $(objtree)/*.spec | 68 | clean-files += $(objtree)/*.spec |
68 | 69 | ||
69 | # Deb target | ||
70 | # --------------------------------------------------------------------------- | ||
71 | quiet_cmd_builddeb = BUILDDEB | ||
72 | cmd_builddeb = set -e; \ | ||
73 | test `id -u` = 0 || \ | ||
74 | test -n "$(KBUILD_PKG_ROOTCMD)" || { \ | ||
75 | which fakeroot >/dev/null 2>&1 && \ | ||
76 | KBUILD_PKG_ROOTCMD="fakeroot -u"; \ | ||
77 | } || { \ | ||
78 | echo; \ | ||
79 | echo "builddeb must be run as root (or using fakeroot)."; \ | ||
80 | echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found."; \ | ||
81 | echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire"; \ | ||
82 | echo "root privileges (e.g., 'fakeroot -u' or 'sudo')."; \ | ||
83 | false; \ | ||
84 | } && \ | ||
85 | \ | ||
86 | $$KBUILD_PKG_ROOTCMD $(CONFIG_SHELL) \ | ||
87 | $(srctree)/scripts/package/builddeb $@ | ||
88 | |||
89 | deb-pkg: FORCE | 70 | deb-pkg: FORCE |
90 | $(MAKE) clean | 71 | $(MAKE) clean |
72 | $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian | ||
91 | $(call cmd,src_tar,$(KDEB_SOURCENAME)) | 73 | $(call cmd,src_tar,$(KDEB_SOURCENAME)) |
92 | $(MAKE) KBUILD_SRC= | 74 | origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\ |
93 | +$(call cmd,builddeb) | 75 | mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz |
76 | +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc | ||
94 | 77 | ||
95 | bindeb-pkg: FORCE | 78 | bindeb-pkg: FORCE |
96 | $(MAKE) KBUILD_SRC= | 79 | $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian |
97 | +$(call cmd,builddeb) | 80 | +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -b -nc -uc |
81 | |||
82 | intdeb-pkg: FORCE | ||
83 | +$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb | ||
98 | 84 | ||
99 | clean-dirs += $(objtree)/debian/ | 85 | clean-dirs += $(objtree)/debian/ |
100 | 86 | ||
diff --git a/scripts/package/builddeb b/scripts/package/builddeb index 13fabb1f81db..90c9a8ac7adb 100755 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb | |||
@@ -30,67 +30,11 @@ create_package() { | |||
30 | chmod -R a+rX "$pdir" | 30 | chmod -R a+rX "$pdir" |
31 | 31 | ||
32 | # Create the package | 32 | # Create the package |
33 | dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir" | 33 | dpkg-gencontrol -p$pname -P"$pdir" |
34 | dpkg --build "$pdir" .. | 34 | dpkg --build "$pdir" .. |
35 | } | 35 | } |
36 | 36 | ||
37 | set_debarch() { | ||
38 | # Attempt to find the correct Debian architecture | ||
39 | case "$UTS_MACHINE" in | ||
40 | i386|ia64|alpha) | ||
41 | debarch="$UTS_MACHINE" ;; | ||
42 | x86_64) | ||
43 | debarch=amd64 ;; | ||
44 | sparc*) | ||
45 | debarch=sparc ;; | ||
46 | s390*) | ||
47 | debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; | ||
48 | ppc*) | ||
49 | debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; | ||
50 | parisc*) | ||
51 | debarch=hppa ;; | ||
52 | mips*) | ||
53 | debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; | ||
54 | aarch64|arm64) | ||
55 | debarch=arm64 ;; | ||
56 | arm*) | ||
57 | if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then | ||
58 | if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then | ||
59 | debarch=armhf | ||
60 | else | ||
61 | debarch=armel | ||
62 | fi | ||
63 | else | ||
64 | debarch=arm | ||
65 | fi | ||
66 | ;; | ||
67 | *) | ||
68 | debarch=$(dpkg --print-architecture) | ||
69 | echo "" >&2 | ||
70 | echo "** ** ** WARNING ** ** **" >&2 | ||
71 | echo "" >&2 | ||
72 | echo "Your architecture doesn't have its equivalent" >&2 | ||
73 | echo "Debian userspace architecture defined!" >&2 | ||
74 | echo "Falling back to using your current userspace instead!" >&2 | ||
75 | echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 | ||
76 | echo "" >&2 | ||
77 | esac | ||
78 | if [ -n "$KBUILD_DEBARCH" ] ; then | ||
79 | debarch="$KBUILD_DEBARCH" | ||
80 | fi | ||
81 | forcearch="-DArchitecture=$debarch" | ||
82 | |||
83 | } | ||
84 | |||
85 | # Some variables and settings used throughout the script | ||
86 | version=$KERNELRELEASE | 37 | version=$KERNELRELEASE |
87 | revision=$(cat .version) | ||
88 | if [ -n "$KDEB_PKGVERSION" ]; then | ||
89 | packageversion=$KDEB_PKGVERSION | ||
90 | else | ||
91 | packageversion=$version-$revision | ||
92 | fi | ||
93 | sourcename=$KDEB_SOURCENAME | ||
94 | tmpdir="$objtree/debian/tmp" | 38 | tmpdir="$objtree/debian/tmp" |
95 | kernel_headers_dir="$objtree/debian/hdrtmp" | 39 | kernel_headers_dir="$objtree/debian/hdrtmp" |
96 | libc_headers_dir="$objtree/debian/headertmp" | 40 | libc_headers_dir="$objtree/debian/headertmp" |
@@ -99,9 +43,6 @@ packagename=linux-image-$version | |||
99 | kernel_headers_packagename=linux-headers-$version | 43 | kernel_headers_packagename=linux-headers-$version |
100 | libc_headers_packagename=linux-libc-dev | 44 | libc_headers_packagename=linux-libc-dev |
101 | dbg_packagename=$packagename-dbg | 45 | dbg_packagename=$packagename-dbg |
102 | debarch= | ||
103 | forcearch= | ||
104 | set_debarch | ||
105 | 46 | ||
106 | if [ "$ARCH" = "um" ] ; then | 47 | if [ "$ARCH" = "um" ] ; then |
107 | packagename=user-mode-linux-$version | 48 | packagename=user-mode-linux-$version |
@@ -212,105 +153,6 @@ EOF | |||
212 | chmod 755 "$tmpdir/DEBIAN/$script" | 153 | chmod 755 "$tmpdir/DEBIAN/$script" |
213 | done | 154 | done |
214 | 155 | ||
215 | # Try to determine maintainer and email values | ||
216 | if [ -n "$DEBEMAIL" ]; then | ||
217 | email=$DEBEMAIL | ||
218 | elif [ -n "$EMAIL" ]; then | ||
219 | email=$EMAIL | ||
220 | else | ||
221 | email=$(id -nu)@$(hostname -f 2>/dev/null || hostname) | ||
222 | fi | ||
223 | if [ -n "$DEBFULLNAME" ]; then | ||
224 | name=$DEBFULLNAME | ||
225 | elif [ -n "$NAME" ]; then | ||
226 | name=$NAME | ||
227 | else | ||
228 | name="Anonymous" | ||
229 | fi | ||
230 | maintainer="$name <$email>" | ||
231 | |||
232 | # Try to determine distribution | ||
233 | if [ -n "$KDEB_CHANGELOG_DIST" ]; then | ||
234 | distribution=$KDEB_CHANGELOG_DIST | ||
235 | # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog | ||
236 | elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then | ||
237 | : # nothing to do in this case | ||
238 | else | ||
239 | distribution="unstable" | ||
240 | echo >&2 "Using default distribution of 'unstable' in the changelog" | ||
241 | echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" | ||
242 | fi | ||
243 | |||
244 | # Generate a simple changelog template | ||
245 | cat <<EOF > debian/changelog | ||
246 | $sourcename ($packageversion) $distribution; urgency=low | ||
247 | |||
248 | * Custom built Linux kernel. | ||
249 | |||
250 | -- $maintainer $(date -R) | ||
251 | EOF | ||
252 | |||
253 | # Generate copyright file | ||
254 | cat <<EOF > debian/copyright | ||
255 | This is a packacked upstream version of the Linux kernel. | ||
256 | |||
257 | The sources may be found at most Linux archive sites, including: | ||
258 | https://www.kernel.org/pub/linux/kernel | ||
259 | |||
260 | Copyright: 1991 - 2017 Linus Torvalds and others. | ||
261 | |||
262 | The git repository for mainline kernel development is at: | ||
263 | git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | ||
264 | |||
265 | This program is free software; you can redistribute it and/or modify | ||
266 | it under the terms of the GNU General Public License as published by | ||
267 | the Free Software Foundation; version 2 dated June, 1991. | ||
268 | |||
269 | On Debian GNU/Linux systems, the complete text of the GNU General Public | ||
270 | License version 2 can be found in \`/usr/share/common-licenses/GPL-2'. | ||
271 | EOF | ||
272 | |||
273 | |||
274 | build_depends="bc, kmod, cpio " | ||
275 | |||
276 | # Generate a control file | ||
277 | cat <<EOF > debian/control | ||
278 | Source: $sourcename | ||
279 | Section: kernel | ||
280 | Priority: optional | ||
281 | Maintainer: $maintainer | ||
282 | Build-Depends: $build_depends | ||
283 | Homepage: http://www.kernel.org/ | ||
284 | EOF | ||
285 | |||
286 | if [ "$ARCH" = "um" ]; then | ||
287 | cat <<EOF >> debian/control | ||
288 | |||
289 | Package: $packagename | ||
290 | Architecture: any | ||
291 | Description: User Mode Linux kernel, version $version | ||
292 | User-mode Linux is a port of the Linux kernel to its own system call | ||
293 | interface. It provides a kind of virtual machine, which runs Linux | ||
294 | as a user process under another Linux kernel. This is useful for | ||
295 | kernel development, sandboxes, jails, experimentation, and | ||
296 | many other things. | ||
297 | . | ||
298 | This package contains the Linux kernel, modules and corresponding other | ||
299 | files, version: $version. | ||
300 | EOF | ||
301 | |||
302 | else | ||
303 | cat <<EOF >> debian/control | ||
304 | |||
305 | Package: $packagename | ||
306 | Architecture: any | ||
307 | Description: Linux kernel, version $version | ||
308 | This package contains the Linux kernel, modules and corresponding other | ||
309 | files, version: $version. | ||
310 | EOF | ||
311 | |||
312 | fi | ||
313 | |||
314 | # Build kernel header package | 156 | # Build kernel header package |
315 | (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" | 157 | (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" |
316 | (cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles" | 158 | (cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles" |
@@ -331,27 +173,6 @@ mkdir -p "$destdir" | |||
331 | ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" | 173 | ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" |
332 | rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" | 174 | rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" |
333 | 175 | ||
334 | cat <<EOF >> debian/control | ||
335 | |||
336 | Package: $kernel_headers_packagename | ||
337 | Architecture: any | ||
338 | Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} | ||
339 | This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} | ||
340 | . | ||
341 | This is useful for people who need to build external modules | ||
342 | EOF | ||
343 | |||
344 | cat <<EOF >> debian/control | ||
345 | |||
346 | Package: $libc_headers_packagename | ||
347 | Section: devel | ||
348 | Provides: linux-kernel-headers | ||
349 | Architecture: any | ||
350 | Description: Linux support headers for userspace development | ||
351 | This package provides userspaces headers from the Linux kernel. These headers | ||
352 | are used by the installed headers for GNU glibc and other system libraries. | ||
353 | EOF | ||
354 | |||
355 | if [ "$ARCH" != "um" ]; then | 176 | if [ "$ARCH" != "um" ]; then |
356 | create_package "$kernel_headers_packagename" "$kernel_headers_dir" | 177 | create_package "$kernel_headers_packagename" "$kernel_headers_dir" |
357 | create_package "$libc_headers_packagename" "$libc_headers_dir" | 178 | create_package "$libc_headers_packagename" "$libc_headers_dir" |
@@ -370,47 +191,7 @@ if [ -n "$BUILD_DEBUG" ] ; then | |||
370 | ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version | 191 | ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version |
371 | # kdump-tools | 192 | # kdump-tools |
372 | ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version | 193 | ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version |
373 | |||
374 | cat <<EOF >> debian/control | ||
375 | |||
376 | Package: $dbg_packagename | ||
377 | Section: debug | ||
378 | Architecture: any | ||
379 | Description: Linux kernel debugging symbols for $version | ||
380 | This package will come in handy if you need to debug the kernel. It provides | ||
381 | all the necessary debug symbols for the kernel and its modules. | ||
382 | EOF | ||
383 | |||
384 | create_package "$dbg_packagename" "$dbg_dir" | 194 | create_package "$dbg_packagename" "$dbg_dir" |
385 | fi | 195 | fi |
386 | 196 | ||
387 | if [ "x$1" = "xdeb-pkg" ] | ||
388 | then | ||
389 | cat <<EOF > debian/rules | ||
390 | #!/usr/bin/make -f | ||
391 | |||
392 | build: | ||
393 | \$(MAKE) | ||
394 | |||
395 | binary-arch: | ||
396 | \$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg | ||
397 | |||
398 | clean: | ||
399 | rm -rf debian/*tmp debian/files | ||
400 | mv debian/ debian.backup # debian/ might be cleaned away | ||
401 | \$(MAKE) clean | ||
402 | mv debian.backup debian | ||
403 | |||
404 | binary: binary-arch | ||
405 | EOF | ||
406 | mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz | ||
407 | tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control} | ||
408 | dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \ | ||
409 | -b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz | ||
410 | mv ${sourcename}_${packageversion}*dsc .. | ||
411 | dpkg-genchanges -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes | ||
412 | else | ||
413 | dpkg-genchanges -b -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes | ||
414 | fi | ||
415 | |||
416 | exit 0 | 197 | exit 0 |
diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian new file mode 100755 index 000000000000..6adb3a16ba3b --- /dev/null +++ b/scripts/package/mkdebian | |||
@@ -0,0 +1,189 @@ | |||
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 | set_debarch() { | ||
10 | # Attempt to find the correct Debian architecture | ||
11 | case "$UTS_MACHINE" in | ||
12 | i386|ia64|alpha) | ||
13 | debarch="$UTS_MACHINE" ;; | ||
14 | x86_64) | ||
15 | debarch=amd64 ;; | ||
16 | sparc*) | ||
17 | debarch=sparc ;; | ||
18 | s390*) | ||
19 | debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; | ||
20 | ppc*) | ||
21 | debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; | ||
22 | parisc*) | ||
23 | debarch=hppa ;; | ||
24 | mips*) | ||
25 | debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; | ||
26 | aarch64|arm64) | ||
27 | debarch=arm64 ;; | ||
28 | arm*) | ||
29 | if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then | ||
30 | if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then | ||
31 | debarch=armhf | ||
32 | else | ||
33 | debarch=armel | ||
34 | fi | ||
35 | else | ||
36 | debarch=arm | ||
37 | fi | ||
38 | ;; | ||
39 | *) | ||
40 | debarch=$(dpkg --print-architecture) | ||
41 | echo "" >&2 | ||
42 | echo "** ** ** WARNING ** ** **" >&2 | ||
43 | echo "" >&2 | ||
44 | echo "Your architecture doesn't have its equivalent" >&2 | ||
45 | echo "Debian userspace architecture defined!" >&2 | ||
46 | echo "Falling back to using your current userspace instead!" >&2 | ||
47 | echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 | ||
48 | echo "" >&2 | ||
49 | esac | ||
50 | if [ -n "$KBUILD_DEBARCH" ] ; then | ||
51 | debarch="$KBUILD_DEBARCH" | ||
52 | fi | ||
53 | } | ||
54 | |||
55 | # Some variables and settings used throughout the script | ||
56 | version=$KERNELRELEASE | ||
57 | if [ -n "$KDEB_PKGVERSION" ]; then | ||
58 | packageversion=$KDEB_PKGVERSION | ||
59 | else | ||
60 | revision=$(cat .version 2>/dev/null||echo 1) | ||
61 | packageversion=$version-$revision | ||
62 | fi | ||
63 | sourcename=$KDEB_SOURCENAME | ||
64 | packagename=linux-image-$version | ||
65 | kernel_headers_packagename=linux-headers-$version | ||
66 | dbg_packagename=$packagename-dbg | ||
67 | debarch= | ||
68 | set_debarch | ||
69 | |||
70 | if [ "$ARCH" = "um" ] ; then | ||
71 | packagename=user-mode-linux-$version | ||
72 | fi | ||
73 | |||
74 | # Try to determine maintainer and email values | ||
75 | if [ -n "$DEBEMAIL" ]; then | ||
76 | email=$DEBEMAIL | ||
77 | elif [ -n "$EMAIL" ]; then | ||
78 | email=$EMAIL | ||
79 | else | ||
80 | email=$(id -nu)@$(hostname -f 2>/dev/null || hostname) | ||
81 | fi | ||
82 | if [ -n "$DEBFULLNAME" ]; then | ||
83 | name=$DEBFULLNAME | ||
84 | elif [ -n "$NAME" ]; then | ||
85 | name=$NAME | ||
86 | else | ||
87 | name="Anonymous" | ||
88 | fi | ||
89 | maintainer="$name <$email>" | ||
90 | |||
91 | # Try to determine distribution | ||
92 | if [ -n "$KDEB_CHANGELOG_DIST" ]; then | ||
93 | distribution=$KDEB_CHANGELOG_DIST | ||
94 | # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog | ||
95 | elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then | ||
96 | : # nothing to do in this case | ||
97 | else | ||
98 | distribution="unstable" | ||
99 | echo >&2 "Using default distribution of 'unstable' in the changelog" | ||
100 | echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" | ||
101 | fi | ||
102 | |||
103 | mkdir -p debian/ | ||
104 | echo $debarch > debian/arch | ||
105 | |||
106 | # Generate a simple changelog template | ||
107 | cat <<EOF > debian/changelog | ||
108 | $sourcename ($packageversion) $distribution; urgency=low | ||
109 | |||
110 | * Custom built Linux kernel. | ||
111 | |||
112 | -- $maintainer $(date -R) | ||
113 | EOF | ||
114 | |||
115 | # Generate copyright file | ||
116 | cat <<EOF > debian/copyright | ||
117 | This is a packacked upstream version of the Linux kernel. | ||
118 | |||
119 | The sources may be found at most Linux archive sites, including: | ||
120 | https://www.kernel.org/pub/linux/kernel | ||
121 | |||
122 | Copyright: 1991 - 2018 Linus Torvalds and others. | ||
123 | |||
124 | The git repository for mainline kernel development is at: | ||
125 | git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | ||
126 | |||
127 | This program is free software; you can redistribute it and/or modify | ||
128 | it under the terms of the GNU General Public License as published by | ||
129 | the Free Software Foundation; version 2 dated June, 1991. | ||
130 | |||
131 | On Debian GNU/Linux systems, the complete text of the GNU General Public | ||
132 | License version 2 can be found in \`/usr/share/common-licenses/GPL-2'. | ||
133 | EOF | ||
134 | |||
135 | # Generate a control file | ||
136 | cat <<EOF > debian/control | ||
137 | Source: $sourcename | ||
138 | Section: kernel | ||
139 | Priority: optional | ||
140 | Maintainer: $maintainer | ||
141 | Build-Depends: bc, kmod, cpio | ||
142 | Homepage: http://www.kernel.org/ | ||
143 | |||
144 | Package: $packagename | ||
145 | Architecture: $debarch | ||
146 | Description: Linux kernel, version $version | ||
147 | This package contains the Linux kernel, modules and corresponding other | ||
148 | files, version: $version. | ||
149 | |||
150 | Package: $kernel_headers_packagename | ||
151 | Architecture: $debarch | ||
152 | Description: Linux kernel headers for $version on $debarch | ||
153 | This package provides kernel header files for $version on $debarch | ||
154 | . | ||
155 | This is useful for people who need to build external modules | ||
156 | |||
157 | Package: linux-libc-dev | ||
158 | Section: devel | ||
159 | Provides: linux-kernel-headers | ||
160 | Architecture: $debarch | ||
161 | Description: Linux support headers for userspace development | ||
162 | This package provides userspaces headers from the Linux kernel. These headers | ||
163 | are used by the installed headers for GNU glibc and other system libraries. | ||
164 | |||
165 | Package: $dbg_packagename | ||
166 | Section: debug | ||
167 | Architecture: $debarch | ||
168 | Description: Linux kernel debugging symbols for $version | ||
169 | This package will come in handy if you need to debug the kernel. It provides | ||
170 | all the necessary debug symbols for the kernel and its modules. | ||
171 | EOF | ||
172 | |||
173 | cat <<EOF > debian/rules | ||
174 | #!$(command -v $MAKE) -f | ||
175 | |||
176 | build: | ||
177 | \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= | ||
178 | |||
179 | binary-arch: | ||
180 | \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg | ||
181 | |||
182 | clean: | ||
183 | rm -rf debian/*tmp debian/files | ||
184 | \$(MAKE) clean | ||
185 | |||
186 | binary: binary-arch | ||
187 | EOF | ||
188 | |||
189 | exit 0 | ||