X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5f778e6945d8c3c216922f9aa1f45253a1c62376..927d0895d7441ede811eb11eec5c08192b8f512d:/lib/install/deps.go diff --git a/lib/install/deps.go b/lib/install/deps.go index 998da1200c..439289b588 100644 --- a/lib/install/deps.go +++ b/lib/install/deps.go @@ -34,27 +34,29 @@ var Command cmd.Handler = &installCommand{} const goversion = "1.20.6" const ( - defaultRubyVersion = "3.2.2" - defaultBundlerVersion = "2.2.19" - singularityversion = "3.10.4" - pjsversion = "1.9.8" - geckoversion = "0.24.0" - gradleversion = "5.3.1" - nodejsversion = "v12.22.12" - devtestDatabasePassword = "insecure_arvados_test" + defaultRubyVersion = "3.2.2" + defaultBundlerVersion = "2.2.19" + defaultSingularityVersion = "3.10.4" + pjsversion = "1.9.8" + geckoversion = "0.24.0" + gradleversion = "5.3.1" + defaultNodejsVersion = "12.22.12" + devtestDatabasePassword = "insecure_arvados_test" ) //go:embed arvados.service var arvadosServiceFile []byte type installCommand struct { - ClusterType string - SourcePath string - Commit string - PackageVersion string - RubyVersion string - BundlerVersion string - EatMyData bool + ClusterType string + SourcePath string + Commit string + PackageVersion string + RubyVersion string + BundlerVersion string + SingularityVersion string + NodejsVersion string + EatMyData bool } func (inst *installCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { @@ -79,6 +81,8 @@ func (inst *installCommand) RunCommand(prog string, args []string, stdin io.Read flags.StringVar(&inst.PackageVersion, "package-version", "0.0.0", "version string to embed in executable files") flags.StringVar(&inst.RubyVersion, "ruby-version", defaultRubyVersion, "Ruby `version` to install (do not override in production mode)") flags.StringVar(&inst.BundlerVersion, "bundler-version", defaultBundlerVersion, "Bundler `version` to install (do not override in production mode)") + flags.StringVar(&inst.SingularityVersion, "singularity-version", defaultSingularityVersion, "Singularity `version` to install (do not override in production mode)") + flags.StringVar(&inst.NodejsVersion, "nodejs-version", defaultNodejsVersion, "Nodejs `version` to install (not applicable in production mode)") flags.BoolVar(&inst.EatMyData, "eatmydata", false, "use eatmydata to speed up install") if ok, code := cmd.ParseFlags(flags, prog, args, "", stderr); !ok { @@ -117,11 +121,19 @@ func (inst *installCommand) RunCommand(prog string, args []string, stdin io.Read if ok, _ := regexp.MatchString(`^\d\.\d+\.\d+$`, inst.RubyVersion); !ok { fmt.Fprintf(stderr, "invalid argument %q for -ruby-version\n", inst.RubyVersion) - return 64 + return 2 } if ok, _ := regexp.MatchString(`^\d`, inst.BundlerVersion); !ok { fmt.Fprintf(stderr, "invalid argument %q for -bundler-version\n", inst.BundlerVersion) - return 64 + return 2 + } + if ok, _ := regexp.MatchString(`^\d`, inst.SingularityVersion); !ok { + fmt.Fprintf(stderr, "invalid argument %q for -singularity-version\n", inst.SingularityVersion) + return 2 + } + if ok, _ := regexp.MatchString(`^\d`, inst.NodejsVersion); !ok { + fmt.Fprintf(stderr, "invalid argument %q for -nodejs-version\n", inst.NodejsVersion) + return 2 } osv, err := identifyOS() @@ -361,32 +373,6 @@ ln -sfv /var/lib/arvados/go/bin/* /usr/local/bin/ } if !prod && !pkg { - if havepjsversion, err := exec.Command("/usr/local/bin/phantomjs", "--version").CombinedOutput(); err == nil && string(havepjsversion) == "1.9.8\n" { - logger.Print("phantomjs " + pjsversion + " already installed") - } else { - err = inst.runBash(` -PJS=phantomjs-`+pjsversion+`-linux-x86_64 -wget --progress=dot:giga -O- https://cache.arvados.org/$PJS.tar.bz2 | tar -C /var/lib/arvados -xjf - -ln -sfv /var/lib/arvados/$PJS/bin/phantomjs /usr/local/bin/ -`, stdout, stderr) - if err != nil { - return 1 - } - } - - if havegeckoversion, err := exec.Command("/usr/local/bin/geckodriver", "--version").CombinedOutput(); err == nil && strings.Contains(string(havegeckoversion), " "+geckoversion+" ") { - logger.Print("geckodriver " + geckoversion + " already installed") - } else { - err = inst.runBash(` -GD=v`+geckoversion+` -wget --progress=dot:giga -O- https://github.com/mozilla/geckodriver/releases/download/$GD/geckodriver-$GD-linux64.tar.gz | tar -C /var/lib/arvados/bin -xzf - geckodriver -ln -sfv /var/lib/arvados/bin/geckodriver /usr/local/bin/ -`, stdout, stderr) - if err != nil { - return 1 - } - } - if havegradleversion, err := exec.Command("/usr/local/bin/gradle", "--version").CombinedOutput(); err == nil && strings.Contains(string(havegradleversion), "Gradle "+gradleversion+"\n") { logger.Print("gradle " + gradleversion + " already installed") } else { @@ -404,11 +390,11 @@ rm ${zip} } } - if havesingularityversion, err := exec.Command("/var/lib/arvados/bin/singularity", "--version").CombinedOutput(); err == nil && strings.Contains(string(havesingularityversion), singularityversion) { - logger.Print("singularity " + singularityversion + " already installed") + if havesingularityversion, err := exec.Command("/var/lib/arvados/bin/singularity", "--version").CombinedOutput(); err == nil && strings.Contains(string(havesingularityversion), inst.SingularityVersion) { + logger.Print("singularity " + inst.SingularityVersion + " already installed") } else if dev || test { err = inst.runBash(` -S=`+singularityversion+` +S=`+inst.SingularityVersion+` tmp=/var/lib/arvados/tmp/singularity trap "rm -r ${tmp}" ERR EXIT cd /var/lib/arvados/tmp @@ -554,11 +540,11 @@ setcap "cap_sys_admin+pei cap_sys_chroot+pei" /var/lib/arvados/bin/nsenter } if !prod { - if havenodejsversion, err := exec.Command("/usr/local/bin/node", "--version").CombinedOutput(); err == nil && string(havenodejsversion) == nodejsversion+"\n" { - logger.Print("nodejs " + nodejsversion + " already installed") + if havenodejsversion, err := exec.Command("/usr/local/bin/node", "--version").CombinedOutput(); err == nil && string(havenodejsversion) == "v"+inst.NodejsVersion+"\n" { + logger.Print("nodejs " + inst.NodejsVersion + " already installed") } else { err = inst.runBash(` -NJS=`+nodejsversion+` +NJS=v`+inst.NodejsVersion+` rm -rf /var/lib/arvados/node-*-linux-x64 wget --progress=dot:giga -O- https://nodejs.org/dist/${NJS}/node-${NJS}-linux-x64.tar.xz | sudo tar -C /var/lib/arvados -xJf - ln -sfv /var/lib/arvados/node-${NJS}-linux-x64/bin/{node,npm} /usr/local/bin/ @@ -573,7 +559,7 @@ ln -sfv /var/lib/arvados/node-${NJS}-linux-x64/bin/{node,npm} /usr/local/bin/ } else { err = inst.runBash(` npm install -g yarn -ln -sfv /var/lib/arvados/node-`+nodejsversion+`-linux-x64/bin/{yarn,yarnpkg} /usr/local/bin/ +ln -sfv /var/lib/arvados/node-v`+inst.NodejsVersion+`-linux-x64/bin/{yarn,yarnpkg} /usr/local/bin/ `, stdout, stderr) if err != nil { return 1