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