tools/vlang/Dockerfile

53 lines
1.5 KiB
Docker

FROM alpine:3.17
ARG TARGETPLATFORM
ARG V_COMMIT_HASH=5d4c9dc9fc11bf8648541c934adb64f27cb94e37
ARG VC_COMMIT_HASH=7919b47d852650ca09e51a1f44cab0faa3a973eb
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"]