[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