builddeb 2.5 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 44

if grep -q '^CONFIG_MODULES=y' .config ; then
	INSTALL_MOD_PATH="$tmpdir" make 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 76 77 78 79 80 81 82
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
cat <<EOF > debian/control
Source: linux
Section: base
Priority: optional
Maintainer: $name
Standards-Version: 3.6.1

83
Package: $packagename
L
Linus Torvalds 已提交
84
Architecture: any
85
Description: Linux kernel, version $packagename
L
Linus Torvalds 已提交
86
 This package contains the Linux kernel, modules and corresponding other
87
 files version $packagename
L
Linus Torvalds 已提交
88 89 90 91 92 93 94 95 96 97 98 99
EOF

# 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