X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsserver%2Fsdk.go;h=7c912c42b9730486897da391a8b157510f3eed42;hb=607fa1dcb03e482415cf70a50fcd094c8bd88c9d;hp=2736246bfdadafbeb591d9708b9c7490f194b23f;hpb=60a59bcfdb3c2404a468cc314b7afde85ee35e1b;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xdsserver/sdk.go b/lib/xdsserver/sdk.go index 2736246..7c912c4 100644 --- a/lib/xdsserver/sdk.go +++ b/lib/xdsserver/sdk.go @@ -64,9 +64,18 @@ type CrossSDK struct { } // ListCrossSDK List all available and installed SDK (call "db-dump" script) -func ListCrossSDK(scriptDir string, log *logrus.Logger) ([]xsapiv1.SDK, error) { +func ListCrossSDK(scriptDir string, update bool, log *logrus.Logger) ([]xsapiv1.SDK, error) { sdksList := []xsapiv1.SDK{} + // First update sdk DB when requested + if update { + out, err := UpdateSDKDb(scriptDir, log) + if err != nil { + log.Errorf("SDK DB update failure (%v): %v", err, out) + return sdksList, fmt.Errorf("Error while updating SDK DB (%v)", err) + } + } + // Retrieve SDKs list and info cmd := exec.Command(path.Join(scriptDir, scriptDbDump)) stdout, err := cmd.CombinedOutput() @@ -111,6 +120,15 @@ func GetSDKInfo(scriptDir, url, filename, md5sum string, log *logrus.Logger) (xs return sdk, nil } +// UpdateSDKDb Used db-update script to update SDK database +func UpdateSDKDb(scriptDir string, log *logrus.Logger) (string, error) { + args := []string{} + cmd := exec.Command(path.Join(scriptDir, scriptDbUpdate), args...) + stdout, err := cmd.CombinedOutput() + + return string(stdout), err +} + // NewCrossSDK creates a new instance of CrossSDK func NewCrossSDK(ctx *Context, sdk xsapiv1.SDK, scriptDir string) (*CrossSDK, error) { s := CrossSDK{ @@ -229,6 +247,7 @@ func (s *CrossSDK) Install(file string, force bool, timeout int, args []string, // Create new instance to execute command and sent output over WS s.installCmd = eows.New(s.scripts[scriptAdd], cmdArgs, sess.IOSocket, sess.ID, cmdID) s.installCmd.Log = s.Log + // TODO: enable Term s.installCmd.PtyMode = true s.installCmd.LineTimeSpan = 500 * time.Millisecond.Nanoseconds() if timeout > 0 { s.installCmd.CmdExecTimeout = timeout @@ -237,7 +256,11 @@ func (s *CrossSDK) Install(file string, force bool, timeout int, args []string, } // Define callback for output (stdout+stderr) - s.installCmd.OutputCB = func(e *eows.ExecOverWS, stdout, stderr string) { + s.installCmd.OutputCB = func(e *eows.ExecOverWS, bStdout, bStderr []byte) { + + stdout := string(bStdout) + stderr := string(bStderr) + // paranoia data := e.UserData sdkID := (*data)["SDKID"].(string) @@ -306,6 +329,7 @@ func (s *CrossSDK) Install(file string, force bool, timeout int, args []string, if s.sdk.SetupFile == "" { sdkDef, err := GetSDKInfo(s.sdk.FamilyConf.ScriptsDir, s.sdk.URL, "", "", s.Log) if err != nil || sdkDef.SetupFile == "" { + s.Log.Errorf("GetSDKInfo error: %v", err) code = 1 s.sdk.LastError = "Installation failed (cannot init SetupFile path)" s.sdk.Status = xsapiv1.SdkStatusNotInstalled