From: Tom Clegg Date: Mon, 1 Feb 2021 15:02:12 +0000 (-0500) Subject: 16306: Update to Ruby 2.7.2. X-Git-Tag: 2.2.0~141^2~6 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/e28e5002e502a5c238e6c0ae5daede811af9aa55 16306: Update to Ruby 2.7.2. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/cmd/arvados-package/fpm.go b/cmd/arvados-package/fpm.go index a862320360..c143e46efe 100644 --- a/cmd/arvados-package/fpm.go +++ b/cmd/arvados-package/fpm.go @@ -5,6 +5,7 @@ package main import ( + "bytes" "context" "fmt" "io" @@ -41,9 +42,17 @@ func fpm(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writ return fmt.Errorf("gem install fpm: %w", err) } - if _, err := os.Stat("/root/.gem/ruby/2.5.0/gems/fpm-1.11.0/lib/fpm/package/deb.rb"); err == nil { + cmd = exec.Command("/var/lib/arvados/bin/gem", "env", "gempath") + cmd.Stderr = stderr + buf, err := cmd.Output() // /root/.gem/ruby/2.7.0:... + if err != nil || len(buf) == 0 { + return fmt.Errorf("gem env gempath: %w", err) + } + gempath := string(bytes.TrimRight(bytes.Split(buf, []byte{':'})[0], "\n")) + + if _, err := os.Stat(gempath + "/gems/fpm-1.11.0/lib/fpm/package/deb.rb"); err == nil { // Workaround for fpm bug https://github.com/jordansissel/fpm/issues/1739 - cmd = exec.Command("sed", "-i", `/require "digest"/a require "zlib"`, "/root/.gem/ruby/2.5.0/gems/fpm-1.11.0/lib/fpm/package/deb.rb") + cmd = exec.Command("sed", "-i", `/require "digest"/a require "zlib"`, gempath+"/gems/fpm-1.11.0/lib/fpm/package/deb.rb") cmd.Stdout = stdout cmd.Stderr = stderr err = cmd.Run() @@ -66,7 +75,7 @@ func fpm(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writ format := "deb" // TODO: rpm pkgfile := filepath.Join(opts.PackageDir, "arvados-server-easy_"+opts.PackageVersion+"_amd64."+format) - cmd = exec.Command("/root/.gem/ruby/2.5.0/bin/fpm", + cmd = exec.Command(gempath+"/bin/fpm", "--package", pkgfile, "--name", "arvados-server-easy", "--version", opts.PackageVersion, diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index c75e7f146e..77504deb05 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -443,7 +443,7 @@ func (super *Supervisor) setupRubyEnv() error { cmd.Env = super.environ buf, err := cmd.Output() // /var/lib/arvados/.gem/ruby/2.5.0/bin:... if err != nil || len(buf) == 0 { - return fmt.Errorf("gem env gempath: %v", err) + return fmt.Errorf("gem env gempath: %w", err) } gempath := string(bytes.Split(buf, []byte{':'})[0]) super.prependEnv("PATH", gempath+"/bin:") diff --git a/lib/install/deps.go b/lib/install/deps.go index 504cdff8f2..bb9949de7c 100644 --- a/lib/install/deps.go +++ b/lib/install/deps.go @@ -218,21 +218,20 @@ func (inst *installCommand) RunCommand(prog string, args []string, stdin io.Read return 1 } } - rubyversion := "2.5.7" + rubyversion := "2.7.2" + rubymajorversion := rubyversion[:strings.LastIndex(rubyversion, ".")] if haverubyversion, err := exec.Command("/var/lib/arvados/bin/ruby", "-v").CombinedOutput(); err == nil && bytes.HasPrefix(haverubyversion, []byte("ruby "+rubyversion)) { logger.Print("ruby " + rubyversion + " already installed") } else { err = inst.runBash(` tmp="$(mktemp -d)" trap 'rm -r "${tmp}"' ERR EXIT -wget --progress=dot:giga -O- https://cache.ruby-lang.org/pub/ruby/2.5/ruby-`+rubyversion+`.tar.gz | tar -C "${tmp}" -xzf - +wget --progress=dot:giga -O- https://cache.ruby-lang.org/pub/ruby/`+rubymajorversion+`/ruby-`+rubyversion+`.tar.gz | tar -C "${tmp}" -xzf - cd "${tmp}/ruby-`+rubyversion+`" ./configure --disable-install-static-library --enable-shared --disable-install-doc --prefix /var/lib/arvados make -j8 make install -/var/lib/arvados/bin/gem install bundler --no-ri --no-rdoc -# "gem update --system" can be removed when we use ruby ≥2.6.3: https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html -/var/lib/arvados/bin/gem update --system --no-ri --no-rdoc +/var/lib/arvados/bin/gem install bundler --no-document `, stdout, stderr) if err != nil { return 1