Skip to content

Commit

Permalink
Merge branch 'packaging' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/mmarek/kbuild-2.6

* '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
  • Loading branch information
Linus Torvalds committed Jan 10, 2011
2 parents f28b1c8 + ee81b78 commit 1693ed2
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 4 deletions.
8 changes: 8 additions & 0 deletions Documentation/kbuild/kbuild.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ Specify the output directory when building the kernel.
The output directory can also be specified using "O=...".
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
--------------------------------------------------
Set ARCH to the architecture to be built.
Expand Down
93 changes: 89 additions & 4 deletions scripts/package/builddeb
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,44 @@ create_package() {
chown -R root:root "$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
dpkg-gencontrol -isp -p$pname -P"$pdir"
dpkg-gencontrol -isp $forcearch -p$pname -P"$pdir"
dpkg --build "$pdir" ..
}

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

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

# Setup the directory structure
rm -rf "$tmpdir" "$fwdir"
mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" "$fwdir/usr/share/doc/$fwpackagename"
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir"
mkdir -m 755 -p "$tmpdir/DEBIAN"
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
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
fi
Expand Down Expand Up @@ -81,6 +127,9 @@ if grep -q '^CONFIG_MODULES=y' .config ; then
fi
fi

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

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

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.
if [ -e "$tmpdir/lib/firmware" ]; then
mv "$tmpdir/lib/firmware" "$fwdir/lib/"
Expand All @@ -203,6 +276,18 @@ EOF
create_package "$fwpackagename" "$fwdir"
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"

exit 0

0 comments on commit 1693ed2

Please sign in to comment.