123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #!/bin/sh
- #
- # builddeb 1.3
- # 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 installed or removed
- # is left to other scripts and packages: they can install scripts in the
- # /etc/kernel/{pre,post}{inst,rm}.d/ directories (or an alternative location
- # specified in KDEB_HOOKDIR) that will be called on package install and
- # removal.
- set -e
- create_package() {
- local pname="$1" pdir="$2"
- cp debian/copyright "$pdir/usr/share/doc/$pname/"
- cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
- gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
- # Fix ownership and permissions
- chown -R root:root "$pdir"
- chmod -R go-w "$pdir"
- # Create the package
- dpkg-gencontrol -isp -p$pname -P"$pdir"
- dpkg --build "$pdir" ..
- }
- # Some variables and settings used throughout the script
- version=$KERNELRELEASE
- revision=$(cat .version)
- if [ -n "$KDEB_PKGVERSION" ]; then
- packageversion=$KDEB_PKGVERSION
- else
- packageversion=$version-$revision
- fi
- tmpdir="$objtree/debian/tmp"
- fwdir="$objtree/debian/fwtmp"
- packagename=linux-image-$version
- fwpackagename=linux-firmware-image
- if [ "$ARCH" = "um" ] ; then
- packagename=user-mode-linux-$version
- fi
- # Setup the directory structure
- rm -rf "$tmpdir" "$fwdir"
- mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
- mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" "$fwdir/usr/share/doc/$fwpackagename"
- if [ "$ARCH" = "um" ] ; then
- mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
- fi
- # Build and install the kernel
- 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"
- # Not all arches include the boot path in KBUILD_IMAGE
- if ! cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"; then
- cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
- fi
- fi
- if grep -q '^CONFIG_MODULES=y' .config ; then
- INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
- if [ "$ARCH" = "um" ] ; then
- mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
- rmdir "$tmpdir/lib/modules/$version"
- fi
- fi
- # Install the maintainer scripts
- # Note: hook scripts under /etc/kernel are also executed by official Debian
- # kernel packages, as well as kernel packages built using make-kpkg
- debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
- for script in postinst postrm preinst prerm ; do
- mkdir -p "$tmpdir$debhookdir/$script.d"
- cat <<EOF > "$tmpdir/DEBIAN/$script"
- #!/bin/sh
- set -e
- # Pass maintainer script parameters to hook scripts
- export DEB_MAINT_PARAMS="\$*"
- test -d $debhookdir/$script.d && run-parts --arg="$version" $debhookdir/$script.d
- exit 0
- EOF
- chmod 755 "$tmpdir/DEBIAN/$script"
- done
- # Try to determine maintainer and email values
- if [ -n "$DEBEMAIL" ]; then
- email=$DEBEMAIL
- elif [ -n "$EMAIL" ]; then
- email=$EMAIL
- else
- email=$(id -nu)@$(hostname -f)
- fi
- if [ -n "$DEBFULLNAME" ]; then
- name=$DEBFULLNAME
- elif [ -n "$NAME" ]; then
- name=$NAME
- else
- name="Anonymous"
- fi
- maintainer="$name <$email>"
- # Generate a simple changelog template
- cat <<EOF > debian/changelog
- linux-upstream ($packageversion) unstable; urgency=low
- * Custom built Linux kernel.
- -- $maintainer $(date -R)
- EOF
- # Generate copyright file
- cat <<EOF > debian/copyright
- This is a packacked upstream version of the Linux kernel.
- The sources may be found at most Linux ftp sites, including:
- ftp://ftp.kernel.org/pub/linux/kernel
- Copyright: 1991 - 2009 Linus Torvalds and others.
- The git repository for mainline kernel development is at:
- git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 dated June, 1991.
- On Debian GNU/Linux systems, the complete text of the GNU General Public
- License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
- EOF
- # Generate a control file
- cat <<EOF > debian/control
- Source: linux-upstream
- Section: admin
- Priority: optional
- Maintainer: $maintainer
- Standards-Version: 3.8.1
- EOF
- if [ "$ARCH" = "um" ]; then
- cat <<EOF >> debian/control
- Package: $packagename
- Provides: linux-image, linux-image-2.6, linux-modules-$version
- 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
- cat <<EOF >> debian/control
- Package: $packagename
- Provides: linux-image, linux-image-2.6, linux-modules-$version
- Suggests: $fwpackagename
- Architecture: any
- Description: Linux kernel, version $version
- This package contains the Linux kernel, modules and corresponding other
- files, version: $version.
- EOF
- fi
- # Do we have firmware? Move it out of the way and build it into a package.
- if [ -e "$tmpdir/lib/firmware" ]; then
- mv "$tmpdir/lib/firmware" "$fwdir/lib/"
- cat <<EOF >> debian/control
- Package: $fwpackagename
- Architecture: all
- Description: Linux kernel firmware, version $version
- This package contains firmware from the Linux kernel, version $version.
- EOF
- create_package "$fwpackagename" "$fwdir"
- fi
- create_package "$packagename" "$tmpdir"
- exit 0
|