Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274#!/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 buildgen_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 debianmkdir 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}"fimaintainer="${name} <${email}>"
while [ $# -gt 0 ]; do case "$1" in --need-source) gen_source shift ;; *) break ;; esacdone
# Some variables and settings used throughout the scriptif [ "${KDEB_PKGVERSION:+set}" ]; then packageversion=$KDEB_PKGVERSIONelse 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}fisourcename=${KDEB_SOURCENAME:-linux-upstream}
if [ "$ARCH" = "um" ] ; then packagename=user-mode-linuxelse packagename=linux-imagefi
debarch=set_debarch
# Try to determine distributionif [ "${KDEB_CHANGELOG_DIST:+set}" ]; then distribution=$KDEB_CHANGELOG_DIST# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelogelif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then : # nothing to do in this caseelse 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 templatecat <<EOF > debian/changelog$sourcename ($packageversion) $distribution; urgency=low
* Custom built Linux kernel.
-- $maintainer $(date -R)EOF
# Generate a control filecat <<EOF > debian/controlSource: $sourcenameSection: kernelPriority: optionalMaintainer: $maintainerRules-Requires-Root: noBuild-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, rsyncHomepage: https://www.kernel.org/
Package: $packagename-${KERNELRELEASE}Architecture: $debarchDescription: Linux kernel, version ${KERNELRELEASE} This package contains the Linux kernel, modules and corresponding other files, version: ${KERNELRELEASE}.EOF
if [ "${SRCARCH}" != um ]; thencat <<EOF >> debian/control
Package: linux-libc-devSection: develProvides: linux-kernel-headersArchitecture: $debarchDescription: 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: sameEOF
if is_enabled CONFIG_MODULES; thencat <<EOF >> debian/control
Package: linux-headers-${KERNELRELEASE}Architecture: $debarchBuild-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 modulesEOFfifi
if is_enabled CONFIG_DEBUG_INFO; thencat <<EOF >> debian/control
Package: linux-image-${KERNELRELEASE}-dbgSection: debugArchitecture: $debarchBuild-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.EOFfi
cat <<EOF > debian/rules.varsARCH := ${ARCH}KERNELRELEASE := ${KERNELRELEASE}EOF
cp "${srctree}/scripts/package/debian/copyright" debian/cp "${srctree}/scripts/package/debian/rules" debian/
exit 0