diff options
Diffstat (limited to 'meta/classes/multilib.bbclass')
-rw-r--r-- | meta/classes/multilib.bbclass | 39 |
1 files changed, 12 insertions, 27 deletions
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass index 5d975fd33e..583d76b0f3 100644 --- a/meta/classes/multilib.bbclass +++ b/meta/classes/multilib.bbclass | |||
@@ -6,12 +6,17 @@ python multilib_virtclass_handler () { | |||
6 | variant = e.data.getVar("BBEXTENDVARIANT", True) | 6 | variant = e.data.getVar("BBEXTENDVARIANT", True) |
7 | if cls != "multilib" or not variant: | 7 | if cls != "multilib" or not variant: |
8 | return | 8 | return |
9 | |||
10 | # There should only be one kernel in multilib configs | ||
11 | if bb.data.inherits_class('kernel', e.data) or bb.data.inherits_class('module-base', e.data) or bb.data.inherits_class('allarch', e.data): | ||
12 | raise bb.parse.SkipPackage("We shouldn't have multilib variants for the kernel") | ||
13 | |||
9 | save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME", True) or "" | 14 | save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME", True) or "" |
10 | for name in save_var_name.split(): | 15 | for name in save_var_name.split(): |
11 | val=e.data.getVar(name, True) | 16 | val=e.data.getVar(name, True) |
12 | if val: | 17 | if val: |
13 | e.data.setVar(name + "_MULTILIB_ORIGINAL", val) | 18 | e.data.setVar(name + "_MULTILIB_ORIGINAL", val) |
14 | 19 | ||
15 | override = ":virtclass-multilib-" + variant | 20 | override = ":virtclass-multilib-" + variant |
16 | 21 | ||
17 | e.data.setVar("MLPREFIX", variant + "-") | 22 | e.data.setVar("MLPREFIX", variant + "-") |
@@ -28,16 +33,6 @@ STAGINGCC_prepend = "${BBEXTENDVARIANT}-" | |||
28 | python __anonymous () { | 33 | python __anonymous () { |
29 | variant = d.getVar("BBEXTENDVARIANT", True) | 34 | variant = d.getVar("BBEXTENDVARIANT", True) |
30 | 35 | ||
31 | def extend_name(name): | ||
32 | if name.startswith("virtual/"): | ||
33 | subs = name.split("/", 1)[1] | ||
34 | if not subs.startswith(variant): | ||
35 | return "virtual/" + variant + "-" + subs | ||
36 | return name | ||
37 | if not name.startswith(variant): | ||
38 | return variant + "-" + name | ||
39 | return name | ||
40 | |||
41 | def map_dependencies(varname, d, suffix = ""): | 36 | def map_dependencies(varname, d, suffix = ""): |
42 | if suffix: | 37 | if suffix: |
43 | varname = varname + "_" + suffix | 38 | varname = varname + "_" + suffix |
@@ -50,25 +45,15 @@ python __anonymous () { | |||
50 | if dep.endswith(("-native", "-native-runtime")): | 45 | if dep.endswith(("-native", "-native-runtime")): |
51 | newdeps.append(dep) | 46 | newdeps.append(dep) |
52 | else: | 47 | else: |
53 | newdeps.append(extend_name(dep)) | 48 | newdeps.append(multilib_extend_name(variant, dep)) |
54 | d.setVar(varname, " ".join(newdeps)) | 49 | d.setVar(varname, " ".join(newdeps)) |
55 | 50 | ||
56 | def map_variable(varname, d): | ||
57 | var = d.getVar(varname, True) | ||
58 | if not var: | ||
59 | return | ||
60 | var = var.split() | ||
61 | newvar = [] | ||
62 | for v in var: | ||
63 | newvar.append(extend_name(v)) | ||
64 | d.setVar(varname, " ".join(newvar)) | ||
65 | |||
66 | pkgs_mapping = [] | 51 | pkgs_mapping = [] |
67 | for pkg in (d.getVar("PACKAGES", True) or "").split(): | 52 | for pkg in (d.getVar("PACKAGES", True) or "").split(): |
68 | if pkg.startswith(variant): | 53 | if pkg.startswith(variant): |
69 | pkgs_mapping.append([pkg.split(variant + "-")[1], pkg]) | 54 | pkgs_mapping.append([pkg.split(variant + "-")[1], pkg]) |
70 | continue | 55 | continue |
71 | pkgs_mapping.append([pkg, extend_name(pkg)]) | 56 | pkgs_mapping.append([pkg, multilib_extend_name(variant, pkg)]) |
72 | 57 | ||
73 | d.setVar("PACKAGES", " ".join([row[1] for row in pkgs_mapping])) | 58 | d.setVar("PACKAGES", " ".join([row[1] for row in pkgs_mapping])) |
74 | 59 | ||
@@ -87,8 +72,8 @@ python __anonymous () { | |||
87 | map_dependencies("RCONFLICTS", d, pkg) | 72 | map_dependencies("RCONFLICTS", d, pkg) |
88 | map_dependencies("PKG", d, pkg) | 73 | map_dependencies("PKG", d, pkg) |
89 | 74 | ||
90 | map_variable("PROVIDES", d) | 75 | multilib_map_variable("PROVIDES", variant, d) |
91 | map_variable("PACKAGES_DYNAMIC", d) | 76 | multilib_map_variable("PACKAGES_DYNAMIC", variant, d) |
92 | map_variable("PACKAGE_INSTALL", d) | 77 | multilib_map_variable("PACKAGE_INSTALL", variant, d) |
93 | map_variable("INITSCRIPT_PACKAGES", d) | 78 | multilib_map_variable("INITSCRIPT_PACKAGES", variant, d) |
94 | } | 79 | } |