16306: Use tmpfs to speed up package building.
authorTom Clegg <tom@curii.com>
Mon, 28 Dec 2020 15:32:13 +0000 (10:32 -0500)
committerTom Clegg <tom@curii.com>
Mon, 28 Dec 2020 15:32:13 +0000 (10:32 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

cmd/arvados-dev/docker-build-install.sh
lib/install/deps.go

index 7b7f25ff9ddc4d48529073ea91ed243bda787932..966318b94c204406f3813727151842bd08ba91b9 100755 (executable)
@@ -63,7 +63,7 @@ if [[ "${opts[force-buildimage]}" || -z "$(docker images --format {{.Repository}
     docker rm "${buildctr}" || true
     docker run \
            --name "${buildctr}" \
-           -v /tmp/pkg:/pkg \
+           --tmpfs /tmp:exec,mode=01777 \
            -v "${GOPATH:-${HOME}/go}"/bin/arvados-server:/arvados-server:ro \
            -v "$(pwd)":/arvados:ro \
            "${osbase}" \
@@ -87,6 +87,7 @@ rm -v -f "${pkgfile}"
 )
 echo >&2 building ${pkgfile}...
 docker run --rm \
+       --tmpfs /tmp:exec,mode=01777 \
        -v /tmp/pkg:/pkg \
        -v "${GOPATH:-${HOME}/go}"/bin/arvados-dev:/arvados-dev:ro \
        -v "$(pwd)":/arvados:ro \
@@ -113,6 +114,7 @@ if [[ "${opts[force-installimage]}" || -z "$(docker images --format {{.Repositor
     docker rm "${installctr}" || true
     docker run -it \
            --name "${installctr}" \
+           --tmpfs /tmp \
            -v /tmp/pkg:/pkg:ro \
            -v ${sourcesfile}:/etc/apt/sources.list.d/arvados-local.list:ro \
            --env DEBIAN_FRONTEND=noninteractive \
index 34fe7cc6d1b589ef70fcbfa7d3bd6c0c9607c647..2b0faefe2680fe5ebc231ca2dc4d1643acf95927 100644 (file)
@@ -224,17 +224,16 @@ func (inst *installCommand) RunCommand(prog string, args []string, stdin io.Read
                logger.Print("ruby " + rubyversion + " already installed")
        } else {
                err = inst.runBash(`
-tmp=/var/lib/arvados/tmp/ruby-`+rubyversion+`
-trap "rm -r ${tmp}" ERR
-wget --progress=dot:giga -O- https://cache.ruby-lang.org/pub/ruby/2.5/ruby-`+rubyversion+`.tar.gz | tar -C /var/lib/arvados/tmp -xzf -
-cd ${tmp}
+tmp="$(mktemp -d)"
+trap 'rm -r "${tmp}"' ERR EXIT
+wget --progress=dot:giga -O- https://cache.ruby-lang.org/pub/ruby/2.5/ruby-`+rubyversion+`.tar.gz | tar -C "${tmp}" -xzf -
+cd "${tmp}/ruby-`+rubyversion+`"
 ./configure --disable-install-static-library --enable-shared --disable-install-doc --prefix /var/lib/arvados
 make -j8
 make install
 /var/lib/arvados/bin/gem install bundler --no-ri --no-rdoc
 # "gem update --system" can be removed when we use ruby ≥2.6.3: https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html
 /var/lib/arvados/bin/gem update --system --no-ri --no-rdoc
-rm -r ${tmp}
 `, stdout, stderr)
                if err != nil {
                        return 1