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>
This commit is contained in:
Yann E. MORIN" 2012-10-16 20:57:44 +02:00
parent 1e0b160dd8
commit e1806b1d22

View File

@ -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}"
}