Skip to contentSkip to conversation

classes/terminal: fix pseudo exiting when launching devshell

PATCH In review Paul Eggleton 2 participants 2 messages Aug 14, 2013

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 classes/terminal: fix pseudo exiting when launching devshell

In dylan, since the entire bitbake process is run under pseudo, LD_PRELOAD is set when we collect BB_ORIGENV and thus when we construct the devshell environment from the latter, LD_PRELOAD is included. However, for a fakeroot task we explicitly run the devshell under pseudo (e.g. "pseudo /bin/bash"), and if LD_PRELOAD is set to preload libpseudo.so when pseudo is run, it seems to exit immediately without error. Since LD_PRELOAD shouldn't be exported anyway, exclude this from the environment so it doesn't prevent running the shell.

---
 meta/classes/terminal.bbclass | 4 ++++
 1 file changed, 4 insertions(+)
meta/classes/terminal.bbclass +4 -0
index ae338e9..96d2d2a 100644
@@ -62,6 +62,10 @@ def oe_terminal(command, title, d):
             envdata.setVar(key, str(value))
             envdata.setVarFlag(key, 'export', 1)
 
+    # LD_PRELOAD of pseudo will cause problems if this is a fakeroot task
+    # and we shouldn't be exporting it anyway
+    envdata.delVar('LD_PRELOAD')
+
     # Replace command with an executable wrapper script
     command = emit_terminal_func(command, envdata, d)
 
Signature · 1 line
1.8.1.2
Tested-by on v1 1/1
#1 lore raw
Quoted 11 lines · Paul Eggleton

In dylan, since the entire bitbake process is run under pseudo, LD_PRELOAD is set when we collect BB_ORIGENV and thus when we construct the devshell environment from the latter, LD_PRELOAD is included. However, for a fakeroot task we explicitly run the devshell under pseudo (e.g. "pseudo /bin/bash"), and if LD_PRELOAD is set to preload libpseudo.so when pseudo is run, it seems to exit immediately without error. Since LD_PRELOAD shouldn't be exported anyway, exclude this from the environment so it doesn't prevent running the shell.

thanks for fixing quickly. I have tested with gnome-terminal and screen, and it works fine.