Add XDS_SERVER_WORKSPACE_DIR env var support
[src/xds/xds-server.git] / lib / xdsserver / sdks.go
index 6094045..47d48d5 100644 (file)
@@ -25,6 +25,7 @@ import (
        "sync"
 
        common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xdsconfig"
        "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
 )
 
@@ -38,8 +39,8 @@ type SDKs struct {
        stop  chan struct{} // signals intentional stop
 }
 
-// NewSDKs creates a new instance of SDKs
-func NewSDKs(ctx *Context) (*SDKs, error) {
+// SDKsConstructor creates a new instance of SDKs
+func SDKsConstructor(ctx *Context) (*SDKs, error) {
        s := SDKs{
                Context:      ctx,
                Sdks:         make(map[string]*CrossSDK),
@@ -340,7 +341,7 @@ func (s *SDKs) Install(id, filepath string, force bool, timeout int, args []stri
 
                // Update path when not set
                if sdk.Path == "" {
-                       sdkDef, err := GetSDKInfo(scriptDir, sdk.URL, "", "", s.Log)
+                       sdkDef, err := GetSDKInfo(scriptDir, sdk.URL, "", "", sdk.UUID, s.Log)
                        if err != nil || sdkDef.Path == "" {
                                return nil, fmt.Errorf("cannot retrieve sdk path %v", err)
                        }
@@ -349,14 +350,15 @@ func (s *SDKs) Install(id, filepath string, force bool, timeout int, args []stri
 
        } else if filepath != "" {
                // FIXME support any location and also sharing either by pathmap or Syncthing
-               baseDir := "${HOME}/xds-workspace/sdks"
+
+               baseDir := path.Join(xdsconfig.WorkspaceRootDir(), "sdks")
                sdkFilename, _ = common.ResolveEnvVar(path.Join(baseDir, path.Base(filepath)))
                if !common.Exists(sdkFilename) {
                        return nil, fmt.Errorf("SDK file not accessible, must be in %s", baseDir)
                }
 
                for _, sf := range s.SdksFamilies {
-                       sdkDef, err := GetSDKInfo(sf.ScriptsDir, "", sdkFilename, "", s.Log)
+                       sdkDef, err := GetSDKInfo(sf.ScriptsDir, "", sdkFilename, "", "", s.Log)
                        if err == nil {
                                // OK, sdk found
                                sdk = &sdkDef