diff options
| author | Bruce Ashfield <bruce.ashfield@windriver.com> | 2013-01-23 15:21:52 -0500 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-02-04 13:18:28 +0000 |
| commit | de2211133f157c3ca8086f318c842e985185f624 (patch) | |
| tree | e01f5b60cebb750654bdbe3d47dee0a02eb295bb | |
| parent | 167e4700991e7a594337ce6eceaeecd9f733f130 (diff) | |
| download | poky-de2211133f157c3ca8086f318c842e985185f624.tar.gz | |
kernel-yocto: allow multiple / shared kernel feature directories
To promote the reuse and sharing of configuration fragments this change
allows any kernel-yocto based recipe to have multiple alternate git repositories
which provide kernel feature directory trees listed on the SRC_URI.
These feature directories are in addition to any in-tree kernel meta data branches
that may be available (described via the KMETA variable in linux-yocto recipes).
Features found within these directories can be used from recipes via the
KERNEL_FEATURES variable. Features found within a feature directory are free
to include any other features that are available in any directories. In both
cases the path to a feature description (a .scc file) is relative to the
root of a given feature directory (which is how existing .scc files work)
The search order for features is determined by the order that repositories
appear on the SRC_URI.
Normal SRC_URI rules apply to any repository that is added as a kernel
feature container. A SRCREV must be supplied and it must be unpacked to
a unique directory, which is controlled via the "destsuffic" url parameter.
In addition to these standard requirements, any kernel feature repository
reference should identify itself via the "type=kmeta" url parameter. If
type=kmeta is not supplied, the repository will not be processed for
kernel features.
As an example, the following in a linux-yocto bbappend makes two additional
feature directories available to KERNEL_FEATURES and fragments.
SRC_URI += "git://git.yoctoproject.org/yocto-kernel-cache;protocol=git;branch=master;type=kmeta;name=feat1;destsuffix=kernel-cache/"
SRC_URI += "git://${KSRC_linux_yocto_3_4};protocol=file;branch=meta;name=feat2;type=kmeta;destsuffix=kernel-features-experimental/"
SRCREV_feat1 = "${AUTOREV}"
SRCREV_feat2 = "${AUTOREV}"
(From OE-Core rev: 02ad603a104b70ab74548c8018e738bfbb3c59db)
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/classes/kernel-yocto.bbclass | 33 | ||||
| -rw-r--r-- | meta/recipes-kernel/kern-tools/kern-tools-native_git.bb | 2 |
2 files changed, 33 insertions, 2 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 962b4936b9..92ede6a3aa 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
| @@ -42,6 +42,23 @@ def find_urls(d): | |||
| 42 | 42 | ||
| 43 | return patch_list | 43 | return patch_list |
| 44 | 44 | ||
| 45 | # check the SRC_URI for "kmeta" type'd git repositories. Return the name of | ||
| 46 | # the repository as it will be found in WORKDIR | ||
| 47 | def find_kernel_feature_dirs(d): | ||
| 48 | feature_dirs=[] | ||
| 49 | fetch = bb.fetch2.Fetch([], d) | ||
| 50 | for url in fetch.urls: | ||
| 51 | urldata = fetch.ud[url] | ||
| 52 | parm = urldata.parm | ||
| 53 | if "type" in parm: | ||
| 54 | type = parm["type"] | ||
| 55 | if "destsuffix" in parm: | ||
| 56 | destdir = parm["destsuffix"] | ||
| 57 | if type == "kmeta": | ||
| 58 | feature_dirs.append(destdir) | ||
| 59 | |||
| 60 | return feature_dirs | ||
| 61 | |||
| 45 | 62 | ||
| 46 | do_patch() { | 63 | do_patch() { |
| 47 | cd ${S} | 64 | cd ${S} |
| @@ -72,6 +89,7 @@ do_patch() { | |||
| 72 | 89 | ||
| 73 | sccs="${@" ".join(find_sccs(d))}" | 90 | sccs="${@" ".join(find_sccs(d))}" |
| 74 | patches="${@" ".join(find_patches(d))}" | 91 | patches="${@" ".join(find_patches(d))}" |
| 92 | feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}" | ||
| 75 | 93 | ||
| 76 | set +e | 94 | set +e |
| 77 | # add any explicitly referenced features onto the end of the feature | 95 | # add any explicitly referenced features onto the end of the feature |
| @@ -82,13 +100,26 @@ do_patch() { | |||
| 82 | done | 100 | done |
| 83 | fi | 101 | fi |
| 84 | 102 | ||
| 103 | # check for feature directories/repos/branches that were part of the | ||
| 104 | # SRC_URI. If they were supplied, we convert them into include directives | ||
| 105 | # for the update part of the process | ||
| 106 | if [ -n "${feat_dirs}" ]; then | ||
| 107 | for f in ${feat_dirs}; do | ||
| 108 | if [ -d "${WORKDIR}/$f/meta" ]; then | ||
| 109 | includes="$includes -I${WORKDIR}/$f/meta" | ||
| 110 | elif [ -d "${WORKDIR}/$f" ]; then | ||
| 111 | includes="$includes -I${WORKDIR}/$f" | ||
| 112 | fi | ||
| 113 | done | ||
| 114 | fi | ||
| 115 | |||
| 85 | if [ "${kbranch}" != "${KBRANCH_DEFAULT}" ]; then | 116 | if [ "${kbranch}" != "${KBRANCH_DEFAULT}" ]; then |
| 86 | updateme_flags="--branch ${kbranch}" | 117 | updateme_flags="--branch ${kbranch}" |
| 87 | fi | 118 | fi |
| 88 | 119 | ||
| 89 | # updates or generates the target description | 120 | # updates or generates the target description |
| 90 | updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ | 121 | updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ |
| 91 | ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} | 122 | ${includes} ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} |
| 92 | if [ $? -ne 0 ]; then | 123 | if [ $? -ne 0 ]; then |
| 93 | echo "ERROR. Could not update ${kbranch}" | 124 | echo "ERROR. Could not update ${kbranch}" |
| 94 | exit 1 | 125 | exit 1 |
diff --git a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb index 635dfe6add..98cd8b9e85 100644 --- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb +++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb | |||
| @@ -4,7 +4,7 @@ LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=d8d1d729a70c | |||
| 4 | 4 | ||
| 5 | DEPENDS = "git-native guilt-native" | 5 | DEPENDS = "git-native guilt-native" |
| 6 | 6 | ||
| 7 | SRCREV = "62c8807825ea923a18b1519375b0df67ad9daf2b" | 7 | SRCREV = "9284af9b968d40e441b10f5c09961cbe329ccb9b" |
| 8 | PR = "r12" | 8 | PR = "r12" |
| 9 | PV = "0.1+git${SRCPV}" | 9 | PV = "0.1+git${SRCPV}" |
| 10 | 10 | ||
