Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1693ed28 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'packaging' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
  deb-pkg: s/hdr/kernel_headers_/ && s/header/libc_headers_/
  deb-pkg: Make deb-pkg generate a seperate linux-libc-dev deb
  kbuild: create linux-headers package in deb-pkg
  kbuild, deb-pkg: support overriding userland architecture
  kbuild, deb-pkg: select userland architecture based on UTS_MACHINE
  kbuild, deb-pkg: Fix build with paranoid umask
parents f28b1c8a ee81b786
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -73,6 +73,14 @@ Specify the output directory when building the kernel.
The output directory can also be specified using "O=...".
The output directory can also be specified using "O=...".
Setting "O=..." takes precedence over KBUILD_OUTPUT.
Setting "O=..." takes precedence over KBUILD_OUTPUT.


KBUILD_DEBARCH
--------------------------------------------------
For the deb-pkg target, allows overriding the normal heuristics deployed by
deb-pkg. Normally deb-pkg attempts to guess the right architecture based on
the UTS_MACHINE variable, and on some architectures also the kernel config.
The value of KBUILD_DEBARCH is assumed (not checked) to be a valid Debian
architecture.

ARCH
ARCH
--------------------------------------------------
--------------------------------------------------
Set ARCH to the architecture to be built.
Set ARCH to the architecture to be built.
+89 −4
Original line number Original line Diff line number Diff line
@@ -25,8 +25,44 @@ create_package() {
	chown -R root:root "$pdir"
	chown -R root:root "$pdir"
	chmod -R go-w "$pdir"
	chmod -R go-w "$pdir"


	# Attempt to find the correct Debian architecture
	local forcearch="" debarch=""
	case "$UTS_MACHINE" in
	i386|ia64|alpha)
		debarch="$UTS_MACHINE" ;;
	x86_64)
		debarch=amd64 ;;
	sparc*)
		debarch=sparc ;;
	s390*)
		debarch=s390 ;;
	ppc*)
		debarch=powerpc ;;
	parisc*)
		debarch=hppa ;;
	mips*)
		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y .config && echo el) ;;
	arm*)
		debarch=arm$(grep -q CONFIG_AEABI=y .config && echo el) ;;
	*)
		echo "" >&2
		echo "** ** **  WARNING  ** ** **" >&2
		echo "" >&2
		echo "Your architecture doesn't have it's equivalent" >&2
		echo "Debian userspace architecture defined!" >&2
		echo "Falling back to using your current userspace instead!" >&2
		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
		echo "" >&2
	esac
	if [ -n "$KBUILD_DEBARCH" ] ; then
		debarch="$KBUILD_DEBARCH"
	fi
	if [ -n "$debarch" ] ; then
		forcearch="-DArchitecture=$debarch"
	fi

	# Create the package
	# Create the package
	dpkg-gencontrol -isp -p$pname -P"$pdir"
	dpkg-gencontrol -isp $forcearch -p$pname -P"$pdir"
	dpkg --build "$pdir" ..
	dpkg --build "$pdir" ..
}
}


@@ -40,17 +76,27 @@ else
fi
fi
tmpdir="$objtree/debian/tmp"
tmpdir="$objtree/debian/tmp"
fwdir="$objtree/debian/fwtmp"
fwdir="$objtree/debian/fwtmp"
kernel_headers_dir="$objtree/debian/hdrtmp"
libc_headers_dir="$objtree/debian/headertmp"
packagename=linux-image-$version
packagename=linux-image-$version
fwpackagename=linux-firmware-image
fwpackagename=linux-firmware-image
kernel_headers_packagename=linux-headers-$version
libc_headers_packagename=linux-libc-dev


if [ "$ARCH" = "um" ] ; then
if [ "$ARCH" = "um" ] ; then
	packagename=user-mode-linux-$version
	packagename=user-mode-linux-$version
fi
fi


# Setup the directory structure
# Setup the directory structure
rm -rf "$tmpdir" "$fwdir"
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir"
mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
mkdir -m 755 -p "$tmpdir/DEBIAN"
mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" "$fwdir/usr/share/doc/$fwpackagename"
mkdir -p  "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
mkdir -m 755 -p "$fwdir/DEBIAN"
mkdir -p "$fwdir/lib" "$fwdir/usr/share/doc/$fwpackagename"
mkdir -m 755 -p "$libc_headers_dir/DEBIAN"
mkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename"
mkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
if [ "$ARCH" = "um" ] ; then
if [ "$ARCH" = "um" ] ; then
	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
fi
fi
@@ -81,6 +127,9 @@ if grep -q '^CONFIG_MODULES=y' .config ; then
	fi
	fi
fi
fi


make headers_check
make headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"

# Install the maintainer scripts
# Install the maintainer scripts
# Note: hook scripts under /etc/kernel are also executed by official Debian
# Note: hook scripts under /etc/kernel are also executed by official Debian
# kernel packages, as well as kernel packages built using make-kpkg
# kernel packages, as well as kernel packages built using make-kpkg
@@ -188,6 +237,30 @@ EOF


fi
fi


# Build header package
find . -name Makefile -o -name Kconfig\* -o -name \*.pl > /tmp/files$$
find arch/x86/include include scripts -type f >> /tmp/files$$
(cd $objtree; find .config Module.symvers include scripts -type f >> /tmp/objfiles$$)
destdir=$kernel_headers_dir/usr/src/linux-headers-$version
mkdir -p "$destdir"
tar -c -f - -T /tmp/files$$ | (cd $destdir; tar -xf -)
(cd $objtree; tar -c -f - -T /tmp/objfiles$$) | (cd $destdir; tar -xf -)
rm -f /tmp/files$$ /tmp/objfiles$$
arch=$(dpkg --print-architecture)

cat <<EOF >> debian/control

Package: $kernel_headers_packagename
Provides: linux-headers, linux-headers-2.6
Architecture: $arch
Description: Linux kernel headers for $KERNELRELEASE on $arch
 This package provides kernel header files for $KERNELRELEASE on $arch
 .
 This is useful for people who need to build external modules
EOF

create_package "$kernel_headers_packagename" "$kernel_headers_dir"

# Do we have firmware? Move it out of the way and build it into a package.
# Do we have firmware? Move it out of the way and build it into a package.
if [ -e "$tmpdir/lib/firmware" ]; then
if [ -e "$tmpdir/lib/firmware" ]; then
	mv "$tmpdir/lib/firmware" "$fwdir/lib/"
	mv "$tmpdir/lib/firmware" "$fwdir/lib/"
@@ -203,6 +276,18 @@ EOF
	create_package "$fwpackagename" "$fwdir"
	create_package "$fwpackagename" "$fwdir"
fi
fi


cat <<EOF >> debian/control

Package: $libc_headers_packagename
Section: devel
Provides: linux-kernel-headers
Architecture: any
Description: Linux support headers for userspace development
 This package provides userspaces headers from the Linux kernel.  These headers
 are used by the installed headers for GNU glibc and other system libraries.
EOF

create_package "$libc_headers_packagename" "$libc_headers_dir"
create_package "$packagename" "$tmpdir"
create_package "$packagename" "$tmpdir"


exit 0
exit 0