18113: Merge branch 'main' into 18113-change-cloudops-defaults
[arvados.git] / cmd / arvados-package / cmd.go
index 6cf3ba3c0abeda9f4b7d6fb86da29a7f9311f1e1..54f0809d6413eb9bee60fb9c741b117f73e938ac 100644 (file)
@@ -64,11 +64,16 @@ type opts struct {
        RebuildImage   bool
        SourceDir      string
        TargetOS       string
+       Maintainer     string
+       Vendor         string
 }
 
 func parseFlags(args []string) (opts, error) {
        opts := opts{
-               TargetOS: "debian:10",
+               SourceDir:  ".",
+               TargetOS:   "debian:10",
+               Maintainer: "Arvados Package Maintainers <packaging@arvados.org>",
+               Vendor:     "The Arvados Project",
        }
        flags := flag.NewFlagSet("", flag.ContinueOnError)
        flags.StringVar(&opts.PackageVersion, "package-version", opts.PackageVersion, "package version to build/test, like \"1.2.3\"")
@@ -76,6 +81,8 @@ func parseFlags(args []string) (opts, error) {
        flags.StringVar(&opts.PackageDir, "package-dir", opts.PackageDir, "destination directory for new package (default is cwd)")
        flags.StringVar(&opts.PackageChown, "package-chown", opts.PackageChown, "desired uid:gid for new package (default is current user:group)")
        flags.StringVar(&opts.TargetOS, "target-os", opts.TargetOS, "target operating system vendor:version")
+       flags.StringVar(&opts.Maintainer, "package-maintainer", opts.Maintainer, "maintainer to be listed in package metadata")
+       flags.StringVar(&opts.Vendor, "package-vendor", opts.Vendor, "vendor to be listed in package metadata")
        flags.BoolVar(&opts.RebuildImage, "rebuild-image", opts.RebuildImage, "rebuild docker image(s) instead of using existing")
        flags.Usage = func() {
                fmt.Fprint(flags.Output(), `Usage: arvados-package <subcommand> [options]
@@ -104,6 +111,11 @@ Automation/integration notes:
        image, and be prepared to rebuild that VM image when package-building
        slows down (this will happen when new dependencies are introduced).
 
+       The "build" subcommand, if successful, also runs
+       dpkg-scanpackages to create/replace Packages.gz in the package
+       dir. This enables the "testinstall" subcommand to list the
+       package dir as a source in /etc/apt/sources.*.
+
 Options:
 `)
                flags.PrintDefaults()
@@ -123,5 +135,9 @@ Options:
                opts.SourceDir = d
        }
        opts.PackageDir = filepath.Clean(opts.PackageDir)
+       opts.SourceDir, err = filepath.Abs(opts.SourceDir)
+       if err != nil {
+               return opts, err
+       }
        return opts, nil
 }