xref: /linux-6.15/scripts/package/builddeb (revision 687c3dac)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds#
31da177e4SLinus Torvalds# builddeb 1.2
41da177e4SLinus Torvalds# Copyright 2003 Wichert Akkerman <[email protected]>
51da177e4SLinus Torvalds#
61da177e4SLinus Torvalds# Simple script to generate a deb package for a Linux kernel. All the
71da177e4SLinus Torvalds# complexity of what to do with a kernel after it is installer or removed
81da177e4SLinus Torvalds# is left to other scripts and packages: they can install scripts in the
91da177e4SLinus Torvalds# /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on
101da177e4SLinus Torvalds# package install and removal.
111da177e4SLinus Torvalds
121da177e4SLinus Torvaldsset -e
131da177e4SLinus Torvalds
141da177e4SLinus Torvalds# Some variables and settings used throughout the script
151da177e4SLinus Torvaldsversion=$KERNELRELEASE
161da177e4SLinus Torvaldstmpdir="$objtree/debian/tmp"
17*687c3dacSSam Ravnborgpackagename=linux-$version
18*687c3dacSSam Ravnborg
19*687c3dacSSam Ravnborgif [ "$ARCH" == "um" ] ; then
20*687c3dacSSam Ravnborg	packagename=user-mode-linux-$version
21*687c3dacSSam Ravnborgfi
221da177e4SLinus Torvalds
231da177e4SLinus Torvalds# Setup the directory structure
241da177e4SLinus Torvaldsrm -rf "$tmpdir"
251da177e4SLinus Torvaldsmkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
26*687c3dacSSam Ravnborgif [ "$ARCH" == "um" ] ; then
27*687c3dacSSam Ravnborg	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
28*687c3dacSSam Ravnborgfi
291da177e4SLinus Torvalds
301da177e4SLinus Torvalds# Build and install the kernel
31*687c3dacSSam Ravnborgif [ "$ARCH" == "um" ] ; then
32*687c3dacSSam Ravnborg	$MAKE linux
33*687c3dacSSam Ravnborg	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
34*687c3dacSSam Ravnborg	cp .config "$tmpdir/usr/share/doc/$packagename/config"
35*687c3dacSSam Ravnborg	gzip "$tmpdir/usr/share/doc/$packagename/config"
36*687c3dacSSam Ravnborg	cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
37*687c3dacSSam Ravnborgelse
381da177e4SLinus Torvalds	cp System.map "$tmpdir/boot/System.map-$version"
391da177e4SLinus Torvalds	cp .config "$tmpdir/boot/config-$version"
401da177e4SLinus Torvalds	cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
41*687c3dacSSam Ravnborgfi
421da177e4SLinus Torvalds
431da177e4SLinus Torvaldsif grep -q '^CONFIG_MODULES=y' .config ; then
441da177e4SLinus Torvalds	INSTALL_MOD_PATH="$tmpdir" make modules_install
45*687c3dacSSam Ravnborg	if [ "$ARCH" == "um" ] ; then
46*687c3dacSSam Ravnborg		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
47*687c3dacSSam Ravnborg		rmdir "$tmpdir/lib/modules/$version"
48*687c3dacSSam Ravnborg	fi
491da177e4SLinus Torvaldsfi
501da177e4SLinus Torvalds
511da177e4SLinus Torvalds# Install the maintainer scripts
521da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do
531da177e4SLinus Torvalds	mkdir -p "$tmpdir/etc/kernel/$script.d"
541da177e4SLinus Torvalds	cat <<EOF > "$tmpdir/DEBIAN/$script"
551da177e4SLinus Torvalds#!/bin/sh
561da177e4SLinus Torvalds
571da177e4SLinus Torvaldsset -e
581da177e4SLinus Torvalds
591da177e4SLinus Torvaldstest -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
601da177e4SLinus Torvaldsexit 0
611da177e4SLinus TorvaldsEOF
621da177e4SLinus Torvalds	chmod 755 "$tmpdir/DEBIAN/$script"
631da177e4SLinus Torvaldsdone
641da177e4SLinus Torvalds
651da177e4SLinus Torvaldsname="Kernel Compiler <$(id -nu)@$(hostname -f)>"
661da177e4SLinus Torvalds# Generate a simple changelog template
671da177e4SLinus Torvaldscat <<EOF > debian/changelog
681da177e4SLinus Torvaldslinux ($version) unstable; urgency=low
691da177e4SLinus Torvalds
701da177e4SLinus Torvalds  * A standard release
711da177e4SLinus Torvalds
721da177e4SLinus Torvalds -- $name  $(date -R)
731da177e4SLinus TorvaldsEOF
741da177e4SLinus Torvalds
751da177e4SLinus Torvalds# Generate a control file
761da177e4SLinus Torvaldscat <<EOF > debian/control
771da177e4SLinus TorvaldsSource: linux
781da177e4SLinus TorvaldsSection: base
791da177e4SLinus TorvaldsPriority: optional
801da177e4SLinus TorvaldsMaintainer: $name
811da177e4SLinus TorvaldsStandards-Version: 3.6.1
821da177e4SLinus Torvalds
83*687c3dacSSam RavnborgPackage: $packagename
841da177e4SLinus TorvaldsArchitecture: any
85*687c3dacSSam RavnborgDescription: Linux kernel, version $packagename
861da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other
87*687c3dacSSam Ravnborg files version $packagename
881da177e4SLinus TorvaldsEOF
891da177e4SLinus Torvalds
901da177e4SLinus Torvalds# Fix some ownership and permissions
911da177e4SLinus Torvaldschown -R root:root "$tmpdir"
921da177e4SLinus Torvaldschmod -R go-w "$tmpdir"
931da177e4SLinus Torvalds
941da177e4SLinus Torvalds# Perform the final magic
951da177e4SLinus Torvaldsdpkg-gencontrol -isp
961da177e4SLinus Torvaldsdpkg --build "$tmpdir" ..
971da177e4SLinus Torvalds
981da177e4SLinus Torvaldsexit 0
991da177e4SLinus Torvalds
100