2022-07-03 10:46:59 +02:00
|
|
|
FROM alpine:3.16
|
|
|
|
|
|
|
|
ARG TARGETPLATFORM
|
|
|
|
|
|
|
|
# Values for release 0.3
|
|
|
|
ARG V_COMMIT_HASH=ec758604538c00cceb142d324609a241e665f7c7
|
|
|
|
ARG VC_COMMIT_HASH=5dc8384638f515a098f75296fa7123c5e6a4964a
|
|
|
|
|
|
|
|
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 \
|
2022-07-03 10:52:52 +02:00
|
|
|
git make gcc curl musl-dev \
|
|
|
|
openssl openssl-libs-static openssl-dev \
|
2022-07-03 10:46:59 +02:00
|
|
|
zlib-static bzip2-static xz-dev expat-static zstd-static lz4-static \
|
|
|
|
sqlite-static sqlite-dev \
|
|
|
|
libarchive-static libarchive-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"]
|