1b41d920aSRiku Voipio#!/bin/sh 2b41d920aSRiku Voipio# 3b41d920aSRiku Voipio# Copyright 2003 Wichert Akkerman <wichert@wiggy.net> 4b41d920aSRiku Voipio# 5b41d920aSRiku Voipio# Simple script to generate a debian/ directory for a Linux kernel. 6b41d920aSRiku Voipio 7b41d920aSRiku Voipioset -e 8b41d920aSRiku Voipio 908d3892cSBen Hutchingsis_enabled() { 1008d3892cSBen Hutchings grep -q "^CONFIG_$1=y" $KCONFIG_CONFIG 1108d3892cSBen Hutchings} 1208d3892cSBen Hutchings 1308d3892cSBen Hutchingsif_enabled_echo() { 1408d3892cSBen Hutchings if is_enabled "$1"; then 1508d3892cSBen Hutchings echo -n "$2" 1608d3892cSBen Hutchings elif [ $# -ge 3 ]; then 1708d3892cSBen Hutchings echo -n "$3" 1808d3892cSBen Hutchings fi 1908d3892cSBen Hutchings} 2008d3892cSBen Hutchings 21b41d920aSRiku Voipioset_debarch() { 22f2abcc13SBen Hutchings if [ -n "$KBUILD_DEBARCH" ] ; then 23f2abcc13SBen Hutchings debarch="$KBUILD_DEBARCH" 24f2abcc13SBen Hutchings return 25f2abcc13SBen Hutchings fi 26f2abcc13SBen Hutchings 27b41d920aSRiku Voipio # Attempt to find the correct Debian architecture 28b41d920aSRiku Voipio case "$UTS_MACHINE" in 29b41d920aSRiku Voipio i386|ia64|alpha) 30b41d920aSRiku Voipio debarch="$UTS_MACHINE" ;; 31b41d920aSRiku Voipio x86_64) 32b41d920aSRiku Voipio debarch=amd64 ;; 33b41d920aSRiku Voipio sparc*) 34a27ae285SBen Hutchings debarch=sparc$(if_enabled_echo 64BIT 64) ;; 35b41d920aSRiku Voipio s390*) 364260ecd0SBen Hutchings debarch=s390x ;; 37b41d920aSRiku Voipio ppc*) 3850d511baSBen Hutchings if is_enabled 64BIT; then 3950d511baSBen Hutchings debarch=ppc64$(if_enabled_echo CPU_LITTLE_ENDIAN el) 4050d511baSBen Hutchings else 4150d511baSBen Hutchings debarch=powerpc$(if_enabled_echo SPE spe) 4250d511baSBen Hutchings fi 4350d511baSBen Hutchings ;; 44b41d920aSRiku Voipio parisc*) 45b41d920aSRiku Voipio debarch=hppa ;; 46b41d920aSRiku Voipio mips*) 47159b3794SBen Hutchings if is_enabled CPU_LITTLE_ENDIAN; then 48679caaf3SBen Hutchings debarch=mips$(if_enabled_echo 64BIT 64)$(if_enabled_echo CPU_MIPSR6 r6)el 49679caaf3SBen Hutchings elif is_enabled CPU_MIPSR6; then 50679caaf3SBen Hutchings debarch=mips$(if_enabled_echo 64BIT 64)r6 51159b3794SBen Hutchings else 52159b3794SBen Hutchings debarch=mips 53159b3794SBen Hutchings fi 54159b3794SBen Hutchings ;; 55b41d920aSRiku Voipio aarch64|arm64) 56b41d920aSRiku Voipio debarch=arm64 ;; 57b41d920aSRiku Voipio arm*) 5808d3892cSBen Hutchings if is_enabled AEABI; then 5908d3892cSBen Hutchings debarch=arm$(if_enabled_echo VFP hf el) 60b41d920aSRiku Voipio else 61b41d920aSRiku Voipio debarch=arm 62b41d920aSRiku Voipio fi 63b41d920aSRiku Voipio ;; 64*822f44fbSBen Hutchings openrisc) 65*822f44fbSBen Hutchings debarch=or1k ;; 66b41d920aSRiku Voipio *) 67091d30aeSBen Hutchings debarch=$(dpkg-architecture -qDEB_HOST_ARCH) 68b41d920aSRiku Voipio echo "" >&2 69b41d920aSRiku Voipio echo "** ** ** WARNING ** ** **" >&2 70b41d920aSRiku Voipio echo "" >&2 71b41d920aSRiku Voipio echo "Your architecture doesn't have its equivalent" >&2 72b41d920aSRiku Voipio echo "Debian userspace architecture defined!" >&2 73091d30aeSBen Hutchings echo "Falling back to the current host architecture ($debarch)." >&2 74b41d920aSRiku Voipio echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 75b41d920aSRiku Voipio echo "" >&2 76f2abcc13SBen Hutchings ;; 77b41d920aSRiku Voipio esac 78b41d920aSRiku Voipio} 79b41d920aSRiku Voipio 80b41d920aSRiku Voipio# Some variables and settings used throughout the script 81b41d920aSRiku Voipioversion=$KERNELRELEASE 82b41d920aSRiku Voipioif [ -n "$KDEB_PKGVERSION" ]; then 83b41d920aSRiku Voipio packageversion=$KDEB_PKGVERSION 84b41d920aSRiku Voipioelse 85b41d920aSRiku Voipio revision=$(cat .version 2>/dev/null||echo 1) 86b41d920aSRiku Voipio packageversion=$version-$revision 87b41d920aSRiku Voipiofi 88b41d920aSRiku Voipiosourcename=$KDEB_SOURCENAME 89b41d920aSRiku Voipiopackagename=linux-image-$version 90b41d920aSRiku Voipiokernel_headers_packagename=linux-headers-$version 91b41d920aSRiku Voipiodbg_packagename=$packagename-dbg 92b41d920aSRiku Voipiodebarch= 93b41d920aSRiku Voipioset_debarch 94b41d920aSRiku Voipio 95b41d920aSRiku Voipioif [ "$ARCH" = "um" ] ; then 96b41d920aSRiku Voipio packagename=user-mode-linux-$version 97b41d920aSRiku Voipiofi 98b41d920aSRiku Voipio 99d5940c60SRiku Voipioemail=${DEBEMAIL-$EMAIL} 100d5940c60SRiku Voipio 101d5940c60SRiku Voipio# use email string directly if it contains <email> 102d5940c60SRiku Voipioif echo $email | grep -q '<.*>'; then 103d5940c60SRiku Voipio maintainer=$email 104b41d920aSRiku Voipioelse 105d5940c60SRiku Voipio # or construct the maintainer string 106d5940c60SRiku Voipio user=${KBUILD_BUILD_USER-$(id -nu)} 107d5940c60SRiku Voipio name=${DEBFULLNAME-$user} 108d5940c60SRiku Voipio if [ -z "$email" ]; then 109d5940c60SRiku Voipio buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)} 110d5940c60SRiku Voipio email="$user@$buildhost" 111b41d920aSRiku Voipio fi 112b41d920aSRiku Voipio maintainer="$name <$email>" 113d5940c60SRiku Voipiofi 114b41d920aSRiku Voipio 115b41d920aSRiku Voipio# Try to determine distribution 116b41d920aSRiku Voipioif [ -n "$KDEB_CHANGELOG_DIST" ]; then 117b41d920aSRiku Voipio distribution=$KDEB_CHANGELOG_DIST 118b41d920aSRiku Voipio# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog 119b41d920aSRiku Voipioelif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then 120b41d920aSRiku Voipio : # nothing to do in this case 121b41d920aSRiku Voipioelse 122b41d920aSRiku Voipio distribution="unstable" 123b41d920aSRiku Voipio echo >&2 "Using default distribution of 'unstable' in the changelog" 124b41d920aSRiku Voipio echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" 125b41d920aSRiku Voipiofi 126b41d920aSRiku Voipio 127b41d920aSRiku Voipiomkdir -p debian/ 128b41d920aSRiku Voipioecho $debarch > debian/arch 129b41d920aSRiku Voipio 130b41d920aSRiku Voipio# Generate a simple changelog template 131b41d920aSRiku Voipiocat <<EOF > debian/changelog 132b41d920aSRiku Voipio$sourcename ($packageversion) $distribution; urgency=low 133b41d920aSRiku Voipio 134b41d920aSRiku Voipio * Custom built Linux kernel. 135b41d920aSRiku Voipio 136b41d920aSRiku Voipio -- $maintainer $(date -R) 137b41d920aSRiku VoipioEOF 138b41d920aSRiku Voipio 139b41d920aSRiku Voipio# Generate copyright file 140b41d920aSRiku Voipiocat <<EOF > debian/copyright 141b41d920aSRiku VoipioThis is a packacked upstream version of the Linux kernel. 142b41d920aSRiku Voipio 143b41d920aSRiku VoipioThe sources may be found at most Linux archive sites, including: 144b41d920aSRiku Voipiohttps://www.kernel.org/pub/linux/kernel 145b41d920aSRiku Voipio 146b41d920aSRiku VoipioCopyright: 1991 - 2018 Linus Torvalds and others. 147b41d920aSRiku Voipio 148b41d920aSRiku VoipioThe git repository for mainline kernel development is at: 149b41d920aSRiku Voipiogit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 150b41d920aSRiku Voipio 151b41d920aSRiku Voipio This program is free software; you can redistribute it and/or modify 152b41d920aSRiku Voipio it under the terms of the GNU General Public License as published by 153b41d920aSRiku Voipio the Free Software Foundation; version 2 dated June, 1991. 154b41d920aSRiku Voipio 155b41d920aSRiku VoipioOn Debian GNU/Linux systems, the complete text of the GNU General Public 156b41d920aSRiku VoipioLicense version 2 can be found in \`/usr/share/common-licenses/GPL-2'. 157b41d920aSRiku VoipioEOF 158b41d920aSRiku Voipio 159b41d920aSRiku Voipio# Generate a control file 160b41d920aSRiku Voipiocat <<EOF > debian/control 161b41d920aSRiku VoipioSource: $sourcename 162b41d920aSRiku VoipioSection: kernel 163b41d920aSRiku VoipioPriority: optional 164b41d920aSRiku VoipioMaintainer: $maintainer 165b41d920aSRiku VoipioBuild-Depends: bc, kmod, cpio 166b41d920aSRiku VoipioHomepage: http://www.kernel.org/ 167b41d920aSRiku Voipio 168b41d920aSRiku VoipioPackage: $packagename 169b41d920aSRiku VoipioArchitecture: $debarch 170b41d920aSRiku VoipioDescription: Linux kernel, version $version 171b41d920aSRiku Voipio This package contains the Linux kernel, modules and corresponding other 172b41d920aSRiku Voipio files, version: $version. 173b41d920aSRiku Voipio 174b41d920aSRiku VoipioPackage: $kernel_headers_packagename 175b41d920aSRiku VoipioArchitecture: $debarch 176b41d920aSRiku VoipioDescription: Linux kernel headers for $version on $debarch 177b41d920aSRiku Voipio This package provides kernel header files for $version on $debarch 178b41d920aSRiku Voipio . 179b41d920aSRiku Voipio This is useful for people who need to build external modules 180b41d920aSRiku Voipio 181b41d920aSRiku VoipioPackage: linux-libc-dev 182b41d920aSRiku VoipioSection: devel 183b41d920aSRiku VoipioProvides: linux-kernel-headers 184b41d920aSRiku VoipioArchitecture: $debarch 185b41d920aSRiku VoipioDescription: Linux support headers for userspace development 186b41d920aSRiku Voipio This package provides userspaces headers from the Linux kernel. These headers 187b41d920aSRiku Voipio are used by the installed headers for GNU glibc and other system libraries. 188b41d920aSRiku Voipio 189b41d920aSRiku VoipioPackage: $dbg_packagename 190b41d920aSRiku VoipioSection: debug 191b41d920aSRiku VoipioArchitecture: $debarch 192b41d920aSRiku VoipioDescription: Linux kernel debugging symbols for $version 193b41d920aSRiku Voipio This package will come in handy if you need to debug the kernel. It provides 194b41d920aSRiku Voipio all the necessary debug symbols for the kernel and its modules. 195b41d920aSRiku VoipioEOF 196b41d920aSRiku Voipio 197b41d920aSRiku Voipiocat <<EOF > debian/rules 198b41d920aSRiku Voipio#!$(command -v $MAKE) -f 199b41d920aSRiku Voipio 200b41d920aSRiku Voipiobuild: 201b41d920aSRiku Voipio \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= 202b41d920aSRiku Voipio 203b41d920aSRiku Voipiobinary-arch: 204b41d920aSRiku Voipio \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg 205b41d920aSRiku Voipio 206b41d920aSRiku Voipioclean: 207b41d920aSRiku Voipio rm -rf debian/*tmp debian/files 208b41d920aSRiku Voipio \$(MAKE) clean 209b41d920aSRiku Voipio 210b41d920aSRiku Voipiobinary: binary-arch 211b41d920aSRiku VoipioEOF 212b41d920aSRiku Voipio 213b41d920aSRiku Voipioexit 0 214