diff options
Diffstat (limited to 'meta/classes/multilib.bbclass')
| -rw-r--r-- | meta/classes/multilib.bbclass | 122 |
1 files changed, 63 insertions, 59 deletions
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass index b6c09969b1..15056dac4d 100644 --- a/meta/classes/multilib.bbclass +++ b/meta/classes/multilib.bbclass | |||
| @@ -5,30 +5,31 @@ | |||
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | python multilib_virtclass_handler () { | 7 | python multilib_virtclass_handler () { |
| 8 | cls = e.data.getVar("BBEXTENDCURR") | 8 | cls = d.getVar("BBEXTENDCURR") |
| 9 | variant = e.data.getVar("BBEXTENDVARIANT") | 9 | variant = d.getVar("BBEXTENDVARIANT") |
| 10 | if cls != "multilib" or not variant: | 10 | if cls != "multilib" or not variant: |
| 11 | return | 11 | return |
| 12 | 12 | ||
| 13 | localdata = bb.data.createCopy(e.data) | 13 | localdata = bb.data.createCopy(d) |
| 14 | localdata.delVar('TMPDIR') | 14 | localdata.delVar('TMPDIR') |
| 15 | e.data.setVar('STAGING_KERNEL_DIR', localdata.getVar('STAGING_KERNEL_DIR')) | 15 | d.setVar('STAGING_KERNEL_DIR', localdata.getVar('STAGING_KERNEL_DIR')) |
| 16 | 16 | ||
| 17 | # There should only be one kernel in multilib configs | 17 | # There should only be one kernel in multilib configs |
| 18 | # We also skip multilib setup for module packages. | 18 | # We also skip multilib setup for module packages. |
| 19 | provides = (e.data.getVar("PROVIDES") or "").split() | 19 | provides = (d.getVar("PROVIDES") or "").split() |
| 20 | non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split() | 20 | non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split() |
| 21 | bpn = e.data.getVar("BPN") | 21 | bpn = d.getVar("BPN") |
| 22 | if "virtual/kernel" in provides or \ | 22 | if ("virtual/kernel" in provides |
| 23 | bb.data.inherits_class('module-base', e.data) or \ | 23 | or bb.data.inherits_class('module-base', d) |
| 24 | bpn in non_ml_recipes: | 24 | or bb.data.inherits_class('kernel-fit-image', d) |
| 25 | or bpn in non_ml_recipes): | ||
| 25 | raise bb.parse.SkipRecipe("We shouldn't have multilib variants for %s" % bpn) | 26 | raise bb.parse.SkipRecipe("We shouldn't have multilib variants for %s" % bpn) |
| 26 | 27 | ||
| 27 | save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME") or "" | 28 | save_var_name = d.getVar("MULTILIB_SAVE_VARNAME") or "" |
| 28 | for name in save_var_name.split(): | 29 | for name in save_var_name.split(): |
| 29 | val=e.data.getVar(name) | 30 | val = d.getVar(name) |
| 30 | if val: | 31 | if val: |
| 31 | e.data.setVar(name + "_MULTILIB_ORIGINAL", val) | 32 | d.setVar(name + "_MULTILIB_ORIGINAL", val) |
| 32 | 33 | ||
| 33 | # We nearly don't need this but dependencies on NON_MULTILIB_RECIPES don't work without it | 34 | # We nearly don't need this but dependencies on NON_MULTILIB_RECIPES don't work without it |
| 34 | d.setVar("SSTATE_ARCHS_TUNEPKG", "${@all_multilib_tune_values(d, 'TUNE_PKGARCH')}") | 35 | d.setVar("SSTATE_ARCHS_TUNEPKG", "${@all_multilib_tune_values(d, 'TUNE_PKGARCH')}") |
| @@ -36,66 +37,67 @@ python multilib_virtclass_handler () { | |||
| 36 | overrides = e.data.getVar("OVERRIDES", False) | 37 | overrides = e.data.getVar("OVERRIDES", False) |
| 37 | pn = e.data.getVar("PN", False) | 38 | pn = e.data.getVar("PN", False) |
| 38 | overrides = overrides.replace("pn-${PN}", "pn-${PN}:pn-" + pn) | 39 | overrides = overrides.replace("pn-${PN}", "pn-${PN}:pn-" + pn) |
| 39 | e.data.setVar("OVERRIDES", overrides) | 40 | d.setVar("OVERRIDES", overrides) |
| 40 | 41 | ||
| 41 | if bb.data.inherits_class('image', e.data): | 42 | if bb.data.inherits_class('image', d): |
| 42 | e.data.setVar("MLPREFIX", variant + "-") | 43 | d.setVar("MLPREFIX", variant + "-") |
| 43 | e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) | 44 | d.setVar("PN", variant + "-" + d.getVar("PN", False)) |
| 44 | e.data.setVar('SDKTARGETSYSROOT', e.data.getVar('SDKTARGETSYSROOT')) | 45 | d.setVar('SDKTARGETSYSROOT', d.getVar('SDKTARGETSYSROOT')) |
| 45 | override = ":virtclass-multilib-" + variant | 46 | override = ":virtclass-multilib-" + variant |
| 46 | e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) | 47 | d.setVar("OVERRIDES", d.getVar("OVERRIDES", False) + override) |
| 47 | target_vendor = e.data.getVar("TARGET_VENDOR:" + "virtclass-multilib-" + variant, False) | 48 | target_vendor = d.getVar("TARGET_VENDOR:" + "virtclass-multilib-" + variant, False) |
| 48 | if target_vendor: | 49 | if target_vendor: |
| 49 | e.data.setVar("TARGET_VENDOR", target_vendor) | 50 | d.setVar("TARGET_VENDOR", target_vendor) |
| 50 | return | 51 | return |
| 51 | 52 | ||
| 52 | if bb.data.inherits_class('cross-canadian', e.data): | 53 | if bb.data.inherits_class('cross-canadian', d): |
| 53 | # Multilib cross-candian should use the same nativesdk sysroot without MLPREFIX | 54 | # Multilib cross-candian should use the same nativesdk sysroot without MLPREFIX |
| 54 | e.data.setVar("RECIPE_SYSROOT", "${WORKDIR}/recipe-sysroot") | 55 | d.setVar("RECIPE_SYSROOT", "${WORKDIR}/recipe-sysroot") |
| 55 | e.data.setVar("STAGING_DIR_TARGET", "${WORKDIR}/recipe-sysroot") | 56 | d.setVar("STAGING_DIR_TARGET", "${WORKDIR}/recipe-sysroot") |
| 56 | e.data.setVar("STAGING_DIR_HOST", "${WORKDIR}/recipe-sysroot") | 57 | d.setVar("STAGING_DIR_HOST", "${WORKDIR}/recipe-sysroot") |
| 57 | e.data.setVar("RECIPE_SYSROOT_MANIFEST_SUBDIR", "nativesdk-" + variant) | 58 | d.setVar("RECIPE_SYSROOT_MANIFEST_SUBDIR", "nativesdk-" + variant) |
| 58 | e.data.setVar("MLPREFIX", variant + "-") | 59 | d.setVar("MLPREFIX", variant + "-") |
| 59 | override = ":virtclass-multilib-" + variant | 60 | override = ":virtclass-multilib-" + variant |
| 60 | e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) | 61 | d.setVar("OVERRIDES", d.getVar("OVERRIDES", False) + override) |
| 61 | return | 62 | return |
| 62 | 63 | ||
| 63 | if bb.data.inherits_class('native', e.data): | 64 | if bb.data.inherits_class('native', d): |
| 64 | raise bb.parse.SkipRecipe("We can't extend native recipes") | 65 | raise bb.parse.SkipRecipe("We can't extend native recipes") |
| 65 | 66 | ||
| 66 | if bb.data.inherits_class('nativesdk', e.data) or bb.data.inherits_class('crosssdk', e.data): | 67 | if bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('crosssdk', d): |
| 67 | raise bb.parse.SkipRecipe("We can't extend nativesdk recipes") | 68 | raise bb.parse.SkipRecipe("We can't extend nativesdk recipes") |
| 68 | 69 | ||
| 69 | if bb.data.inherits_class('allarch', e.data) and not d.getVar('MULTILIB_VARIANTS') \ | 70 | if (bb.data.inherits_class('allarch', d) |
| 70 | and not bb.data.inherits_class('packagegroup', e.data): | 71 | and not d.getVar('MULTILIB_VARIANTS') |
| 72 | and not bb.data.inherits_class('packagegroup', d)): | ||
| 71 | raise bb.parse.SkipRecipe("Don't extend allarch recipes which are not packagegroups") | 73 | raise bb.parse.SkipRecipe("Don't extend allarch recipes which are not packagegroups") |
| 72 | 74 | ||
| 73 | # Expand this since this won't work correctly once we set a multilib into place | 75 | # Expand this since this won't work correctly once we set a multilib into place |
| 74 | e.data.setVar("ALL_MULTILIB_PACKAGE_ARCHS", e.data.getVar("ALL_MULTILIB_PACKAGE_ARCHS")) | 76 | d.setVar("ALL_MULTILIB_PACKAGE_ARCHS", d.getVar("ALL_MULTILIB_PACKAGE_ARCHS")) |
| 75 | 77 | ||
| 76 | override = ":virtclass-multilib-" + variant | 78 | override = ":virtclass-multilib-" + variant |
| 77 | 79 | ||
| 78 | skip_msg = e.data.getVarFlag('SKIP_RECIPE', e.data.getVar('PN')) | 80 | skip_msg = d.getVarFlag('SKIP_RECIPE', d.getVar('PN')) |
| 79 | if skip_msg: | 81 | if skip_msg: |
| 80 | pn_new = variant + "-" + e.data.getVar('PN') | 82 | pn_new = variant + "-" + d.getVar('PN') |
| 81 | if not e.data.getVarFlag('SKIP_RECIPE', pn_new): | 83 | if not d.getVarFlag('SKIP_RECIPE', pn_new): |
| 82 | e.data.setVarFlag('SKIP_RECIPE', pn_new, skip_msg) | 84 | d.setVarFlag('SKIP_RECIPE', pn_new, skip_msg) |
| 83 | 85 | ||
| 84 | e.data.setVar("MLPREFIX", variant + "-") | 86 | d.setVar("MLPREFIX", variant + "-") |
| 85 | e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) | 87 | d.setVar("PN", variant + "-" + d.getVar("PN", False)) |
| 86 | e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) | 88 | d.setVar("OVERRIDES", d.getVar("OVERRIDES", False) + override) |
| 87 | 89 | ||
| 88 | # Expand INCOMPATIBLE_LICENSE_EXCEPTIONS with multilib prefix | 90 | # Expand INCOMPATIBLE_LICENSE_EXCEPTIONS with multilib prefix |
| 89 | pkgs = e.data.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") | 91 | pkgs = d.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS") |
| 90 | if pkgs: | 92 | if pkgs: |
| 91 | for pkg in pkgs.split(): | 93 | for pkg in pkgs.split(): |
| 92 | pkgs += " " + variant + "-" + pkg | 94 | pkgs += " " + variant + "-" + pkg |
| 93 | e.data.setVar("INCOMPATIBLE_LICENSE_EXCEPTIONS", pkgs) | 95 | d.setVar("INCOMPATIBLE_LICENSE_EXCEPTIONS", pkgs) |
| 94 | 96 | ||
| 95 | # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data | 97 | # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data |
| 96 | newtune = e.data.getVar("DEFAULTTUNE:" + "virtclass-multilib-" + variant, False) | 98 | newtune = d.getVar("DEFAULTTUNE:" + "virtclass-multilib-" + variant, False) |
| 97 | if newtune: | 99 | if newtune: |
| 98 | e.data.setVar("DEFAULTTUNE", newtune) | 100 | d.setVar("DEFAULTTUNE", newtune) |
| 99 | } | 101 | } |
| 100 | 102 | ||
| 101 | addhandler multilib_virtclass_handler | 103 | addhandler multilib_virtclass_handler |
| @@ -110,11 +112,12 @@ python __anonymous () { | |||
| 110 | variant = d.getVar("BBEXTENDVARIANT") | 112 | variant = d.getVar("BBEXTENDVARIANT") |
| 111 | import oe.classextend | 113 | import oe.classextend |
| 112 | 114 | ||
| 113 | clsextend = oe.classextend.ClassExtender(variant, d) | 115 | prefixes = (d.getVar("MULTILIB_VARIANTS") or "").split() |
| 114 | 116 | clsextend = oe.classextend.ClassExtender(variant, prefixes, d) | |
| 115 | clsextend.map_depends_variable("PACKAGE_INSTALL") | 117 | clsextend.set_filter("PACKAGE_INSTALL", deps=False) |
| 116 | clsextend.map_depends_variable("LINGUAS_INSTALL") | 118 | clsextend.set_filter("LINGUAS_INSTALL", deps=False) |
| 117 | clsextend.map_depends_variable("RDEPENDS") | 119 | clsextend.set_filter("ROOTFS_RO_UNNEEDED", deps=False) |
| 120 | clsextend.set_filter("RDEPENDS", deps=True) | ||
| 118 | pinstall = d.getVar("LINGUAS_INSTALL") + " " + d.getVar("PACKAGE_INSTALL") | 121 | pinstall = d.getVar("LINGUAS_INSTALL") + " " + d.getVar("PACKAGE_INSTALL") |
| 119 | d.setVar("PACKAGE_INSTALL", pinstall) | 122 | d.setVar("PACKAGE_INSTALL", pinstall) |
| 120 | d.setVar("LINGUAS_INSTALL", "") | 123 | d.setVar("LINGUAS_INSTALL", "") |
| @@ -134,27 +137,28 @@ python multilib_virtclass_handler_postkeyexp () { | |||
| 134 | 137 | ||
| 135 | import oe.classextend | 138 | import oe.classextend |
| 136 | 139 | ||
| 137 | clsextend = oe.classextend.ClassExtender(variant, d) | ||
| 138 | |||
| 139 | if bb.data.inherits_class('image', d): | 140 | if bb.data.inherits_class('image', d): |
| 140 | return | 141 | return |
| 141 | 142 | ||
| 142 | clsextend.map_depends_variable("DEPENDS") | 143 | prefixes = (d.getVar("MULTILIB_VARIANTS") or "").split() |
| 143 | clsextend.map_depends_variable("PACKAGE_WRITE_DEPS") | 144 | clsextend = oe.classextend.ClassExtender(variant, prefixes, d) |
| 144 | clsextend.map_variable("PROVIDES") | 145 | |
| 146 | clsextend.set_filter("DEPENDS", deps=True) | ||
| 147 | clsextend.set_filter("PACKAGE_WRITE_DEPS", deps=False) | ||
| 148 | |||
| 149 | clsextend.set_filter("PROVIDES", deps=False) | ||
| 145 | 150 | ||
| 146 | if bb.data.inherits_class('cross-canadian', d): | 151 | if bb.data.inherits_class('cross-canadian', d): |
| 147 | return | 152 | return |
| 148 | 153 | ||
| 149 | clsextend.rename_packages() | ||
| 150 | clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split()) | 154 | clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split()) |
| 151 | 155 | ||
| 152 | clsextend.map_packagevars() | 156 | clsextend.map_packagevars() |
| 153 | clsextend.map_regexp_variable("PACKAGES_DYNAMIC") | 157 | |
| 154 | clsextend.map_variable("INITSCRIPT_PACKAGES") | 158 | clsextend.set_filter("INITSCRIPT_PACKAGES", deps=False) |
| 155 | clsextend.map_variable("USERADD_PACKAGES") | 159 | clsextend.set_filter("USERADD_PACKAGES", deps=False) |
| 156 | clsextend.map_variable("SYSTEMD_PACKAGES") | 160 | clsextend.set_filter("SYSTEMD_PACKAGES", deps=False) |
| 157 | clsextend.map_variable("UPDATERCPN") | 161 | clsextend.set_filter("UPDATERCPN", deps=False) |
| 158 | 162 | ||
| 159 | reset_alternative_priority(d) | 163 | reset_alternative_priority(d) |
| 160 | } | 164 | } |
