[poky] [PATCH 06/12] yocto-bsp: add replace_file()

tom.zanussi at intel.com tom.zanussi at intel.com
Wed Dec 12 20:56:35 PST 2012


From: Tom Zanussi <tom.zanussi at intel.com>

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.

Signed-off-by: Tom Zanussi <tom.zanussi at intel.com>
---
 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"
 
-- 
1.7.11.4




More information about the poky mailing list