forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
246 lines
6.3 KiB
246 lines
6.3 KiB
#!/bin/sh |
|
# |
|
# Copyright 2003 Wichert Akkerman <[email protected]> |
|
# |
|
# Simple script to generate a debian/ directory for a Linux kernel. |
|
|
|
set -e |
|
|
|
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 [ -n "$KBUILD_DEBARCH" ] ; then |
|
debarch="$KBUILD_DEBARCH" |
|
return |
|
fi |
|
|
|
# Attempt to find the correct Debian architecture |
|
case "$UTS_MACHINE" in |
|
i386|ia64|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 |
|
;; |
|
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 |
|
} |
|
|
|
# Some variables and settings used throughout the script |
|
version=$KERNELRELEASE |
|
if [ -n "$KDEB_PKGVERSION" ]; then |
|
packageversion=$KDEB_PKGVERSION |
|
revision=${packageversion##*-} |
|
else |
|
revision=$(cat .version 2>/dev/null||echo 1) |
|
packageversion=$version-$revision |
|
fi |
|
sourcename=$KDEB_SOURCENAME |
|
|
|
if [ "$ARCH" = "um" ] ; then |
|
packagename=user-mode-linux |
|
else |
|
packagename=linux-image |
|
fi |
|
|
|
debarch= |
|
set_debarch |
|
|
|
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/source/ |
|
echo "1.0" > debian/source/format |
|
|
|
echo $debarch > debian/arch |
|
extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)" |
|
extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)" |
|
|
|
# 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 |
|
Rules-Requires-Root: no |
|
Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends |
|
Homepage: https://www.kernel.org/ |
|
|
|
Package: $packagename-$version |
|
Architecture: $debarch |
|
Description: Linux kernel, version $version |
|
This package contains the Linux kernel, modules and corresponding other |
|
files, version: $version. |
|
|
|
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-$version |
|
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 |
|
EOF |
|
fi |
|
|
|
if is_enabled CONFIG_DEBUG_INFO; then |
|
cat <<EOF >> debian/control |
|
|
|
Package: linux-image-$version-dbg |
|
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 |
|
fi |
|
|
|
cat <<EOF > debian/rules |
|
#!$(command -v $MAKE) -f |
|
|
|
srctree ?= . |
|
|
|
build-indep: |
|
build-arch: |
|
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ |
|
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile |
|
|
|
build: build-arch |
|
|
|
binary-indep: |
|
binary-arch: build-arch |
|
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ |
|
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg |
|
|
|
clean: |
|
rm -rf debian/*tmp debian/files |
|
\$(MAKE) clean |
|
|
|
binary: binary-arch |
|
EOF |
|
chmod +x debian/rules |
|
|
|
exit 0
|
|
|