kconfig: fix `zconfdebug' extern declaration
[linux-2.6/linux-mips.git] / scripts / package / builddeb
blob5f1e2fc7f171e65dcf0dfd5f9c56afc3c77e7d9f
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 ! cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"; then
70 cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
74 if grep -q '^CONFIG_MODULES=y' .config ; then
75 INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
76 if [ "$ARCH" = "um" ] ; then
77 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
78 rmdir "$tmpdir/lib/modules/$version"
82 # Install the maintainer scripts
83 # Note: hook scripts under /etc/kernel are also executed by official Debian
84 # kernel packages, as well as kernel packages built using make-kpkg
85 debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
86 for script in postinst postrm preinst prerm ; do
87 mkdir -p "$tmpdir$debhookdir/$script.d"
88 cat <<EOF > "$tmpdir/DEBIAN/$script"
89 #!/bin/sh
91 set -e
93 # Pass maintainer script parameters to hook scripts
94 export DEB_MAINT_PARAMS="\$*"
96 test -d $debhookdir/$script.d && run-parts --arg="$version" $debhookdir/$script.d
97 exit 0
98 EOF
99 chmod 755 "$tmpdir/DEBIAN/$script"
100 done
102 # Try to determine maintainer and email values
103 if [ -n "$DEBEMAIL" ]; then
104 email=$DEBEMAIL
105 elif [ -n "$EMAIL" ]; then
106 email=$EMAIL
107 else
108 email=$(id -nu)@$(hostname -f)
110 if [ -n "$DEBFULLNAME" ]; then
111 name=$DEBFULLNAME
112 elif [ -n "$NAME" ]; then
113 name=$NAME
114 else
115 name="Anonymous"
117 maintainer="$name <$email>"
119 # Generate a simple changelog template
120 cat <<EOF > debian/changelog
121 linux-upstream ($packageversion) unstable; urgency=low
123 * Custom built Linux kernel.
125 -- $maintainer $(date -R)
128 # Generate copyright file
129 cat <<EOF > debian/copyright
130 This is a packacked upstream version of the Linux kernel.
132 The sources may be found at most Linux ftp sites, including:
133 ftp://ftp.kernel.org/pub/linux/kernel
135 Copyright: 1991 - 2009 Linus Torvalds and others.
137 The git repository for mainline kernel development is at:
138 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
140 This program is free software; you can redistribute it and/or modify
141 it under the terms of the GNU General Public License as published by
142 the Free Software Foundation; version 2 dated June, 1991.
144 On Debian GNU/Linux systems, the complete text of the GNU General Public
145 License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
148 # Generate a control file
149 cat <<EOF > debian/control
150 Source: linux-upstream
151 Section: kernel
152 Priority: optional
153 Maintainer: $maintainer
154 Standards-Version: 3.8.4
155 Homepage: http://www.kernel.org/
158 if [ "$ARCH" = "um" ]; then
159 cat <<EOF >> debian/control
161 Package: $packagename
162 Provides: linux-image, linux-image-2.6, linux-modules-$version
163 Architecture: any
164 Description: User Mode Linux kernel, version $version
165 User-mode Linux is a port of the Linux kernel to its own system call
166 interface. It provides a kind of virtual machine, which runs Linux
167 as a user process under another Linux kernel. This is useful for
168 kernel development, sandboxes, jails, experimentation, and
169 many other things.
171 This package contains the Linux kernel, modules and corresponding other
172 files, version: $version.
175 else
176 cat <<EOF >> debian/control
178 Package: $packagename
179 Provides: linux-image, linux-image-2.6, linux-modules-$version
180 Suggests: $fwpackagename
181 Architecture: any
182 Description: Linux kernel, version $version
183 This package contains the Linux kernel, modules and corresponding other
184 files, version: $version.
189 # Do we have firmware? Move it out of the way and build it into a package.
190 if [ -e "$tmpdir/lib/firmware" ]; then
191 mv "$tmpdir/lib/firmware" "$fwdir/lib/"
193 cat <<EOF >> debian/control
195 Package: $fwpackagename
196 Architecture: all
197 Description: Linux kernel firmware, version $version
198 This package contains firmware from the Linux kernel, version $version.
201 create_package "$fwpackagename" "$fwdir"
204 create_package "$packagename" "$tmpdir"
206 exit 0