xref: /linux/scripts/package/mkdebian (revision b41d920acff8305b8a25a183a8e4d41b8975097d)
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