1- # syntax=docker/dockerfile-upstream:master-labs
1+ # syntax=docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5
2+
3+ # Every input is pinned (image digests, git commits, tarball checksums) so a
4+ # release can't change underneath us. The comments name the pinned versions.
25
36# Base emsdk image with environment variables.
4- FROM emscripten/emsdk:6.0.10 AS emsdk-base
7+ FROM emscripten/emsdk:6.0.10@sha256:e077d54e2b8970575ebc4f185ac1de0b95c05f2b266134d4ba27449af7aebf65 AS emsdk-base
58ARG EXTRA_CFLAGS
69ARG EXTRA_LDFLAGS
710# Parallel jobs for each `make` call, defaults to $(nproc) when empty.
811ARG MAKE_JOBS
912ENV INSTALL_DIR=/opt
10- ENV FFMPEG_VERSION=n9.0.2
1113# FFmpeg's command line tools need threads since 6.1, so everything is built with pthreads.
1214ENV CFLAGS="-I$INSTALL_DIR/include -pthread $EXTRA_CFLAGS"
1315ENV CXXFLAGS="$CFLAGS"
@@ -22,38 +24,44 @@ COPY build/meson-cross.ini /meson-cross.ini
2224
2325# Build x264
2426FROM emsdk-base AS x264-builder
27+ # stable branch
2528ADD https://code.videolan.org/videolan/x264.git#b35605ace3ddf7c1a5d67a2eb553f034aef41d55 /src
2629COPY build/x264.sh /src/build.sh
2730RUN bash -x /src/build.sh
2831
2932# Build x265
3033FROM emsdk-base AS x265-builder
31- ADD https://bitbucket.org/multicoreware/x265_git.git#4.2 /src
34+ # 4.2
35+ ADD https://bitbucket.org/multicoreware/x265_git.git#e444744c03978c1fb4e037168967020cf2648427 /src
3236COPY build/x265.sh /src/build.sh
3337RUN bash -x /src/build.sh
3438
3539# Build libvpx
3640FROM emsdk-base AS libvpx-builder
37- ADD https://github.com/webmproject/libvpx.git#v1.17.0 /src
41+ # v1.17.0
42+ ADD https://github.com/webmproject/libvpx.git#6df3ec34557879fff673706f4a1d9fbd0f3a6f0e /src
3843COPY build/libvpx.sh /src/build.sh
3944RUN bash -x /src/build.sh
4045
4146# Build lame (3.100, the latest release; there is no upstream git repository)
4247FROM emsdk-base AS lame-builder
43- ADD https://github.com/ffmpegwasm/lame.git#master /src
48+ # 3.100
49+ ADD https://github.com/ffmpegwasm/lame.git#2badea1974ae36cb8312afe99cff1e6b3b5decee /src
4450COPY build/lame.sh /src/build.sh
4551RUN bash -x /src/build.sh
4652
4753# Build ogg
4854FROM emsdk-base AS ogg-builder
49- ADD https://github.com/xiph/ogg.git#v1.3.6 /src
55+ # v1.3.6
56+ ADD https://github.com/xiph/ogg.git#be05b13e98b048f0b5a0f5fa8ce514d56db5f822 /src
5057COPY build/ogg.sh /src/build.sh
5158RUN bash -x /src/build.sh
5259
5360# Build theora
5461FROM emsdk-base AS theora-builder
5562COPY --from=ogg-builder $INSTALL_DIR $INSTALL_DIR
56- ADD https://github.com/xiph/theora.git#v1.2.0 /src
63+ # v1.2.0
64+ ADD https://github.com/xiph/theora.git#8e4808736e9c181b971306cc3f05df9e61354004 /src
5765COPY build/theora.sh /src/build.sh
5866RUN bash -x /src/build.sh
5967
@@ -69,39 +77,45 @@ RUN bash -x /src/build.sh
6977# Build vorbis
7078FROM emsdk-base AS vorbis-builder
7179COPY --from=ogg-builder $INSTALL_DIR $INSTALL_DIR
72- ADD https://github.com/xiph/vorbis.git#v1.3.7 /src
80+ # v1.3.7
81+ ADD https://github.com/xiph/vorbis.git#0657aee69dec8508a0011f47f3b69d7538e9d262 /src
7382COPY build/vorbis.sh /src/build.sh
7483RUN bash -x /src/build.sh
7584
7685# Build zlib
7786FROM emsdk-base AS zlib-builder
78- ADD https://github.com/madler/zlib.git#v1.3.2 /src
87+ # v1.3.2
88+ ADD https://github.com/madler/zlib.git#da607da739fa6047df13e66a2af6b8bec7c2a498 /src
7989COPY build/zlib.sh /src/build.sh
8090RUN bash -x /src/build.sh
8191
8292# Build libwebp
8393FROM emsdk-base AS libwebp-builder
8494COPY --from=zlib-builder $INSTALL_DIR $INSTALL_DIR
85- ADD https://github.com/webmproject/libwebp.git#v1.6.0 /src
95+ # v1.6.0
96+ ADD https://github.com/webmproject/libwebp.git#4fa21912338357f89e4fd51cf2368325b59e9bd9 /src
8697COPY build/libwebp.sh /src/build.sh
8798RUN bash -x /src/build.sh
8899
89100# Build freetype2
90101FROM emsdk-base AS freetype2-builder
91- ADD https://github.com/freetype/freetype.git#VER-2-14-3 /src
102+ # VER-2-14-3
103+ ADD https://github.com/freetype/freetype.git#0a0221a1347e2f1e07c395263540026e9a0aa7c7 /src
92104COPY build/freetype2.sh /src/build.sh
93105RUN bash -x /src/build.sh
94106
95107# Build fribidi
96108FROM emsdk-base AS fribidi-builder
97- ADD https://github.com/fribidi/fribidi.git#v1.0.17 /src
109+ # v1.0.17
110+ ADD https://github.com/fribidi/fribidi.git#b93119f5fdc7ea47672cc304c1455ffa6dfe7536 /src
98111COPY build/fribidi.sh /src/build.sh
99112RUN bash -x /src/build.sh
100113
101114# Build harfbuzz (with FreeType, for FFmpeg's drawtext)
102115FROM emsdk-base AS harfbuzz-builder
103116COPY --from=freetype2-builder $INSTALL_DIR $INSTALL_DIR
104- ADD https://github.com/harfbuzz/harfbuzz.git#14.5.0 /src
117+ # 14.5.0
118+ ADD https://github.com/harfbuzz/harfbuzz.git#863d3f7787c6df18d20e4535c5906bf3eb803bd5 /src
105119COPY build/harfbuzz.sh /src/build.sh
106120RUN bash -x /src/build.sh
107121
@@ -110,19 +124,22 @@ FROM emsdk-base AS libass-builder
110124COPY --from=freetype2-builder $INSTALL_DIR $INSTALL_DIR
111125COPY --from=fribidi-builder $INSTALL_DIR $INSTALL_DIR
112126COPY --from=harfbuzz-builder $INSTALL_DIR $INSTALL_DIR
113- ADD https://github.com/libass/libass.git#0.17.5 /src
127+ # 0.17.5
128+ ADD https://github.com/libass/libass.git#4a05d8127f525943ebf45fdc6497c9e665947f0d /src
114129COPY build/libass.sh /src/build.sh
115130RUN bash -x /src/build.sh
116131
117132# Build zimg
118133FROM emsdk-base AS zimg-builder
119- ADD https://github.com/sekrit-twc/zimg.git#release-3.0.6 /src
134+ # release-3.0.6
135+ ADD https://github.com/sekrit-twc/zimg.git#f819b14e8f39d1282400b0d9543e8ef73c1b2bbd /src
120136COPY build/zimg.sh /src/build.sh
121137RUN bash -x /src/build.sh
122138
123139# Base ffmpeg image with dependencies and source code populated.
124140FROM emsdk-base AS ffmpeg-base
125- ADD https://github.com/FFmpeg/FFmpeg.git#$FFMPEG_VERSION /src
141+ # n9.0.2
142+ ADD https://github.com/FFmpeg/FFmpeg.git#946fcce07b6dcd0331c8cc609192aeff5e1924f8 /src
126143COPY --from=x264-builder $INSTALL_DIR $INSTALL_DIR
127144COPY --from=x265-builder $INSTALL_DIR $INSTALL_DIR
128145COPY --from=libvpx-builder $INSTALL_DIR $INSTALL_DIR
0 commit comments