FROM docker.io/debian:stable-slim AS build
WORKDIR /usr/src/sdk
ARG HAXE_VERSION=4.3.4
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates \
gpgv \
wget \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/cache/*
RUN wget https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2024.9.1_all.deb \
&& (sha256sum deb-multimedia-keyring_2024.9.1_all.deb | grep -q '^8dc6cbb266c701cfe58bd1d2eb9fe2245a1d6341c7110cfbfe3a5a975dcf97ca ') \
&& dpkg -i deb-multimedia-keyring_2024.9.1_all.deb
COPY build-misc/dmo.sources /etc/apt/sources.list.d/dmo.sources
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
autoconf \
automake \
libtool \
pkg-config \
git \
npm \
libdatachannel-dev \
libopus-dev \
libc-ares-dev \
libexpat1-dev \
libssl-dev \
zlib1g-dev \
neko \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/cache/*
RUN git clone https://github.com/strophe/libstrophe \
&& cd libstrophe \
&& ./bootstrap.sh \
&& ./configure --enable-cares --prefix=/usr \
&& make \
&& make install
ADD https://github.com/HaxeFoundation/haxe/releases/download/${HAXE_VERSION}/haxe-${HAXE_VERSION}-linux64.tar.gz /tmp/haxe.tar.gz
RUN mkdir /opt/haxe \
&& tar xzf /tmp/haxe.tar.gz --strip-components=1 -C /opt/haxe \
&& mv /opt/haxe/haxe /opt/haxe/haxelib /usr/local/bin
# Hack to disable TLS 1.3: OpenSSL 3.5.0 (currently in Debian testing) emits
# signficiantly larger ClientHello packets due to post-quantum key algorithms.
# The large packets get fragmented and this causes handshakes to fail in some
# networks, including on our CI workers. Warrants further investigation.
RUN printf '#!/bin/bash\nexec /usr/bin/node --tls-max-v1.2 "$@"' > /usr/local/bin/node \
&& chmod a+x /usr/local/bin/node \
&& npm install typescript
RUN haxelib setup /opt/haxe
ENV HAXE_STD_PATH=/opt/haxe/std
COPY Makefile *.hxml /usr/src/sdk/
COPY . /usr/src/sdk/
RUN make hx-build-dep
RUN cd /opt/haxe/hxcpp/git/tools/hxcpp && haxe compile.hxml
RUN make
RUN haxe test.hxml
FROM docker.io/debian:stable-slim
WORKDIR /opt/sdk
COPY --from=build /usr/src/sdk/cpp ./cpp
COPY --from=build /usr/src/sdk/libborogove.so ./libborogove.so
COPY --from=build /usr/src/sdk/npm ./npm
CMD ["cp", "-R", "/opt/sdk", "/output"]