mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-01 00:58:39 +02:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									a73619a845
								
							
						
					
					
						commit
						b41d920acf
					
				
					 3 changed files with 200 additions and 244 deletions
				
			
		|  | @ -24,6 +24,7 @@ | ||||||
| # Remove hyphens since they have special meaning in RPM filenames
 | # Remove hyphens since they have special meaning in RPM filenames
 | ||||||
| KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE)) | KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE)) | ||||||
| KDEB_SOURCENAME ?= linux-$(KERNELRELEASE) | KDEB_SOURCENAME ?= linux-$(KERNELRELEASE) | ||||||
|  | KBUILD_PKG_ROOTCMD ?="fakeroot -u" | ||||||
| export KDEB_SOURCENAME | export KDEB_SOURCENAME | ||||||
| # Include only those top-level files that are needed by make, plus the GPL copy
 | # Include only those top-level files that are needed by make, plus the GPL copy
 | ||||||
| TAR_CONTENT := $(KBUILD_ALLDIRS) .config .scmversion Makefile \
 | TAR_CONTENT := $(KBUILD_ALLDIRS) .config .scmversion Makefile \
 | ||||||
|  | @ -66,35 +67,20 @@ binrpm-pkg: FORCE | ||||||
| 
 | 
 | ||||||
| clean-files += $(objtree)/*.spec | clean-files += $(objtree)/*.spec | ||||||
| 
 | 
 | ||||||
| # Deb target
 |  | ||||||
| # ---------------------------------------------------------------------------
 |  | ||||||
| quiet_cmd_builddeb = BUILDDEB |  | ||||||
|       cmd_builddeb = set -e; \
 |  | ||||||
| 	test `id -u` = 0 || \
 |  | ||||||
| 	test -n "$(KBUILD_PKG_ROOTCMD)" || { \
 |  | ||||||
| 		which fakeroot >/dev/null 2>&1 && \
 |  | ||||||
| 		KBUILD_PKG_ROOTCMD="fakeroot -u"; \
 |  | ||||||
| 	} || { \
 |  | ||||||
| 		echo; \
 |  | ||||||
| 		echo "builddeb must be run as root (or using fakeroot)."; \
 |  | ||||||
| 		echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found."; \
 |  | ||||||
| 		echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire"; \
 |  | ||||||
| 		echo "root privileges (e.g., 'fakeroot -u' or 'sudo')."; \
 |  | ||||||
| 		false; \
 |  | ||||||
| 	} && \
 |  | ||||||
| 	\
 |  | ||||||
| 	$$KBUILD_PKG_ROOTCMD $(CONFIG_SHELL) \
 |  | ||||||
| 		$(srctree)/scripts/package/builddeb $@ |  | ||||||
| 
 |  | ||||||
| deb-pkg: FORCE | deb-pkg: FORCE | ||||||
| 	$(MAKE) clean | 	$(MAKE) clean | ||||||
|  | 	$(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian | ||||||
| 	$(call cmd,src_tar,$(KDEB_SOURCENAME)) | 	$(call cmd,src_tar,$(KDEB_SOURCENAME)) | ||||||
| 	$(MAKE) KBUILD_SRC= | 	origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
 | ||||||
| 	+$(call cmd,builddeb) | 		mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz | ||||||
|  | 	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc | ||||||
| 
 | 
 | ||||||
| bindeb-pkg: FORCE | bindeb-pkg: FORCE | ||||||
| 	$(MAKE) KBUILD_SRC= | 	$(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian | ||||||
| 	+$(call cmd,builddeb) | 	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -b -nc -uc | ||||||
|  | 
 | ||||||
|  | intdeb-pkg: FORCE | ||||||
|  | 	+$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb | ||||||
| 
 | 
 | ||||||
| clean-dirs += $(objtree)/debian/ | clean-dirs += $(objtree)/debian/ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -30,67 +30,11 @@ create_package() { | ||||||
| 	chmod -R a+rX "$pdir" | 	chmod -R a+rX "$pdir" | ||||||
| 
 | 
 | ||||||
| 	# Create the package | 	# Create the package | ||||||
| 	dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir" | 	dpkg-gencontrol -p$pname -P"$pdir" | ||||||
| 	dpkg --build "$pdir" .. | 	dpkg --build "$pdir" .. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| set_debarch() { |  | ||||||
| 	# Attempt to find the correct Debian architecture |  | ||||||
| 	case "$UTS_MACHINE" in |  | ||||||
| 	i386|ia64|alpha) |  | ||||||
| 		debarch="$UTS_MACHINE" ;; |  | ||||||
| 	x86_64) |  | ||||||
| 		debarch=amd64 ;; |  | ||||||
| 	sparc*) |  | ||||||
| 		debarch=sparc ;; |  | ||||||
| 	s390*) |  | ||||||
| 		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; |  | ||||||
| 	ppc*) |  | ||||||
| 		debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; |  | ||||||
| 	parisc*) |  | ||||||
| 		debarch=hppa ;; |  | ||||||
| 	mips*) |  | ||||||
| 		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; |  | ||||||
| 	aarch64|arm64) |  | ||||||
| 		debarch=arm64 ;; |  | ||||||
| 	arm*) |  | ||||||
| 		if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then |  | ||||||
| 		    if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then |  | ||||||
| 			debarch=armhf |  | ||||||
| 		    else |  | ||||||
| 			debarch=armel |  | ||||||
| 		    fi |  | ||||||
| 		else |  | ||||||
| 		    debarch=arm |  | ||||||
| 		fi |  | ||||||
| 		;; |  | ||||||
| 	*) |  | ||||||
| 		debarch=$(dpkg --print-architecture) |  | ||||||
| 		echo "" >&2 |  | ||||||
| 		echo "** ** **  WARNING  ** ** **" >&2 |  | ||||||
| 		echo "" >&2 |  | ||||||
| 		echo "Your architecture doesn't have its equivalent" >&2 |  | ||||||
| 		echo "Debian userspace architecture defined!" >&2 |  | ||||||
| 		echo "Falling back to using your current userspace instead!" >&2 |  | ||||||
| 		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 |  | ||||||
| 		echo "" >&2 |  | ||||||
| 	esac |  | ||||||
| 	if [ -n "$KBUILD_DEBARCH" ] ; then |  | ||||||
| 		debarch="$KBUILD_DEBARCH" |  | ||||||
| 	fi |  | ||||||
| 	forcearch="-DArchitecture=$debarch" |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| # Some variables and settings used throughout the script |  | ||||||
| version=$KERNELRELEASE | version=$KERNELRELEASE | ||||||
| revision=$(cat .version) |  | ||||||
| if [ -n "$KDEB_PKGVERSION" ]; then |  | ||||||
| 	packageversion=$KDEB_PKGVERSION |  | ||||||
| else |  | ||||||
| 	packageversion=$version-$revision |  | ||||||
| fi |  | ||||||
| sourcename=$KDEB_SOURCENAME |  | ||||||
| tmpdir="$objtree/debian/tmp" | tmpdir="$objtree/debian/tmp" | ||||||
| kernel_headers_dir="$objtree/debian/hdrtmp" | kernel_headers_dir="$objtree/debian/hdrtmp" | ||||||
| libc_headers_dir="$objtree/debian/headertmp" | libc_headers_dir="$objtree/debian/headertmp" | ||||||
|  | @ -99,9 +43,6 @@ packagename=linux-image-$version | ||||||
| kernel_headers_packagename=linux-headers-$version | kernel_headers_packagename=linux-headers-$version | ||||||
| libc_headers_packagename=linux-libc-dev | libc_headers_packagename=linux-libc-dev | ||||||
| dbg_packagename=$packagename-dbg | dbg_packagename=$packagename-dbg | ||||||
| debarch= |  | ||||||
| forcearch= |  | ||||||
| set_debarch |  | ||||||
| 
 | 
 | ||||||
| if [ "$ARCH" = "um" ] ; then | if [ "$ARCH" = "um" ] ; then | ||||||
| 	packagename=user-mode-linux-$version | 	packagename=user-mode-linux-$version | ||||||
|  | @ -212,105 +153,6 @@ EOF | ||||||
| 	chmod 755 "$tmpdir/DEBIAN/$script" | 	chmod 755 "$tmpdir/DEBIAN/$script" | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| # Try to determine maintainer and email values |  | ||||||
| if [ -n "$DEBEMAIL" ]; then |  | ||||||
|        email=$DEBEMAIL |  | ||||||
| elif [ -n "$EMAIL" ]; then |  | ||||||
|        email=$EMAIL |  | ||||||
| else |  | ||||||
|        email=$(id -nu)@$(hostname -f 2>/dev/null || hostname) |  | ||||||
| fi |  | ||||||
| if [ -n "$DEBFULLNAME" ]; then |  | ||||||
|        name=$DEBFULLNAME |  | ||||||
| elif [ -n "$NAME" ]; then |  | ||||||
|        name=$NAME |  | ||||||
| else |  | ||||||
|        name="Anonymous" |  | ||||||
| fi |  | ||||||
| maintainer="$name <$email>" |  | ||||||
| 
 |  | ||||||
| # Try to determine distribution |  | ||||||
| if [ -n "$KDEB_CHANGELOG_DIST" ]; then |  | ||||||
|         distribution=$KDEB_CHANGELOG_DIST |  | ||||||
| # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog |  | ||||||
| elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then |  | ||||||
|         : # nothing to do in this case |  | ||||||
| else |  | ||||||
|         distribution="unstable" |  | ||||||
|         echo >&2 "Using default distribution of 'unstable' in the changelog" |  | ||||||
|         echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| # Generate a simple changelog template |  | ||||||
| cat <<EOF > debian/changelog |  | ||||||
| $sourcename ($packageversion) $distribution; urgency=low |  | ||||||
| 
 |  | ||||||
|   * Custom built Linux kernel. |  | ||||||
| 
 |  | ||||||
|  -- $maintainer  $(date -R) |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| # Generate copyright file |  | ||||||
| cat <<EOF > debian/copyright |  | ||||||
| This is a packacked upstream version of the Linux kernel. |  | ||||||
| 
 |  | ||||||
| The sources may be found at most Linux archive sites, including: |  | ||||||
| https://www.kernel.org/pub/linux/kernel |  | ||||||
| 
 |  | ||||||
| Copyright: 1991 - 2017 Linus Torvalds and others. |  | ||||||
| 
 |  | ||||||
| The git repository for mainline kernel development is at: |  | ||||||
| git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git |  | ||||||
| 
 |  | ||||||
|     This program is free software; you can redistribute it and/or modify |  | ||||||
|     it under the terms of the GNU General Public License as published by |  | ||||||
|     the Free Software Foundation; version 2 dated June, 1991. |  | ||||||
| 
 |  | ||||||
| On Debian GNU/Linux systems, the complete text of the GNU General Public |  | ||||||
| License version 2 can be found in \`/usr/share/common-licenses/GPL-2'. |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| build_depends="bc, kmod, cpio " |  | ||||||
| 
 |  | ||||||
| # Generate a control file |  | ||||||
| cat <<EOF > debian/control |  | ||||||
| Source: $sourcename |  | ||||||
| Section: kernel |  | ||||||
| Priority: optional |  | ||||||
| Maintainer: $maintainer |  | ||||||
| Build-Depends: $build_depends |  | ||||||
| Homepage: http://www.kernel.org/ |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| if [ "$ARCH" = "um" ]; then |  | ||||||
| 	cat <<EOF >> debian/control |  | ||||||
| 
 |  | ||||||
| Package: $packagename |  | ||||||
| Architecture: any |  | ||||||
| Description: User Mode Linux kernel, version $version |  | ||||||
|  User-mode Linux is a port of the Linux kernel to its own system call |  | ||||||
|  interface.  It provides a kind of virtual machine, which runs Linux |  | ||||||
|  as a user process under another Linux kernel.  This is useful for |  | ||||||
|  kernel development, sandboxes, jails, experimentation, and |  | ||||||
|  many other things. |  | ||||||
|  . |  | ||||||
|  This package contains the Linux kernel, modules and corresponding other |  | ||||||
|  files, version: $version. |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| else |  | ||||||
| 	cat <<EOF >> debian/control |  | ||||||
| 
 |  | ||||||
| Package: $packagename |  | ||||||
| Architecture: any |  | ||||||
| Description: Linux kernel, version $version |  | ||||||
|  This package contains the Linux kernel, modules and corresponding other |  | ||||||
|  files, version: $version. |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| # Build kernel header package | # Build kernel header package | ||||||
| (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" | (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" | ||||||
| (cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles" | (cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles" | ||||||
|  | @ -331,27 +173,6 @@ mkdir -p "$destdir" | ||||||
| ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" | ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" | ||||||
| rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" | rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" | ||||||
| 
 | 
 | ||||||
| cat <<EOF >> debian/control |  | ||||||
| 
 |  | ||||||
| Package: $kernel_headers_packagename |  | ||||||
| Architecture: any |  | ||||||
| Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} |  | ||||||
|  This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} |  | ||||||
|  . |  | ||||||
|  This is useful for people who need to build external modules |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| cat <<EOF >> debian/control |  | ||||||
| 
 |  | ||||||
| Package: $libc_headers_packagename |  | ||||||
| Section: devel |  | ||||||
| Provides: linux-kernel-headers |  | ||||||
| Architecture: any |  | ||||||
| Description: Linux support headers for userspace development |  | ||||||
|  This package provides userspaces headers from the Linux kernel.  These headers |  | ||||||
|  are used by the installed headers for GNU glibc and other system libraries. |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| if [ "$ARCH" != "um" ]; then | if [ "$ARCH" != "um" ]; then | ||||||
| 	create_package "$kernel_headers_packagename" "$kernel_headers_dir" | 	create_package "$kernel_headers_packagename" "$kernel_headers_dir" | ||||||
| 	create_package "$libc_headers_packagename" "$libc_headers_dir" | 	create_package "$libc_headers_packagename" "$libc_headers_dir" | ||||||
|  | @ -370,47 +191,7 @@ if [ -n "$BUILD_DEBUG" ] ; then | ||||||
| 	ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version | 	ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version | ||||||
| 	# kdump-tools | 	# kdump-tools | ||||||
| 	ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version | 	ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version | ||||||
| 
 |  | ||||||
| 	cat <<EOF >> debian/control |  | ||||||
| 
 |  | ||||||
| Package: $dbg_packagename |  | ||||||
| Section: debug |  | ||||||
| Architecture: any |  | ||||||
| Description: Linux kernel debugging symbols for $version |  | ||||||
|  This package will come in handy if you need to debug the kernel. It provides |  | ||||||
|  all the necessary debug symbols for the kernel and its modules. |  | ||||||
| EOF |  | ||||||
| 
 |  | ||||||
| 	create_package "$dbg_packagename" "$dbg_dir" | 	create_package "$dbg_packagename" "$dbg_dir" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| if [ "x$1" = "xdeb-pkg" ] |  | ||||||
| then |  | ||||||
|     cat <<EOF > debian/rules |  | ||||||
| #!/usr/bin/make -f |  | ||||||
| 
 |  | ||||||
| build: |  | ||||||
| 	\$(MAKE) |  | ||||||
| 
 |  | ||||||
| binary-arch: |  | ||||||
| 	\$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg |  | ||||||
| 
 |  | ||||||
| clean: |  | ||||||
| 	rm -rf debian/*tmp debian/files |  | ||||||
| 	mv debian/ debian.backup # debian/ might be cleaned away |  | ||||||
| 	\$(MAKE) clean |  | ||||||
| 	mv debian.backup debian |  | ||||||
| 
 |  | ||||||
| binary: binary-arch |  | ||||||
| EOF |  | ||||||
| 	mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz |  | ||||||
| 	tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control} |  | ||||||
| 	dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \ |  | ||||||
| 		-b / ../${sourcename}_${version}.orig.tar.gz  ../${sourcename}_${packageversion}.debian.tar.gz |  | ||||||
| 	mv ${sourcename}_${packageversion}*dsc .. |  | ||||||
| 	dpkg-genchanges -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes |  | ||||||
| else |  | ||||||
| 	dpkg-genchanges -b -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| exit 0 | exit 0 | ||||||
|  |  | ||||||
							
								
								
									
										189
									
								
								scripts/package/mkdebian
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										189
									
								
								scripts/package/mkdebian
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,189 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # Copyright 2003 Wichert Akkerman <wichert@wiggy.net> | ||||||
|  | # | ||||||
|  | # Simple script to generate a debian/ directory for a Linux kernel. | ||||||
|  | 
 | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | set_debarch() { | ||||||
|  | 	# Attempt to find the correct Debian architecture | ||||||
|  | 	case "$UTS_MACHINE" in | ||||||
|  | 	i386|ia64|alpha) | ||||||
|  | 		debarch="$UTS_MACHINE" ;; | ||||||
|  | 	x86_64) | ||||||
|  | 		debarch=amd64 ;; | ||||||
|  | 	sparc*) | ||||||
|  | 		debarch=sparc ;; | ||||||
|  | 	s390*) | ||||||
|  | 		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; | ||||||
|  | 	ppc*) | ||||||
|  | 		debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; | ||||||
|  | 	parisc*) | ||||||
|  | 		debarch=hppa ;; | ||||||
|  | 	mips*) | ||||||
|  | 		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; | ||||||
|  | 	aarch64|arm64) | ||||||
|  | 		debarch=arm64 ;; | ||||||
|  | 	arm*) | ||||||
|  | 		if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then | ||||||
|  | 		    if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then | ||||||
|  | 			debarch=armhf | ||||||
|  | 		    else | ||||||
|  | 			debarch=armel | ||||||
|  | 		    fi | ||||||
|  | 		else | ||||||
|  | 		    debarch=arm | ||||||
|  | 		fi | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 		debarch=$(dpkg --print-architecture) | ||||||
|  | 		echo "" >&2 | ||||||
|  | 		echo "** ** **  WARNING  ** ** **" >&2 | ||||||
|  | 		echo "" >&2 | ||||||
|  | 		echo "Your architecture doesn't have its equivalent" >&2 | ||||||
|  | 		echo "Debian userspace architecture defined!" >&2 | ||||||
|  | 		echo "Falling back to using your current userspace instead!" >&2 | ||||||
|  | 		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 | ||||||
|  | 		echo "" >&2 | ||||||
|  | 	esac | ||||||
|  | 	if [ -n "$KBUILD_DEBARCH" ] ; then | ||||||
|  | 		debarch="$KBUILD_DEBARCH" | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Some variables and settings used throughout the script | ||||||
|  | version=$KERNELRELEASE | ||||||
|  | if [ -n "$KDEB_PKGVERSION" ]; then | ||||||
|  | 	packageversion=$KDEB_PKGVERSION | ||||||
|  | else | ||||||
|  | 	revision=$(cat .version 2>/dev/null||echo 1) | ||||||
|  | 	packageversion=$version-$revision | ||||||
|  | fi | ||||||
|  | sourcename=$KDEB_SOURCENAME | ||||||
|  | packagename=linux-image-$version | ||||||
|  | kernel_headers_packagename=linux-headers-$version | ||||||
|  | dbg_packagename=$packagename-dbg | ||||||
|  | debarch= | ||||||
|  | set_debarch | ||||||
|  | 
 | ||||||
|  | if [ "$ARCH" = "um" ] ; then | ||||||
|  | 	packagename=user-mode-linux-$version | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Try to determine maintainer and email values | ||||||
|  | if [ -n "$DEBEMAIL" ]; then | ||||||
|  |        email=$DEBEMAIL | ||||||
|  | elif [ -n "$EMAIL" ]; then | ||||||
|  |        email=$EMAIL | ||||||
|  | else | ||||||
|  |        email=$(id -nu)@$(hostname -f 2>/dev/null || hostname) | ||||||
|  | fi | ||||||
|  | if [ -n "$DEBFULLNAME" ]; then | ||||||
|  |        name=$DEBFULLNAME | ||||||
|  | elif [ -n "$NAME" ]; then | ||||||
|  |        name=$NAME | ||||||
|  | else | ||||||
|  |        name="Anonymous" | ||||||
|  | fi | ||||||
|  | maintainer="$name <$email>" | ||||||
|  | 
 | ||||||
|  | # Try to determine distribution | ||||||
|  | if [ -n "$KDEB_CHANGELOG_DIST" ]; then | ||||||
|  |         distribution=$KDEB_CHANGELOG_DIST | ||||||
|  | # In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog | ||||||
|  | elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then | ||||||
|  |         : # nothing to do in this case | ||||||
|  | else | ||||||
|  |         distribution="unstable" | ||||||
|  |         echo >&2 "Using default distribution of 'unstable' in the changelog" | ||||||
|  |         echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | mkdir -p debian/ | ||||||
|  | echo $debarch > debian/arch | ||||||
|  | 
 | ||||||
|  | # Generate a simple changelog template | ||||||
|  | cat <<EOF > debian/changelog | ||||||
|  | $sourcename ($packageversion) $distribution; urgency=low | ||||||
|  | 
 | ||||||
|  |   * Custom built Linux kernel. | ||||||
|  | 
 | ||||||
|  |  -- $maintainer  $(date -R) | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | # Generate copyright file | ||||||
|  | cat <<EOF > debian/copyright | ||||||
|  | This is a packacked upstream version of the Linux kernel. | ||||||
|  | 
 | ||||||
|  | The sources may be found at most Linux archive sites, including: | ||||||
|  | https://www.kernel.org/pub/linux/kernel | ||||||
|  | 
 | ||||||
|  | Copyright: 1991 - 2018 Linus Torvalds and others. | ||||||
|  | 
 | ||||||
|  | The git repository for mainline kernel development is at: | ||||||
|  | git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | ||||||
|  | 
 | ||||||
|  |     This program is free software; you can redistribute it and/or modify | ||||||
|  |     it under the terms of the GNU General Public License as published by | ||||||
|  |     the Free Software Foundation; version 2 dated June, 1991. | ||||||
|  | 
 | ||||||
|  | On Debian GNU/Linux systems, the complete text of the GNU General Public | ||||||
|  | License version 2 can be found in \`/usr/share/common-licenses/GPL-2'. | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | # Generate a control file | ||||||
|  | cat <<EOF > debian/control | ||||||
|  | Source: $sourcename | ||||||
|  | Section: kernel | ||||||
|  | Priority: optional | ||||||
|  | Maintainer: $maintainer | ||||||
|  | Build-Depends: bc, kmod, cpio | ||||||
|  | Homepage: http://www.kernel.org/ | ||||||
|  | 
 | ||||||
|  | Package: $packagename | ||||||
|  | Architecture: $debarch | ||||||
|  | Description: Linux kernel, version $version | ||||||
|  |  This package contains the Linux kernel, modules and corresponding other | ||||||
|  |  files, version: $version. | ||||||
|  | 
 | ||||||
|  | Package: $kernel_headers_packagename | ||||||
|  | Architecture: $debarch | ||||||
|  | Description: Linux kernel headers for $version on $debarch | ||||||
|  |  This package provides kernel header files for $version on $debarch | ||||||
|  |  . | ||||||
|  |  This is useful for people who need to build external modules | ||||||
|  | 
 | ||||||
|  | Package: linux-libc-dev | ||||||
|  | Section: devel | ||||||
|  | Provides: linux-kernel-headers | ||||||
|  | Architecture: $debarch | ||||||
|  | Description: Linux support headers for userspace development | ||||||
|  |  This package provides userspaces headers from the Linux kernel.  These headers | ||||||
|  |  are used by the installed headers for GNU glibc and other system libraries. | ||||||
|  | 
 | ||||||
|  | Package: $dbg_packagename | ||||||
|  | Section: debug | ||||||
|  | Architecture: $debarch | ||||||
|  | Description: Linux kernel debugging symbols for $version | ||||||
|  |  This package will come in handy if you need to debug the kernel. It provides | ||||||
|  |  all the necessary debug symbols for the kernel and its modules. | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | cat <<EOF > debian/rules | ||||||
|  | #!$(command -v $MAKE) -f | ||||||
|  | 
 | ||||||
|  | build: | ||||||
|  | 	\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= | ||||||
|  | 
 | ||||||
|  | binary-arch: | ||||||
|  | 	\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg | ||||||
|  | 
 | ||||||
|  | clean: | ||||||
|  | 	rm -rf debian/*tmp debian/files | ||||||
|  | 	\$(MAKE) clean | ||||||
|  | 
 | ||||||
|  | binary: binary-arch | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
		Loading…
	
		Reference in a new issue
	
	 Riku Voipio
						Riku Voipio