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