ext3: Add batched discard support for ext3
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / scripts / package / builddeb
blob49b74e1ee12d0b97f9e2ca5759e853b4917c1aad
1 #!/bin/sh
3 # builddeb 1.3
4 # Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
6 # Simple script to generate a deb package for a Linux kernel. All the
7 # complexity of what to do with a kernel after it is installed or removed
8 # is left to other scripts and packages: they can install scripts in the
9 # /etc/kernel/{pre,post}{inst,rm}.d/ directories (or an alternative location
10 # specified in KDEB_HOOKDIR) that will be called on package install and
11 # removal.
13 set -e
15 create_package() {
16 local pname="$1" pdir="$2"
18 cp debian/copyright "$pdir/usr/share/doc/$pname/"
19 cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
20 gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
21 sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
22 | xargs -r0 md5sum > DEBIAN/md5sums"
24 # Fix ownership and permissions
25 chown -R root:root "$pdir"
26 chmod -R go-w "$pdir"
28 # Create the package
29 dpkg-gencontrol -isp -p$pname -P"$pdir"
30 dpkg --build "$pdir" ..
33 # Some variables and settings used throughout the script
34 version=$KERNELRELEASE
35 revision=$(cat .version)
36 if [ -n "$KDEB_PKGVERSION" ]; then
37 packageversion=$KDEB_PKGVERSION
38 else
39 packageversion=$version-$revision
41 tmpdir="$objtree/debian/tmp"
42 fwdir="$objtree/debian/fwtmp"
43 packagename=linux-image-$version
44 fwpackagename=linux-firmware-image
46 if [ "$ARCH" = "um" ] ; then
47 packagename=user-mode-linux-$version
50 # Setup the directory structure
51 rm -rf "$tmpdir" "$fwdir"
52 mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
53 mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" "$fwdir/usr/share/doc/$fwpackagename"
54 if [ "$ARCH" = "um" ] ; then
55 mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
58 # Build and install the kernel
59 if [ "$ARCH" = "um" ] ; then
60 $MAKE linux
61 cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
62 cp .config "$tmpdir/usr/share/doc/$packagename/config"
63 gzip "$tmpdir/usr/share/doc/$packagename/config"
64 cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
65 else
66 cp System.map "$tmpdir/boot/System.map-$version"
67 cp .config "$tmpdir/boot/config-$version"
68 # Not all arches include the boot path in KBUILD_IMAGE
69 if [ -e $KBUILD_IMAGE ]; then
70 cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
71 else
72 cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
76 if grep -q '^CONFIG_MODULES=y' .config ; then
77 INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
78 if [ "$ARCH" = "um" ] ; then
79 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
80 rmdir "$tmpdir/lib/modules/$version"
84 # Install the maintainer scripts
85 # Note: hook scripts under /etc/kernel are also executed by official Debian
86 # kernel packages, as well as kernel packages built using make-kpkg
87 debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
88 for script in postinst postrm preinst prerm ; do
89 mkdir -p "$tmpdir$debhookdir/$script.d"
90 cat <<EOF > "$tmpdir/DEBIAN/$script"
91 #!/bin/sh
93 set -e
95 # Pass maintainer script parameters to hook scripts
96 export DEB_MAINT_PARAMS="\$*"
98 test -d $debhookdir/$script.d && run-parts --arg="$version" $debhookdir/$script.d
99 exit 0
101 chmod 755 "$tmpdir/DEBIAN/$script"
102 done
104 # Try to determine maintainer and email values
105 if [ -n "$DEBEMAIL" ]; then
106 email=$DEBEMAIL
107 elif [ -n "$EMAIL" ]; then
108 email=$EMAIL
109 else
110 email=$(id -nu)@$(hostname -f)
112 if [ -n "$DEBFULLNAME" ]; then
113 name=$DEBFULLNAME
114 elif [ -n "$NAME" ]; then
115 name=$NAME
116 else
117 name="Anonymous"
119 maintainer="$name <$email>"
121 # Generate a simple changelog template
122 cat <<EOF > debian/changelog
123 linux-upstream ($packageversion) unstable; urgency=low
125 * Custom built Linux kernel.
127 -- $maintainer $(date -R)
130 # Generate copyright file
131 cat <<EOF > debian/copyright
132 This is a packacked upstream version of the Linux kernel.
134 The sources may be found at most Linux ftp sites, including:
135 ftp://ftp.kernel.org/pub/linux/kernel
137 Copyright: 1991 - 2009 Linus Torvalds and others.
139 The git repository for mainline kernel development is at:
140 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
142 This program is free software; you can redistribute it and/or modify
143 it under the terms of the GNU General Public License as published by
144 the Free Software Foundation; version 2 dated June, 1991.
146 On Debian GNU/Linux systems, the complete text of the GNU General Public
147 License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
150 # Generate a control file
151 cat <<EOF > debian/control
152 Source: linux-upstream
153 Section: kernel
154 Priority: optional
155 Maintainer: $maintainer
156 Standards-Version: 3.8.4
157 Homepage: http://www.kernel.org/
160 if [ "$ARCH" = "um" ]; then
161 cat <<EOF >> debian/control
163 Package: $packagename
164 Provides: linux-image, linux-image-2.6, linux-modules-$version
165 Architecture: any
166 Description: User Mode Linux kernel, version $version
167 User-mode Linux is a port of the Linux kernel to its own system call
168 interface. It provides a kind of virtual machine, which runs Linux
169 as a user process under another Linux kernel. This is useful for
170 kernel development, sandboxes, jails, experimentation, and
171 many other things.
173 This package contains the Linux kernel, modules and corresponding other
174 files, version: $version.
177 else
178 cat <<EOF >> debian/control
180 Package: $packagename
181 Provides: linux-image, linux-image-2.6, linux-modules-$version
182 Suggests: $fwpackagename
183 Architecture: any
184 Description: Linux kernel, version $version
185 This package contains the Linux kernel, modules and corresponding other
186 files, version: $version.
191 # Do we have firmware? Move it out of the way and build it into a package.
192 if [ -e "$tmpdir/lib/firmware" ]; then
193 mv "$tmpdir/lib/firmware" "$fwdir/lib/"
195 cat <<EOF >> debian/control
197 Package: $fwpackagename
198 Architecture: all
199 Description: Linux kernel firmware, version $version
200 This package contains firmware from the Linux kernel, version $version.
203 create_package "$fwpackagename" "$fwdir"
206 create_package "$packagename" "$tmpdir"
208 exit 0