builddeb 3.3 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/bin/sh
#
# builddeb 1.2
# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
#
# Simple script to generate a deb package for a Linux kernel. All the
# complexity of what to do with a kernel after it is installer or removed
# is left to other scripts and packages: they can install scripts in the
# /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on
# package install and removal.

set -e

# Some variables and settings used throughout the script
version=$KERNELRELEASE
tmpdir="$objtree/debian/tmp"
17 18 19 20 21
packagename=linux-$version

if [ "$ARCH" == "um" ] ; then
	packagename=user-mode-linux-$version
fi
L
Linus Torvalds 已提交
22 23 24 25

# Setup the directory structure
rm -rf "$tmpdir"
mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
26 27 28
if [ "$ARCH" == "um" ] ; then
	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
fi
L
Linus Torvalds 已提交
29 30

# Build and install the kernel
31 32 33 34 35 36 37 38 39 40 41
if [ "$ARCH" == "um" ] ; then
	$MAKE linux
	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
	cp .config "$tmpdir/usr/share/doc/$packagename/config"
	gzip "$tmpdir/usr/share/doc/$packagename/config"
	cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
else 
	cp System.map "$tmpdir/boot/System.map-$version"
	cp .config "$tmpdir/boot/config-$version"
	cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
fi
L
Linus Torvalds 已提交
42 43

if grep -q '^CONFIG_MODULES=y' .config ; then
44
	INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
45 46 47 48
	if [ "$ARCH" == "um" ] ; then
		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
		rmdir "$tmpdir/lib/modules/$version"
	fi
L
Linus Torvalds 已提交
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
fi

# Install the maintainer scripts
for script in postinst postrm preinst prerm ; do
	mkdir -p "$tmpdir/etc/kernel/$script.d"
	cat <<EOF > "$tmpdir/DEBIAN/$script"
#!/bin/sh

set -e

test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
exit 0
EOF
	chmod 755 "$tmpdir/DEBIAN/$script"
done

name="Kernel Compiler <$(id -nu)@$(hostname -f)>"
# Generate a simple changelog template
cat <<EOF > debian/changelog
linux ($version) unstable; urgency=low

  * A standard release

 -- $name  $(date -R)
EOF

# Generate a control file
76 77 78 79 80 81 82 83 84 85
if [ "$ARCH" == "um" ]; then

cat <<EOF > debian/control
Source: linux
Section: base
Priority: optional
Maintainer: $name
Standards-Version: 3.6.1

Package: $packagename
86
Provides: kernel-image-$version, linux-image-$version
87 88 89 90 91 92 93 94 95 96 97 98 99
Architecture: any
Description: User Mode Linux kernel, version $version
 User-mode Linux is a port of the Linux kernel to its own system call
 interface.  It provides a kind of virtual machine, which runs Linux
 as a user process under another Linux kernel.  This is useful for
 kernel development, sandboxes, jails, experimentation, and
 many other things.
 .
 This package contains the Linux kernel, modules and corresponding other
 files version $version
EOF

else
L
Linus Torvalds 已提交
100 101 102 103 104 105 106
cat <<EOF > debian/control
Source: linux
Section: base
Priority: optional
Maintainer: $name
Standards-Version: 3.6.1

107
Package: $packagename
108
Provides: kernel-image-$version, linux-image-$version
L
Linus Torvalds 已提交
109
Architecture: any
110
Description: Linux kernel, version $version
L
Linus Torvalds 已提交
111
 This package contains the Linux kernel, modules and corresponding other
112
 files version $version
L
Linus Torvalds 已提交
113
EOF
114
fi
L
Linus Torvalds 已提交
115 116 117 118 119 120 121 122 123 124 125

# Fix some ownership and permissions
chown -R root:root "$tmpdir"
chmod -R go-w "$tmpdir"

# Perform the final magic
dpkg-gencontrol -isp
dpkg --build "$tmpdir" ..

exit 0