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/package | |
| 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/package')
| -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 | ||
