diff options
author | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2018-10-17 15:32:16 +0200 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2018-10-18 08:26:19 +0000 |
commit | 6748a2637bffb56213a2a6981df96a070fb96467 (patch) | |
tree | d13f8021325b33bbf93accf6ea24ac6a4b97fe3a | |
parent | 79333f3eca65f37542e217f37e305ea81f6e42a4 (diff) |
Unset LD_LIBRARY_PATH before executing commands (exec api)
New environment-setup-*-agl-linux file, used to set environment
variables to use an SDK, now checks if LD_LIBRARY_PATH is set or not.
And not empty LD_LIBRARY_PATH is considered as misconfigured and
prevent to use SDK.
So unset by default LD_LIBRARY_PATH env variable and allow to disable
this unset by setting ldLibPathNoReset field of ExecArgs command.
For info, reported error message when call environement-setup-* script:
Your environment is misconfigured, you probably need to
'unset LD_LIBRARY_PATH' but please check why this was set in the
first place and that it's safe to unset.
The SDK will not operate correctly in most cases when LD_LIBRARY_PATH
is set.
For more references see:
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80
http://xahlee.info/UnixResource_dir/_/ldpath.html
Change-Id: I386b92b04ebd33db39ac617acffa4e15b21213ad
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
-rw-r--r-- | lib/xdsserver/apiv1-exec.go | 9 | ||||
-rw-r--r-- | lib/xsapiv1/exec.go | 23 |
2 files changed, 21 insertions, 11 deletions
diff --git a/lib/xdsserver/apiv1-exec.go b/lib/xdsserver/apiv1-exec.go index aea34e4..46c8148 100644 --- a/lib/xdsserver/apiv1-exec.go +++ b/lib/xdsserver/apiv1-exec.go @@ -83,6 +83,15 @@ func (s *APIService) execCmd(c *gin.Context) { // Build command line cmd := []string{} + + // Reset by default LD_LIBRARY_PATH + // With new AGL SDK, New environment-setup-*-agl-linux file checks if + // LD_LIBRARY_PATH is set or not and not empty LD_LIBRARY_PATH is considered + // as misconfigured and prevent to use SDK + if !args.LdLibPathNoReset { + cmd = append(cmd, "unset LD_LIBRARY_PATH; ") + } + // Setup env var regarding Sdk ID (used for example to setup cross toolchain) if envCmd := s.sdks.GetEnvCmd(args.SdkID, prj.DefaultSdk); len(envCmd) > 0 { cmd = append(cmd, envCmd...) diff --git a/lib/xsapiv1/exec.go b/lib/xsapiv1/exec.go index 78f05e2..0364999 100644 --- a/lib/xsapiv1/exec.go +++ b/lib/xsapiv1/exec.go @@ -20,17 +20,18 @@ package xsapiv1 type ( // ExecArgs JSON parameters of /exec command ExecArgs struct { - ID string `json:"id" binding:"required"` - SdkID string `json:"sdkID"` // sdk ID to use for setting env - CmdID string `json:"cmdID"` // command unique ID - Cmd string `json:"cmd" binding:"required"` - Args []string `json:"args"` - Env []string `json:"env"` - RPath string `json:"rpath"` // relative path into project - TTY bool `json:"tty"` // Use a tty, specific to gdb --tty option - TTYGdbserverFix bool `json:"ttyGdbserverFix"` // Set to true to activate gdbserver workaround about inferior output - ExitImmediate bool `json:"exitImmediate"` // when true, exit event sent immediately when command exited (IOW, don't wait file synchronization) - CmdTimeout int `json:"timeout"` // command completion timeout in Second + ID string `json:"id" binding:"required"` + SdkID string `json:"sdkID"` // sdk ID to use for setting env + CmdID string `json:"cmdID"` // command unique ID + Cmd string `json:"cmd" binding:"required"` + Args []string `json:"args"` + Env []string `json:"env"` + RPath string `json:"rpath"` // relative path into project + TTY bool `json:"tty"` // Use a tty, specific to gdb --tty option + TTYGdbserverFix bool `json:"ttyGdbserverFix"` // Set to true to activate gdbserver workaround about inferior output + LdLibPathNoReset bool `json:"ldLibPathNoReset"` // Set to true to not reset LD_LIBRARY_PATH when sourcing environment file + ExitImmediate bool `json:"exitImmediate"` // when true, exit event sent immediately when command exited (IOW, don't wait file synchronization) + CmdTimeout int `json:"timeout"` // command completion timeout in Second } // ExecResult JSON result of /exec command |