xref: /linux/scripts/package/builddeb (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds#!/bin/sh
2*1da177e4SLinus Torvalds#
3*1da177e4SLinus Torvalds# builddeb 1.2
4*1da177e4SLinus Torvalds# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
5*1da177e4SLinus Torvalds#
6*1da177e4SLinus Torvalds# Simple script to generate a deb package for a Linux kernel. All the
7*1da177e4SLinus Torvalds# complexity of what to do with a kernel after it is installer or removed
8*1da177e4SLinus Torvalds# is left to other scripts and packages: they can install scripts in the
9*1da177e4SLinus Torvalds# /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on
10*1da177e4SLinus Torvalds# package install and removal.
11*1da177e4SLinus Torvalds
12*1da177e4SLinus Torvaldsset -e
13*1da177e4SLinus Torvalds
14*1da177e4SLinus Torvalds# Some variables and settings used throughout the script
15*1da177e4SLinus Torvaldsversion=$KERNELRELEASE
16*1da177e4SLinus Torvaldstmpdir="$objtree/debian/tmp"
17*1da177e4SLinus Torvalds
18*1da177e4SLinus Torvalds# Setup the directory structure
19*1da177e4SLinus Torvaldsrm -rf "$tmpdir"
20*1da177e4SLinus Torvaldsmkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
21*1da177e4SLinus Torvalds
22*1da177e4SLinus Torvalds# Build and install the kernel
23*1da177e4SLinus Torvaldscp System.map "$tmpdir/boot/System.map-$version"
24*1da177e4SLinus Torvaldscp .config "$tmpdir/boot/config-$version"
25*1da177e4SLinus Torvaldscp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
26*1da177e4SLinus Torvalds
27*1da177e4SLinus Torvaldsif grep -q '^CONFIG_MODULES=y' .config ; then
28*1da177e4SLinus Torvalds	INSTALL_MOD_PATH="$tmpdir" make modules_install
29*1da177e4SLinus Torvaldsfi
30*1da177e4SLinus Torvalds
31*1da177e4SLinus Torvalds# Install the maintainer scripts
32*1da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do
33*1da177e4SLinus Torvalds	mkdir -p "$tmpdir/etc/kernel/$script.d"
34*1da177e4SLinus Torvalds	cat <<EOF > "$tmpdir/DEBIAN/$script"
35*1da177e4SLinus Torvalds#!/bin/sh
36*1da177e4SLinus Torvalds
37*1da177e4SLinus Torvaldsset -e
38*1da177e4SLinus Torvalds
39*1da177e4SLinus Torvaldstest -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
40*1da177e4SLinus Torvaldsexit 0
41*1da177e4SLinus TorvaldsEOF
42*1da177e4SLinus Torvalds	chmod 755 "$tmpdir/DEBIAN/$script"
43*1da177e4SLinus Torvaldsdone
44*1da177e4SLinus Torvalds
45*1da177e4SLinus Torvaldsname="Kernel Compiler <$(id -nu)@$(hostname -f)>"
46*1da177e4SLinus Torvalds# Generate a simple changelog template
47*1da177e4SLinus Torvaldscat <<EOF > debian/changelog
48*1da177e4SLinus Torvaldslinux ($version) unstable; urgency=low
49*1da177e4SLinus Torvalds
50*1da177e4SLinus Torvalds  * A standard release
51*1da177e4SLinus Torvalds
52*1da177e4SLinus Torvalds -- $name  $(date -R)
53*1da177e4SLinus TorvaldsEOF
54*1da177e4SLinus Torvalds
55*1da177e4SLinus Torvalds# Generate a control file
56*1da177e4SLinus Torvaldscat <<EOF > debian/control
57*1da177e4SLinus TorvaldsSource: linux
58*1da177e4SLinus TorvaldsSection: base
59*1da177e4SLinus TorvaldsPriority: optional
60*1da177e4SLinus TorvaldsMaintainer: $name
61*1da177e4SLinus TorvaldsStandards-Version: 3.6.1
62*1da177e4SLinus Torvalds
63*1da177e4SLinus TorvaldsPackage: linux-$version
64*1da177e4SLinus TorvaldsArchitecture: any
65*1da177e4SLinus TorvaldsDescription: Linux kernel, version $version
66*1da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other
67*1da177e4SLinus Torvalds files version $version.
68*1da177e4SLinus TorvaldsEOF
69*1da177e4SLinus Torvalds
70*1da177e4SLinus Torvalds# Fix some ownership and permissions
71*1da177e4SLinus Torvaldschown -R root:root "$tmpdir"
72*1da177e4SLinus Torvaldschmod -R go-w "$tmpdir"
73*1da177e4SLinus Torvalds
74*1da177e4SLinus Torvalds# Perform the final magic
75*1da177e4SLinus Torvaldsdpkg-gencontrol -isp
76*1da177e4SLinus Torvaldsdpkg --build "$tmpdir" ..
77*1da177e4SLinus Torvalds
78*1da177e4SLinus Torvaldsexit 0
79*1da177e4SLinus Torvalds
80