19175: Merge branch 'main' into 19175-doc-refactor-multi-host-installation
[arvados.git] / cmd / arvados-package / build.go
index cf9cbfa6c322fc6b3730e1d3c078605288f94fe5..9841c890b78a9f8363817d135e915bea29c6b472 100644 (file)
@@ -16,6 +16,7 @@ import (
        "path/filepath"
        "strings"
 
+       "git.arvados.org/arvados.git/lib/crunchrun"
        "git.arvados.org/arvados.git/sdk/go/ctxlog"
        "github.com/docker/docker/api/types"
        "github.com/docker/docker/client"
@@ -24,13 +25,13 @@ import (
 func build(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Writer) error {
        if opts.PackageVersion == "" {
                var buf bytes.Buffer
-               cmd := exec.CommandContext(ctx, "git", "describe", "--tag", "--dirty")
+               cmd := exec.CommandContext(ctx, "bash", "./build/version-at-commit.sh", "HEAD")
                cmd.Stdout = &buf
                cmd.Stderr = stderr
                cmd.Dir = opts.SourceDir
                err := cmd.Run()
                if err != nil {
-                       return fmt.Errorf("git describe: %w", err)
+                       return fmt.Errorf("%v: %w", cmd.Args, err)
                }
                opts.PackageVersion = strings.TrimSpace(buf.String())
                ctxlog.FromContext(ctx).Infof("version not specified; using %s", opts.PackageVersion)
@@ -53,6 +54,11 @@ func build(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Wr
                return err
        }
        defer os.RemoveAll(tmpdir)
+       if abs, err := filepath.Abs(tmpdir); err != nil {
+               return fmt.Errorf("error getting absolute path of tmpdir %s: %w", tmpdir, err)
+       } else {
+               tmpdir = abs
+       }
 
        selfbin, err := os.Readlink("/proc/self/exe")
        if err != nil {
@@ -87,7 +93,7 @@ func build(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Wr
                cmd.Stderr = stderr
                err = cmd.Run()
                if err != nil {
-                       return fmt.Errorf("docker run: %w", err)
+                       return fmt.Errorf("%v: %w", cmd.Args, err)
                }
 
                cmd = exec.CommandContext(ctx, "docker", "commit", buildCtrName, buildImageName)
@@ -113,12 +119,14 @@ func build(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Wr
                "-package-version", opts.PackageVersion,
                "-package-dir", "/pkg",
                "-package-chown", opts.PackageChown,
+               "-package-maintainer", opts.Maintainer,
+               "-package-vendor", opts.Vendor,
        )
        cmd.Stdout = stdout
        cmd.Stderr = stderr
        err = cmd.Run()
        if err != nil {
-               return fmt.Errorf("docker run: %w", err)
+               return fmt.Errorf("%v: %w", cmd.Args, err)
        }
 
        err = os.Rename(tmpdir+"/"+packageFilename, opts.PackageDir+"/"+packageFilename)
@@ -126,20 +134,11 @@ func build(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Wr
                return err
        }
 
-       cmd = exec.CommandContext(ctx, "bash", "-c", "dpkg-scanpackages . | gzip > Packages.gz.tmp && mv Packages.gz.tmp Packages.gz")
-       cmd.Stdout = stdout
-       cmd.Stderr = stderr
-       cmd.Dir = opts.PackageDir
-       err = cmd.Run()
-       if err != nil {
-               return fmt.Errorf("dpkg-scanpackages: %w", err)
-       }
-
        return nil
 }
 
 func dockerRm(ctx context.Context, name string) error {
-       cli, err := client.NewEnvClient()
+       cli, err := client.NewClient(client.DefaultDockerHost, crunchrun.DockerAPIVersion, nil, nil)
        if err != nil {
                return err
        }