lib/oe: sync with OE.dev

Most notable change is the move to creating symlinks to patches in the metadata
tree rather than copying them.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
This commit is contained in:
Joshua Lock 2010-08-03 18:18:03 +01:00 committed by Richard Purdie
parent 7b74364120
commit 1fbcd2ca17
3 changed files with 39 additions and 9 deletions

View File

@ -1,3 +1,5 @@
import oe.path
class NotFoundError(Exception):
def __init__(self, path):
self.path = path
@ -234,15 +236,10 @@ class QuiltTree(PatchSet):
if not self.initialized:
self.InitFromDir()
PatchSet.Import(self, patch, force)
args = ["import", "-p", patch["strippath"]]
if force:
args.append("-f")
args.append("-dn")
args.append(patch["file"])
self._runcmd(args)
oe.path.symlink(patch["file"], self._quiltpatchpath(patch["file"]))
f = open(os.path.join(self.dir, "patches","series"), "a");
f.write(os.path.basename(patch["file"]) + " -p" + patch["strippath"]+"\n")
f.close()
patch["quiltfile"] = self._quiltpatchpath(patch["file"])
patch["quiltfilemd5"] = bb.utils.md5_file(patch["quiltfile"])

View File

@ -42,3 +42,25 @@ def format_display(path, metadata):
return path
else:
return rel
def remove(path):
"""Equivalent to rm -f or rm -rf"""
import os, errno, shutil
try:
os.unlink(path)
except OSError, exc:
if exc.errno == errno.EISDIR:
shutil.rmtree(path)
elif exc.errno != errno.ENOENT:
raise
def symlink(source, destination, force=False):
"""Create a symbolic link"""
import os, errno
try:
if force:
remove(destination)
os.symlink(source, destination)
except OSError, e:
if e.errno != errno.EEXIST or os.readlink(destination) != source:
raise

View File

@ -67,3 +67,14 @@ def str_filter(f, str, d):
def str_filter_out(f, str, d):
from re import match
return " ".join(filter(lambda x: not match(f, x, 0), str.split()))
def param_bool(cfg, field, dflt = None):
"""Lookup <field> in <cfg> map and convert it to a boolean; take
<dflt> when this <field> does not exist"""
value = cfg.get(field, dflt)
strvalue = str(value).lower()
if strvalue in ('yes', 'y', 'true', 't', '1'):
return True
elif strvalue in ('no', 'n', 'false', 'f', '0'):
return False
raise ValueError("invalid value for boolean parameter '%s': '%s'" % (field, value))