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 <tom.zanussi@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
205872b7b8
commit
125eb6f390
|
@ -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):
|
||||
|
|
|
@ -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) }}
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Reference in New Issue