Skip to contentSkip to conversation

multilib.bbclass: fix faulty redefinition of STAGING_KERNEL_DIR

PATCH In review Petter Mabäcker 1 participant 3 messages May 15, 2017 – Jun 7, 2017

lore
Share & tools
lore
#0 lore raw

v2 cover multilib.bbclass: fix faulty redefinition of STAGING_KERNEL_DIR

Realized that http://lists.openembedded.org/pipermail/openembedded-core/2016-December/130003.html
change set never was merged, trying this again.

(Rebased to handle '3c59b1b meta: remove True option to getVarFlag calls')

The following changes since commit 5d301e9f19048b4cd0d5f702860e318c85f1c037:

python*-git: Upgrade to version 2.1.3 (2017-05-12 08:51:10 +0100)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib epetmab/staging_kernel_dir_02
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=epetmab/staging_kernel_dir_02

Petter Mabäcker (1):
multilib.bbclass: fix faulty redefinition of STAGING_KERNEL_DIR

 meta/classes/multilib.bbclass | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 1/1 multilib.bbclass: fix faulty redefinition of STAGING_KERNEL_DIR

Due to the problem fixed in
'56c677a multilib: Move redefinition of STAGING_DIR_KERNEL' STAGING_KERNEL_DIR must be redefined for lib32 in multilib.bbclass. However this redefinition expanded STAGING_KERNEL_DIR to an absolute path. This unconsciously added the TMPDIR path in the sstate object, causing packages depended on STAGING_KERNEL_DIR being rebuild if the TMPDIR was changed.

Solve this by forcing the unexpanded TMPDIR variable to remain in the beginning of STAGING_DIR_KERNEL (as default). Since TMPDIR is included in BB_HASHBASE_WHITELIST, the sstate object will not be depended on the expanded path anymore.

---
 meta/classes/multilib.bbclass | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
meta/classes/multilib.bbclass +3 -1
index ab04597..816f54e 100644
@@ -4,7 +4,9 @@ python multilib_virtclass_handler () {
     if cls != "multilib" or not variant:
         return
 
-    e.data.setVar('STAGING_KERNEL_DIR', e.data.getVar('STAGING_KERNEL_DIR'))
+    localdata = bb.data.createCopy(e.data)
+    localdata.delVar('TMPDIR')
+    e.data.setVar('STAGING_KERNEL_DIR', localdata.getVar('STAGING_KERNEL_DIR'))
 
     # There should only be one kernel in multilib configs
     # We also skip multilib setup for module packages.
Signature · 1 line
1.9.1
#2 lore raw

Hi,

Just realized this change was never merged into master, so see this as a friendly reminder about this change-set (might have been lost in the flood of changes in this time-frame). Not the most common use case I guess, but would be good to finally get rid of the problem. If you have any concerns about the change, please let me know. The solution was briefly discussed with Richard on irc a couple of month ago, but if someone thinks this should be solved in some other way, please initiate a discussion :)

BR Petter

2017-05-15 06:17 skrev Petter Mabäcker:

Quoted 2 lines

Due to the problem fixed in
'56c677a multilib: Move redefinition

of STAGING_DIR_KERNEL'

Quoted 1 line

STAGING_KERNEL_DIR must be redefined for lib32

in multilib.bbclass.

Quoted 1 line

However this redefinition expanded

STAGING_KERNEL_DIR to an absolute

Quoted 1 line

path. This unconsciously added the

TMPDIR path in the sstate object,

Quoted 1 line

causing packages depended on

STAGING_KERNEL_DIR being rebuild if the

Quoted 3 lines

TMPDIR was changed.

Solve

this by forcing the unexpanded TMPDIR variable to remain in the

Quoted 1 line

beginning of STAGING_DIR_KERNEL (as default). Since TMPDIR is included in

Quoted 1 line

BB_HASHBASE_WHITELIST, the sstate object will not be depended on

the

Quoted 3 lines

expanded path anymore.

Signed-off-by Petter Mabäcker

<[email protected]>

Quoted 3 lines

---
meta/classes/multilib.bbclass | 4 +++-
1

file changed, 3 insertions(+), 1 deletion(-)

Quoted 2 lines

diff --git

a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass

Quoted 1 line

index

ab04597..816f54e 100644

Quoted 2 lines

--- a/meta/classes/multilib.bbclass
+++

b/meta/classes/multilib.bbclass

Review python

Quoted 1 line
(quoted diff) +0 -0
@@ -4,7 +4,9 @@ python

multilib_virtclass_handler () {

Quoted 2 lines

if cls != "multilib" or not variant:

return

Quoted 2 lines

- e.data.setVar('STAGING_KERNEL_DIR',

e.data.getVar('STAGING_KERNEL_DIR'))

Quoted 1 line

+ localdata =

bb.data.createCopy(e.data)

Quoted 2 lines

+ localdata.delVar('TMPDIR')
+

e.data.setVar('STAGING_KERNEL_DIR',
localdata.getVar('STAGING_KERNEL_DIR'))

Quoted 2 lines

# There should only be one

kernel in multilib configs

Quoted 1 line

# We also skip multilib setup for module

packages.

Quoted 2 lines
Signature · 1 line
1.9.1