mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +02:00 
			
		
		
		
	There is multiple issues with the genaration of maintainer string It uses DEBEMAIL and EMAIL enviroment variables, which may contain angle brackets, creating invalid maintainer strings. The documented KBUILD_BUILD_USER and KBUILD_BUILD_HOST variables are not used. Undocumented and uncommon NAME variable is used. Refactor the Maintainer string to: - use EMAIL or DEBEMAIL directly if they are in form "name <user@host>" - use KBUILD_BUILD_USER and KBUILD_BUILD_HOST if set before falling back to autodetection - no longer use NAME variable or the useless Anonymous string The logic is switched from multiline if/then/fi statements to compact shell variable substition commands. Reported-by: Mathieu Malaterre <malat@debian.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
		
			
				
	
	
		
			188 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/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
 | 
						|
 | 
						|
email=${DEBEMAIL-$EMAIL}
 | 
						|
 | 
						|
# use email string directly if it contains <email>
 | 
						|
if echo $email | grep -q '<.*>'; then
 | 
						|
	maintainer=$email
 | 
						|
else
 | 
						|
	# or construct the maintainer string
 | 
						|
	user=${KBUILD_BUILD_USER-$(id -nu)}
 | 
						|
	name=${DEBFULLNAME-$user}
 | 
						|
	if [ -z "$email" ]; then
 | 
						|
		buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)}
 | 
						|
		email="$user@$buildhost"
 | 
						|
	fi
 | 
						|
	maintainer="$name <$email>"
 | 
						|
fi
 | 
						|
 | 
						|
# 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
 |