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