FROM alpine:3.11
ENV PATH /usr/local/bin:$PATH
RUN apk add --no-cache ca-certificates
ENV NEKO_VERSION 2.3.0
ENV HAXE_VERSION 3.2.1
ENV HAXE_STD_PATH /usr/local/share/haxe/std
RUN set -ex \
&& apk add --no-cache --virtual .fetch-deps \
libressl \
tar \
git \
\
&& wget -O neko.tar.gz "https://github.com/HaxeFoundation/neko/archive/v2-3-0/neko-2.3.0.tar.gz" \
&& echo "850e7e317bdaf24ed652efeff89c1cb21380ca19f20e68a296c84f6bad4ee995 *neko.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src/neko \
&& tar -xC /usr/src/neko --strip-components=1 -f neko.tar.gz \
&& rm neko.tar.gz \
&& apk add --no-cache --virtual .neko-build-deps \
apache2-dev \
cmake \
gc-dev \
gcc \
gtk+2.0-dev \
libc-dev \
linux-headers \
mariadb-dev \
mbedtls-dev \
ninja \
sqlite-dev \
&& cd /usr/src/neko \
&& cmake -GNinja -DNEKO_JIT_DISABLE=ON -DRELOCATABLE=OFF -DRUN_LDCONFIG=OFF . \
&& ninja \
&& ninja install \
\
&& git clone --recursive --depth 1 --branch 3.2.1 "https://github.com/HaxeFoundation/haxe.git" /usr/src/haxe \
&& cd /usr/src/haxe \
&& mkdir -p $HAXE_STD_PATH \
&& cp -r std/* $HAXE_STD_PATH \
&& apk add --no-cache --virtual .haxe-build-deps \
pcre-dev \
zlib-dev \
mbedtls-dev \
make \
\
ocaml \
camlp4 \
ocaml-camlp4-dev \
\
\
&& OCAMLPARAM=safe-string=0,_ make all tools \
\
&& mkdir -p /usr/local/bin \
&& cp haxe haxelib /usr/local/bin \
&& mkdir -p /haxelib \
&& cd / && haxelib setup /haxelib \
\
&& runDeps="$( \
scanelf --needed --nobanner --recursive /usr/local \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .haxe-rundeps $runDeps \
&& apk del .fetch-deps .neko-build-deps .haxe-build-deps \
\
&& rm -rf /usr/src/neko /usr/src/haxe
CMD ["haxe"]