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 9b41d920aSRiku Voipioset_debarch() { 10b41d920aSRiku Voipio # Attempt to find the correct Debian architecture 11b41d920aSRiku Voipio case "$UTS_MACHINE" in 12b41d920aSRiku Voipio i386|ia64|alpha) 13b41d920aSRiku Voipio debarch="$UTS_MACHINE" ;; 14b41d920aSRiku Voipio x86_64) 15b41d920aSRiku Voipio debarch=amd64 ;; 16b41d920aSRiku Voipio sparc*) 17b41d920aSRiku Voipio debarch=sparc ;; 18b41d920aSRiku Voipio s390*) 19b41d920aSRiku Voipio debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; 20b41d920aSRiku Voipio ppc*) 21b41d920aSRiku Voipio debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; 22b41d920aSRiku Voipio parisc*) 23b41d920aSRiku Voipio debarch=hppa ;; 24b41d920aSRiku Voipio mips*) 25b41d920aSRiku Voipio debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; 26b41d920aSRiku Voipio aarch64|arm64) 27b41d920aSRiku Voipio debarch=arm64 ;; 28b41d920aSRiku Voipio arm*) 29b41d920aSRiku Voipio if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then 30b41d920aSRiku Voipio if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then 31b41d920aSRiku Voipio debarch=armhf 32b41d920aSRiku Voipio else 33b41d920aSRiku Voipio debarch=armel 34b41d920aSRiku Voipio fi 35b41d920aSRiku Voipio else 36b41d920aSRiku Voipio debarch=arm 37b41d920aSRiku Voipio fi 38b41d920aSRiku Voipio ;; 39b41d920aSRiku Voipio *) 40b41d920aSRiku Voipio debarch=$(dpkg --print-architecture) 41b41d920aSRiku Voipio echo "" >&2 42b41d920aSRiku Voipio echo "** ** ** WARNING ** ** **" >&2 43b41d920aSRiku Voipio echo "" >&2 44b41d920aSRiku Voipio echo "Your architecture doesn't have its equivalent" >&2 45b41d920aSRiku Voipio echo "Debian userspace architecture defined!" >&2 46b41d920aSRiku Voipio echo "Falling back to using your current userspace instead!" >&2 47b41d920aSRiku Voipio echo "Please add support for $UTS_MACHINE to ${0} ..." >&2 48b41d920aSRiku Voipio echo "" >&2 49b41d920aSRiku Voipio esac 50b41d920aSRiku Voipio if [ -n "$KBUILD_DEBARCH" ] ; then 51b41d920aSRiku Voipio debarch="$KBUILD_DEBARCH" 52b41d920aSRiku Voipio fi 53b41d920aSRiku Voipio} 54b41d920aSRiku Voipio 55b41d920aSRiku Voipio# Some variables and settings used throughout the script 56b41d920aSRiku Voipioversion=$KERNELRELEASE 57b41d920aSRiku Voipioif [ -n "$KDEB_PKGVERSION" ]; then 58b41d920aSRiku Voipio packageversion=$KDEB_PKGVERSION 59b41d920aSRiku Voipioelse 60b41d920aSRiku Voipio revision=$(cat .version 2>/dev/null||echo 1) 61b41d920aSRiku Voipio packageversion=$version-$revision 62b41d920aSRiku Voipiofi 63b41d920aSRiku Voipiosourcename=$KDEB_SOURCENAME 64b41d920aSRiku Voipiopackagename=linux-image-$version 65b41d920aSRiku Voipiokernel_headers_packagename=linux-headers-$version 66b41d920aSRiku Voipiodbg_packagename=$packagename-dbg 67b41d920aSRiku Voipiodebarch= 68b41d920aSRiku Voipioset_debarch 69b41d920aSRiku Voipio 70b41d920aSRiku Voipioif [ "$ARCH" = "um" ] ; then 71b41d920aSRiku Voipio packagename=user-mode-linux-$version 72b41d920aSRiku Voipiofi 73b41d920aSRiku Voipio 74*d5940c60SRiku Voipioemail=${DEBEMAIL-$EMAIL} 75*d5940c60SRiku Voipio 76*d5940c60SRiku Voipio# use email string directly if it contains <email> 77*d5940c60SRiku Voipioif echo $email | grep -q '<.*>'; then 78*d5940c60SRiku Voipio maintainer=$email 79b41d920aSRiku Voipioelse 80*d5940c60SRiku Voipio # or construct the maintainer string 81*d5940c60SRiku Voipio user=${KBUILD_BUILD_USER-$(id -nu)} 82*d5940c60SRiku Voipio name=${DEBFULLNAME-$user} 83*d5940c60SRiku Voipio if [ -z "$email" ]; then 84*d5940c60SRiku Voipio buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)} 85*d5940c60SRiku Voipio email="$user@$buildhost" 86b41d920aSRiku Voipio fi 87b41d920aSRiku Voipio maintainer="$name <$email>" 88*d5940c60SRiku Voipiofi 89b41d920aSRiku Voipio 90b41d920aSRiku Voipio# Try to determine distribution 91b41d920aSRiku Voipioif [ -n "$KDEB_CHANGELOG_DIST" ]; then 92b41d920aSRiku Voipio distribution=$KDEB_CHANGELOG_DIST 93b41d920aSRiku Voipio# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog 94b41d920aSRiku Voipioelif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then 95b41d920aSRiku Voipio : # nothing to do in this case 96b41d920aSRiku Voipioelse 97b41d920aSRiku Voipio distribution="unstable" 98b41d920aSRiku Voipio echo >&2 "Using default distribution of 'unstable' in the changelog" 99b41d920aSRiku Voipio echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" 100b41d920aSRiku Voipiofi 101b41d920aSRiku Voipio 102b41d920aSRiku Voipiomkdir -p debian/ 103b41d920aSRiku Voipioecho $debarch > debian/arch 104b41d920aSRiku Voipio 105b41d920aSRiku Voipio# Generate a simple changelog template 106b41d920aSRiku Voipiocat <<EOF > debian/changelog 107b41d920aSRiku Voipio$sourcename ($packageversion) $distribution; urgency=low 108b41d920aSRiku Voipio 109b41d920aSRiku Voipio * Custom built Linux kernel. 110b41d920aSRiku Voipio 111b41d920aSRiku Voipio -- $maintainer $(date -R) 112b41d920aSRiku VoipioEOF 113b41d920aSRiku Voipio 114b41d920aSRiku Voipio# Generate copyright file 115b41d920aSRiku Voipiocat <<EOF > debian/copyright 116b41d920aSRiku VoipioThis is a packacked upstream version of the Linux kernel. 117b41d920aSRiku Voipio 118b41d920aSRiku VoipioThe sources may be found at most Linux archive sites, including: 119b41d920aSRiku Voipiohttps://www.kernel.org/pub/linux/kernel 120b41d920aSRiku Voipio 121b41d920aSRiku VoipioCopyright: 1991 - 2018 Linus Torvalds and others. 122b41d920aSRiku Voipio 123b41d920aSRiku VoipioThe git repository for mainline kernel development is at: 124b41d920aSRiku Voipiogit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 125b41d920aSRiku Voipio 126b41d920aSRiku Voipio This program is free software; you can redistribute it and/or modify 127b41d920aSRiku Voipio it under the terms of the GNU General Public License as published by 128b41d920aSRiku Voipio the Free Software Foundation; version 2 dated June, 1991. 129b41d920aSRiku Voipio 130b41d920aSRiku VoipioOn Debian GNU/Linux systems, the complete text of the GNU General Public 131b41d920aSRiku VoipioLicense version 2 can be found in \`/usr/share/common-licenses/GPL-2'. 132b41d920aSRiku VoipioEOF 133b41d920aSRiku Voipio 134b41d920aSRiku Voipio# Generate a control file 135b41d920aSRiku Voipiocat <<EOF > debian/control 136b41d920aSRiku VoipioSource: $sourcename 137b41d920aSRiku VoipioSection: kernel 138b41d920aSRiku VoipioPriority: optional 139b41d920aSRiku VoipioMaintainer: $maintainer 140b41d920aSRiku VoipioBuild-Depends: bc, kmod, cpio 141b41d920aSRiku VoipioHomepage: http://www.kernel.org/ 142b41d920aSRiku Voipio 143b41d920aSRiku VoipioPackage: $packagename 144b41d920aSRiku VoipioArchitecture: $debarch 145b41d920aSRiku VoipioDescription: Linux kernel, version $version 146b41d920aSRiku Voipio This package contains the Linux kernel, modules and corresponding other 147b41d920aSRiku Voipio files, version: $version. 148b41d920aSRiku Voipio 149b41d920aSRiku VoipioPackage: $kernel_headers_packagename 150b41d920aSRiku VoipioArchitecture: $debarch 151b41d920aSRiku VoipioDescription: Linux kernel headers for $version on $debarch 152b41d920aSRiku Voipio This package provides kernel header files for $version on $debarch 153b41d920aSRiku Voipio . 154b41d920aSRiku Voipio This is useful for people who need to build external modules 155b41d920aSRiku Voipio 156b41d920aSRiku VoipioPackage: linux-libc-dev 157b41d920aSRiku VoipioSection: devel 158b41d920aSRiku VoipioProvides: linux-kernel-headers 159b41d920aSRiku VoipioArchitecture: $debarch 160b41d920aSRiku VoipioDescription: Linux support headers for userspace development 161b41d920aSRiku Voipio This package provides userspaces headers from the Linux kernel. These headers 162b41d920aSRiku Voipio are used by the installed headers for GNU glibc and other system libraries. 163b41d920aSRiku Voipio 164b41d920aSRiku VoipioPackage: $dbg_packagename 165b41d920aSRiku VoipioSection: debug 166b41d920aSRiku VoipioArchitecture: $debarch 167b41d920aSRiku VoipioDescription: Linux kernel debugging symbols for $version 168b41d920aSRiku Voipio This package will come in handy if you need to debug the kernel. It provides 169b41d920aSRiku Voipio all the necessary debug symbols for the kernel and its modules. 170b41d920aSRiku VoipioEOF 171b41d920aSRiku Voipio 172b41d920aSRiku Voipiocat <<EOF > debian/rules 173b41d920aSRiku Voipio#!$(command -v $MAKE) -f 174b41d920aSRiku Voipio 175b41d920aSRiku Voipiobuild: 176b41d920aSRiku Voipio \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= 177b41d920aSRiku Voipio 178b41d920aSRiku Voipiobinary-arch: 179b41d920aSRiku Voipio \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg 180b41d920aSRiku Voipio 181b41d920aSRiku Voipioclean: 182b41d920aSRiku Voipio rm -rf debian/*tmp debian/files 183b41d920aSRiku Voipio \$(MAKE) clean 184b41d920aSRiku Voipio 185b41d920aSRiku Voipiobinary: binary-arch 186b41d920aSRiku VoipioEOF 187b41d920aSRiku Voipio 188b41d920aSRiku Voipioexit 0 189