diff options
author | Yann E. MORIN" <yann.morin.1998@free.fr> | 2012-10-16 20:57:44 +0200 |
---|---|---|
committer | Yann E. MORIN" <yann.morin.1998@free.fr> | 2012-10-16 20:57:44 +0200 |
commit | e1806b1d221d12eb4e151cec1e9a4573300f2b0b (patch) | |
tree | a9cf1264db949fbfe5207b1ba022f5cc6c22e0ec | |
parent | 1e0b160dd83c3dc1b7aeb49704dbdd5297235cf6 (diff) | |
download | crosstool-ng-e1806b1d221d12eb4e151cec1e9a4573300f2b0b.tar.gz crosstool-ng-e1806b1d221d12eb4e151cec1e9a4573300f2b0b.tar.bz2 crosstool-ng-e1806b1d221d12eb4e151cec1e9a4573300f2b0b.zip |
kernel/linux: fix using custom location
Currently, extract and patch are skipped as thus:
- using a custom directory of pre-installed headers
- a correctly named directory already exists
Otherwise, extract and patch are done.
The current second condition is wrong, because it allows the following
sequence to happen:
- a non-custom kernel is used
- a previous build only partially extracted the non-custom sources
- that p[revious build broke during extraction (eg. incomplete tarball...)
- a subsequent build will find a properly named directory, and will
thus skip extract and patch, which is wrong
Fix that by following the conditions in this table:
Type | Extract | Patch
----------------------+---------+-------
Pre-installed headers | N | N
custom directory | N | N
custom tarball | Y | N
mainstream tarball | Y | Y
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: David Holsgrove <david.holsgrove@xilinx.com>
-rw-r--r-- | scripts/build/kernel/linux.sh | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/scripts/build/kernel/linux.sh b/scripts/build/kernel/linux.sh index dad85c4d..c1c4e624 100644 --- a/scripts/build/kernel/linux.sh +++ b/scripts/build/kernel/linux.sh @@ -59,13 +59,25 @@ do_kernel_get() { # Extract kernel do_kernel_extract() { - # If using custom headers, or custom directory location, nothing to do - if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" \ - -o -d "${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}" ]; then + # If using a custom headers tree, nothing to do + if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ] return 0 fi - + + # If using a custom directory location, nothing to do + if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" \ + -a -d "${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}" ]; then + return 0 + fi + + # Otherwise, we're using either a mainstream tarball, or a custom + # tarball; in either case, we need to extract CT_Extract "linux-${CT_KERNEL_VERSION}" + + # If using a custom tarball, no need to patch + if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then + return 0 + fi CT_Patch "linux" "${CT_KERNEL_VERSION}" } |