"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"
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)
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 {
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)
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)
if err != nil {
return err
}
-
- cmd = exec.CommandContext(ctx, "bash", "-c", "dpkg-scanpackages --multiversion . | gzip > Packages.gz.tmp && mv Packages.gz.tmp Packages.gz")
+ cmd = exec.CommandContext(ctx, "ls", "-l", opts.PackageDir+"/"+packageFilename)
cmd.Stdout = stdout
cmd.Stderr = stderr
- cmd.Dir = opts.PackageDir
err = cmd.Run()
if err != nil {
- return fmt.Errorf("dpkg-scanpackages: %w", err)
+ return 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
}