kbuild, deb-pkg: fix Section field
[linux-2.6/linux-2.6-openrd.git] / scripts / package / builddeb
blob9708d265cdace13c6421f4eb4caac1f98aaafb0b
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/"
20 # Fix ownership and permissions
21 chown -R root:root "$pdir"
22 chmod -R go-w "$pdir"
24 # Create the package
25 dpkg-gencontrol -isp -p$pname -P"$pdir"
26 dpkg --build "$pdir" ..
29 # Some variables and settings used throughout the script
30 version=$KERNELRELEASE
31 revision=$(cat .version)
32 if [ -n "$KDEB_PKGVERSION" ]; then
33 packageversion=$KDEB_PKGVERSION
34 else
35 packageversion=$version-$revision
37 tmpdir="$objtree/debian/tmp"
38 fwdir="$objtree/debian/fwtmp"
39 packagename=linux-image-$version
40 fwpackagename=linux-firmware-image
42 if [ "$ARCH" = "um" ] ; then
43 packagename=user-mode-linux-$version
46 # Setup the directory structure
47 rm -rf "$tmpdir" "$fwdir"
48 mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
49 mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" "$fwdir/usr/share/doc/$fwpackagename"
50 if [ "$ARCH" = "um" ] ; then
51 mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
54 # Build and install the kernel
55 if [ "$ARCH" = "um" ] ; then
56 $MAKE linux
57 cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
58 cp .config "$tmpdir/usr/share/doc/$packagename/config"
59 gzip "$tmpdir/usr/share/doc/$packagename/config"
60 cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
61 else
62 cp System.map "$tmpdir/boot/System.map-$version"
63 cp .config "$tmpdir/boot/config-$version"
64 # Not all arches include the boot path in KBUILD_IMAGE
65 if ! cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"; then
66 cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
70 if grep -q '^CONFIG_MODULES=y' .config ; then
71 INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
72 if [ "$ARCH" = "um" ] ; then
73 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
74 rmdir "$tmpdir/lib/modules/$version"
78 # Install the maintainer scripts
79 # Note: hook scripts under /etc/kernel are also executed by official Debian
80 # kernel packages, as well as kernel packages built using make-kpkg
81 debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
82 for script in postinst postrm preinst prerm ; do
83 mkdir -p "$tmpdir$debhookdir/$script.d"
84 cat <<EOF > "$tmpdir/DEBIAN/$script"
85 #!/bin/sh
87 set -e
89 # Pass maintainer script parameters to hook scripts
90 export DEB_MAINT_PARAMS="\$@"
92 test -d $debhookdir/$script.d && run-parts --arg="$version" $debhookdir/$script.d
93 exit 0
94 EOF
95 chmod 755 "$tmpdir/DEBIAN/$script"
96 done
98 # Try to determine maintainer and email values
99 if [ -n "$DEBEMAIL" ]; then
100 email=$DEBEMAIL
101 elif [ -n "$EMAIL" ]; then
102 email=$EMAIL
103 else
104 email=$(id -nu)@$(hostname -f)
106 if [ -n "$DEBFULLNAME" ]; then
107 name=$DEBFULLNAME
108 elif [ -n "$NAME" ]; then
109 name=$NAME
110 else
111 name="Anonymous"
113 maintainer="$name <$email>"
115 # Generate a simple changelog template
116 cat <<EOF > debian/changelog
117 linux-upstream ($packageversion) unstable; urgency=low
119 * Custom built Linux kernel.
121 -- $maintainer $(date -R)
124 # Generate copyright file
125 cat <<EOF > debian/copyright
126 This is a packacked upstream version of the Linux kernel.
128 The sources may be found at most Linux ftp sites, including:
129 ftp://ftp.kernel.org/pub/linux/kernel
131 Copyright: 1991 - 2009 Linus Torvalds and others.
133 The git repository for mainline kernel development is at:
134 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
136 This program is free software; you can redistribute it and/or modify
137 it under the terms of the GNU General Public License as published by
138 the Free Software Foundation; version 2 dated June, 1991.
140 On Debian GNU/Linux systems, the complete text of the GNU General Public
141 License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
144 # Generate a control file
145 cat <<EOF > debian/control
146 Source: linux-upstream
147 Section: admin
148 Priority: optional
149 Maintainer: $maintainer
150 Standards-Version: 3.6.1
153 if [ "$ARCH" = "um" ]; then
154 cat <<EOF >> debian/control
156 Package: $packagename
157 Provides: linux-image, linux-image-2.6, linux-modules-$version
158 Architecture: any
159 Description: User Mode Linux kernel, version $version
160 User-mode Linux is a port of the Linux kernel to its own system call
161 interface. It provides a kind of virtual machine, which runs Linux
162 as a user process under another Linux kernel. This is useful for
163 kernel development, sandboxes, jails, experimentation, and
164 many other things.
166 This package contains the Linux kernel, modules and corresponding other
167 files, version: $version.
170 else
171 cat <<EOF >> debian/control
173 Package: $packagename
174 Provides: linux-image, linux-image-2.6, linux-modules-$version
175 Suggests: $fwpackagename
176 Architecture: any
177 Description: Linux kernel, version $version
178 This package contains the Linux kernel, modules and corresponding other
179 files, version: $version.
184 # Do we have firmware? Move it out of the way and build it into a package.
185 if [ -e "$tmpdir/lib/firmware" ]; then
186 mv "$tmpdir/lib/firmware" "$fwdir/lib/"
188 cat <<EOF >> debian/control
190 Package: $fwpackagename
191 Architecture: all
192 Description: Linux kernel firmware, version $version
193 This package contains firmware from the Linux kernel, version $version.
196 create_package "$fwpackagename" "$fwdir"
199 create_package "$packagename" "$tmpdir"
201 exit 0