diff options
| -rw-r--r-- | meta/classes/kernel-yocto.bbclass | 74 | ||||
| -rw-r--r-- | meta/recipes-kernel/kern-tools/kern-tools-native_git.bb | 2 |
2 files changed, 8 insertions, 68 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index b7e8b3243f..0caf6a67f0 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
| @@ -20,7 +20,9 @@ def find_sccs(d): | |||
| 20 | sources_list=[] | 20 | sources_list=[] |
| 21 | for s in sources: | 21 | for s in sources: |
| 22 | base, ext = os.path.splitext(os.path.basename(s)) | 22 | base, ext = os.path.splitext(os.path.basename(s)) |
| 23 | if ext and ext in ('.scc'): | 23 | if ext and ext in ('.scc' '.cfg' '.patch'): |
| 24 | sources_list.append(s) | ||
| 25 | elif base and base in 'defconfig': | ||
| 24 | sources_list.append(s) | 26 | sources_list.append(s) |
| 25 | 27 | ||
| 26 | return sources_list | 28 | return sources_list |
| @@ -73,72 +75,9 @@ do_patch() { | |||
| 73 | fi | 75 | fi |
| 74 | 76 | ||
| 75 | sccs="${@" ".join(find_sccs(d))}" | 77 | sccs="${@" ".join(find_sccs(d))}" |
| 76 | patches_and_dirs="${@" ".join(find_urls(d))}" | 78 | patches="${@" ".join(find_patches(d))}" |
| 77 | |||
| 78 | # This loops through all patches, and looks for directories that do | ||
| 79 | # not already have feature descriptions. If a directory doesn't have | ||
| 80 | # a feature description, we switch to the ${WORKDIR} variant of the | ||
| 81 | # feature (so we can write to it) and generate a feature for those | ||
| 82 | # patches. The generated feature will respect the patch order. | ||
| 83 | # | ||
| 84 | # By leaving source patch directories that already have .scc files | ||
| 85 | # as-is it means that a SRC_URI can only contain a .scc file, and all | ||
| 86 | # patches that the .scc references will be picked up, without having | ||
| 87 | # to be repeated on the SRC_URI line .. which is more intutive | ||
| 88 | set +e | ||
| 89 | patch_dirs= | ||
| 90 | for pp in ${patches_and_dirs}; do | ||
| 91 | p=`echo $pp | cut -f1 -d:` | ||
| 92 | wp=`echo $pp | cut -f2 -d:` | ||
| 93 | pdir=`dirname ${p}` | ||
| 94 | pname=`basename ${p}` | ||
| 95 | scc=`find ${pdir} -maxdepth 1 -name '*.scc'` | ||
| 96 | if [ -z "${scc}" ]; then | ||
| 97 | # there is no scc file. We need to switch to someplace that we know | ||
| 98 | # we can create content (the workdir) | ||
| 99 | workdir_subdir=`dirname ${wp}` | ||
| 100 | suggested_dir="${WORKDIR}/${workdir_subdir}" | ||
| 101 | echo ${gen_feature_dirs} | grep -q ${suggested_dir} | ||
| 102 | if [ $? -ne 0 ]; then | ||
| 103 | gen_feature_dirs="${gen_feature_dirs} ${suggested_dir}" | ||
| 104 | fi | ||
| 105 | # we call the file *.scc_tmp, so the test above will continue to find | ||
| 106 | # that patches from a common subdirectory don't have a scc file and | ||
| 107 | # they'll be placed in order, into this file. We'll rename it later. | ||
| 108 | gen_feature_name="gen_`echo ${workdir_subdir} | sed 's%/%%g'`_desc.scc_tmp" | ||
| 109 | echo "patch ${pname}" >> ${WORKDIR}/${workdir_subdir}/${gen_feature_name} | ||
| 110 | else | ||
| 111 | suggested_dir="${pdir}" | ||
| 112 | fi | ||
| 113 | echo ${patch_dirs} | grep -q ${suggested_dir} | ||
| 114 | if [ $? -ne 0 ]; then | ||
| 115 | patch_dirs="${patch_dirs} ${suggested_dir}" | ||
| 116 | fi | ||
| 117 | done | ||
| 118 | |||
| 119 | # look for any found scc files, and ensure they are added to the list | ||
| 120 | # of directories passsed to updateme | ||
| 121 | for s in ${sccs}; do | ||
| 122 | sdir=`dirname ${s}` | ||
| 123 | echo ${patch_dirs} | grep -q ${sdir} | ||
| 124 | if [ $? -ne 0 ]; then | ||
| 125 | patch_dirs="${patch_dirs} ${sdir}" | ||
| 126 | fi | ||
| 127 | done | ||
| 128 | |||
| 129 | # go through the patch directories and look for any scc feature files | ||
| 130 | # that were constructed above. If one is found, rename it to ".scc" so | ||
| 131 | # the kernel patching can see it. | ||
| 132 | for pdir in ${patch_dirs}; do | ||
| 133 | scc=`find ${pdir} -maxdepth 1 -name '*.scc_tmp'` | ||
| 134 | if [ -n "${scc}" ]; then | ||
| 135 | new_scc=`echo ${scc} | sed 's/_tmp//'` | ||
| 136 | mv -f ${scc} ${new_scc} | ||
| 137 | fi | ||
| 138 | done | ||
| 139 | |||
| 140 | patch_dirs="${patch_dirs} ${WORKDIR}" | ||
| 141 | 79 | ||
| 80 | set +e | ||
| 142 | # add any explicitly referenced features onto the end of the feature | 81 | # add any explicitly referenced features onto the end of the feature |
| 143 | # list that is passed to the kernel build scripts. | 82 | # list that is passed to the kernel build scripts. |
| 144 | if [ -n "${KERNEL_FEATURES}" ]; then | 83 | if [ -n "${KERNEL_FEATURES}" ]; then |
| @@ -146,9 +85,10 @@ do_patch() { | |||
| 146 | addon_features="$addon_features --feature $feat" | 85 | addon_features="$addon_features --feature $feat" |
| 147 | done | 86 | done |
| 148 | fi | 87 | fi |
| 88 | |||
| 149 | # updates or generates the target description | 89 | # updates or generates the target description |
| 150 | updateme --branch ${kbranch} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ | 90 | updateme --branch ${kbranch} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ |
| 151 | ${addon_features} ${ARCH} ${KMACHINE} ${patch_dirs} | 91 | ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} |
| 152 | if [ $? -ne 0 ]; then | 92 | if [ $? -ne 0 ]; then |
| 153 | echo "ERROR. Could not update ${kbranch}" | 93 | echo "ERROR. Could not update ${kbranch}" |
| 154 | exit 1 | 94 | 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 b28402acfe..d1c2ee476c 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=e2bf4415f3d8 | |||
| 4 | 4 | ||
| 5 | DEPENDS = "git-native guilt-native" | 5 | DEPENDS = "git-native guilt-native" |
| 6 | 6 | ||
| 7 | SRCREV = "91c2b184be90d6654996887203efdd7f1727a19a" | 7 | SRCREV = "67bcedda582b2b191f26ec47dd1d4eac37f1305c" |
| 8 | PR = "r12" | 8 | PR = "r12" |
| 9 | PV = "0.1+git${SRCPV}" | 9 | PV = "0.1+git${SRCPV}" |
| 10 | 10 | ||
