[OE-core] [PATCH 2/3] rpm: add multilib prefix for archs under deploy/rpm

Mark Hatle mark.hatle at windriver.com
Mon Sep 12 14:55:53 UTC 2011


On 9/12/11 3:34 AM, Dongxiao Xu wrote:
> Currently MACHINE_ARCH deploy folder is unique in multilib system, thus
> a lib32 version of rpm package will override a normal rpm package if
> its PACKAGE_ARCH is ${MACHINE_ARCH}.
> 
> Define different deploy folder for multilib architectures to avoid the
> confliction.

I'm not sure I understand here.  Within the deployment directory is a set of
directories for each RPM architecture.  Are you saying that we can get two
packages that have different contents but the same RPM architecture?

Can you give me an example of what is going wrong?

--Mark

> Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
> ---
>  meta/classes/multilib.bbclass   |    5 +++++
>  meta/classes/rootfs_rpm.bbclass |    4 +++-
>  2 files changed, 8 insertions(+), 1 deletions(-)
> 
> diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
> index 76c86b2..6ace1fe 100644
> --- a/meta/classes/multilib.bbclass
> +++ b/meta/classes/multilib.bbclass
> @@ -77,4 +77,9 @@ python __anonymous () {
>      multilib_map_variable("PACKAGES_DYNAMIC", variant, d)
>      multilib_map_variable("PACKAGE_INSTALL", variant, d)
>      multilib_map_variable("INITSCRIPT_PACKAGES", variant, d)
> +
> +    package_arch = d.getVar("PACKAGE_ARCH", True)
> +    machine_arch = d.getVar("MACHINE_ARCH", True)
> +    if package_arch == machine_arch:
> +        d.setVar("PACKAGE_ARCH", variant + "_" + package_arch)
>  }
> diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
> index 135ca75..7936d77 100644
> --- a/meta/classes/rootfs_rpm.bbclass
> +++ b/meta/classes/rootfs_rpm.bbclass
> @@ -218,7 +218,9 @@ python () {
>              default_tune = localdata.getVar("DEFAULTTUNE_virtclass-multilib-" + eext[1], False)
>              if default_tune:
>                  localdata.setVar("DEFAULTTUNE", default_tune)
> -            ml_package_archs += localdata.getVar("PACKAGE_ARCHS", True) or ""
> +            localdata.setVar("MACHINE_ARCH", eext[1] + "_" + localdata.getVar("MACHINE_ARCH", False))
> +            package_archs = localdata.getVar("PACKAGE_ARCHS", True) or ""
> +            ml_package_archs += " " + package_archs
>              #bb.note("ML_PACKAGE_ARCHS %s %s %s" % (eext[1], localdata.getVar("PACKAGE_ARCHS", True) or "(none)", overrides))
>      bb.data.setVar('MULTILIB_PACKAGE_ARCHS', ml_package_archs, d)
>  }





More information about the Openembedded-core mailing list