mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
package.bbclass: Multithread per file dependency generation code
(From OE-Core rev: b659eb0f2070149d9516c129b3853b41fbbd1033) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user