Skip to contentSkip to conversation

wic: search nonarch STAGING_DATADIR for multilib

PATCH New [email protected] 1 participant 2 messages Oct 16, 2018

lore
Share & tools
lore
#0 lore raw

cover wic: search nonarch STAGING_DATADIR for multilib

From: Kai Kang <[email protected]>

Build lib32-core-image-minimal with wic successfully by following config:

MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"

IMAGE_FSTYPES = "wic"

The following changes since commit b02f3bfe2fee291a9db85094e5f31b1933acf871:

local.conf.sample.extended: add another warning to comment about GLIBC_GENERATE_LOCALES (2018-10-14 23:45:40 +0100)

are available in the Git repository at:

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

Kai Kang (1):
wic: search nonarch STAGING_DATADIR for multilib

 scripts/lib/wic/plugins/source/bootimg-pcbios.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

--
2.18.0

#1 lore raw

PATCH 1/1 wic: search nonarch STAGING_DATADIR for multilib

From: Kai Kang <[email protected]>

It fails to build multilib image such as lib32-core-image-minimal with wic by set 'IMAGE_FSTYPES = "wic"':

| ERROR: Couldn't find correct bootimg_dir, exiting

When multilib is enabled, STAGING_DATADIR is expanded with MLPREFIX. But dependencies of images such as syslinux is still populated to nonarch STAGING_DATADIR.

Search nonarch STAGING_DATADIR to fix the error.

---
 scripts/lib/wic/plugins/source/bootimg-pcbios.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
scripts/lib/wic/plugins/source/bootimg-pcbios.py +9 -1
index d599112dd7..9347aa7fcb 100644
@@ -26,6 +26,7 @@
 
 import logging
 import os
+import re
 
 from wic import WicError
 from wic.engine import get_custom_config
@@ -47,10 +48,17 @@ class BootimgPcbiosPlugin(SourcePlugin):
         """
         Check if dirname exists in default bootimg_dir or in STAGING_DIR.
         """
-        for result in (bootimg_dir, get_bitbake_var("STAGING_DATADIR")):
+        staging_datadir = get_bitbake_var("STAGING_DATADIR")
+        for result in (bootimg_dir, staging_datadir):
             if os.path.exists("%s/%s" % (result, dirname)):
                 return result
 
+        # STAGING_DATADIR is expanded with MLPREFIX if multilib is enabled
+        # but dependency syslinux is still populated to original STAGING_DATADIR
+        nonarch_datadir = re.sub('/[^/]*recipe-sysroot', '/recipe-sysroot', staging_datadir)
+        if os.path.exists(os.path.join(nonarch_datadir, dirname)):
+            return nonarch_datadir
+
         raise WicError("Couldn't find correct bootimg_dir, exiting")
 
     @classmethod
Signature · 1 line
2.18.0