home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / scripts / package / builddeb next >
Encoding:
Text File  |  2008-12-24  |  3.9 KB  |  147 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. revision=`cat .version`
  17. tmpdir="$objtree/debian/tmp"
  18. fwdir="$objtree/debian/fwtmp"
  19. packagename=linux-$version
  20. fwpackagename=linux-firmware-image
  21.  
  22. if [ "$ARCH" == "um" ] ; then
  23.     packagename=user-mode-linux-$version
  24. fi
  25.  
  26. # Setup the directory structure
  27. rm -rf "$tmpdir" "$fwdir"
  28. mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
  29. mkdir -p "$fwdir/DEBIAN" "$fwdir/lib"
  30. if [ "$ARCH" == "um" ] ; then
  31.     mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
  32. fi
  33.  
  34. # Build and install the kernel
  35. if [ "$ARCH" == "um" ] ; then
  36.     $MAKE linux
  37.     cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
  38.     cp .config "$tmpdir/usr/share/doc/$packagename/config"
  39.     gzip "$tmpdir/usr/share/doc/$packagename/config"
  40.     cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
  41. else 
  42.     cp System.map "$tmpdir/boot/System.map-$version"
  43.     cp .config "$tmpdir/boot/config-$version"
  44.     cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
  45. fi
  46.  
  47. if grep -q '^CONFIG_MODULES=y' .config ; then
  48.     INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
  49.     if [ "$ARCH" == "um" ] ; then
  50.         mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
  51.         rmdir "$tmpdir/lib/modules/$version"
  52.     fi
  53. fi
  54.  
  55. # Install the maintainer scripts
  56. for script in postinst postrm preinst prerm ; do
  57.     mkdir -p "$tmpdir/etc/kernel/$script.d"
  58.     cat <<EOF > "$tmpdir/DEBIAN/$script"
  59. #!/bin/sh
  60.  
  61. set -e
  62.  
  63. test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
  64. exit 0
  65. EOF
  66.     chmod 755 "$tmpdir/DEBIAN/$script"
  67. done
  68.  
  69. name="Kernel Compiler <$(id -nu)@$(hostname -f)>"
  70. # Generate a simple changelog template
  71. cat <<EOF > debian/changelog
  72. linux ($version-$revision) unstable; urgency=low
  73.  
  74.   * A standard release
  75.  
  76.  -- $name  $(date -R)
  77. EOF
  78.  
  79. # Generate a control file
  80. if [ "$ARCH" == "um" ]; then
  81.  
  82. cat <<EOF > debian/control
  83. Source: linux
  84. Section: base
  85. Priority: optional
  86. Maintainer: $name
  87. Standards-Version: 3.6.1
  88.  
  89. Package: $packagename
  90. Provides: kernel-image-$version, linux-image-$version
  91. Architecture: any
  92. Description: User Mode Linux kernel, version $version
  93.  User-mode Linux is a port of the Linux kernel to its own system call
  94.  interface.  It provides a kind of virtual machine, which runs Linux
  95.  as a user process under another Linux kernel.  This is useful for
  96.  kernel development, sandboxes, jails, experimentation, and
  97.  many other things.
  98.  .
  99.  This package contains the Linux kernel, modules and corresponding other
  100.  files version $version
  101. EOF
  102.  
  103. else
  104. cat <<EOF > debian/control
  105. Source: linux
  106. Section: base
  107. Priority: optional
  108. Maintainer: $name
  109. Standards-Version: 3.6.1
  110.  
  111. Package: $packagename
  112. Provides: kernel-image-$version, linux-image-$version
  113. Suggests: $fwpackagename
  114. Architecture: any
  115. Description: Linux kernel, version $version
  116.  This package contains the Linux kernel, modules and corresponding other
  117.  files version $version
  118. EOF
  119. fi
  120.  
  121. # Fix some ownership and permissions
  122. chown -R root:root "$tmpdir"
  123. chmod -R go-w "$tmpdir"
  124.  
  125. # Do we have firmware? Move it out of the way and build it into a package.
  126. if [ -e "$tmpdir/lib/firmware" ]; then
  127.     mv "$tmpdir/lib/firmware" "$fwdir/lib/"
  128.  
  129.     cat <<EOF >> debian/control
  130.  
  131. Package: $fwpackagename
  132. Architecture: all
  133. Description: Linux kernel firmware, version $version
  134.  This package contains firmware from the Linux kernel, version $version
  135. EOF
  136.  
  137.     dpkg-gencontrol -isp -p$fwpackagename -P"$fwdir"
  138.     dpkg --build "$fwdir" ..
  139. fi
  140.  
  141. # Perform the final magic
  142. dpkg-gencontrol -isp -p$packagename
  143. dpkg --build "$tmpdir" ..
  144.  
  145. exit 0
  146.  
  147.