git » sdk » main » tree

[main] / build-misc / Containerfile.image

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"]