16306: Don't generate Packages.gz until/unless testing the package.
authorTom Clegg <tom@curii.com>
Tue, 2 Feb 2021 20:24:25 +0000 (15:24 -0500)
committerTom Clegg <tom@curii.com>
Tue, 2 Feb 2021 20:24:25 +0000 (15:24 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

cmd/arvados-package/build.go
cmd/arvados-package/install.go
lib/boot/cmd.go

index 6cbca5538ff2a9b7a69be56c665015a8a9df9ff1..1437f4b772afe6bfec17fe5622615fb6fbb6f754 100644 (file)
@@ -128,15 +128,6 @@ func build(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr io.Wr
                return err
        }
 
-       cmd = exec.CommandContext(ctx, "bash", "-c", "dpkg-scanpackages --multiversion . | 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
 }
 
index 91e6d8806af20146d76aade26a7fc244f7b5c1f2..85c64b867e2b7abfd69af14f78aad431ca61e185 100644 (file)
@@ -29,12 +29,6 @@ func testinstall(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr
        }
        defer os.RemoveAll(tmpdir)
 
-       sourcesFile := tmpdir + "/arvados-local.list"
-       err = ioutil.WriteFile(sourcesFile, []byte("deb [trusted=yes] file:///pkg ./\n"), 0644)
-       if err != nil {
-               return fmt.Errorf("Write %s: %w", sourcesFile, err)
-       }
-
        if exists, err := dockerImageExists(ctx, depsImageName); err != nil {
                return err
        } else if !exists || opts.RebuildImage {
@@ -47,15 +41,24 @@ func testinstall(ctx context.Context, opts opts, stdin io.Reader, stdout, stderr
                        "--name", depsCtrName,
                        "--tmpfs", "/tmp:exec,mode=01777",
                        "-v", opts.PackageDir+":/pkg:ro",
-                       "-v", sourcesFile+":/etc/apt/sources.list.d/arvados-local.list:ro",
                        "--env", "DEBIAN_FRONTEND=noninteractive",
                        opts.TargetOS,
                        "bash", "-c", `
-set -e
+set -e -o pipefail
+apt-get update
+apt-get install -y --no-install-recommends dpkg-dev eatmydata
+
+mkdir /tmp/pkg
+ln -s /pkg/*.deb /tmp/pkg/
+(cd /tmp/pkg; dpkg-scanpackages --multiversion . | gzip > Packages.gz)
+echo >/etc/apt/sources.list.d/arvados-local.list "deb [trusted=yes] file:///tmp/pkg ./"
 apt-get update
-apt-get install -y eatmydata
+
 eatmydata apt-get install -y --no-install-recommends arvados-server-easy postgresql
+eatmydata apt-get remove -y dpkg-dev
+SUDO_FORCE_REMOVE=yes apt-get autoremove -y
 eatmydata apt-get remove -y arvados-server-easy
+rm /etc/apt/sources.list.d/arvados-local.list
 `)
                cmd.Stdout = stdout
                cmd.Stderr = stderr
@@ -80,19 +83,27 @@ eatmydata apt-get remove -y arvados-server-easy
        cmd := exec.CommandContext(ctx, "docker", "run", "--rm",
                "--tmpfs", "/tmp:exec,mode=01777",
                "-v", opts.PackageDir+":/pkg:ro",
-               "-v", sourcesFile+":/etc/apt/sources.list.d/arvados-local.list:ro",
                "--env", "DEBIAN_FRONTEND=noninteractive",
                depsImageName,
                "bash", "-c", `
-set -e
+set -e -o pipefail
 PATH="/var/lib/arvados/bin:$PATH"
 apt-get update
+apt-get install -y --no-install-recommends dpkg-dev
+mkdir /tmp/pkg
+ln -s /pkg/*.deb /tmp/pkg/
+(cd /tmp/pkg; dpkg-scanpackages --multiversion . | gzip > Packages.gz)
+apt-get remove -y dpkg-dev
+echo
+
+echo >/etc/apt/sources.list.d/arvados-local.list "deb [trusted=yes] file:///tmp/pkg ./"
+apt-get update
 eatmydata apt-get install --reinstall -y --no-install-recommends arvados-server-easy`+versionsuffix+`
-apt-get -y autoremove
+SUDO_FORCE_REMOVE=yes apt-get autoremove -y
+
 /etc/init.d/postgresql start
 arvados-server init -cluster-id x1234
 exec arvados-server boot -listen-host 0.0.0.0 -shutdown
-echo "PASS - server installed and booted successfully"
 `)
        cmd.Stdout = stdout
        cmd.Stderr = stderr
index 373613bb35d7c30d5803df0e6b6cc4b02cf4f410..963d16226b343341cdf3394af646097b498b9b1c 100644 (file)
@@ -112,6 +112,7 @@ func (bcmd bootCommand) run(ctx context.Context, prog string, args []string, std
                        // ensuing "context cancelled" error, though:
                        // return nil to indicate successful startup.
                        _ = super.Wait()
+                       fmt.Fprintln(stderr, "PASS - all services booted successfully")
                        return nil
                }
        }