From c2dc8e062f44e4527b766561b359dd8a32ead29c Mon Sep 17 00:00:00 2001 From: Tom Zanussi Date: Wed, 12 Dec 2012 22:56:35 -0600 Subject: [PATCH] yocto-bsp: add replace_file() Add a function that can be used to replace a template file by a user-specified file. The initial use of this capability is to allow users-specified defconfigs. (From meta-yocto rev: b52a22d40d4701a9515490bdd31c8d0341fb12bc) Signed-off-by: Tom Zanussi Signed-off-by: Richard Purdie --- scripts/lib/bsp/engine.py | 18 +++++++++++++++--- .../defconfig" | 1 + scripts/lib/bsp/tags.py | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py index 6309e29..8985544 100644 --- a/scripts/lib/bsp/engine.py +++ b/scripts/lib/bsp/engine.py @@ -38,6 +38,7 @@ from tags import * import shlex import json import subprocess +import shutil class Line(): """ @@ -83,7 +84,7 @@ class NormalLine(Line): def gen(self, context = None): if self.is_filename: - line = "of = open(\"" + os.path.join(self.out_filebase, self.escape(self.line)) + "\", \"w\")" + line = "current_file = \"" + os.path.join(self.out_filebase, self.escape(self.line)) + "\"; of = open(current_file, \"w\")" elif self.is_dirname: dirname = os.path.join(self.out_filebase, self.escape(self.line)) line = "if not os.path.exists(\"" + dirname + "\"): os.mkdir(\"" + dirname + "\")" @@ -134,7 +135,7 @@ class AssignmentLine(NormalLine): idx = line.find(ASSIGN_TAG) line = line[:idx] + replacement + line[idx + assignment.end - assignment.start:] if self.is_filename: - return "of = open(\"" + os.path.join(self.out_filebase, line) + "\", \"w\")" + return "current_file = \"" + os.path.join(self.out_filebase, line) + "\"; of = open(current_file, \"w\")" elif self.is_dirname: dirname = os.path.join(self.out_filebase, line) return "if not os.path.exists(\"" + dirname + "\"): os.mkdir(\"" + dirname + "\")" @@ -564,6 +565,17 @@ def get_verified_file(input_str, name, filename_can_be_null): filename = default(raw_input(msg), name) +def replace_file(replace_this, with_this): + """ + Replace the given file with the contents of filename, retaining + the original filename. + """ + try: + shutil.copy(with_this, replace_this) + except IOError: + pass + + def boolean(input_str, name): """ Return lowercase version of first char in string, or value in name. @@ -1197,7 +1209,7 @@ def gen_program_header_lines(program_lines): """ Generate any imports we need. """ - pass + program_lines.append("current_file = \"\"") def gen_supplied_property_vals(properties, program_lines): diff --git "a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/{{ if kernel_choice == \"custom\": }} linux-yocto-custom/defconfig" "b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/{{ if kernel_choice == \"custom\": }} linux-yocto-custom/defconfig" index c2745c5..e544a0a 100644 --- "a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/{{ if kernel_choice == \"custom\": }} linux-yocto-custom/defconfig" +++ "b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/{{ if kernel_choice == \"custom\": }} linux-yocto-custom/defconfig" @@ -2,3 +2,4 @@ # Placeholder for custom default kernel configuration. yocto-bsp will # replace this file with a user-specified defconfig. # +{{ if custom_kernel_defconfig: replace_file(current_file, custom_kernel_defconfig) }} diff --git a/scripts/lib/bsp/tags.py b/scripts/lib/bsp/tags.py index 869b1d0..256b25c 100644 --- a/scripts/lib/bsp/tags.py +++ b/scripts/lib/bsp/tags.py @@ -35,7 +35,7 @@ INDENT_STR = " " BLANKLINE_STR = "of.write(\"\\n\")" NORMAL_START = "of.write" -OPEN_START = "of = open" +OPEN_START = "current_file =" INPUT_TYPE_PROPERTY = "type" -- 2.7.4