- os.Setenv("PATH", filepath.Join(boot.libPath, "bin")+":"+os.Getenv("PATH"))
-
- err = boot.installGoProgram(ctx, "cmd/arvados-server")
- if err != nil {
- return 1
- }
- for _, cmpt := range []component{
- {name: "controller", svc: cluster.Services.Controller, cmdArgs: []string{"-config", conffile.Name()}, cmdHandler: controller.Command},
- // {name: "dispatchcloud", cmdArgs: []string{"-config", conffile.Name()}, cmdHandler: dispatchcloud.Command},
- {name: "railsAPI", svc: cluster.Services.RailsAPI, src: "services/api"},
- } {
- cmpt := cmpt
- go func() {
- logger.WithField("component", cmpt.name).Info("starting")
- err := cmpt.Run(ctx, boot, stdout, stderr)
- if err != nil {
- logger.WithError(err).WithField("component", cmpt.name).Info("exited")
- }
- cancel()
- }()
- }
- <-ctx.Done()
- return 0
-}
-
-func (boot *bootCommand) installGoProgram(ctx context.Context, srcpath string) error {
- boot.goMutex.Lock()
- defer boot.goMutex.Unlock()
- env := append([]string{"GOPATH=" + boot.libPath}, os.Environ()...)
- return boot.RunProgram(ctx, filepath.Join(boot.sourcePath, srcpath), nil, env, "go", "install")
-}
-
-func (boot *bootCommand) setupRubyEnv() error {
- boot.setupRubyOnce.Do(func() {
- buf, err := exec.Command("gem", "env", "gempath").Output() // /var/lib/arvados/.gem/ruby/2.5.0/bin:...
- if err != nil || len(buf) == 0 {
- boot.setupRubyErr = fmt.Errorf("gem env gempath: %v", err)
- }
- gempath := string(bytes.Split(buf, []byte{':'})[0])
- os.Setenv("PATH", gempath+"/bin:"+os.Getenv("PATH"))
- os.Setenv("GEM_HOME", gempath)
- os.Setenv("GEM_PATH", gempath)
- })
- return boot.setupRubyErr