Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/3] Multilib fixes
@ 2012-12-24 11:28 Constantin Musca
  2012-12-24 11:28 ` [PATCH 1/3] multilib: fix allarch/kernel/module-base multilib issues Constantin Musca
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Constantin Musca @ 2012-12-24 11:28 UTC (permalink / raw)
  To: openembedded-core

This represents a set of multilib fixes.
The following changes since commit 90c0eb29f0b41e4ac2d3d17ebad7295c2ebdc02a:

  rootfs_rpm.bbclass: remove debug code (2012-12-19 21:43:55 +0000)

are available in the git repository at:

  git://git.pokylinux.org/poky-contrib cmuscax/multilib3
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=cmuscax/multilib3

Constantin Musca (3):
  multilib: fix allarch/kernel/module-base multilib issues
  xserver-xorg: enable multilib
  xorg-driver: enable multilib

 meta/classes/multilib.bbclass                      |  3 +++
 meta/classes/multilib_global.bbclass               |  5 +++-
 meta/classes/package.bbclass                       | 30 ++++++++++++++++++++++
 meta/classes/sanity.bbclass                        |  4 +++
 meta/conf/multilib.conf                            |  2 ++
 .../xorg-driver/xorg-driver-common.inc             |  5 ++--
 .../recipes-graphics/xorg-xserver/xserver-xorg.inc |  5 ++--
 7 files changed, 49 insertions(+), 5 deletions(-)

-- 
1.7.11.7




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] multilib: fix allarch/kernel/module-base multilib issues
  2012-12-24 11:28 [PATCH 0/3] Multilib fixes Constantin Musca
@ 2012-12-24 11:28 ` Constantin Musca
  2012-12-24 11:28 ` [PATCH 2/3] xserver-xorg: enable multilib Constantin Musca
  2012-12-24 11:28 ` [PATCH 3/3] xorg-driver: " Constantin Musca
  2 siblings, 0 replies; 4+ messages in thread
From: Constantin Musca @ 2012-12-24 11:28 UTC (permalink / raw)
  To: openembedded-core

- skip the non-packagegroup allarch recipes in multilib_virtclass_handler
- extend PROVIDES/RPROVIDES for allarch recipes which are not packagegroups
- use variants from MULTILIB_GLOBAL_VARIANTS (lib32 lib64 libx32) to create
additional pkgdata files for multilib allarch: ${pkgdatadir}/${variant}-${PN}
and ${pkgdatadir}/runtime/${variant}-${pkg}
- use variants from MULTILIB_VARIANTS to create additional pkgdata files
for multilib kernel/module-base recipes
- add a sanity check to determine if the current multilib is in
MULTILIB_GLOBAL_VARIANTS

[YOCTO #2918]
[YOCTO #3440]
[YOCTO #3565]
[YOCTO #3568]

Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
---
 meta/classes/multilib.bbclass        |  3 +++
 meta/classes/multilib_global.bbclass |  5 ++++-
 meta/classes/package.bbclass         | 30 ++++++++++++++++++++++++++++++
 meta/classes/sanity.bbclass          |  4 ++++
 meta/conf/multilib.conf              |  2 ++
 5 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 09c08ed..f5f3c69 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -31,6 +31,9 @@ python multilib_virtclass_handler () {
     if bb.data.inherits_class('nativesdk', e.data) or bb.data.inherits_class('crosssdk', e.data):
         raise bb.parse.SkipPackage("We can't extend nativesdk recipes")
 
+    if bb.data.inherits_class('allarch', e.data) and not bb.data.inherits_class('packagegroup', e.data):
+        raise bb.parse.SkipPackage("Don't extend allarch recipes which are not packagegroups")
+
     save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME", True) or ""
     for name in save_var_name.split():
         val=e.data.getVar(name, True)
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass
index f55e3a2..529e82a 100644
--- a/meta/classes/multilib_global.bbclass
+++ b/meta/classes/multilib_global.bbclass
@@ -10,7 +10,10 @@ python multilib_virtclass_handler_global () {
     variant = e.data.getVar("BBEXTENDVARIANT", True)
 
     if isinstance(e, bb.event.RecipeParsed) and not variant:
-        if bb.data.inherits_class('kernel', e.data) or bb.data.inherits_class('module-base', e.data):
+        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) and\
+             not bb.data.inherits_class('packagegroup', e.data)):
             variants = (e.data.getVar("MULTILIB_VARIANTS", True) or "").split()
 
             import oe.classextend
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 9885d94..1ac6551 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1132,6 +1132,20 @@ python emit_pkgdata() {
             size = 0
         return size
 
+    def write_extra_pkgs(variants, pn, packages, pkgdatadir):
+        for variant in variants:
+            with open("%s/%s-%s" % (pkgdatadir, variant, pn), 'w') as fd:
+                fd.write("PACKAGES: %s\n" % ' '.join(
+                            map(lambda pkg: '%s-%s' % (variant, pkg), packages.split())))
+
+    def write_extra_runtime_pkgs(variants, packages, pkgdatadir):
+        for variant in variants:
+            for pkg in packages.split():
+                ml_pkg = "%s-%s" % (variant, pkg)
+                subdata_file = "%s/runtime/%s" % (pkgdatadir, ml_pkg)
+                with open(subdata_file, 'w') as fd:
+                    fd.write("PKG_%s: %s" % (ml_pkg, pkg))
+
     packages = d.getVar('PACKAGES', True)
     pkgdest = d.getVar('PKGDEST', True)
     pkgdatadir = d.getVar('PKGDESTWORK', True)
@@ -1144,6 +1158,16 @@ python emit_pkgdata() {
     f.write("PACKAGES: %s\n" % packages)
     f.close()
 
+    pn = d.getVar('PN', True)
+    global_variants = (d.getVar('MULTILIB_GLOBAL_VARIANTS', True) or "").split()
+    variants = (d.getVar('MULTILIB_VARIANTS', True) or "").split()
+
+    if bb.data.inherits_class('kernel', d) or bb.data.inherits_class('module-base', d):
+        write_extra_pkgs(variants, pn, packages, pkgdatadir)
+
+    if (bb.data.inherits_class('allarch', d) and not bb.data.inherits_class('packagegroup', d)):
+        write_extra_pkgs(global_variants, pn, packages, pkgdatadir)
+
     workdir = d.getVar('WORKDIR', True)
 
     for pkg in packages.split():
@@ -1198,6 +1222,12 @@ python emit_pkgdata() {
             packagedfile = pkgdatadir + '/runtime/%s.packaged' % pkg
             file(packagedfile, 'w').close()
 
+    if bb.data.inherits_class('kernel', d) or bb.data.inherits_class('module-base', d):
+        write_extra_runtime_pkgs(variants, packages, pkgdatadir)
+
+    if bb.data.inherits_class('allarch', d) and not bb.data.inherits_class('packagegroup', d):
+        write_extra_runtime_pkgs(global_variants, packages, pkgdatadir)
+
     bb.utils.unlockfile(lf)
 }
 emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse"
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 5b4f070..0ffa52d 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -114,6 +114,8 @@ def check_toolchain(data):
         tune_error_set.append(tune_errors)
 
     multilibs = (data.getVar("MULTILIB_VARIANTS", True) or "").split()
+    global_multilibs = (data.getVar("MULTILIB_GLOBAL_VARIANTS", True) or "").split()
+
     if multilibs:
         seen_libs = []
         seen_tunes = []
@@ -122,6 +124,8 @@ def check_toolchain(data):
                 tune_error_set.append("The multilib '%s' appears more than once." % lib)
             else:
                 seen_libs.append(lib)
+            if not lib in global_multilibs:
+                tune_error_set.append("Multilib %s is not present in MULTILIB_GLOBAL_VARIANTS" % lib)
             tune = data.getVar("DEFAULTTUNE_virtclass-multilib-%s" % lib, True)
             if tune in seen_tunes:
                 tune_error_set.append("The tuning '%s' appears in more than one multilib." % tune)
diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf
index b22a4cb..97b53ec 100644
--- a/meta/conf/multilib.conf
+++ b/meta/conf/multilib.conf
@@ -12,3 +12,5 @@ STAGING_DIR_TARGET = "${STAGING_DIR}/${MLPREFIX}${MACHINE}"
 INHERIT += "multilib_global"
 
 BBCLASSEXTEND_append = " ${MULTILIBS}"
+
+MULTILIB_GLOBAL_VARIANTS  = "lib32 lib64 libx32"
-- 
1.7.11.7




^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] xserver-xorg: enable multilib
  2012-12-24 11:28 [PATCH 0/3] Multilib fixes Constantin Musca
  2012-12-24 11:28 ` [PATCH 1/3] multilib: fix allarch/kernel/module-base multilib issues Constantin Musca
@ 2012-12-24 11:28 ` Constantin Musca
  2012-12-24 11:28 ` [PATCH 3/3] xorg-driver: " Constantin Musca
  2 siblings, 0 replies; 4+ messages in thread
From: Constantin Musca @ 2012-12-24 11:28 UTC (permalink / raw)
  To: openembedded-core

[YOCTO #3438]

Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
---
 meta/recipes-graphics/xorg-xserver/xserver-xorg.inc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index 7331cf6..5d5443c 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -13,7 +13,7 @@ PROVIDES = "virtual/xserver-xf86"
 PROVIDES += "virtual/xserver"
 
 PE = "2"
-INC_PR = "r7"
+INC_PR = "r8"
 
 XORG_PN = "xorg-server"
 SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
@@ -151,7 +151,8 @@ python populate_packages_prepend() {
         p = subprocess.Popen(args="pkg-config --variable=%s xorg-server" % abis[name],
                              shell=True, env=newenv, stdout=subprocess.PIPE)
         output = p.communicate()[0]
-        return "xorg-abi-%s-%s" % (name, output.split(".")[0])
+        mlprefix = d.getVar('MLPREFIX', True) or ''
+        return "%sxorg-abi-%s-%s" % (mlprefix, name, output.split(".")[0])
 
     pn = d.getVar("PN", True)
     d.appendVar("RPROVIDES_" + pn, " " + get_abi("input"))
-- 
1.7.11.7




^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] xorg-driver: enable multilib
  2012-12-24 11:28 [PATCH 0/3] Multilib fixes Constantin Musca
  2012-12-24 11:28 ` [PATCH 1/3] multilib: fix allarch/kernel/module-base multilib issues Constantin Musca
  2012-12-24 11:28 ` [PATCH 2/3] xserver-xorg: enable multilib Constantin Musca
@ 2012-12-24 11:28 ` Constantin Musca
  2 siblings, 0 replies; 4+ messages in thread
From: Constantin Musca @ 2012-12-24 11:28 UTC (permalink / raw)
  To: openembedded-core

[YOCTO #3438]

Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
---
 meta/recipes-graphics/xorg-driver/xorg-driver-common.inc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
index aabf86b..5f5d282 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
@@ -5,7 +5,7 @@ SECTION = "x11/drivers"
 LICENSE = "MIT-X"
 
 PE = "2"
-INC_PR = "r20"
+INC_PR = "r21"
 
 DEPENDS = "virtual/xserver xproto randrproto util-macros"
 
@@ -34,7 +34,8 @@ def add_abi_depends(d, name):
     }
 
     output = os.popen("pkg-config xorg-server --variable=%s" % abis[name]).read()
-    abi = "xorg-abi-%s-%s" % (name, output.split(".")[0])
+    mlprefix = d.getVar('MLPREFIX', True) or ''
+    abi = "%sxorg-abi-%s-%s" % (mlprefix, name, output.split(".")[0])
 
     pn = d.getVar("PN", True)
     d.appendVar('RDEPENDS_' + pn, ' ' + abi)
-- 
1.7.11.7




^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-12-24 11:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-24 11:28 [PATCH 0/3] Multilib fixes Constantin Musca
2012-12-24 11:28 ` [PATCH 1/3] multilib: fix allarch/kernel/module-base multilib issues Constantin Musca
2012-12-24 11:28 ` [PATCH 2/3] xserver-xorg: enable multilib Constantin Musca
2012-12-24 11:28 ` [PATCH 3/3] xorg-driver: " Constantin Musca

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox