FROM emscripten/emsdk:6.0.5 AS build
RUN apt-get update && apt-get install -y --no-install-recommends git make m4 autoconf automake libtool pkg-config curl xz-utils bzip2 patch python3 ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /src
RUN git clone https://github.com/Yahweasel/libav.js.git . && git checkout c80e885c3461f7bb7ea565c9631b34243ae0dbf1
RUN npm ci
COPY config.json /config.json
COPY patch-libav.py /patch-libav.py
RUN cd configs && node mkconfig.js sublunio "$(cat /config.json)"
RUN make build/ffmpeg-9.0/PATCHED && python3 /patch-libav.py /src && cp /patch-libav.py /src/sublunio-patch-libav.py
RUN make -j2 dist/libav-6.10.9.0-sublunio.js dist/libav-6.10.9.0-sublunio.wasm.js
RUN mkdir -p /out/sources && cp dist/libav-6.10.9.0-sublunio.js dist/libav-6.10.9.0-sublunio.wasm.js dist/libav-6.10.9.0-sublunio.wasm.wasm /out/ && printf '{"entry":"libav-6.10.9.0-sublunio.js","version":"6.10.9.0","variant":"sublunio"}' > /out/manifest.json
RUN cp /config.json /src/sublunio-config.json && tar -cJf /out/sources/libav-build-source.tar.xz --exclude=.git --exclude=node_modules --exclude=dist --exclude='build/inst' --exclude='build/ffmpeg-*/build-*' . && cp LICENSE.md /out/sources/LICENSE.md && printf '<!doctype html><title>SubLunio media sources</title><h1>Media engine source and licences</h1><a href="libav-build-source.tar.xz">Corresponding source, patches, dependencies and build configuration</a><p><a href="LICENSE.md">Licences</a></p><p>Build with Emscripten 6.0.5; see media/Dockerfile in the SubLunio distribution.</p>' > /out/sources/index.html
FROM scratch AS export
COPY --from=build /out/ /
