forked from mirrors/linux
		
	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