summaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
Diffstat (limited to 'meta')
-rw-r--r--meta/lib/oe/patch.py15
-rw-r--r--meta/lib/oe/path.py22
-rw-r--r--meta/lib/oe/utils.py11
3 files changed, 39 insertions, 9 deletions
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 94c56bc10..f203d683d 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -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"])
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 890295158..f58c0138b 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -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
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index e61d663a5..346970072 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -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))