Linux Audio

Check our new training course

Loading...
v6.9.4
  1#!/bin/sh
  2#
  3# builddeb 1.3
  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 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.
 12
 13set -e
 14
 15is_enabled() {
 16	grep -q "^$1=y" include/config/auto.conf
 17}
 18
 19if_enabled_echo() {
 20	if is_enabled "$1"; then
 21		echo -n "$2"
 22	elif [ $# -ge 3 ]; then
 23		echo -n "$3"
 24	fi
 25}
 26
 
 
 
 
 
 
 
 
 
 
 
 
 27install_linux_image () {
 28	pname=$1
 29	pdir=debian/$1
 30
 
 
 31	# Only some architectures with OF support have this target
 32	if is_enabled CONFIG_OF_EARLY_FLATTREE && [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
 33		${MAKE} -f ${srctree}/Makefile INSTALL_DTBS_PATH="${pdir}/usr/lib/linux-image-${KERNELRELEASE}" dtbs_install
 34	fi
 35
 36	${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${pdir}" INSTALL_MOD_STRIP=1 modules_install
 37	rm -f "${pdir}/lib/modules/${KERNELRELEASE}/build"
 38
 39	# Install the kernel
 40	if [ "${ARCH}" = um ] ; then
 41		mkdir -p "${pdir}/usr/lib/uml/modules"
 42		mv "${pdir}/lib/modules/${KERNELRELEASE}" "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}"
 43		mkdir -p "${pdir}/usr/bin" "${pdir}/usr/share/doc/${pname}"
 44		cp System.map "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}/System.map"
 45		cp ${KCONFIG_CONFIG} "${pdir}/usr/share/doc/${pname}/config"
 46		gzip "${pdir}/usr/share/doc/${pname}/config"
 47	else
 48		mkdir -p "${pdir}/boot"
 49		cp System.map "${pdir}/boot/System.map-${KERNELRELEASE}"
 50		cp ${KCONFIG_CONFIG} "${pdir}/boot/config-${KERNELRELEASE}"
 51	fi
 52
 53	# Not all arches have the same installed path in debian
 54	# XXX: have each arch Makefile export a variable of the canonical image install
 55	# path instead
 56	case "${SRCARCH}" in
 57	um)
 58		installed_image_path="usr/bin/linux-${KERNELRELEASE}";;
 59	parisc|mips|powerpc)
 60		installed_image_path="boot/vmlinux-${KERNELRELEASE}";;
 61	*)
 62		installed_image_path="boot/vmlinuz-${KERNELRELEASE}";;
 63	esac
 64	cp "$(${MAKE} -s -f ${srctree}/Makefile image_name)" "${pdir}/${installed_image_path}"
 65
 66	# Install the maintainer scripts
 67	# Note: hook scripts under /etc/kernel are also executed by official Debian
 68	# kernel packages, as well as kernel packages built using make-kpkg.
 69	# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
 70	# so do we; recent versions of dracut and initramfs-tools will obey this.
 71	debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
 72	for script in postinst postrm preinst prerm; do
 73		mkdir -p "${pdir}${debhookdir}/${script}.d"
 74
 75		mkdir -p "${pdir}/DEBIAN"
 76		cat <<-EOF > "${pdir}/DEBIAN/${script}"
 77
 78		#!/bin/sh
 79
 80		set -e
 81
 82		# Pass maintainer script parameters to hook scripts
 83		export DEB_MAINT_PARAMS="\$*"
 84
 85		# Tell initramfs builder whether it's wanted
 86		export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
 87
 88		test -d ${debhookdir}/${script}.d && run-parts --arg="${KERNELRELEASE}" --arg="/${installed_image_path}" ${debhookdir}/${script}.d
 89		exit 0
 90		EOF
 91		chmod 755 "${pdir}/DEBIAN/${script}"
 92	done
 93}
 94
 95install_linux_image_dbg () {
 96	pdir=debian/$1
 97
 
 
 98	# Parse modules.order directly because 'make modules_install' may sign,
 99	# compress modules, and then run unneeded depmod.
100	while read -r mod; do
101		mod="${mod%.o}.ko"
102		dbg="${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/kernel/${mod}"
103		buildid=$("${READELF}" -n "${mod}" | sed -n 's@^.*Build ID: \(..\)\(.*\)@\1/\2@p')
104		link="${pdir}/usr/lib/debug/.build-id/${buildid}.debug"
105
106		mkdir -p "${dbg%/*}" "${link%/*}"
107		"${OBJCOPY}" --only-keep-debug "${mod}" "${dbg}"
108		ln -sf --relative "${dbg}" "${link}"
109	done < modules.order
110
111	# Build debug package
112	# Different tools want the image in different locations
113	# perf
114	mkdir -p ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/
115	cp vmlinux ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/
116	# systemtap
117	mkdir -p ${pdir}/usr/lib/debug/boot/
118	ln -s ../lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/boot/vmlinux-${KERNELRELEASE}
119	# kdump-tools
120	ln -s lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/vmlinux-${KERNELRELEASE}
121}
122
123install_kernel_headers () {
124	pdir=debian/$1
125	version=${1#linux-headers-}
126
 
 
127	"${srctree}/scripts/package/install-extmod-build" "${pdir}/usr/src/linux-headers-${version}"
128
129	mkdir -p $pdir/lib/modules/$version/
130	ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
131}
132
133install_libc_headers () {
134	pdir=debian/$1
135
 
 
136	$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH=$pdir/usr
137
138	# move asm headers to /usr/include/<libc-machine>/asm to match the structure
139	# used by Debian-based distros (to support multi-arch)
140	mkdir "$pdir/usr/include/${DEB_HOST_MULTIARCH}"
141	mv "$pdir/usr/include/asm" "$pdir/usr/include/${DEB_HOST_MULTIARCH}"
142}
143
144package=$1
145
146case "${package}" in
147*-dbg)
148	install_linux_image_dbg "${package}";;
149linux-image-*|user-mode-linux-*)
150	install_linux_image "${package}";;
151linux-libc-dev)
152	install_libc_headers "${package}";;
153linux-headers-*)
154	install_kernel_headers "${package}";;
155esac
 
 
 
 
 
 
v6.8
  1#!/bin/sh
  2#
  3# builddeb 1.3
  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 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.
 12
 13set -e
 14
 15is_enabled() {
 16	grep -q "^$1=y" include/config/auto.conf
 17}
 18
 19if_enabled_echo() {
 20	if is_enabled "$1"; then
 21		echo -n "$2"
 22	elif [ $# -ge 3 ]; then
 23		echo -n "$3"
 24	fi
 25}
 26
 27create_package() {
 28	export DH_OPTIONS="-p${1}"
 29
 30	dh_installdocs
 31	dh_installchangelogs
 32	dh_compress
 33	dh_fixperms
 34	dh_gencontrol
 35	dh_md5sums
 36	dh_builddeb -- ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS}
 37}
 38
 39install_linux_image () {
 40	pname=$1
 41	pdir=debian/$1
 42
 43	rm -rf ${pdir}
 44
 45	# Only some architectures with OF support have this target
 46	if is_enabled CONFIG_OF_EARLY_FLATTREE && [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
 47		${MAKE} -f ${srctree}/Makefile INSTALL_DTBS_PATH="${pdir}/usr/lib/linux-image-${KERNELRELEASE}" dtbs_install
 48	fi
 49
 50	${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${pdir}" INSTALL_MOD_STRIP=1 modules_install
 51	rm -f "${pdir}/lib/modules/${KERNELRELEASE}/build"
 52
 53	# Install the kernel
 54	if [ "${ARCH}" = um ] ; then
 55		mkdir -p "${pdir}/usr/lib/uml/modules"
 56		mv "${pdir}/lib/modules/${KERNELRELEASE}" "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}"
 57		mkdir -p "${pdir}/usr/bin" "${pdir}/usr/share/doc/${pname}"
 58		cp System.map "${pdir}/usr/lib/uml/modules/${KERNELRELEASE}/System.map"
 59		cp ${KCONFIG_CONFIG} "${pdir}/usr/share/doc/${pname}/config"
 60		gzip "${pdir}/usr/share/doc/${pname}/config"
 61	else
 62		mkdir -p "${pdir}/boot"
 63		cp System.map "${pdir}/boot/System.map-${KERNELRELEASE}"
 64		cp ${KCONFIG_CONFIG} "${pdir}/boot/config-${KERNELRELEASE}"
 65	fi
 66
 67	# Not all arches have the same installed path in debian
 68	# XXX: have each arch Makefile export a variable of the canonical image install
 69	# path instead
 70	case "${SRCARCH}" in
 71	um)
 72		installed_image_path="usr/bin/linux-${KERNELRELEASE}";;
 73	parisc|mips|powerpc)
 74		installed_image_path="boot/vmlinux-${KERNELRELEASE}";;
 75	*)
 76		installed_image_path="boot/vmlinuz-${KERNELRELEASE}";;
 77	esac
 78	cp "$(${MAKE} -s -f ${srctree}/Makefile image_name)" "${pdir}/${installed_image_path}"
 79
 80	# Install the maintainer scripts
 81	# Note: hook scripts under /etc/kernel are also executed by official Debian
 82	# kernel packages, as well as kernel packages built using make-kpkg.
 83	# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
 84	# so do we; recent versions of dracut and initramfs-tools will obey this.
 85	debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
 86	for script in postinst postrm preinst prerm; do
 87		mkdir -p "${pdir}${debhookdir}/${script}.d"
 88
 89		mkdir -p "${pdir}/DEBIAN"
 90		cat <<-EOF > "${pdir}/DEBIAN/${script}"
 91
 92		#!/bin/sh
 93
 94		set -e
 95
 96		# Pass maintainer script parameters to hook scripts
 97		export DEB_MAINT_PARAMS="\$*"
 98
 99		# Tell initramfs builder whether it's wanted
100		export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
101
102		test -d ${debhookdir}/${script}.d && run-parts --arg="${KERNELRELEASE}" --arg="/${installed_image_path}" ${debhookdir}/${script}.d
103		exit 0
104		EOF
105		chmod 755 "${pdir}/DEBIAN/${script}"
106	done
107}
108
109install_linux_image_dbg () {
110	pdir=debian/$1
111
112	rm -rf ${pdir}
113
114	# Parse modules.order directly because 'make modules_install' may sign,
115	# compress modules, and then run unneeded depmod.
116	while read -r mod; do
117		mod="${mod%.o}.ko"
118		dbg="${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/kernel/${mod}"
119		buildid=$("${READELF}" -n "${mod}" | sed -n 's@^.*Build ID: \(..\)\(.*\)@\1/\2@p')
120		link="${pdir}/usr/lib/debug/.build-id/${buildid}.debug"
121
122		mkdir -p "${dbg%/*}" "${link%/*}"
123		"${OBJCOPY}" --only-keep-debug "${mod}" "${dbg}"
124		ln -sf --relative "${dbg}" "${link}"
125	done < modules.order
126
127	# Build debug package
128	# Different tools want the image in different locations
129	# perf
130	mkdir -p ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/
131	cp vmlinux ${pdir}/usr/lib/debug/lib/modules/${KERNELRELEASE}/
132	# systemtap
133	mkdir -p ${pdir}/usr/lib/debug/boot/
134	ln -s ../lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/boot/vmlinux-${KERNELRELEASE}
135	# kdump-tools
136	ln -s lib/modules/${KERNELRELEASE}/vmlinux ${pdir}/usr/lib/debug/vmlinux-${KERNELRELEASE}
137}
138
139install_kernel_headers () {
140	pdir=debian/$1
141	version=${1#linux-headers-}
142
143	rm -rf $pdir
144
145	"${srctree}/scripts/package/install-extmod-build" "${pdir}/usr/src/linux-headers-${version}"
146
147	mkdir -p $pdir/lib/modules/$version/
148	ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
149}
150
151install_libc_headers () {
152	pdir=debian/$1
153
154	rm -rf $pdir
155
156	$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH=$pdir/usr
157
158	# move asm headers to /usr/include/<libc-machine>/asm to match the structure
159	# used by Debian-based distros (to support multi-arch)
160	mkdir "$pdir/usr/include/${DEB_HOST_MULTIARCH}"
161	mv "$pdir/usr/include/asm" "$pdir/usr/include/${DEB_HOST_MULTIARCH}"
162}
163
164rm -f debian/files
165
166packages_enabled=$(dh_listpackages)
167
168for package in ${packages_enabled}
169do
170	case ${package} in
171	*-dbg)
172		install_linux_image_dbg "${package}";;
173	linux-image-*|user-mode-linux-*)
174		install_linux_image "${package}";;
175	linux-libc-dev)
176		install_libc_headers "${package}";;
177	linux-headers-*)
178		install_kernel_headers "${package}";;
179	esac
180	create_package "${package}"
181done