Closed deadprogram closed 4 months ago
My guess would be that those extra directories are not actually part of the filesystem, or are read-only or something. Because removing them didn't seem to do much.
I can think of two possible fixes:
Built the Docker image myself and it is indeed quite large:
~$ docker history sha256:41c93750c3beea6f31895f69e6a9f849decd16b3d6547c89f4da2fecccd4e3fa
IMAGE CREATED CREATED BY SIZE COMMENT
41c93750c3be About a minute ago CMD ["tinygo"] 0B buildkit.dockerfile.v0
<missing> About a minute ago RUN /bin/sh -c cd /tinygo/ && make wasi-… 1.02GB buildkit.dockerfile.v0
<missing> 3 minutes ago RUN /bin/sh -c cd /tinygo/ && make # bui… 280MB buildkit.dockerfile.v0
<missing> 4 minutes ago RUN /bin/sh -c cd /tinygo/ && rm -rf ./l… 6.79GB buildkit.dockerfile.v0
<missing> 4 minutes ago COPY . /tinygo # buildkit 8.15GB buildkit.dockerfile.v0
<missing> 4 minutes ago RUN /bin/sh -c cd /tinygo/ && make llvm-… 1.11GB buildkit.dockerfile.v0
<missing> 18 minutes ago RUN /bin/sh -c cd /tinygo/ && make llvm-… 1.72GB buildkit.dockerfile.v0
<missing> 18 minutes ago COPY ./GNUmakefile /tinygo/GNUmakefile # bui… 44.6kB buildkit.dockerfile.v0
<missing> 18 minutes ago RUN /bin/sh -c apt-get update && apt-get… 773MB buildkit.dockerfile.v0
<missing> 13 days ago WORKDIR /go 0B buildkit.dockerfile.v0
<missing> 13 days ago RUN /bin/sh -c mkdir -p "$GOPATH/src" "$GOPA… 0B buildkit.dockerfile.v0
<missing> 13 days ago COPY /usr/local/go/ /usr/local/go/ # buildkit 212MB buildkit.dockerfile.v0
<missing> 13 days ago ENV PATH=/go/bin:/usr/local/go/bin:/usr/loca… 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOPATH=/go 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOTOOLCHAIN=local 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOLANG_VERSION=1.21.7 0B buildkit.dockerfile.v0
<missing> 13 days ago RUN /bin/sh -c set -eux; apt-get update; a… 240MB buildkit.dockerfile.v0
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 183MB
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 48.5MB
<missing> 7 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 7 days ago /bin/sh -c #(nop) ADD file:73b36e8089732e9bb… 139MB
The way I read it:
make llvm-source
layer adds 1.72GB.make llvm-build
layer adds 1.11GB.COPY . /tinygo
layer adds 8.15GB (!!) - looks like it copies a whole directory tree? (EDIT: oh wait it's probably copying my local TinyGo directory with LLVM builds and such - edit2: indeed, it's just 16.8MB with a clean checkout).make wasi-libc
step adds 1.02GB - probably due to all intermediary files.So it looks like we can gain a lot by reducing the size of these layers.
I think I have a fix to avoid including the entire LLVM build directory, I just need to clean it up to make a PR.
See: https://github.com/tinygo-org/tinygo/pull/4140. The size now looks like this:
IMAGE CREATED CREATED BY SIZE COMMENT
e3e0998cae6c 7 seconds ago CMD ["tinygo"] 0B buildkit.dockerfile.v0
<missing> 7 seconds ago ENV PATH=/go/bin:/usr/local/go/bin:/usr/loca… 0B buildkit.dockerfile.v0
<missing> 7 seconds ago COPY /tinygo/build/release/tinygo /tinygo # … 893MB buildkit.dockerfile.v0
<missing> 13 days ago WORKDIR /go 0B buildkit.dockerfile.v0
<missing> 13 days ago RUN /bin/sh -c mkdir -p "$GOPATH/src" "$GOPA… 0B buildkit.dockerfile.v0
<missing> 13 days ago COPY /usr/local/go/ /usr/local/go/ # buildkit 212MB buildkit.dockerfile.v0
<missing> 13 days ago ENV PATH=/go/bin:/usr/local/go/bin:/usr/loca… 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOPATH=/go 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOTOOLCHAIN=local 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOLANG_VERSION=1.21.7 0B buildkit.dockerfile.v0
<missing> 13 days ago RUN /bin/sh -c set -eux; apt-get update; a… 240MB buildkit.dockerfile.v0
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 183MB
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 48.5MB
<missing> 7 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 7 days ago /bin/sh -c #(nop) ADD file:73b36e8089732e9bb… 139MB
Previously, it looked like this (with a clean git checkout). Note there are various very large layers:
IMAGE CREATED CREATED BY SIZE COMMENT
2a1b0248ec55 2 minutes ago CMD ["tinygo"] 0B buildkit.dockerfile.v0
<missing> 2 minutes ago RUN /bin/sh -c cd /tinygo/ && make wasi-… 1.04GB buildkit.dockerfile.v0
<missing> 4 minutes ago RUN /bin/sh -c cd /tinygo/ && make # bui… 280MB buildkit.dockerfile.v0
<missing> 5 minutes ago RUN /bin/sh -c cd /tinygo/ && rm -rf ./l… 7.27GB buildkit.dockerfile.v0
<missing> 7 minutes ago COPY . /tinygo # buildkit 16.8MB buildkit.dockerfile.v0
<missing> 49 minutes ago RUN /bin/sh -c cd /tinygo/ && make llvm-… 1.11GB buildkit.dockerfile.v0
<missing> About an hour ago RUN /bin/sh -c cd /tinygo/ && make llvm-… 1.72GB buildkit.dockerfile.v0
<missing> About an hour ago COPY ./GNUmakefile /tinygo/GNUmakefile # bui… 44.6kB buildkit.dockerfile.v0
<missing> About an hour ago RUN /bin/sh -c apt-get update && apt-get… 773MB buildkit.dockerfile.v0
<missing> 13 days ago WORKDIR /go 0B buildkit.dockerfile.v0
<missing> 13 days ago RUN /bin/sh -c mkdir -p "$GOPATH/src" "$GOPA… 0B buildkit.dockerfile.v0
<missing> 13 days ago COPY /usr/local/go/ /usr/local/go/ # buildkit 212MB buildkit.dockerfile.v0
<missing> 13 days ago ENV PATH=/go/bin:/usr/local/go/bin:/usr/loca… 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOPATH=/go 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOTOOLCHAIN=local 0B buildkit.dockerfile.v0
<missing> 13 days ago ENV GOLANG_VERSION=1.21.7 0B buildkit.dockerfile.v0
<missing> 13 days ago RUN /bin/sh -c set -eux; apt-get update; a… 240MB buildkit.dockerfile.v0
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 183MB
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 48.5MB
<missing> 7 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 7 days ago /bin/sh -c #(nop) ADD file:73b36e8089732e9bb… 139MB
Closing since no longer needed.
This PR modifies the build to free space on the runner drive before build. It also updates to use the latest GH checkout action.