diff options
author | Tom Zanussi <tom.zanussi@intel.com> | 2012-12-12 22:56:36 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-12-13 16:54:33 +0000 |
commit | be93447bef5569643d28eaac183bc7275d485847 (patch) | |
tree | c34c938dafcfd7e929496370c4cc2d5049765fa1 /scripts/lib | |
parent | 125eb6f390b4882778f1a5179dca5f78675e19e5 (diff) | |
download | poky-be93447bef5569643d28eaac183bc7275d485847.tar.gz |
yocto-kernel: create open_user_file() wrapper function
With the addition of custom kernels, we can no longer rely on a
hard-coded /files directory for BSPs - we need to be able to find the
user_config/patches files in a number of different directories.
We now hide the search inside a new open_user_file() function that
accomplishes the same thing as before but with a more flexible scope.
(From meta-yocto rev: 26a7032553e8d8691239368f0f994f948db06eed)
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-rw-r--r-- | scripts/lib/bsp/kernel.py | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py index a953372e8f..0b7e69bcb9 100644 --- a/scripts/lib/bsp/kernel.py +++ b/scripts/lib/bsp/kernel.py | |||
@@ -133,6 +133,30 @@ def gen_choices_str(choices): | |||
133 | return choices_str | 133 | return choices_str |
134 | 134 | ||
135 | 135 | ||
136 | def open_user_file(scripts_path, machine, userfile, mode): | ||
137 | """ | ||
138 | Find one of the user files (user-config.cfg, user-patches.scc) | ||
139 | associated with the machine (could be in files/, | ||
140 | linux-yocto-custom/, etc). Returns the open file if found, None | ||
141 | otherwise. | ||
142 | |||
143 | The caller is responsible for closing the file returned. | ||
144 | """ | ||
145 | layer = find_bsp_layer(scripts_path, machine) | ||
146 | linuxdir = os.path.join(layer, "recipes-kernel/linux") | ||
147 | linuxdir_list = os.listdir(linuxdir) | ||
148 | for fileobj in linuxdir_list: | ||
149 | fileobj_path = os.path.join(linuxdir, fileobj) | ||
150 | if os.path.isdir(fileobj_path): | ||
151 | userfile_name = os.path.join(fileobj_path, userfile) | ||
152 | try: | ||
153 | f = open(userfile_name, mode) | ||
154 | return f | ||
155 | except IOError: | ||
156 | continue | ||
157 | return None | ||
158 | |||
159 | |||
136 | def read_config_items(scripts_path, machine): | 160 | def read_config_items(scripts_path, machine): |
137 | """ | 161 | """ |
138 | Find and return a list of config items (CONFIG_XXX) in a machine's | 162 | Find and return a list of config items (CONFIG_XXX) in a machine's |
@@ -140,10 +164,7 @@ def read_config_items(scripts_path, machine): | |||
140 | """ | 164 | """ |
141 | config_items = [] | 165 | config_items = [] |
142 | 166 | ||
143 | layer = find_bsp_layer(scripts_path, machine) | 167 | f = open_user_file(scripts_path, machine, "user-config.cfg", "r") |
144 | cfg = os.path.join(layer, "recipes-kernel/linux/files/user-config.cfg") | ||
145 | |||
146 | f = open(cfg, "r") | ||
147 | lines = f.readlines() | 168 | lines = f.readlines() |
148 | for line in lines: | 169 | for line in lines: |
149 | s = line.strip() | 170 | s = line.strip() |
@@ -159,10 +180,7 @@ def write_config_items(scripts_path, machine, config_items): | |||
159 | Write (replace) the list of config items (CONFIG_XXX) in a | 180 | Write (replace) the list of config items (CONFIG_XXX) in a |
160 | machine's user-defined config fragment [user-config.cfg]. | 181 | machine's user-defined config fragment [user-config.cfg]. |
161 | """ | 182 | """ |
162 | layer = find_bsp_layer(scripts_path, machine) | 183 | f = open_user_file(scripts_path, machine, "user-config.cfg", "w") |
163 | cfg = os.path.join(layer, "recipes-kernel/linux/files/user-config.cfg") | ||
164 | |||
165 | f = open(cfg, "w") | ||
166 | for item in config_items: | 184 | for item in config_items: |
167 | f.write(item + "\n") | 185 | f.write(item + "\n") |
168 | f.close() | 186 | f.close() |
@@ -377,10 +395,7 @@ def read_patch_items(scripts_path, machine): | |||
377 | """ | 395 | """ |
378 | patch_items = [] | 396 | patch_items = [] |
379 | 397 | ||
380 | layer = find_bsp_layer(scripts_path, machine) | 398 | f = open_user_file(scripts_path, machine, "user-patches.scc", "r") |
381 | patches = os.path.join(layer, "recipes-kernel/linux/files/user-patches.scc") | ||
382 | |||
383 | f = open(patches, "r") | ||
384 | lines = f.readlines() | 399 | lines = f.readlines() |
385 | for line in lines: | 400 | for line in lines: |
386 | s = line.strip() | 401 | s = line.strip() |
@@ -399,11 +414,7 @@ def write_patch_items(scripts_path, machine, patch_items): | |||
399 | Write (replace) the list of patches in a machine's user-defined | 414 | Write (replace) the list of patches in a machine's user-defined |
400 | patch list [user-patches.scc]. | 415 | patch list [user-patches.scc]. |
401 | """ | 416 | """ |
402 | layer = find_bsp_layer(scripts_path, machine) | 417 | f = open_user_file(scripts_path, machine, "user-patches.scc", "w") |
403 | |||
404 | patches = os.path.join(layer, "recipes-kernel/linux/files/user-patches.scc") | ||
405 | |||
406 | f = open(patches, "w") | ||
407 | for item in patch_items: | 418 | for item in patch_items: |
408 | pass | 419 | pass |
409 | # this currently breaks do_patch, but is really what we want | 420 | # this currently breaks do_patch, but is really what we want |