2005-12-05 15:11:09 +01:00
|
|
|
source $stdenv/setup
|
2005-06-15 14:30:34 +02:00
|
|
|
|
2006-09-19 00:09:47 +02:00
|
|
|
|
2013-08-01 01:39:59 +02:00
|
|
|
makeFlags="ARCH=$arch SHELL=/bin/sh KBUILD_BUILD_VERSION=1-NixOS $makeFlags"
|
2010-02-17 23:20:56 +01:00
|
|
|
if [ -n "$crossConfig" ]; then
|
|
|
|
makeFlags="$makeFlags CROSS_COMPILE=$crossConfig-"
|
|
|
|
fi
|
2009-12-12 19:55:17 +01:00
|
|
|
|
2010-05-06 13:52:43 +02:00
|
|
|
postPatch() {
|
|
|
|
# Makefiles are full of /bin/pwd, /bin/false, /bin/bash, etc.
|
|
|
|
# Patch these away, assuming the tools are in $PATH.
|
|
|
|
for mf in $(find -name Makefile); do
|
2013-07-31 23:56:48 +02:00
|
|
|
echo "stripping FHS paths in \`$mf'..."
|
|
|
|
sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g'
|
2010-05-06 13:52:43 +02:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2006-09-19 00:09:47 +02:00
|
|
|
configurePhase() {
|
2011-07-11 15:59:37 +02:00
|
|
|
if test -n "$preConfigure"; then
|
2013-07-31 23:56:48 +02:00
|
|
|
eval "$preConfigure"
|
2009-03-31 22:10:05 +02:00
|
|
|
fi
|
|
|
|
|
2007-03-27 13:11:58 +02:00
|
|
|
export INSTALL_PATH=$out
|
|
|
|
export INSTALL_MOD_PATH=$out
|
2006-09-19 00:09:47 +02:00
|
|
|
|
2007-05-15 14:53:03 +02:00
|
|
|
# Set our own localversion, if specified.
|
2009-12-12 19:55:17 +01:00
|
|
|
rm -f localversion*
|
2007-05-15 14:53:03 +02:00
|
|
|
if test -n "$localVersion"; then
|
|
|
|
echo "$localVersion" > localversion-nix
|
|
|
|
fi
|
|
|
|
|
2009-12-14 10:27:15 +01:00
|
|
|
# Patch kconfig to print "###" after every question so that
|
|
|
|
# generate-config.pl can answer them.
|
2009-12-12 14:51:07 +01:00
|
|
|
sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c
|
2007-01-01 14:42:23 +01:00
|
|
|
|
2010-01-27 16:43:27 +01:00
|
|
|
# Get a basic config file for later refinement with $generateConfig.
|
2009-12-19 13:12:24 +01:00
|
|
|
make $kernelBaseConfig ARCH=$arch
|
|
|
|
|
2007-05-15 14:53:03 +02:00
|
|
|
# Create the config file.
|
2009-12-12 14:51:07 +01:00
|
|
|
echo "generating kernel configuration..."
|
|
|
|
echo "$kernelConfig" > kernel-config
|
2010-02-16 20:27:51 +01:00
|
|
|
DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config AUTO_MODULES=$autoModules \
|
|
|
|
perl -w $generateConfig
|
2006-09-19 00:09:47 +02:00
|
|
|
}
|
|
|
|
|
2010-01-27 16:43:27 +01:00
|
|
|
|
2006-09-19 00:09:47 +02:00
|
|
|
installPhase() {
|
|
|
|
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out
|
2007-02-08 15:28:49 +01:00
|
|
|
|
2008-05-29 15:21:47 +02:00
|
|
|
# New kernel versions have a combined tree for i386 and x86_64.
|
|
|
|
archDir=$arch
|
|
|
|
if test -e arch/x86 -a \( "$arch" = i386 -o "$arch" = x86_64 \); then
|
|
|
|
archDir=x86
|
|
|
|
fi
|
|
|
|
|
2009-11-08 01:32:12 +01:00
|
|
|
|
2007-03-27 13:11:58 +02:00
|
|
|
# Copy the bzImage and System.map.
|
|
|
|
cp System.map $out
|
|
|
|
if test "$arch" = um; then
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out/bin
|
2007-03-27 13:11:58 +02:00
|
|
|
cp linux $out/bin
|
2010-08-20 15:30:59 +02:00
|
|
|
elif test "$kernelTarget" != "vmlinux"; then
|
|
|
|
# In any case we copy the 'vmlinux' ELF in the next lines
|
2010-02-17 23:20:56 +01:00
|
|
|
cp arch/$archDir/boot/$kernelTarget $out
|
2007-03-27 13:11:58 +02:00
|
|
|
fi
|
|
|
|
|
2009-11-08 01:32:12 +01:00
|
|
|
cp vmlinux $out
|
|
|
|
|
2010-08-08 20:46:57 +02:00
|
|
|
if grep -q "CONFIG_MODULES=y" .config; then
|
2013-08-09 17:39:23 +02:00
|
|
|
# Install the modules in $out/lib/modules.
|
2010-08-08 20:46:57 +02:00
|
|
|
make modules_install \
|
2013-08-09 17:39:23 +02:00
|
|
|
DEPMOD=$kmod/sbin/depmod \
|
2010-08-08 20:46:57 +02:00
|
|
|
$makeFlags "${makeFlagsArray[@]}" \
|
|
|
|
$installFlags "${installFlagsArray[@]}"
|
|
|
|
|
|
|
|
if test -z "$dontStrip"; then
|
|
|
|
# Strip the kernel modules.
|
|
|
|
echo "Stripping kernel modules..."
|
|
|
|
if [ -z "$crossConfig" ]; then
|
|
|
|
find $out -name "*.ko" -print0 | xargs -0 strip -S
|
|
|
|
else
|
|
|
|
find $out -name "*.ko" -print0 | xargs -0 $crossConfig-strip -S
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# move this to install later on
|
|
|
|
# largely copied from early FC3 kernel spec files
|
|
|
|
version=$(cd $out/lib/modules && ls -d *)
|
|
|
|
|
|
|
|
# remove symlinks and create directories
|
|
|
|
rm -f $out/lib/modules/$version/build
|
|
|
|
rm -f $out/lib/modules/$version/source
|
|
|
|
mkdir $out/lib/modules/$version/build
|
|
|
|
|
|
|
|
# copy config
|
|
|
|
cp .config $out/lib/modules/$version/build/.config
|
|
|
|
ln -s $out/lib/modules/$version/build/.config $out/config
|
|
|
|
|
|
|
|
if test "$arch" != um; then
|
|
|
|
# copy all Makefiles and Kconfig files
|
|
|
|
ln -s $out/lib/modules/$version/build $out/lib/modules/$version/source
|
|
|
|
cp --parents `find -type f -name Makefile -o -name "Kconfig*"` $out/lib/modules/$version/build
|
|
|
|
cp Module.symvers $out/lib/modules/$version/build
|
|
|
|
|
|
|
|
if test "$dontStrip" = "1"; then
|
|
|
|
# copy any debugging info that can be found
|
2013-07-31 23:56:48 +02:00
|
|
|
cp --parents -rv `find -name \*.debug -o -name debug.a` \
|
2010-08-08 20:46:57 +02:00
|
|
|
"$out/lib/modules/$version/build"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# weed out unneeded stuff
|
|
|
|
rm -rf $out/lib/modules/$version/build/Documentation
|
|
|
|
rm -rf $out/lib/modules/$version/build/scripts
|
|
|
|
rm -rf $out/lib/modules/$version/build/include
|
|
|
|
|
|
|
|
# copy architecture dependent files
|
|
|
|
cp -a arch/$archDir/scripts $out/lib/modules/$version/build/ || true
|
|
|
|
cp -a arch/$archDir/*lds $out/lib/modules/$version/build/ || true
|
|
|
|
cp -a arch/$archDir/Makefile*.cpu $out/lib/modules/$version/build/arch/$archDir/ || true
|
|
|
|
cp -a --parents arch/$archDir/kernel/asm-offsets.s $out/lib/modules/$version/build/arch/$archDir/kernel/ || true
|
|
|
|
|
|
|
|
# copy scripts
|
|
|
|
rm -f scripts/*.o
|
|
|
|
rm -f scripts/*/*.o
|
|
|
|
cp -a scripts $out/lib/modules/$version/build
|
|
|
|
|
|
|
|
# copy include files
|
|
|
|
includeDir=$out/lib/modules/$version/build/include
|
|
|
|
mkdir -p $includeDir
|
|
|
|
(cd include && cp -a * $includeDir)
|
|
|
|
(cd arch/$archDir/include && cp -a * $includeDir || true)
|
|
|
|
(cd arch/$archDir/include && cp -a asm/* $includeDir/asm/ || true)
|
2012-06-11 19:41:11 +02:00
|
|
|
(cd arch/$archDir/include && cp -a generated/asm/* $includeDir/asm/ || true)
|
2010-08-08 20:46:57 +02:00
|
|
|
(cd arch/$archDir/include/asm/mach-generic && cp -a * $includeDir/ || true)
|
2012-09-23 19:56:15 +02:00
|
|
|
# include files for special arm architectures
|
|
|
|
if [ "$archDir" == "arm" ]; then
|
|
|
|
cp -a --parents arch/arm/mach-*/include $out/lib/modules/$version/build
|
|
|
|
fi
|
2010-08-08 20:46:57 +02:00
|
|
|
fi
|
2010-02-18 09:02:16 +01:00
|
|
|
fi
|
2007-03-27 13:11:58 +02:00
|
|
|
|
2011-07-11 15:59:37 +02:00
|
|
|
if test -n "$postInstall"; then
|
|
|
|
eval "$postInstall";
|
2007-03-27 13:11:58 +02:00
|
|
|
fi
|
2005-06-15 14:30:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
genericBuild
|