X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/22fcc610c13c817c415cff26f2c94c17f271e4d3..3325e3c0aca3dcf51dfc72b63c7d077c6b6e5017:/cmd/arvados-package/fpm.go?ds=sidebyside diff --git a/cmd/arvados-package/fpm.go b/cmd/arvados-package/fpm.go index ca63929e98..c337d8563b 100644 --- a/cmd/arvados-package/fpm.go +++ b/cmd/arvados-package/fpm.go @@ -34,15 +34,7 @@ func fpm(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writ return fmt.Errorf("arvados-server install failed: exit code %d", exitcode) } - cmd := exec.Command("/var/lib/arvados/bin/gem", "install", "--user", "--no-document", "fpm") - cmd.Stdout = stdout - cmd.Stderr = stderr - err := cmd.Run() - if err != nil { - return fmt.Errorf("gem install fpm: %w", err) - } - - cmd = exec.Command("/var/lib/arvados/bin/gem", "env", "gempath") + 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 { @@ -50,6 +42,17 @@ func fpm(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writ } gempath := string(bytes.TrimRight(bytes.Split(buf, []byte{':'})[0], "\n")) + cmd = exec.Command("/var/lib/arvados/bin/gem", "install", "--user", "--no-document", "fpm") + cmd.Stdout = stdout + cmd.Stderr = stderr + // Avoid "WARNING: You don't have [...] in your PATH, gem + // executables will not run" + cmd.Env = append(os.Environ(), "PATH="+os.Getenv("PATH")+":"+gempath) + err = cmd.Run() + if err != nil { + return fmt.Errorf("gem install fpm: %w", err) + } + 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"`, gempath+"/gems/fpm-1.11.0/lib/fpm/package/deb.rb") @@ -64,12 +67,12 @@ func fpm(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writ // Remove unneeded files. This is much faster than "fpm // --exclude X" because fpm copies everything into a staging // area before looking at the --exclude args. - cmd = exec.Command("bash", "-c", "cd /var/www/.gem/ruby && rm -rf */cache */bundler/gems/*/.git */bundler/gems/arvados-*/[^s]* */bundler/gems/arvados-*/s[^d]* */bundler/gems/arvados-*/sdk/[^cr]* */gems/passenger-*/src/cxx* ruby/*/gems/*/ext /var/lib/arvados/go") + cmd = exec.Command("bash", "-c", "cd /var/www/.gem/ruby && rm -rf */cache */bundler/gems/*/.git */bundler/gems/arvados-*/[^s]* */bundler/gems/arvados-*/s[^d]* */bundler/gems/arvados-*/sdk/[^cr]* */gems/passenger-*/src/cxx* ruby/*/gems/*/ext /var/lib/arvados/go /var/lib/arvados/arvados-workbench2 /var/lib/arvados/node-*") cmd.Stdout = stdout cmd.Stderr = stderr err = cmd.Run() if err != nil { - return fmt.Errorf("rm -rf [...]: %w", err) + return fmt.Errorf("%v: %w", cmd.Args, err) } format := "deb" // TODO: rpm @@ -97,6 +100,14 @@ func fpm(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writ "--verbose", "--deb-use-file-permissions", "--rpm-use-file-permissions", + "--deb-systemd", "/lib/systemd/system/arvados.service", + "--deb-systemd-enable", + "--no-deb-systemd-auto-start", + "--no-deb-systemd-restart-after-upgrade", + "/usr/bin/arvados-client", + "/usr/bin/arvados-server", + "/usr/bin/arv", + "/usr/bin/arv-tag", "/var/lib/arvados", "/var/www/.gem", "/var/www/.passenger",