cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mkdebian (6493B)


      1#!/bin/sh
      2#
      3# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
      4#
      5# Simple script to generate a debian/ directory for a Linux kernel.
      6
      7set -e
      8
      9is_enabled() {
     10	grep -q "^$1=y" include/config/auto.conf
     11}
     12
     13if_enabled_echo() {
     14	if is_enabled "$1"; then
     15		echo -n "$2"
     16	elif [ $# -ge 3 ]; then
     17		echo -n "$3"
     18	fi
     19}
     20
     21set_debarch() {
     22	if [ -n "$KBUILD_DEBARCH" ] ; then
     23		debarch="$KBUILD_DEBARCH"
     24		return
     25	fi
     26
     27	# Attempt to find the correct Debian architecture
     28	case "$UTS_MACHINE" in
     29	i386|ia64|alpha|m68k|riscv*)
     30		debarch="$UTS_MACHINE" ;;
     31	x86_64)
     32		debarch=amd64 ;;
     33	sparc*)
     34		debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;;
     35	s390*)
     36		debarch=s390x ;;
     37	ppc*)
     38		if is_enabled CONFIG_64BIT; then
     39			debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el)
     40		else
     41			debarch=powerpc$(if_enabled_echo CONFIG_SPE spe)
     42		fi
     43		;;
     44	parisc*)
     45		debarch=hppa ;;
     46	mips*)
     47		if is_enabled CONFIG_CPU_LITTLE_ENDIAN; then
     48			debarch=mips$(if_enabled_echo CONFIG_64BIT 64)$(if_enabled_echo CONFIG_CPU_MIPSR6 r6)el
     49		elif is_enabled CONFIG_CPU_MIPSR6; then
     50			debarch=mips$(if_enabled_echo CONFIG_64BIT 64)r6
     51		else
     52			debarch=mips
     53		fi
     54		;;
     55	aarch64|arm64)
     56		debarch=arm64 ;;
     57	arm*)
     58		if is_enabled CONFIG_AEABI; then
     59			debarch=arm$(if_enabled_echo CONFIG_VFP hf el)
     60		else
     61			debarch=arm
     62		fi
     63		;;
     64	openrisc)
     65		debarch=or1k ;;
     66	sh)
     67		if is_enabled CONFIG_CPU_SH3; then
     68			debarch=sh3$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
     69		elif is_enabled CONFIG_CPU_SH4; then
     70			debarch=sh4$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
     71		fi
     72		;;
     73	esac
     74	if [ -z "$debarch" ]; then
     75		debarch=$(dpkg-architecture -qDEB_HOST_ARCH)
     76		echo "" >&2
     77		echo "** ** **  WARNING  ** ** **" >&2
     78		echo "" >&2
     79		echo "Your architecture doesn't have its equivalent" >&2
     80		echo "Debian userspace architecture defined!" >&2
     81		echo "Falling back to the current host architecture ($debarch)." >&2
     82		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
     83		echo "" >&2
     84	fi
     85}
     86
     87# Some variables and settings used throughout the script
     88version=$KERNELRELEASE
     89if [ -n "$KDEB_PKGVERSION" ]; then
     90	packageversion=$KDEB_PKGVERSION
     91	revision=${packageversion##*-}
     92else
     93	revision=$(cat .version 2>/dev/null||echo 1)
     94	packageversion=$version-$revision
     95fi
     96sourcename=$KDEB_SOURCENAME
     97
     98if [ "$ARCH" = "um" ] ; then
     99	packagename=user-mode-linux
    100else
    101	packagename=linux-image
    102fi
    103
    104debarch=
    105set_debarch
    106
    107email=${DEBEMAIL-$EMAIL}
    108
    109# use email string directly if it contains <email>
    110if echo $email | grep -q '<.*>'; then
    111	maintainer=$email
    112else
    113	# or construct the maintainer string
    114	user=${KBUILD_BUILD_USER-$(id -nu)}
    115	name=${DEBFULLNAME-$user}
    116	if [ -z "$email" ]; then
    117		buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)}
    118		email="$user@$buildhost"
    119	fi
    120	maintainer="$name <$email>"
    121fi
    122
    123# Try to determine distribution
    124if [ -n "$KDEB_CHANGELOG_DIST" ]; then
    125        distribution=$KDEB_CHANGELOG_DIST
    126# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
    127elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
    128        : # nothing to do in this case
    129else
    130        distribution="unstable"
    131        echo >&2 "Using default distribution of 'unstable' in the changelog"
    132        echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
    133fi
    134
    135mkdir -p debian/source/
    136echo "1.0" > debian/source/format
    137
    138echo $debarch > debian/arch
    139extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)"
    140extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)"
    141
    142# Generate a simple changelog template
    143cat <<EOF > debian/changelog
    144$sourcename ($packageversion) $distribution; urgency=low
    145
    146  * Custom built Linux kernel.
    147
    148 -- $maintainer  $(date -R)
    149EOF
    150
    151# Generate copyright file
    152cat <<EOF > debian/copyright
    153This is a packacked upstream version of the Linux kernel.
    154
    155The sources may be found at most Linux archive sites, including:
    156https://www.kernel.org/pub/linux/kernel
    157
    158Copyright: 1991 - 2018 Linus Torvalds and others.
    159
    160The git repository for mainline kernel development is at:
    161git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    162
    163    This program is free software; you can redistribute it and/or modify
    164    it under the terms of the GNU General Public License as published by
    165    the Free Software Foundation; version 2 dated June, 1991.
    166
    167On Debian GNU/Linux systems, the complete text of the GNU General Public
    168License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
    169EOF
    170
    171# Generate a control file
    172cat <<EOF > debian/control
    173Source: $sourcename
    174Section: kernel
    175Priority: optional
    176Maintainer: $maintainer
    177Rules-Requires-Root: no
    178Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends
    179Homepage: https://www.kernel.org/
    180
    181Package: $packagename-$version
    182Architecture: $debarch
    183Description: Linux kernel, version $version
    184 This package contains the Linux kernel, modules and corresponding other
    185 files, version: $version.
    186
    187Package: linux-libc-dev
    188Section: devel
    189Provides: linux-kernel-headers
    190Architecture: $debarch
    191Description: Linux support headers for userspace development
    192 This package provides userspaces headers from the Linux kernel.  These headers
    193 are used by the installed headers for GNU glibc and other system libraries.
    194Multi-Arch: same
    195EOF
    196
    197if is_enabled CONFIG_MODULES; then
    198cat <<EOF >> debian/control
    199
    200Package: linux-headers-$version
    201Architecture: $debarch
    202Description: Linux kernel headers for $version on $debarch
    203 This package provides kernel header files for $version on $debarch
    204 .
    205 This is useful for people who need to build external modules
    206EOF
    207fi
    208
    209if is_enabled CONFIG_DEBUG_INFO; then
    210cat <<EOF >> debian/control
    211
    212Package: linux-image-$version-dbg
    213Section: debug
    214Architecture: $debarch
    215Description: Linux kernel debugging symbols for $version
    216 This package will come in handy if you need to debug the kernel. It provides
    217 all the necessary debug symbols for the kernel and its modules.
    218EOF
    219fi
    220
    221cat <<EOF > debian/rules
    222#!$(command -v $MAKE) -f
    223
    224srctree ?= .
    225
    226build-indep:
    227build-arch:
    228	\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
    229	KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
    230
    231build: build-arch
    232
    233binary-indep:
    234binary-arch: build-arch
    235	\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
    236	KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg
    237
    238clean:
    239	rm -rf debian/*tmp debian/files
    240	\$(MAKE) clean
    241
    242binary: binary-arch
    243EOF
    244chmod +x debian/rules
    245
    246exit 0