mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	 657f96cb7c
			
		
	
	
		657f96cb7c
		
	
	
	
	
		
			
			The dwarf.h header, which is included by
scripts/gendwarfksyms/gendwarfksyms.h, resides within the libdw-dev
package.
This portion of the code is compiled under the condition that
CONFIG_GENDWARFKSYMS is enabled.
Consequently, add libdw-dev to Build-Depends-Arch to prevent
unforeseen compilation failures.
Fix follow possible error:
  In file included from scripts/gendwarfksyms/symbols.c:6:
  scripts/gendwarfksyms/gendwarfksyms.h:6:10: fatal error: 'dwarf.h' file not found
      6 | #include <dwarf.h>
        |          ^~~~~~~~~
Fixes: f28568841a ("tools: Add gendwarfksyms")
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: WangYuli <wangyuli@uniontech.com>
Reviewed-by: Nicolas Schier <n.schier@avm.de>
Tested-by: Nicolas Schier <n.schier@avm.de>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
		
	
			
		
			
				
	
	
		
			273 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
	
		
			6.6 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 -eu
 | |
| 
 | |
| is_enabled() {
 | |
| 	grep -q "^$1=y" include/config/auto.conf
 | |
| }
 | |
| 
 | |
| if_enabled_echo() {
 | |
| 	if is_enabled "$1"; then
 | |
| 		echo -n "$2"
 | |
| 	elif [ $# -ge 3 ]; then
 | |
| 		echo -n "$3"
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| set_debarch() {
 | |
| 	if [ "${KBUILD_DEBARCH:+set}" ]; then
 | |
| 		debarch="$KBUILD_DEBARCH"
 | |
| 		return
 | |
| 	fi
 | |
| 
 | |
| 	# Attempt to find the correct Debian architecture
 | |
| 	case "$UTS_MACHINE" in
 | |
| 	i386|alpha|m68k|riscv*)
 | |
| 		debarch="$UTS_MACHINE" ;;
 | |
| 	x86_64)
 | |
| 		debarch=amd64 ;;
 | |
| 	sparc*)
 | |
| 		debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;;
 | |
| 	s390*)
 | |
| 		debarch=s390x ;;
 | |
| 	ppc*)
 | |
| 		if is_enabled CONFIG_64BIT; then
 | |
| 			debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el)
 | |
| 		else
 | |
| 			debarch=powerpc$(if_enabled_echo CONFIG_SPE spe)
 | |
| 		fi
 | |
| 		;;
 | |
| 	parisc*)
 | |
| 		debarch=hppa ;;
 | |
| 	mips*)
 | |
| 		if is_enabled CONFIG_CPU_LITTLE_ENDIAN; then
 | |
| 			debarch=mips$(if_enabled_echo CONFIG_64BIT 64)$(if_enabled_echo CONFIG_CPU_MIPSR6 r6)el
 | |
| 		elif is_enabled CONFIG_CPU_MIPSR6; then
 | |
| 			debarch=mips$(if_enabled_echo CONFIG_64BIT 64)r6
 | |
| 		else
 | |
| 			debarch=mips
 | |
| 		fi
 | |
| 		;;
 | |
| 	aarch64|arm64)
 | |
| 		debarch=arm64 ;;
 | |
| 	arm*)
 | |
| 		if is_enabled CONFIG_AEABI; then
 | |
| 			debarch=arm$(if_enabled_echo CONFIG_VFP hf el)
 | |
| 		else
 | |
| 			debarch=arm
 | |
| 		fi
 | |
| 		;;
 | |
| 	openrisc)
 | |
| 		debarch=or1k ;;
 | |
| 	sh)
 | |
| 		if is_enabled CONFIG_CPU_SH3; then
 | |
| 			debarch=sh3$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
 | |
| 		elif is_enabled CONFIG_CPU_SH4; then
 | |
| 			debarch=sh4$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
 | |
| 		fi
 | |
| 		;;
 | |
| 	um)
 | |
| 		if is_enabled CONFIG_64BIT; then
 | |
| 			debarch=amd64
 | |
| 		else
 | |
| 			debarch=i386
 | |
| 		fi
 | |
| 		;;
 | |
| 	loongarch64)
 | |
| 		debarch=loong64 ;;
 | |
| 	esac
 | |
| 	if [ -z "$debarch" ]; then
 | |
| 		debarch=$(dpkg-architecture -qDEB_HOST_ARCH)
 | |
| 		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 the current host architecture ($debarch)." >&2
 | |
| 		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
 | |
| 		echo "" >&2
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| # Create debian/source/ if it is a source package build
 | |
| gen_source ()
 | |
| {
 | |
| 	mkdir -p debian/source
 | |
| 
 | |
| 	echo "3.0 (quilt)" > debian/source/format
 | |
| 
 | |
| 	{
 | |
| 		echo "diff-ignore"
 | |
| 		echo "extend-diff-ignore = .*"
 | |
| 	} > debian/source/local-options
 | |
| 
 | |
| 	# Add .config as a patch
 | |
| 	mkdir -p debian/patches
 | |
| 	{
 | |
| 		echo "Subject: Add .config"
 | |
| 		echo "Author: ${maintainer}"
 | |
| 		echo
 | |
| 		echo "--- /dev/null"
 | |
| 		echo "+++ linux/.config"
 | |
| 		diff -u /dev/null "${KCONFIG_CONFIG}" | tail -n +3
 | |
| 	} > debian/patches/config.patch
 | |
| 	echo config.patch > debian/patches/series
 | |
| 
 | |
| 	"${srctree}/scripts/package/gen-diff-patch" debian/patches/diff.patch
 | |
| 	if [ -s debian/patches/diff.patch ]; then
 | |
| 		sed -i "
 | |
| 			1iSubject: Add local diff
 | |
| 			1iAuthor: ${maintainer}
 | |
| 			1i
 | |
| 		" debian/patches/diff.patch
 | |
| 
 | |
| 		echo diff.patch >> debian/patches/series
 | |
| 	else
 | |
| 		rm -f debian/patches/diff.patch
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| rm -rf debian
 | |
| mkdir debian
 | |
| 
 | |
| user=${KBUILD_BUILD_USER:-$(id -nu)}
 | |
| name=${DEBFULLNAME:-${user}}
 | |
| if [ "${DEBEMAIL:+set}" ]; then
 | |
| 	email=${DEBEMAIL}
 | |
| else
 | |
| 	buildhost=${KBUILD_BUILD_HOST:-$(hostname -f 2>/dev/null || hostname)}
 | |
| 	email="${user}@${buildhost}"
 | |
| fi
 | |
| maintainer="${name} <${email}>"
 | |
| 
 | |
| while [ $# -gt 0 ]; do
 | |
| 	case "$1" in
 | |
| 	--need-source)
 | |
| 		gen_source
 | |
| 		shift
 | |
| 		;;
 | |
| 	*)
 | |
| 		break
 | |
| 		;;
 | |
| 	esac
 | |
| done
 | |
| 
 | |
| # Some variables and settings used throughout the script
 | |
| if [ "${KDEB_PKGVERSION:+set}" ]; then
 | |
| 	packageversion=$KDEB_PKGVERSION
 | |
| else
 | |
| 	upstream_version=$("${srctree}/scripts/setlocalversion" --no-local "${srctree}" | sed 's/-\(rc[1-9]\)/~\1/')
 | |
| 	debian_revision=$("${srctree}/scripts/build-version")
 | |
| 	packageversion=${upstream_version}-${debian_revision}
 | |
| fi
 | |
| sourcename=${KDEB_SOURCENAME:-linux-upstream}
 | |
| 
 | |
| if [ "$ARCH" = "um" ] ; then
 | |
| 	packagename=user-mode-linux
 | |
| else
 | |
| 	packagename=linux-image
 | |
| fi
 | |
| 
 | |
| debarch=
 | |
| set_debarch
 | |
| 
 | |
| # Try to determine distribution
 | |
| if [ "${KDEB_CHANGELOG_DIST:+set}" ]; 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
 | |
| 
 | |
| echo $debarch > debian/arch
 | |
| 
 | |
| host_gnu=$(dpkg-architecture -a "${debarch}" -q DEB_HOST_GNU_TYPE | sed 's/_/-/g')
 | |
| 
 | |
| # Generate a simple changelog template
 | |
| cat <<EOF > debian/changelog
 | |
| $sourcename ($packageversion) $distribution; urgency=low
 | |
| 
 | |
|   * Custom built Linux kernel.
 | |
| 
 | |
|  -- $maintainer  $(date -R)
 | |
| EOF
 | |
| 
 | |
| # Generate a control file
 | |
| cat <<EOF > debian/control
 | |
| Source: $sourcename
 | |
| Section: kernel
 | |
| Priority: optional
 | |
| Maintainer: $maintainer
 | |
| Rules-Requires-Root: no
 | |
| Build-Depends: debhelper-compat (= 12)
 | |
| Build-Depends-Arch: bc, bison, flex,
 | |
|  gcc-${host_gnu} <!pkg.${sourcename}.nokernelheaders>,
 | |
|  kmod, libdw-dev:native, libelf-dev:native,
 | |
|  libssl-dev:native, libssl-dev <!pkg.${sourcename}.nokernelheaders>,
 | |
|  python3:native, rsync
 | |
| Homepage: https://www.kernel.org/
 | |
| 
 | |
| Package: $packagename-${KERNELRELEASE}
 | |
| Architecture: $debarch
 | |
| Description: Linux kernel, version ${KERNELRELEASE}
 | |
|  This package contains the Linux kernel, modules and corresponding other
 | |
|  files, version: ${KERNELRELEASE}.
 | |
| EOF
 | |
| 
 | |
| if [ "${SRCARCH}" != um ]; then
 | |
| cat <<EOF >> debian/control
 | |
| 
 | |
| 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.
 | |
| Multi-Arch: same
 | |
| EOF
 | |
| 
 | |
| if is_enabled CONFIG_MODULES; then
 | |
| cat <<EOF >> debian/control
 | |
| 
 | |
| Package: linux-headers-${KERNELRELEASE}
 | |
| Architecture: $debarch
 | |
| Build-Profiles: <!pkg.${sourcename}.nokernelheaders>
 | |
| Description: Linux kernel headers for ${KERNELRELEASE} on $debarch
 | |
|  This package provides kernel header files for ${KERNELRELEASE} on $debarch
 | |
|  .
 | |
|  This is useful for people who need to build external modules
 | |
| EOF
 | |
| fi
 | |
| fi
 | |
| 
 | |
| if is_enabled CONFIG_DEBUG_INFO; then
 | |
| cat <<EOF >> debian/control
 | |
| 
 | |
| Package: linux-image-${KERNELRELEASE}-dbg
 | |
| Section: debug
 | |
| Architecture: $debarch
 | |
| Build-Profiles: <!pkg.${sourcename}.nokerneldbg>
 | |
| Description: Linux kernel debugging symbols for ${KERNELRELEASE}
 | |
|  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
 | |
| fi
 | |
| 
 | |
| cat <<EOF > debian/rules.vars
 | |
| ARCH := ${ARCH}
 | |
| KERNELRELEASE := ${KERNELRELEASE}
 | |
| EOF
 | |
| 
 | |
| cp "${srctree}/scripts/package/debian/copyright" debian/
 | |
| cp "${srctree}/scripts/package/debian/rules" debian/
 | |
| 
 | |
| exit 0
 |