FROM alpine:3.17 ARG TARGETPLATFORM ARG V_COMMIT_HASH=d1f57ead713c8e5254d8cef22991e6409dc1f06b ARG VC_COMMIT_HASH=1f7f0244f352d41122bb306446d98ae3de4e6b02 ENV VVV /opt/vlang ENV PATH /opt/vlang:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV VFLAGS -cc gcc -gc none RUN apk --no-cache add \ git make gcc curl musl-dev \ openssl openssl-libs-static openssl-dev \ sqlite-static sqlite-dev \ libarchive-static libarchive-dev \ zlib-static zlib-dev \ bzip2-static bzip2-dev \ xz-static xz-dev \ expat-static expat-dev \ zstd zstd-dev \ lz4-static lz4-dev \ diffutils \ mandoc unzip WORKDIR /opt RUN curl -Lo v.zip "https://github.com/vlang/v/archive/${V_COMMIT_HASH}.zip" && \ unzip v.zip && \ rm v.zip && \ mv "v-${V_COMMIT_HASH}" vlang WORKDIR /opt/vlang # We use zip instead of git for the vc repository here because cloning it # requires pulling down over 600MB of Git history. RUN curl -Lo vc.zip "https://github.com/vlang/vc/archive/${VC_COMMIT_HASH}.zip" && \ unzip vc.zip && \ rm vc.zip && \ mv "vc-${VC_COMMIT_HASH}" vc && \ make fresh_tcc && \ make local=1 prod=1 && \ ln -s /opt/vlang/v /usr/bin/v # This is used to upload the resulting static binaries to my Minio instance. # There are however only builds available for amd64. RUN if [ "$TARGETPLATFORM" = 'linux/amd64' ]; then \ wget -O /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc && \ chmod +x /usr/local/bin/mc ; \ fi CMD ["v"]