home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6-686 / scripts / package / builddeb.dist next >
Encoding:
Text File  |  2006-08-11  |  3.2 KB  |  124 lines

  1. #!/bin/sh
  2. #
  3. # builddeb 1.2
  4. # Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
  5. #
  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 installer 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 that will be called on
  10. # package install and removal.
  11.  
  12. set -e
  13.  
  14. # Some variables and settings used throughout the script
  15. version=$KERNELRELEASE
  16. tmpdir="$objtree/debian/tmp"
  17. packagename=linux-$version
  18.  
  19. if [ "$ARCH" == "um" ] ; then
  20.     packagename=user-mode-linux-$version
  21. fi
  22.  
  23. # Setup the directory structure
  24. rm -rf "$tmpdir"
  25. mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
  26. if [ "$ARCH" == "um" ] ; then
  27.     mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
  28. fi
  29.  
  30. # Build and install the kernel
  31. if [ "$ARCH" == "um" ] ; then
  32.     $MAKE linux
  33.     cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
  34.     cp .config "$tmpdir/usr/share/doc/$packagename/config"
  35.     gzip "$tmpdir/usr/share/doc/$packagename/config"
  36.     cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
  37. else 
  38.     cp System.map "$tmpdir/boot/System.map-$version"
  39.     cp .config "$tmpdir/boot/config-$version"
  40.     cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
  41. fi
  42.  
  43. if grep -q '^CONFIG_MODULES=y' .config ; then
  44.     INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
  45.     if [ "$ARCH" == "um" ] ; then
  46.         mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
  47.         rmdir "$tmpdir/lib/modules/$version"
  48.     fi
  49. fi
  50.  
  51. # Install the maintainer scripts
  52. for script in postinst postrm preinst prerm ; do
  53.     mkdir -p "$tmpdir/etc/kernel/$script.d"
  54.     cat <<EOF > "$tmpdir/DEBIAN/$script"
  55. #!/bin/sh
  56.  
  57. set -e
  58.  
  59. test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
  60. exit 0
  61. EOF
  62.     chmod 755 "$tmpdir/DEBIAN/$script"
  63. done
  64.  
  65. name="Kernel Compiler <$(id -nu)@$(hostname -f)>"
  66. # Generate a simple changelog template
  67. cat <<EOF > debian/changelog
  68. linux ($version) unstable; urgency=low
  69.  
  70.   * A standard release
  71.  
  72.  -- $name  $(date -R)
  73. EOF
  74.  
  75. # Generate a control file
  76. if [ "$ARCH" == "um" ]; then
  77.  
  78. cat <<EOF > debian/control
  79. Source: linux
  80. Section: base
  81. Priority: optional
  82. Maintainer: $name
  83. Standards-Version: 3.6.1
  84.  
  85. Package: $packagename
  86. Architecture: any
  87. Description: User Mode Linux kernel, version $version
  88.  User-mode Linux is a port of the Linux kernel to its own system call
  89.  interface.  It provides a kind of virtual machine, which runs Linux
  90.  as a user process under another Linux kernel.  This is useful for
  91.  kernel development, sandboxes, jails, experimentation, and
  92.  many other things.
  93.  .
  94.  This package contains the Linux kernel, modules and corresponding other
  95.  files version $version
  96. EOF
  97.  
  98. else
  99. cat <<EOF > debian/control
  100. Source: linux
  101. Section: base
  102. Priority: optional
  103. Maintainer: $name
  104. Standards-Version: 3.6.1
  105.  
  106. Package: $packagename
  107. Architecture: any
  108. Description: Linux kernel, version $version
  109.  This package contains the Linux kernel, modules and corresponding other
  110.  files version $version
  111. EOF
  112. fi
  113.  
  114. # Fix some ownership and permissions
  115. chown -R root:root "$tmpdir"
  116. chmod -R go-w "$tmpdir"
  117.  
  118. # Perform the final magic
  119. dpkg-gencontrol -isp
  120. dpkg --build "$tmpdir" ..
  121.  
  122. exit 0
  123.  
  124.