From: Ulf Samuelsson <ulf.samuelsson@atmel.com>
To: openembedded-devel@lists.openembedded.org
Subject: Re: Cleaning up the "linux" directory
Date: Sat, 22 Aug 2009 15:59:39 +0200 [thread overview]
Message-ID: <4A8FF9CB.6020607@atmel.com> (raw)
In-Reply-To: <4A8FBCA1.9050601@atmel.com>
Ulf Samuelsson skrev:
> As everyone knows, the kernel directory is a mess:
> I have been thinking about what to do about this,
> and with the ability to include files in subdirectories,
> I think I have found a nice solution.
>
> New variables
>
> CPU_FAMILY
> KERNEL_MAJOR
> KERNEL_MINOR
>
> For future kernels,
>
> Did not try this, yet but this looks promising...
>
I have tested a recipe which configures itself based on CPU_FAMILY.
The recipe is totally CPU/Architecure independent!
----------------------------------------------------------------------------
linux-2.6.30.2.bb contains:
SECTION = "kernel"
DESCRIPTION = "Linux kernel 2.6.30.2"
LICENSE = "GPL"
KERNEL_MAJOR = "2.6.30"
KERNEL_MINOR = "2"
PR = "r0"
DEFAULT_PREFERENCE = "-1"
require all-linux-v2.inc
----------------------------------------------------------------------------
As you can see, there is only ONE require/include,
and that is to a totally generic file,
which configures the build based on
CPU_FAMILY
KERNEL_MAJOR
KERNEL_MINOR
The directory structure used to support the at91 for 2.6.30.2:
2.6.30
2.6.30.2 # common , currently does nothing...
linux.inc
patches
network_files
SRC_URI_append.inc
at91 # at91 specific
at91.inc
logo_linux_clut224.ppm
2.6.30.2
patch-sets # Not called "patches" by design
network_files
SRC_URI_append.inc
<patches>
boards
at91sam9g45ek
defconfig
logo_linux_clut224.ppm
The "2.6.30/2.6.30.2" directory can normally be copied to
"2.6.30/2.6.30.3" and renamed if the next kernel version is
needed. No need to edit, if this is pristine.
It supports adding yet another level of directory in the "patch-sets"
directory, so that you can have one directory per patch-set.
----------------------------------------------------------------------------
all-linux-v2.inc contains:
require linux.inc
CPU_FAMILY ?= "dummy-arch"
KERNEL_MAJOR ?= "${PV}"
#${FILE_DIRNAME}/
KERNEL_MAJOR_DIR = "linux-${KERNEL_MAJOR}"
require ${KERNEL_MAJOR_DIR}/version.inc
KERNEL_VERSION_DIR = ${KERNEL_MAJOR_DIR}/${KERNEL_VERSION}
KERNEL_CPU_FAMILY_DIR=${KERNEL_MAJOR_DIR}/${CPU_FAMILY}
S = "${WORKDIR}/linux-${KERNEL_MAJOR}"
KERNEL_SOURCE_DIR="${KERNELORG_MIRROR}/pub/linux/kernel/v2.6"
SRC_URI = "${KERNEL_SOURCE_DIR}/linux-${KERNEL_MAJOR}.tar.bz2 "
MINOR_PATCH=${KERNEL_SOURCE_DIR}/patch-${KERNEL_MAJOR}.${KERNEL_MINOR}.bz2
# Include ${MINOR_PATCH} and any other common patches for this minor version
require ${KERNEL_VERSION_DIR}/patches/SRC_URI_append.inc
# Any customizations for this minor version
require ${KERNEL_VERSION_DIR}/linux.inc
# Customize for the CPU_FAMILY
# Note that this can contain further includes for minor versions
require ${KERNEL_CPU_FAMILY_DIR}/${CPU_FAMILY}.inc
require ${KERNEL_CPU_FAMILY_DIR}/${KERNEL_VERSION}/${KERNEL_VERSION}.inc
require
${KERNEL_CPU_FAMILY_DIR}/${KERNEL_VERSION}/patch-sets/SRC_URI_append.inc
----------------------------------------------------------------------------
I ran into one problem:
SRC_URI_append_at91sam9g45ek = "
file://linux-2.6.30/at91/2.6.30.2/boards/at91sam9g45ek/defconfig "
moves the file to ${S} and not to ${WORKDIR}
I took the easy way out with a workaround:
mv ${S}/defconfig ${WORKDIR}/defconfig
What do I do wrong?
--
Best Regards
Ulf Samuelsson
next prev parent reply other threads:[~2009-08-22 14:17 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-22 9:38 Cleaning up the "linux" directory Ulf Samuelsson
2009-08-22 13:59 ` Ulf Samuelsson [this message]
2009-08-22 14:59 ` Cleaning up the "linux" directory - Available in origin/ulf/linux-2.6.30.2 Ulf Samuelsson
2009-08-23 10:35 ` Cleaning up the "linux" directory Marcin Juszkiewicz
2009-08-23 12:33 ` Ulf Samuelsson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A8FF9CB.6020607@atmel.com \
--to=ulf.samuelsson@atmel.com \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.