From d81aa06ece4e5dcae5f91ab0ae8958d58cd3419f Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 1 Feb 2013 13:50:38 +0000 Subject: package.bbclass: Multithread per file dependency generation code (From OE-Core rev: b659eb0f2070149d9516c129b3853b41fbbd1033) Signed-off-by: Richard Purdie --- meta/lib/oe/package.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 meta/lib/oe/package.py (limited to 'meta/lib') diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py new file mode 100644 index 0000000..6b1c1f4 --- /dev/null +++ b/meta/lib/oe/package.py @@ -0,0 +1,51 @@ + +def file_translate(file): + ft = file.replace("@", "@at@") + ft = ft.replace(" ", "@space@") + ft = ft.replace("\t", "@tab@") + ft = ft.replace("[", "@openbrace@") + ft = ft.replace("]", "@closebrace@") + ft = ft.replace("_", "@underscore@") + return ft + +def filedeprunner(arg): + import re + + (pkg, pkgfiles, rpmdeps, pkgdest) = arg + provides = {} + requires = {} + + r = re.compile(r'[<>=]+ +[^ ]*') + + def process_deps(pipe, pkg, pkgdest, provides, requires): + for line in pipe: + f = line.split(" ", 1)[0].strip() + line = line.split(" ", 1)[1].strip() + + if line.startswith("Requires:"): + i = requires + elif line.startswith("Provides:"): + i = provides + else: + continue + + file = f.replace(pkgdest + "/" + pkg, "") + file = file_translate(file) + value = line.split(":", 1)[1].strip() + value = r.sub(r'(\g<0>)', value) + + if value.startswith("rpmlib("): + continue + if value == "python": + continue + if file not in i: + i[file] = [] + i[file].append(value) + + return provides, requires + + dep_pipe = os.popen(rpmdeps + " " + " ".join(pkgfiles)) + + provides, requires = process_deps(dep_pipe, pkg, pkgdest, provides, requires) + + return (pkg, provides, requires) -- cgit v1.1